neba 1.13.0 → 1.16.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 (341) hide show
  1. package/README.md +22 -30
  2. package/dist/a2ui/catalog.json +1466 -0
  3. package/dist/a2ui/components.d.ts +21 -0
  4. package/dist/a2ui/components.js +1 -0
  5. package/dist/a2ui/index.d.ts +62 -0
  6. package/dist/a2ui/index.js +1 -0
  7. package/dist/a2ui/schema.d.ts +47 -0
  8. package/dist/a2ui/schema.js +1 -0
  9. package/dist/components/accordion/Accordion.d.ts +5 -1
  10. package/dist/components/accordion/Accordion.js +1 -1
  11. package/dist/components/agent-steps/AgentSteps.d.ts +80 -0
  12. package/dist/components/agent-steps/AgentSteps.js +1 -0
  13. package/dist/components/agent-steps/index.d.ts +2 -0
  14. package/dist/components/agent-steps/index.js +1 -0
  15. package/dist/components/alert/Alert.js +1 -1
  16. package/dist/components/anchor/Anchor.d.ts +3 -2
  17. package/dist/components/anchor/Anchor.js +1 -1
  18. package/dist/components/animate-appear/AnimateAppear.js +1 -1
  19. package/dist/components/animate-blink/AnimateBlink.d.ts +3 -0
  20. package/dist/components/animate-blink/AnimateBlink.js +1 -1
  21. package/dist/components/animate-counter/AnimateCounter.d.ts +3 -1
  22. package/dist/components/animate-counter/AnimateCounter.js +1 -1
  23. package/dist/components/animate-fade/AnimateFade.js +1 -1
  24. package/dist/components/animate-float/AnimateFloat.js +1 -1
  25. package/dist/components/animate-grow/AnimateGrow.js +1 -1
  26. package/dist/components/animate-headline/AnimateHeadline.d.ts +9 -2
  27. package/dist/components/animate-headline/AnimateHeadline.js +1 -1
  28. package/dist/components/animate-lighting/AnimateLighting.d.ts +1 -1
  29. package/dist/components/animate-lighting/AnimateLighting.js +1 -1
  30. package/dist/components/animate-marquee/AnimateMarquee.d.ts +15 -6
  31. package/dist/components/animate-marquee/AnimateMarquee.js +1 -1
  32. package/dist/components/animate-reveal/AnimateReveal.js +1 -1
  33. package/dist/components/animate-rotate/AnimateRotate.js +1 -1
  34. package/dist/components/animate-scramble/AnimateScramble.d.ts +5 -3
  35. package/dist/components/animate-scramble/AnimateScramble.js +1 -1
  36. package/dist/components/animate-shake/AnimateShake.js +1 -1
  37. package/dist/components/animate-slide/AnimateSlide.js +1 -1
  38. package/dist/components/animate-split/AnimateSplit.d.ts +3 -1
  39. package/dist/components/animate-split/AnimateSplit.js +1 -1
  40. package/dist/components/animate-typing/AnimateTyping.d.ts +12 -4
  41. package/dist/components/animate-typing/AnimateTyping.js +1 -1
  42. package/dist/components/animate-zoom/AnimateZoom.js +1 -1
  43. package/dist/components/app-logo/AppLogo.js +1 -1
  44. package/dist/components/approval/Approval.d.ts +115 -0
  45. package/dist/components/approval/Approval.js +1 -0
  46. package/dist/components/approval/index.d.ts +2 -0
  47. package/dist/components/approval/index.js +1 -0
  48. package/dist/components/area-chart/AreaChart.d.ts +16 -5
  49. package/dist/components/area-chart/AreaChart.js +1 -1
  50. package/dist/components/aspect-ratio/AspectRatio.d.ts +6 -4
  51. package/dist/components/aspect-ratio/AspectRatio.js +1 -1
  52. package/dist/components/avatar/Avatar.js +1 -1
  53. package/dist/components/badge/Badge.js +1 -1
  54. package/dist/components/bar-chart/BarChart.d.ts +1 -1
  55. package/dist/components/bar-chart/BarChart.js +1 -1
  56. package/dist/components/blockquote/Blockquote.js +1 -1
  57. package/dist/components/bottom-navigation/BottomNavigation.d.ts +2 -1
  58. package/dist/components/bottom-navigation/BottomNavigation.js +1 -1
  59. package/dist/components/box/Box.d.ts +5 -0
  60. package/dist/components/box/Box.js +1 -1
  61. package/dist/components/breadcrumb/Breadcrumb.d.ts +10 -0
  62. package/dist/components/breadcrumb/Breadcrumb.js +1 -1
  63. package/dist/components/button/Button.d.ts +11 -0
  64. package/dist/components/button/Button.js +1 -1
  65. package/dist/components/button-group/ButtonGroup.js +1 -1
  66. package/dist/components/calendar/Calendar.js +1 -1
  67. package/dist/components/card/Card.js +1 -1
  68. package/dist/components/carousel/Carousel.d.ts +4 -0
  69. package/dist/components/carousel/Carousel.js +1 -1
  70. package/dist/components/chat-bubble/ChatBubble.js +1 -1
  71. package/dist/components/checkbox/Checkbox.js +1 -1
  72. package/dist/components/chip/Chip.d.ts +3 -1
  73. package/dist/components/chip/Chip.js +1 -1
  74. package/dist/components/code-block/CodeBlock.d.ts +6 -3
  75. package/dist/components/code-block/CodeBlock.js +1 -1
  76. package/dist/components/collapsible/Collapsible.d.ts +11 -1
  77. package/dist/components/collapsible/Collapsible.js +1 -1
  78. package/dist/components/color-picker/ColorPicker.js +1 -1
  79. package/dist/components/combobox/Combobox.d.ts +11 -1
  80. package/dist/components/combobox/Combobox.js +1 -1
  81. package/dist/components/command-palette/CommandPalette.js +1 -1
  82. package/dist/components/confirm/Confirm.js +1 -1
  83. package/dist/components/container/Container.js +1 -1
  84. package/dist/components/context-window/ContextWindow.d.ts +103 -0
  85. package/dist/components/context-window/ContextWindow.js +1 -0
  86. package/dist/components/context-window/index.d.ts +2 -0
  87. package/dist/components/context-window/index.js +1 -0
  88. package/dist/components/data-list/DataList.js +1 -1
  89. package/dist/components/data-table/DataTable.d.ts +12 -1
  90. package/dist/components/data-table/DataTable.js +1 -1
  91. package/dist/components/date-picker/DatePicker.js +1 -1
  92. package/dist/components/date-range-picker/DateRangePicker.js +1 -1
  93. package/dist/components/date-time-picker/DateTimePicker.js +1 -1
  94. package/dist/components/dialog/Dialog.d.ts +12 -0
  95. package/dist/components/dialog/Dialog.js +1 -1
  96. package/dist/components/divider/Divider.js +1 -1
  97. package/dist/components/drawer/Drawer.d.ts +7 -0
  98. package/dist/components/drawer/Drawer.js +1 -1
  99. package/dist/components/empty/Empty.js +1 -1
  100. package/dist/components/fieldset/Fieldset.js +1 -1
  101. package/dist/components/file-picker/FilePicker.d.ts +12 -4
  102. package/dist/components/file-picker/FilePicker.js +1 -1
  103. package/dist/components/flex/Flex.d.ts +8 -2
  104. package/dist/components/flex/Flex.js +1 -1
  105. package/dist/components/floating-action-button/FloatingActionButton.d.ts +16 -1
  106. package/dist/components/floating-action-button/FloatingActionButton.js +1 -1
  107. package/dist/components/floating-bottom-navigation/FloatingBottomNavigation.js +1 -1
  108. package/dist/components/footer/Footer.d.ts +8 -0
  109. package/dist/components/footer/Footer.js +1 -1
  110. package/dist/components/form/Form.d.ts +4 -2
  111. package/dist/components/form/Form.js +1 -1
  112. package/dist/components/gallery/Gallery.d.ts +56 -3
  113. package/dist/components/gallery/Gallery.js +1 -1
  114. package/dist/components/gallery/GalleryViewer.js +1 -1
  115. package/dist/components/gauge-chart/GaugeChart.d.ts +1 -1
  116. package/dist/components/gauge-chart/GaugeChart.js +1 -1
  117. package/dist/components/grid/Grid.js +1 -1
  118. package/dist/components/grid-container/GridContainer.js +1 -1
  119. package/dist/components/header/Header.js +1 -1
  120. package/dist/components/heatmap-chart/HeatmapChart.d.ts +20 -1
  121. package/dist/components/heatmap-chart/HeatmapChart.js +1 -1
  122. package/dist/components/highlight/Highlight.js +1 -1
  123. package/dist/components/how-to-steps/HowToSteps.d.ts +26 -1
  124. package/dist/components/how-to-steps/HowToSteps.js +1 -1
  125. package/dist/components/icon/Icon.js +1 -1
  126. package/dist/components/icon-button/IconButton.d.ts +0 -20
  127. package/dist/components/icon-button/IconButton.js +1 -1
  128. package/dist/components/image/Image.d.ts +137 -11
  129. package/dist/components/image/Image.js +1 -1
  130. package/dist/components/image/index.d.ts +1 -1
  131. package/dist/components/inline-citation/InlineCitation.d.ts +53 -0
  132. package/dist/components/inline-citation/InlineCitation.js +1 -0
  133. package/dist/components/inline-citation/index.d.ts +2 -0
  134. package/dist/components/inline-citation/index.js +1 -0
  135. package/dist/components/line-chart/LineChart.d.ts +16 -5
  136. package/dist/components/line-chart/LineChart.js +1 -1
  137. package/dist/components/list/List.js +1 -1
  138. package/dist/components/menu/Menu.d.ts +25 -11
  139. package/dist/components/menu/Menu.js +1 -1
  140. package/dist/components/menubar/Menubar.js +1 -1
  141. package/dist/components/meter/Meter.d.ts +6 -0
  142. package/dist/components/meter/Meter.js +1 -1
  143. package/dist/components/mockup/Mockup.js +1 -1
  144. package/dist/components/navigation-menu/NavigationMenu.d.ts +10 -1
  145. package/dist/components/navigation-menu/NavigationMenu.js +1 -1
  146. package/dist/components/number-field/NumberField.d.ts +20 -6
  147. package/dist/components/number-field/NumberField.js +1 -1
  148. package/dist/components/otp-field/OtpField.d.ts +7 -0
  149. package/dist/components/otp-field/OtpField.js +1 -1
  150. package/dist/components/overlay/Overlay.d.ts +1 -1
  151. package/dist/components/overlay/Overlay.js +1 -1
  152. package/dist/components/page-layout/PageLayout.d.ts +11 -0
  153. package/dist/components/page-layout/PageLayout.js +1 -1
  154. package/dist/components/pagination/Pagination.js +1 -1
  155. package/dist/components/panes/Panes.d.ts +11 -0
  156. package/dist/components/panes/Panes.js +1 -1
  157. package/dist/components/pie-chart/PieChart.d.ts +34 -3
  158. package/dist/components/pie-chart/PieChart.js +1 -1
  159. package/dist/components/pill/Pill.d.ts +8 -0
  160. package/dist/components/pill/Pill.js +1 -1
  161. package/dist/components/popconfirm/Popconfirm.d.ts +10 -3
  162. package/dist/components/popconfirm/Popconfirm.js +1 -1
  163. package/dist/components/popover/Popover.d.ts +8 -1
  164. package/dist/components/popover/Popover.js +1 -1
  165. package/dist/components/portal/Portal.js +1 -1
  166. package/dist/components/progress-box/ProgressBox.js +1 -1
  167. package/dist/components/progress-circular/ProgressCircular.js +1 -1
  168. package/dist/components/progress-linear/ProgressLinear.js +1 -1
  169. package/dist/components/prompt-input/PromptInput.d.ts +104 -0
  170. package/dist/components/prompt-input/PromptInput.js +1 -0
  171. package/dist/components/prompt-input/index.d.ts +2 -0
  172. package/dist/components/prompt-input/index.js +1 -0
  173. package/dist/components/provider/NebaProvider.d.ts +3 -3
  174. package/dist/components/provider/NebaProvider.js +1 -1
  175. package/dist/components/radio-group/RadioGroup.js +1 -1
  176. package/dist/components/rating/Rating.d.ts +4 -1
  177. package/dist/components/rating/Rating.js +1 -1
  178. package/dist/components/reasoning/Reasoning.d.ts +78 -0
  179. package/dist/components/reasoning/Reasoning.js +1 -0
  180. package/dist/components/reasoning/index.d.ts +2 -0
  181. package/dist/components/reasoning/index.js +1 -0
  182. package/dist/components/scatter-chart/ScatterChart.js +1 -1
  183. package/dist/components/scroll-area/ScrollArea.js +1 -1
  184. package/dist/components/scroll-zone/ScrollZone.d.ts +10 -0
  185. package/dist/components/scroll-zone/ScrollZone.js +1 -1
  186. package/dist/components/segmented-button/SegmentedButton.js +1 -1
  187. package/dist/components/select/Select.js +1 -1
  188. package/dist/components/shortcut/Shortcut.js +1 -1
  189. package/dist/components/show/Show.d.ts +6 -5
  190. package/dist/components/show/Show.js +1 -1
  191. package/dist/components/sidebar/Sidebar.d.ts +7 -5
  192. package/dist/components/sidebar/Sidebar.js +1 -1
  193. package/dist/components/sidebar/SidebarTrigger.js +1 -1
  194. package/dist/components/skeleton/Skeleton.d.ts +1 -1
  195. package/dist/components/skeleton/Skeleton.js +1 -1
  196. package/dist/components/slider/Slider.d.ts +13 -1
  197. package/dist/components/slider/Slider.js +1 -1
  198. package/dist/components/sources/Sources.d.ts +78 -0
  199. package/dist/components/sources/Sources.js +1 -0
  200. package/dist/components/sources/index.d.ts +2 -0
  201. package/dist/components/sources/index.js +1 -0
  202. package/dist/components/sparkline/Sparkline.d.ts +14 -1
  203. package/dist/components/sparkline/Sparkline.js +1 -1
  204. package/dist/components/spoiler/Spoiler.js +1 -1
  205. package/dist/components/stack/Stack.d.ts +2 -2
  206. package/dist/components/stack/Stack.js +1 -1
  207. package/dist/components/statistic/Statistic.js +1 -1
  208. package/dist/components/streaming-text/StreamingText.d.ts +75 -0
  209. package/dist/components/streaming-text/StreamingText.js +1 -0
  210. package/dist/components/streaming-text/index.d.ts +2 -0
  211. package/dist/components/streaming-text/index.js +1 -0
  212. package/dist/components/switch/Switch.js +1 -1
  213. package/dist/components/table/Table.d.ts +8 -2
  214. package/dist/components/table/Table.js +1 -1
  215. package/dist/components/tabs/Tabs.d.ts +17 -1
  216. package/dist/components/tabs/Tabs.js +1 -1
  217. package/dist/components/text-field/TextField.js +1 -1
  218. package/dist/components/text-link/TextLink.js +1 -1
  219. package/dist/components/time-picker/TimePicker.js +1 -1
  220. package/dist/components/timeline/Timeline.d.ts +8 -0
  221. package/dist/components/timeline/Timeline.js +1 -1
  222. package/dist/components/timeline-chart/TimelineChart.js +1 -1
  223. package/dist/components/toast/Toast.d.ts +9 -3
  224. package/dist/components/toast/Toast.js +1 -1
  225. package/dist/components/toggle/Toggle.js +1 -1
  226. package/dist/components/toggle-group/ToggleGroup.js +1 -1
  227. package/dist/components/tool-call/ToolCall.d.ts +104 -0
  228. package/dist/components/tool-call/ToolCall.js +1 -0
  229. package/dist/components/tool-call/index.d.ts +2 -0
  230. package/dist/components/tool-call/index.js +1 -0
  231. package/dist/components/toolbar/Toolbar.d.ts +8 -0
  232. package/dist/components/toolbar/Toolbar.js +1 -1
  233. package/dist/components/tooltip/Tooltip.js +1 -1
  234. package/dist/components/tour/Tour.d.ts +2 -0
  235. package/dist/components/tour/Tour.js +1 -1
  236. package/dist/components/transfer/Transfer.js +1 -1
  237. package/dist/components/tree-select/TreeSelect.js +1 -1
  238. package/dist/components/tree-view/TreeView.d.ts +6 -0
  239. package/dist/components/tree-view/TreeView.js +1 -1
  240. package/dist/components/typography/Typography.js +1 -1
  241. package/dist/components/visually-hidden/VisuallyHidden.d.ts +9 -7
  242. package/dist/components/visually-hidden/VisuallyHidden.js +1 -1
  243. package/dist/components/window-pane/WindowPane.d.ts +2 -2
  244. package/dist/components/window-pane/WindowPane.js +1 -1
  245. package/dist/hooks/useElementSize.d.ts +3 -1
  246. package/dist/hooks/useElementSize.js +1 -1
  247. package/dist/hooks/useOnScreen.d.ts +3 -0
  248. package/dist/hooks/useOnScreen.js +1 -1
  249. package/dist/index.d.ts +9 -0
  250. package/dist/index.js +1 -1
  251. package/dist/internal/animate.d.ts +63 -16
  252. package/dist/internal/animate.js +1 -1
  253. package/dist/internal/calendar.d.ts +6 -1
  254. package/dist/internal/calendar.js +1 -1
  255. package/dist/internal/chart-brush.d.ts +53 -0
  256. package/dist/internal/chart-brush.js +1 -0
  257. package/dist/internal/chart-frame.d.ts +186 -30
  258. package/dist/internal/chart-frame.js +1 -1
  259. package/dist/internal/chart-line.js +1 -1
  260. package/dist/internal/chart.d.ts +133 -6
  261. package/dist/internal/chart.js +1 -1
  262. package/dist/internal/children.d.ts +15 -0
  263. package/dist/internal/children.js +1 -0
  264. package/dist/internal/color.d.ts +4 -0
  265. package/dist/internal/color.js +1 -1
  266. package/dist/internal/csv.d.ts +12 -1
  267. package/dist/internal/csv.js +1 -1
  268. package/dist/internal/data-table.d.ts +28 -10
  269. package/dist/internal/data-table.js +1 -1
  270. package/dist/internal/date.d.ts +12 -5
  271. package/dist/internal/date.js +1 -1
  272. package/dist/internal/defaults.d.ts +6 -1
  273. package/dist/internal/defaults.js +1 -1
  274. package/dist/internal/drag.d.ts +13 -1
  275. package/dist/internal/drag.js +1 -1
  276. package/dist/internal/drop.d.ts +61 -0
  277. package/dist/internal/drop.js +1 -0
  278. package/dist/internal/fieldset.d.ts +13 -0
  279. package/dist/internal/fieldset.js +1 -0
  280. package/dist/internal/glow.d.ts +102 -0
  281. package/dist/internal/glow.js +1 -0
  282. package/dist/internal/highlight.js +1 -1
  283. package/dist/internal/i18n.d.ts +232 -11
  284. package/dist/internal/i18n.js +1 -1
  285. package/dist/internal/icons.d.ts +13 -2
  286. package/dist/internal/icons.js +1 -1
  287. package/dist/internal/inert.d.ts +13 -0
  288. package/dist/internal/inert.js +1 -0
  289. package/dist/internal/initials.d.ts +8 -3
  290. package/dist/internal/initials.js +1 -1
  291. package/dist/internal/keys.d.ts +13 -0
  292. package/dist/internal/keys.js +1 -1
  293. package/dist/internal/link.d.ts +13 -15
  294. package/dist/internal/link.js +1 -1
  295. package/dist/internal/media.d.ts +9 -17
  296. package/dist/internal/media.js +1 -1
  297. package/dist/internal/menu.d.ts +6 -1
  298. package/dist/internal/mockup.d.ts +5 -4
  299. package/dist/internal/mockup.js +1 -1
  300. package/dist/internal/observe.d.ts +12 -0
  301. package/dist/internal/observe.js +1 -1
  302. package/dist/internal/page-layout.d.ts +10 -8
  303. package/dist/internal/page-layout.js +1 -1
  304. package/dist/internal/picker.d.ts +1 -1
  305. package/dist/internal/picker.js +1 -1
  306. package/dist/internal/progress.d.ts +11 -5
  307. package/dist/internal/progress.js +1 -1
  308. package/dist/internal/responsive.d.ts +0 -8
  309. package/dist/internal/responsive.js +1 -1
  310. package/dist/internal/run.d.ts +71 -0
  311. package/dist/internal/run.js +1 -0
  312. package/dist/internal/screen.d.ts +12 -0
  313. package/dist/internal/screen.js +1 -0
  314. package/dist/internal/styles.d.ts +185 -14
  315. package/dist/internal/styles.js +1 -1
  316. package/dist/internal/text.d.ts +3 -3
  317. package/dist/internal/text.js +1 -1
  318. package/dist/internal/window.js +1 -1
  319. package/dist/locales/ar.js +1 -1
  320. package/dist/locales/de.js +1 -1
  321. package/dist/locales/es.js +1 -1
  322. package/dist/locales/fr.js +1 -1
  323. package/dist/locales/hi.js +1 -1
  324. package/dist/locales/id.js +1 -1
  325. package/dist/locales/it.js +1 -1
  326. package/dist/locales/ja.js +1 -1
  327. package/dist/locales/ko.js +1 -1
  328. package/dist/locales/nl.js +1 -1
  329. package/dist/locales/pl.js +1 -1
  330. package/dist/locales/pt.js +1 -1
  331. package/dist/locales/ru.js +1 -1
  332. package/dist/locales/th.js +1 -1
  333. package/dist/locales/tr.js +1 -1
  334. package/dist/locales/vi.js +1 -1
  335. package/dist/locales/zh-hans.js +1 -1
  336. package/dist/locales/zh-hant.js +1 -1
  337. package/dist/styles.css +1 -1
  338. package/dist/tailwind.css +516 -53
  339. package/dist/types.d.ts +167 -7
  340. package/dist/types.js +0 -8
  341. package/package.json +43 -9
@@ -1 +1 @@
1
- "use client";import{jsx as t}from"react/jsx-runtime";import*as e from"react";import{animBaseClass as r,animationClasses as a,animationSlots as l,transitionParts as i}from"../../internal/animate.js";import{lengthOf as n}from"../../internal/responsive.js";import{cx as s}from"../../internal/styles.js";import{useStyleDefaults as o}from"../../internal/defaults.js";const m={xs:"0.375rem",sm:"0.5rem",md:"0.625rem",lg:"0.75rem",xl:"0.875rem"};export const Stack=/*@__PURE__*/e.forwardRef(function(c,d){const{direction:f="horizontal",overlap:p,drop:g,size:u="md",max:h,total:x,overflow:v,front:y="first",scaleStep:S=1,opacityStep:j=1,ring:$=!1,transition:k,stagger:z=0,durationStep:M=0,reverse:N=!1,className:b,style:w,children:B,...I}=o(c,["size"]),A=e.Children.toArray(B),C=void 0===h?A:A.slice(0,Math.max(0,h)),R=Math.max(0,(x??A.length)-C.length),q=R>0?v?.(R):null,D=null==q?C:[...C,q],E=n(p??m[u]),F=n(g??p??m[u]),G="vertical"===f,H="diagonal"===f,J=i(k),K=J?`${r} ${a[J.effect]}`:"";return t("div",{ref:d,className:s("isolate inline-flex",G?"flex-col items-start":"items-start",$?"[&>*>*>*]:ring-2 [&>*>*>*]:ring-(--neba-surface)":"",b??""),style:w,...I,children:D.map((e,r)=>{const a=N?D.length-1-r:r,i=J?l({...J.slots,delay:J.slots.delay+a*z,duration:Math.max(0,J.slots.duration+a*M)}):void 0;return t("span",{"data-neba-stack-item":"",className:K||void 0,style:{...i,...0===r?null:G?{marginBlockStart:`calc(${E} * -1)`}:{marginInlineStart:`calc(${E} * -1)`},...H?{marginBlockStart:`calc(${F} * ${r})`}:null,zIndex:"first"===y?D.length-r:r+1},children:t("span",{style:{display:"inline-flex",scale:1===S?void 0:String(S**r),opacity:1===j?void 0:j**r},children:e})},r)})})});
1
+ "use client";import{jsx as t}from"react/jsx-runtime";import*as e from"react";import{animBaseClass as r,animationClasses as a,animationSlots as l,transitionParts as n}from"../../internal/animate.js";import{cx as i,toLength as s}from"../../internal/styles.js";import{childKey as o}from"../../internal/children.js";import{useStyleDefaults as c}from"../../internal/defaults.js";const m={xs:"0.375rem",sm:"0.5rem",md:"0.625rem",lg:"0.75rem",xl:"0.875rem"};export const Stack=/*@__PURE__*/e.forwardRef(function Stack(d,f){const{direction:p="horizontal",overlap:g,drop:h,size:u="md",max:x,total:y,overflow:v,front:S="first",scaleStep:j=1,opacityStep:$=1,ring:k=!1,transition:z,stagger:w=0,durationStep:M=0,reverse:N=!1,className:b,style:B,children:I,...A}=c(d,["size"]),C=e.Children.toArray(I),R=void 0===x?C:C.slice(0,Math.max(0,x)),q=Math.max(0,(y??C.length)-R.length),D=q>0?v?.(q):null,E=null==D?R:[...R,D],F=s(g??m[u]),G=s(h??g??m[u]),H="vertical"===p,J="diagonal"===p,K=n(z),L=K?`${r} ${a[K.effect]}`:"";return t("span",{ref:f,className:i("isolate inline-flex",H?"flex-col items-start":"items-start",k?"[&>*>*>*]:ring-2 [&>*>*>*]:ring-(--neba-surface)":"",b??""),style:B,...A,children:E.map((e,r)=>{const a=N?E.length-1-r:r,n=K?l({...K.slots,delay:K.slots.delay+a*w,duration:Math.max(0,K.slots.duration+a*M)}):void 0;return t("span",{"data-neba-stack-item":"",className:L||void 0,style:{...n,...0===r?null:H?{marginBlockStart:`calc(${F} * -1)`}:{marginInlineStart:`calc(${F} * -1)`},...J?{marginBlockStart:`calc(${G} * ${r})`}:null,zIndex:"first"===S?E.length-r:r+1},children:t("span",{style:{display:"inline-flex",scale:1===j?void 0:String(j**r),opacity:1===$?void 0:$**r},children:e})},r===R.length?"overflow":o(e,r))})})});
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as l from"react";import{Box as n}from"../box/Box.js";import{Chip as a}from"../chip/Chip.js";import{MinusIcon as r,TrendDownIcon as s,TrendUpIcon as m}from"../../internal/icons.js";import{numberFormatter as i}from"../../internal/format.js";import{cx as o,hasContent as c,metaTextClasses as u,sheetSectionGapClasses as d}from"../../internal/styles.js";import{useStyleDefaults as f}from"../../internal/defaults.js";const x={xs:"text-[1.125rem]/[1.375rem]",sm:"text-[1.375rem]/[1.625rem]",md:"text-[1.75rem]/[2rem]",lg:"text-[2.25rem]/[2.5rem]",xl:"text-[2.875rem]/[3.25rem]"},p={xs:"text-[0.75rem]",sm:"text-[0.875rem]",md:"text-[1rem]",lg:"text-[1.25rem]",xl:"text-[1.5rem]"},h={xs:"gap-y-0.5",sm:"gap-y-0.5",md:"gap-y-1",lg:"gap-y-1",xl:"gap-y-1.5"},b={start:"items-start text-start",center:"items-center text-center",end:"items-end text-end"},g={up:e(m,{}),down:e(s,{}),flat:e(r,{})};export const Statistic=/*@__PURE__*/l.forwardRef(function(l,r){const{size:s="md",color:m="primary",density:j="default",label:w,value:y,format:N,locale:$,prefix:v,unit:z,icon:M,previousValue:k,delta:B="percent",betterWhen:C="up",caption:F,align:I="start",className:R,children:S,...V}=f(l,["size","density","locale"]),W="number"==typeof y?y:null,q=null===W?y:i($,N).format(W),A=null!==W&&void 0!==k?W-k:null,D=null!==A&&0!==k&&void 0!==k?A/Math.abs(k):null,E=null===A?null:A>0?"up":A<0?"down":"flat";let G=null;if(null!==A&&null!==E&&"none"!==B){const e=A>0?"+":A<0?"-":"",t=`${e}${i($,N).format(Math.abs(A))}`,l=null===D?null:`${e}${(100*Math.abs(D)).toFixed(1).replace(/\.0$/,"")}%`;G="absolute"===B?t:"both"===B?[l,t].filter(Boolean).join(" · "):l??t}const H=null===E||"flat"===E?"secondary":E===C?"success":"danger",J=null!==G||c(F);return t(n,{ref:r,size:s,color:m,density:j,className:o("flex flex-col",d[s],b[I],R??""),...V,children:[c(w)||c(M)?t("div",{className:["flex min-w-0 items-center gap-1.5 font-medium text-(--neba-muted-fg)",u[s]].join(" "),children:[c(M)?e("span",{className:"flex shrink-0 items-center",children:M}):null,c(w)?e("span",{className:"min-w-0 truncate",children:w}):null]}):null,t("div",{className:["flex min-w-0 flex-wrap items-baseline gap-1 font-semibold text-(--neba-fg) tabular-nums",x[s]].join(" "),children:[c(v)?e("span",{className:`font-medium text-(--neba-muted-fg) ${p[s]}`,children:v}):null,e("span",{className:"min-w-0 break-words",children:q}),c(z)?e("span",{className:`font-medium text-(--neba-muted-fg) ${p[s]}`,children:z}):null]}),J?t("div",{className:`flex min-w-0 flex-wrap items-center gap-x-2 ${h[s]}`,children:[null!==G&&null!==E?e(a,{size:s,variant:"text",color:H,startIcon:g[E],className:"tabular-nums",children:G}):null,c(F)?e("span",{className:`min-w-0 text-(--neba-muted-fg) ${u[s]}`,children:F}):null]}):null,S]})});
1
+ "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as l from"react";import{Box as n}from"../box/Box.js";import{Chip as a}from"../chip/Chip.js";import{MinusIcon as s,TrendDownIcon as r,TrendUpIcon as i}from"../../internal/icons.js";import{numberFormatter as m}from"../../internal/format.js";import{cx as o,hasContent as u,metaTextClasses as c,sheetSectionGapClasses as d}from"../../internal/styles.js";import{useStyleDefaults as f}from"../../internal/defaults.js";const x={xs:"text-[1.125rem]/[1.375rem]",sm:"text-[1.375rem]/[1.625rem]",md:"text-[1.75rem]/[2rem]",lg:"text-[2.25rem]/[2.5rem]",xl:"text-[2.875rem]/[3.25rem]"},p={xs:"text-[0.75rem]",sm:"text-[0.875rem]",md:"text-[1rem]",lg:"text-[1.25rem]",xl:"text-[1.5rem]"},b={xs:"gap-y-0.5",sm:"gap-y-0.5",md:"gap-y-1",lg:"gap-y-1",xl:"gap-y-1.5"},h={start:"items-start text-start",center:"items-center text-center",end:"items-end text-end"},g={up:e(i,{}),down:e(r,{}),flat:e(s,{})};export const Statistic=/*@__PURE__*/l.forwardRef(function Statistic(l,s){const{size:r="md",color:i="primary",density:N="default",label:w,value:y,format:j,locale:v,prefix:$,unit:M,icon:z,previousValue:F,delta:k="percent",betterWhen:B="up",caption:D,align:S="start",className:C,children:I,...O}=f(l,["size","density","locale"]),R="number"==typeof y?y:null,V=null===R?y:m(v,j).format(R),W=null!==R&&Number.isFinite(R)&&void 0!==F&&Number.isFinite(F)?R-F:null,q=null!==W&&0!==F&&void 0!==F?W/Math.abs(F):null,A=m(v,j),E="absolute"!==k&&null!==q,G=E?3:A.resolvedOptions().maximumFractionDigits??0,H=E?q:W,J=null===H||0===Math.round(Math.abs(H)*10**G)?0:Math.sign(H),K=null===W?null:J>0?"up":J<0?"down":"flat";let L=null;if(null!==W&&null!==K&&"none"!==k){const e="up"===K?"+":"down"===K?"-":"",t=`${e}${A.format(Math.abs(W))}`,l=null===q?null:`${e}${m(v,{style:"percent",maximumFractionDigits:1}).format(Math.abs(q))}`;L="absolute"===k?t:"both"===k?[l,t].filter(Boolean).join(" · "):l??t}const P=null===K||"flat"===K?"secondary":K===B?"success":"danger",Q=null!==L||u(D);return t(n,{ref:s,size:r,color:i,density:N,className:o("flex flex-col",d[r],h[S],C??""),...O,children:[u(w)||u(z)?t("div",{className:["flex min-w-0 items-center gap-1.5 font-medium text-(--neba-muted-fg)",c[r]].join(" "),children:[u(z)?e("span",{className:"flex shrink-0 items-center",children:z}):null,u(w)?e("span",{className:"min-w-0 truncate",children:w}):null]}):null,t("div",{className:["flex min-w-0 flex-wrap items-baseline gap-1 font-semibold text-(--neba-fg) tabular-nums",x[r]].join(" "),children:[u($)?e("span",{className:`font-medium text-(--neba-muted-fg) ${p[r]}`,children:$}):null,e("span",{className:"min-w-0 break-words",children:V}),u(M)?e("span",{className:`font-medium text-(--neba-muted-fg) ${p[r]}`,children:M}):null]}),Q?t("div",{className:`flex min-w-0 flex-wrap items-center gap-x-2 ${b[r]}`,children:[null!==L&&null!==K?e(a,{size:r,variant:"text",color:P,startIcon:g[K],className:"tabular-nums",children:L}):null,u(D)?e("span",{className:`min-w-0 text-(--neba-muted-fg) ${c[r]}`,children:D}):null]}):null,I]})});
@@ -0,0 +1,75 @@
1
+ import * as React from 'react';
2
+ import { useRender } from '@base-ui/react/use-render';
3
+ import type { NebaColor } from '../../types.js';
4
+ export interface StreamingTextProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'color'> {
5
+ /**
6
+ * The text so far. A **string** is what this is for: it is cut into words,
7
+ * and each one fades in as it lands. Anything else is rendered untouched,
8
+ * with the caret and the reserved height still around it.
9
+ */
10
+ children?: React.ReactNode;
11
+ /**
12
+ * Whether more is still coming. It draws the caret and marks the block busy;
13
+ * it does not change what is already there.
14
+ * @default false
15
+ */
16
+ streaming?: boolean;
17
+ /**
18
+ * The block at the end while the stream runs. `false` drops it, and a node
19
+ * replaces it — a spinner, a set of dots, a word.
20
+ * @default true
21
+ */
22
+ cursor?: React.ReactNode | boolean;
23
+ /**
24
+ * Fades each word in as it arrives.
25
+ *
26
+ * On. It costs one element per word, which is the price of the effect: a
27
+ * transition on the block as a whole would fade the *whole answer* every time
28
+ * a token landed. Turn it off for a very long answer, or where the text is
29
+ * being re-rendered from something other than a stream.
30
+ * @default true
31
+ */
32
+ fade?: boolean;
33
+ /**
34
+ * How many lines of height to hold before anything has arrived, so the page
35
+ * does not jump when the first word lands. Measured in `1lh`, which is the
36
+ * line height this block actually has rather than a guess at one.
37
+ *
38
+ * The reservation is a floor and stays a floor once the text is there: a
39
+ * height that is given up on arrival is the same jump twice.
40
+ * @default 1
41
+ */
42
+ lines?: number;
43
+ /** The caret's colour family. @default 'primary' */
44
+ color?: NebaColor;
45
+ /** Renders something other than a `<div>` — a `<p>`, most of the time. */
46
+ render?: useRender.RenderProp;
47
+ }
48
+ /**
49
+ * Text arriving from somewhere else.
50
+ *
51
+ * [AnimateTyping](../transitions/animate-typing) types out a string it already
52
+ * has: it knows the ending and is spending time on the way there. This is the
53
+ * opposite direction — the string is being handed over a piece at a time,
54
+ * nobody knows how long it will be, and the component's job is to make that
55
+ * land without the page moving underneath whoever is reading it.
56
+ *
57
+ * Three things do that. The block holds a floor of `lines` before anything has
58
+ * arrived, and keeps holding it afterwards, because a reservation given up on
59
+ * arrival is the same jump twice. A caret says the text is not finished. And
60
+ * each word fades in on its own rather than the block fading as a whole — which
61
+ * is not a flourish: a transition on the block would replay the *entire* answer
62
+ * every time a token landed.
63
+ *
64
+ * The fade needs no bookkeeping at all. Words are keyed by position, so a word
65
+ * already on screen keeps its element and never animates again; only a new one
66
+ * is a new element, and the last word grows a character at a time inside the
67
+ * element it already has.
68
+ *
69
+ * It is deliberately **not** a live region. An answer that announced itself
70
+ * token by token would be unusable, and one that announced itself whole on
71
+ * every token would say the beginning again and again. Announcing a finished
72
+ * answer is the application's decision, because only the application knows
73
+ * whether the reader asked for this one.
74
+ */
75
+ export declare const StreamingText: React.ForwardRefExoticComponent<StreamingTextProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1 @@
1
+ "use client";import{jsx as e,Fragment as r,jsxs as a}from"react/jsx-runtime";import*as n from"react";import{useRender as s}from"@base-ui/react/use-render";import{cx as t,hasContent as i}from"../../internal/styles.js";export const StreamingText=/*@__PURE__*/n.forwardRef(function StreamingText({children:l,streaming:c=!1,cursor:m=!0,fade:o=!0,lines:d=1,color:u="primary",render:p,className:f,style:h,...g},x){const v="string"==typeof l?l:null,y=n.useMemo(()=>null!==v&&o?function(e){return e.split(/(\s+)/).filter(e=>""!==e)}(v):null,[v,o]),b=c&&!1!==m?!0===m?e("span",{"aria-hidden":"true",className:"neba-stream-caret"}):m:null;return s({render:p??e("div",{}),ref:x,props:{"aria-busy":c||void 0,"data-streaming":c||void 0,className:t("min-h-(--n-reserve) whitespace-pre-wrap",f),style:{"--n-reserve":`calc(${Math.max(d,0)} * 1lh)`,"--n-accent":`var(--neba-${u}-accent)`,...h},children:a(r,{children:[y?y.map((r,a)=>/\s/.test(r)?e(n.Fragment,{children:r},a):e("span",{className:"neba-stream-word",children:r},a)):l,i(b)?b:null]}),...g}})});
@@ -0,0 +1,2 @@
1
+ export { StreamingText } from './StreamingText.js';
2
+ export type { StreamingTextProps } from './StreamingText.js';
@@ -0,0 +1 @@
1
+ export{StreamingText}from"./StreamingText.js";
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as a,Fragment as r}from"react/jsx-runtime";import*as n from"react";import{Switch as l}from"@base-ui/react/switch";import{Field as t}from"@base-ui/react/field";import{controlTextClasses as o,cx as i,hitAreaClasses as c,metaTextClasses as s,surfaceClasses as d,tickRowLeadingClasses as b}from"../../internal/styles.js";import{useStyleDefaults as h}from"../../internal/defaults.js";const f={xs:"h-3.5 w-6",sm:"h-4 w-7",md:"h-5 w-9",lg:"h-6 w-11",xl:"h-7 w-13"},m={xs:"data-[checked]:left-[calc(100%-0.75rem)]",sm:"data-[checked]:left-[calc(100%-0.875rem)]",md:"data-[checked]:left-[calc(100%-1.125rem)]",lg:"data-[checked]:left-[calc(100%-1.375rem)]",xl:"data-[checked]:left-[calc(100%-1.625rem)]"},u=["relative inline-flex shrink-0 border",c,"[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]","rounded-full","[transition-property:background-color,border-color,box-shadow]","[transition-duration:var(--neba-duration-fill),var(--neba-duration),var(--neba-duration)]","[transition-timing-function:var(--neba-ease)]","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2"].join(" "),v=[d,"cursor-pointer bg-(--n-panel) [border-color:var(--n-line)]","hover:bg-(--n-panel-hover) hover:[border-color:var(--n-line-hover)]","data-[checked]:bg-(--n-fill) data-[checked]:[border-color:transparent]","data-[checked]:hover:bg-(--n-fill-hover)"].join(" "),p=[d,"cursor-default bg-(--n-panel) [border-color:var(--n-line)]","[filter:saturate(0.55)]","data-[checked]:bg-(--n-fill) data-[checked]:[border-color:transparent]"].join(" "),g=["cursor-not-allowed bg-transparent [border-color:var(--neba-disabled-border)] shadow-none","data-[checked]:bg-(--neba-disabled-bg)"].join(" "),x=["absolute inset-y-0.5 left-0.5 aspect-square rounded-full bg-(--neba-surface)","[box-shadow:var(--neba-shadow-1)]","[transition:left_var(--neba-duration)_var(--neba-ease)]"].join(" ");export const Switch=/*@__PURE__*/n.forwardRef(function(n,c){const{size:d="md",color:w="primary",label:k,description:N,error:j,invalid:y,labelPlacement:$="end",disabled:_=!1,readOnly:R=!1,className:z,classNames:O,style:S,...q}=h(n,["size"]),D=null!=j&&!1!==j&&""!==j,E=y??D,F=E?"danger":w,L={"--n-fill":`var(--neba-${F}-fill)`,"--n-fill-hover":`var(--neba-${F}-fill-hover)`,"--n-accent":`var(--neba-${F}-accent)`,"--n-panel":"var(--neba-panel)","--n-panel-hover":"var(--neba-panel-hover)","--n-line":`var(--neba-${F}-line)`,"--n-line-hover":`var(--neba-${F}-line-hover)`,"--n-ring":`var(--neba-${F}-ring)`},P=e("span",{className:"flex h-[1lh] shrink-0 items-center",children:e(l.Root,{ref:c,className:i(u,f[d],_?g:R?p:v,O?.control),disabled:_,readOnly:R,...q,children:e(l.Thumb,{className:i(x,m[d],O?.thumb)})})}),T=k||N?a("span",{className:i("flex min-w-0 flex-col gap-0.5","start"===$?"flex-1":""),children:[k?e(t.Label,{className:i("leading-[1.4]",_?"text-(--neba-disabled-fg)":"cursor-pointer text-(--neba-fg)",O?.label),children:k}):null,N?e(t.Description,{className:i(s[d],"text-(--neba-muted-fg)",O?.description),children:N}):null]}):null;return a(t.Root,{disabled:_,invalid:E,className:i("inline-flex flex-col gap-1 align-top",z??""),style:{...L,...S},children:[e("div",{className:`flex items-start gap-2.5 ${o[d]} ${b}`,children:a(r,"start"===$?{children:[T,P]}:{children:[P,T]})}),e(t.Error,D?{match:!0,className:i(s[d],"text-(--n-accent)",O?.error),children:j}:{className:i(s[d],"text-(--n-accent)",O?.error)})]})});
1
+ "use client";import{jsx as e,jsxs as a,Fragment as r}from"react/jsx-runtime";import*as n from"react";import{Switch as l}from"@base-ui/react/switch";import{Field as t}from"@base-ui/react/field";import{controlTextClasses as o,cx as i,hitAreaClasses as s,metaTextClasses as c,surfaceClasses as d,tickRowLeadingClasses as b}from"../../internal/styles.js";import{useStyleDefaults as h}from"../../internal/defaults.js";import{useFieldsetDisabled as m}from"../../internal/fieldset.js";const f={xs:"h-3.5 w-6",sm:"h-4 w-7",md:"h-5 w-9",lg:"h-6 w-11",xl:"h-7 w-13"},u={xs:"data-[checked]:start-[calc(100%-0.75rem)]",sm:"data-[checked]:start-[calc(100%-0.875rem)]",md:"data-[checked]:start-[calc(100%-1.125rem)]",lg:"data-[checked]:start-[calc(100%-1.375rem)]",xl:"data-[checked]:start-[calc(100%-1.625rem)]"},v={xs:"",sm:"",md:"py-[calc((1.25rem-1lh)/2)]",lg:"py-[calc((1.5rem-1lh)/2)]",xl:"py-[calc((1.75rem-1lh)/2)]"},g=["relative inline-flex shrink-0 border",s,"[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]","rounded-full","[transition-property:background-color,border-color,box-shadow]","[transition-duration:var(--neba-duration-fill),var(--neba-duration),var(--neba-duration)]","[transition-timing-function:var(--neba-ease)]","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2"].join(" "),p=[d,"cursor-pointer bg-(--neba-groove) [border-color:var(--n-line)]","hover:bg-(--neba-groove-hover) hover:[border-color:var(--n-line-hover)]","data-[checked]:bg-(--n-fill) data-[checked]:[border-color:transparent]","data-[checked]:hover:bg-(--n-fill-hover)"].join(" "),x=[d,"cursor-default bg-(--neba-groove) [border-color:var(--n-line)]","[filter:saturate(0.55)]","data-[checked]:bg-(--n-fill) data-[checked]:[border-color:transparent]"].join(" "),w=["cursor-not-allowed bg-transparent [border-color:var(--neba-disabled-border)] shadow-none","data-[checked]:bg-(--neba-disabled-bg)"].join(" "),k=["absolute inset-y-0.5 start-0.5 aspect-square rounded-full bg-(--neba-surface)","[box-shadow:var(--neba-shadow-1)]","[transition:inset-inline-start_var(--neba-duration)_var(--neba-ease)]"].join(" ");export const Switch=/*@__PURE__*/n.forwardRef(function Switch(n,s){const{size:d="md",color:N="primary",label:j,description:y,error:$,invalid:_,labelPlacement:R="end",disabled:S,readOnly:z=!1,className:O,classNames:q,style:D,...E}=h(n,["size"]),F=m(S),L=null!=$&&!1!==$&&""!==$,P=_??L,T=P?"danger":N,A={"--n-fill":`var(--neba-${T}-fill)`,"--n-fill-hover":`var(--neba-${T}-fill-hover)`,"--n-accent":`var(--neba-${T}-accent)`,"--n-line":`var(--neba-${T}-line)`,"--n-line-hover":`var(--neba-${T}-line-hover)`,"--n-ring":`var(--neba-${T}-ring)`},B=e("span",{className:"flex h-[1lh] shrink-0 items-center",children:e(l.Root,{ref:s,className:i("neba-switch",g,f[d],F?w:z?x:p,q?.control),disabled:F,readOnly:z,...E,children:e(l.Thumb,{className:i("neba-switch-thumb",k,u[d],q?.thumb)})})}),C=j||y?a("span",{className:i("flex min-w-0 flex-col gap-0.5","start"===R?"flex-1":""),children:[j?e(t.Label,{className:i("leading-[1.4]",F?"text-(--neba-disabled-fg)":"cursor-pointer text-(--neba-fg)",q?.label),children:j}):null,y?e(t.Description,{className:i(c[d],"text-(--neba-muted-fg)",q?.description),children:y}):null]}):null;return a(t.Root,{disabled:F,invalid:P,className:i("inline-flex flex-col gap-1 align-top",O??""),style:{...A,...D},children:[e("div",{className:i("flex items-start gap-2.5",o[d],b,v[d]),children:a(r,"start"===R?{children:[C,B]}:{children:[B,C]})}),e(t.Error,L?{match:!0,className:i(c[d],"text-(--n-accent)",q?.error),children:$}:{className:i(c[d],"text-(--n-accent)",q?.error)})]})});
@@ -86,11 +86,17 @@ export interface TableProps<Row> extends Omit<BoxProps, 'padded' | 'children' |
86
86
  /** Lights the row under the pointer. @default false */
87
87
  hoverable?: boolean;
88
88
  /**
89
- * Pins the header while the body scrolls. Only does anything if something
90
- * around the table actually constrains its height.
89
+ * Pins the header while the body scrolls. The sheet the table draws is what
90
+ * scrolls, so its height is limited with `maxHeight`; a height limited on a
91
+ * box around the table scrolls that box, and the header goes with the rows.
91
92
  * @default false
92
93
  */
93
94
  stickyHeader?: boolean;
95
+ /**
96
+ * The tallest the sheet gets before its rows scroll inside it: a number of
97
+ * pixels or any CSS length.
98
+ */
99
+ maxHeight?: number | string;
94
100
  /** Makes rows activatable. Also turns on the hover treatment. */
95
101
  onRowClick?: (row: Row, index: number) => void;
96
102
  /**
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import{Box as r}from"../box/Box.js";import{tableMessages as a,useMessages as l}from"../../internal/i18n.js";import{controlTextLeadingClasses as n,cx as o,metaTextClasses as s,paddingXValues as i}from"../../internal/styles.js";import{useStyleDefaults as d}from"../../internal/defaults.js";const c={default:{xs:"0.25rem",sm:"0.375rem",md:"0.625rem",lg:"0.75rem",xl:"0.875rem"},compact:{xs:"0.125rem",sm:"0.25rem",md:"0.375rem",lg:"0.5rem",xl:"0.625rem"}},m=["[--n-row:transparent]","[transition:background-color_var(--neba-duration)_var(--neba-ease)]"].join(" "),p=["cursor-pointer [outline:none]","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:[outline-offset:-2px]"].join(" "),y={borderTop:"1px solid var(--n-line)",backgroundColor:"var(--n-row)"};export function Table(h){const{headers:u,items:b,getRowKey:x,caption:f,locale:g,empty:v,striped:w=!1,hoverable:k=!1,stickyHeader:N=!1,onRowClick:j,size:C="md",density:z="default",className:A,classNames:$,..._}=d(h,["size","density","locale"]),T=l(a,g),B=i[z][C],D=c[z][C],K=Boolean(j),R=k||K,E={padding:`${D} ${B}`},H={...E,backgroundColor:"var(--n-panel-press)"};return e(r,{size:C,density:z,padded:!1,className:o("overflow-x-auto",A??""),..._,children:t("table",{className:o("w-full text-start",n[C],"text-(--neba-fg)",$?.table),style:{borderCollapse:"collapse"},children:[f?e("caption",{className:o(s[C],"text-(--neba-muted-fg)",$?.caption),style:{...E,textAlign:"start"},children:f}):null,e("colgroup",{children:u.map(t=>e("col",{style:void 0===t.width?void 0:{width:"number"==typeof t.width?`${t.width}px`:t.width}},t.key))}),e("thead",{className:$?.head,children:e("tr",{children:u.map(t=>e("th",{scope:"col",className:o("font-semibold whitespace-nowrap text-(--neba-muted-fg)",N?"sticky top-0 z-10 [backdrop-filter:var(--neba-blur)]":"",$?.headCell),style:{...H,textAlign:t.align??"start"},children:t.label??t.key},t.key))})}),e("tbody",{className:$?.body,children:0===b.length?e("tr",{className:o(m,$?.row),style:y,children:e("td",{colSpan:u.length,className:o("text-(--neba-muted-fg)",$?.empty),style:{padding:`2rem ${B}`,textAlign:"center"},children:v??T.empty})}):b.map((t,r)=>e("tr",{className:o(m,w&&r%2==1?"[--n-row:var(--n-panel-hover)]":"",R?"hover:[--n-row:var(--n-soft)]":"",K?p:"",$?.row),style:y,tabIndex:K?0:void 0,onClick:j?()=>j(t,r):void 0,onKeyDown:j?e=>{e.target===e.currentTarget&&("Enter"!==e.key&&" "!==e.key||(e.preventDefault(),j(t,r)))}:void 0,children:u.map(a=>e("td",{className:$?.cell,style:{...E,textAlign:a.align??"start"},children:a.render?a.render(t,r):t[a.key]},a.key))},x?x(t,r):r))})]})})}
1
+ "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import{Box as r}from"../box/Box.js";import{tableMessages as a,useMessages as l}from"../../internal/i18n.js";import{controlTextLeadingClasses as n,cx as o,metaTextClasses as s,paddingXValues as i,toLength as d}from"../../internal/styles.js";import{useStyleDefaults as c}from"../../internal/defaults.js";const m={default:{xs:"0.25rem",sm:"0.375rem",md:"0.625rem",lg:"0.75rem",xl:"0.875rem"},compact:{xs:"0.125rem",sm:"0.25rem",md:"0.375rem",lg:"0.5rem",xl:"0.625rem"}},p=["[--n-row:transparent]","[transition:background-color_var(--neba-duration)_var(--neba-ease)]"].join(" "),y=["cursor-pointer [outline:none]","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:[outline-offset:-2px]"].join(" "),b={borderTop:"1px solid var(--n-line)",backgroundColor:"var(--n-row)"};export function Table(h){const{headers:u,items:g,getRowKey:x,caption:f,locale:v,empty:k,striped:w=!1,hoverable:N=!1,stickyHeader:j=!1,maxHeight:C,onRowClick:_,size:z="md",density:A="default",className:$,classNames:H,style:T,...B}=c(h,["size","density","locale"]),D=l(a,v),K=i[A][z],R=m[A][z],E=Boolean(_),I=N||E,S={padding:`${R} ${K}`},q={...S,backgroundColor:"var(--n-panel-press)",color:"var(--n-cell-ink, var(--neba-muted-fg))"};return e(r,{size:z,density:A,padded:!1,className:o("overflow-x-auto",$??""),style:void 0===C?T:{maxHeight:d(C),...T},...B,children:t("table",{className:o("w-full text-start",n[z],"text-(--neba-fg)",H?.table),style:{borderCollapse:"collapse"},children:[f?e("caption",{className:o(s[z],"text-(--neba-muted-fg)",H?.caption),style:{...S,textAlign:"start"},children:f}):null,e("colgroup",{children:u.map(t=>e("col",{style:void 0===t.width?void 0:{width:"number"==typeof t.width?`${t.width}px`:t.width}},t.key))}),e("thead",{className:H?.head,children:e("tr",{children:u.map(t=>e("th",{scope:"col",className:o("font-semibold whitespace-nowrap",j?"sticky top-0 z-10 [backdrop-filter:var(--neba-blur)]":"",H?.headCell),style:{...q,textAlign:t.align??"start"},children:t.label??t.key},t.key))})}),e("tbody",{className:H?.body,children:0===g.length?e("tr",{className:o(p,H?.row),style:b,children:e("td",{colSpan:u.length,className:H?.empty,style:{padding:`2rem ${K}`,textAlign:"center",color:"var(--n-cell-ink, var(--neba-muted-fg))"},children:k??D.empty})}):g.map((t,r)=>e("tr",{className:o(p,w&&r%2==1?"[--n-row:color-mix(in_oklab,var(--neba-fg)_4%,transparent)]":"",I?"hover:[--n-row:var(--n-soft)]":"",E?y:"",H?.row),style:b,tabIndex:E?0:void 0,onClick:_?()=>_(t,r):void 0,onKeyDown:_?e=>{e.target===e.currentTarget&&("Enter"!==e.key&&" "!==e.key||(e.preventDefault(),_(t,r)))}:void 0,children:u.map(a=>e("td",{className:H?.cell,style:{...S,textAlign:a.align??"start"},children:a.render?a.render(t,r):t[a.key]},a.key))},x?x(t,r):r))})]})})}
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import type { NebaOrientation, NebaStyleProps, NebaVariant } from '../../types.js';
2
+ import type { NebaAlign, NebaOrientation, NebaStyleProps, NebaVariant } from '../../types.js';
3
3
  /** A tab's value. The same restraint Select puts on its own — an identifier. */
4
4
  export type TabValue = string | number;
5
5
  /**
@@ -89,6 +89,22 @@ export interface TabsProps extends Omit<NebaStyleProps, 'variant'>, Omit<React.C
89
89
  wheel?: boolean;
90
90
  /** The tabs share the bar's full width, each taking an equal share of it. */
91
91
  fullWidth?: boolean;
92
+ /**
93
+ * Where a tab's label sits inside the tab, once the tab is wider than the
94
+ * label is.
95
+ *
96
+ * Which is the whole of when this is worth setting: a horizontal bar sizes
97
+ * each tab to its own content, so there is nothing to align until
98
+ * `fullWidth` gives them all an equal share. A **vertical** bar is the case
99
+ * it exists for — the tabs there are a column, every one of them as wide as
100
+ * the longest, and centred labels down a column read as a ragged edge on
101
+ * both sides. `start` is what a sidebar of tabs usually wants.
102
+ *
103
+ * It moves the label and the icons together, and nothing else: the tab keeps
104
+ * its own size, its padding and its indicator.
105
+ * @default 'center'
106
+ */
107
+ align?: NebaAlign;
92
108
  children?: React.ReactNode;
93
109
  }
94
110
  export interface TabProps extends Omit<React.ComponentPropsWithoutRef<'button'>, 'value' | 'color'> {
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as a from"react";import{Tabs as o}from"@base-ui/react/tabs";import{controlHeightClasses as l,controlHeightValues as n,controlTextClasses as i,cx as r,gapClasses as s,hasContent as c,iconClasses as d,paddingXClasses as f,radiusClasses as u,surfaceClasses as b,surfaceSlots as h,transitionClasses as v}from"../../internal/styles.js";import{observeResize as p}from"../../internal/observe.js";import{bindAxisWheel as x}from"../../internal/wheel.js";const m=/*@__PURE__*/a.createContext({variant:"outline",size:"md",density:"default",orientation:"horizontal",fullWidth:!1}),w={solid:{horizontal:`${b} inline-flex bg-(--n-panel) p-1 [box-shadow:var(--neba-plate-glass)]`,vertical:`${b} inline-flex flex-col bg-(--n-panel) p-1 [box-shadow:var(--neba-plate-glass)]`},outline:{horizontal:"flex border-b [border-color:var(--n-line)]",vertical:"flex flex-col border-e [border-color:var(--n-line)]"},text:{horizontal:"flex",vertical:"flex flex-col"}},g={solid:{horizontal:"absolute left-(--active-tab-left) top-(--active-tab-top) h-(--active-tab-height) w-(--active-tab-width)",vertical:"absolute left-(--active-tab-left) top-(--active-tab-top) h-(--active-tab-height) w-(--active-tab-width)"},outline:{horizontal:"absolute bottom-0 left-(--active-tab-left) h-0.5 w-(--active-tab-width)",vertical:"absolute end-0 top-(--active-tab-top) h-(--active-tab-height) w-0.5"},text:{horizontal:"absolute bottom-0 left-(--active-tab-left) h-0.5 w-(--active-tab-width)",vertical:"absolute end-0 top-(--active-tab-top) h-(--active-tab-height) w-0.5"}},y={horizontal:"absolute left-(--active-tab-left) top-(--active-tab-top) h-(--active-tab-height) w-(--active-tab-width) border-b-2 [border-color:var(--n-accent)] !bg-transparent",vertical:"absolute left-(--active-tab-left) top-(--active-tab-top) h-(--active-tab-height) w-(--active-tab-width) border-e-2 [border-color:var(--n-accent)] !bg-transparent"},z={solid:`${b} bg-(--n-panel-press) [box-shadow:var(--neba-shadow-1),var(--neba-plate-glass)]`,outline:"bg-(--n-accent)",text:"bg-(--n-accent)"},N={solid:"text-(--neba-muted-fg) hover:text-(--neba-fg) data-[active]:text-(--n-accent)",outline:"text-(--neba-muted-fg) hover:text-(--neba-fg) data-[active]:text-(--n-accent)",text:"text-(--neba-muted-fg) hover:text-(--neba-fg) data-[active]:text-(--n-accent)"};export const Tab=/*@__PURE__*/a.forwardRef(function({value:n,startIcon:b,endIcon:h,disabled:p=!1,className:x,children:w,...g},y){const{variant:z,size:$,density:j,fullWidth:k}=a.useContext(m);return t(o.Tab,{ref:y,value:n,disabled:p,className:r("relative z-10 inline-flex shrink-0 cursor-pointer items-center justify-center select-none","whitespace-nowrap font-medium","[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]",l[$],i[$],s[$],f[j][$],"solid"===z?u[$]:"",v,d,N[z],"focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:[outline-offset:-2px]","data-[disabled]:cursor-not-allowed data-[disabled]:text-(--neba-disabled-fg)",k?"flex-1":"",x??""),...g,children:[c(b)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:b}):null,w,c(h)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:h}):null]})});export const TabPanel=/*@__PURE__*/a.forwardRef(function({value:t,keepMounted:l=!1,className:n,children:i,...r},s){const{size:c}=a.useContext(m);return e(o.Panel,{ref:s,value:t,keepMounted:l,className:["min-w-0 flex-1 text-(--neba-fg)","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2","data-[starting-style]:opacity-0","[transition:opacity_var(--neba-duration)_var(--neba-ease)]",u[c],n??""].filter(Boolean).join(" "),...r,children:i})});export const Tabs=/*@__PURE__*/a.forwardRef(function({variant:l="outline",size:i="md",color:s="primary",density:c="default",value:d,defaultValue:f,onValueChange:b,orientation:v="horizontal",activateOnFocus:N=!1,loopFocus:$=!0,overflow:j="scroll",lines:k,wheel:T=!0,fullWidth:C=!1,className:E,style:M,children:R,...W},_){const V="horizontal"===v,A="wrap"===j,F=a.useRef(null),L=a.useRef(null),P=a.useMemo(()=>({variant:l,size:i,density:c,orientation:v,fullWidth:C}),[l,i,c,v,C]),H=[],I=[];a.Children.forEach(R,e=>{a.isValidElement(e)&&e.type===TabPanel?I.push(e):null!=e&&!1!==e&&H.push(e)});const O=H.length;return a.useEffect(()=>{const e=L.current,t=F.current;if(!e||!t)return;const a=()=>{const a=Math.abs(V?e.scrollLeft:e.scrollTop),o=V?e.clientWidth:e.clientHeight,l=V?e.scrollWidth:e.scrollHeight,n=V?"x":"y",i=V?"y":"x";t.toggleAttribute(`data-overflow-${n}-start`,a>1),t.toggleAttribute(`data-overflow-${n}-end`,l-o-a>1),t.removeAttribute(`data-overflow-${i}-start`),t.removeAttribute(`data-overflow-${i}-end`)};a(),e.addEventListener("scroll",a,{passive:!0});const o=p(e,a);return()=>{e.removeEventListener("scroll",a),o()}},[V,O]),a.useEffect(()=>{const e=L.current;if(e&&T)return x(e)},[T]),e(m.Provider,{value:P,children:t(o.Root,{ref:e=>{F.current=e,"function"==typeof _?_(e):_&&(_.current=e)},value:d,defaultValue:f,onValueChange:e=>b?.(e),orientation:v,className:r("flex min-w-0","vertical"===v?"flex-row gap-4":"flex-col gap-4",E??""),style:{...h(s,0),...M},...W,children:[t(o.List,{ref:L,activateOnFocus:N,loopFocus:$,className:r("relative shrink-0",w[l][v],"solid"===l?u[i]:"",C&&"horizontal"===v?"w-full":"",A?"flex-wrap":V?"overflow-x-auto":"",A&&void 0!==k?V?"overflow-y-auto":"overflow-x-auto":"",!A&&V?"overflow-y-hidden":"","overscroll-contain","[scrollbar-width:none] [&::-webkit-scrollbar]:hidden","neba-scroll-fade"),style:{"--n-fade":"2rem",maxHeight:A&&void 0!==k?`calc(${n[i]} * ${Math.max(1,Math.round(k))}${"solid"===l?" + 0.5rem":""})`:void 0},children:[H,e(o.Indicator,{className:["pointer-events-none",A&&"solid"!==l?y[v]:g[l][v],z[l],"solid"===l?u[i]:"rounded-full","[transition-property:left,top,width,height]","[transition-duration:var(--neba-duration)]","[transition-timing-function:var(--neba-ease)]"].join(" ")})]}),I]})})});
1
+ "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as a from"react";import{glowClasses as o,spotlightSlot as n,trackPointer as l}from"../../internal/glow.js";import{Tabs as i}from"@base-ui/react/tabs";import{controlHeightClasses as r,controlHeightValues as s,controlTextClasses as c,cx as d,gapClasses as f,hasContent as u,iconClasses as b,paddingXClasses as v,radiusClasses as h,surfaceClasses as p,surfaceSlots as m,transitionClasses as x}from"../../internal/styles.js";import{observeResize as g}from"../../internal/observe.js";import{bindAxisWheel as w}from"../../internal/wheel.js";import{useStyleDefaults as y}from"../../internal/defaults.js";const z=/*@__PURE__*/a.createContext({variant:"outline",size:"md",density:"default",orientation:"horizontal",fullWidth:!1,align:"center"}),j={solid:{horizontal:`${p} inline-flex bg-(--n-panel) p-1 [box-shadow:var(--neba-plate-glass)]`,vertical:`${p} inline-flex flex-col bg-(--n-panel) p-1 [box-shadow:var(--neba-plate-glass)]`},outline:{horizontal:"flex border-b [border-color:var(--n-line)]",vertical:"flex flex-col border-e [border-color:var(--n-line)]"},text:{horizontal:"flex",vertical:"flex flex-col"}},N={solid:{horizontal:"absolute left-(--active-tab-left) top-(--active-tab-top) h-(--active-tab-height) w-(--active-tab-width)",vertical:"absolute left-(--active-tab-left) top-(--active-tab-top) h-(--active-tab-height) w-(--active-tab-width)"},outline:{horizontal:"absolute bottom-0 left-(--active-tab-left) h-0.5 w-(--active-tab-width)",vertical:"absolute end-0 top-(--active-tab-top) h-(--active-tab-height) w-0.5"},text:{horizontal:"absolute bottom-0 left-(--active-tab-left) h-0.5 w-(--active-tab-width)",vertical:"absolute end-0 top-(--active-tab-top) h-(--active-tab-height) w-0.5"}},T={horizontal:"absolute left-(--active-tab-left) top-(--active-tab-top) h-(--active-tab-height) w-(--active-tab-width) border-b-2 [border-color:var(--n-accent)] !bg-transparent",vertical:"absolute left-(--active-tab-left) top-(--active-tab-top) h-(--active-tab-height) w-(--active-tab-width) border-e-2 [border-color:var(--n-accent)] !bg-transparent"},$={solid:`${p} bg-(--n-panel-press) [box-shadow:var(--neba-shadow-1),var(--neba-plate-glass)]`,outline:"bg-(--n-accent)",text:"bg-(--n-accent)"},k={start:"justify-start",center:"justify-center",end:"justify-end"},M={solid:"text-(--neba-muted-fg) hover:text-(--neba-fg) data-[active]:text-(--n-accent)",outline:"text-(--neba-muted-fg) hover:text-(--neba-fg) data-[active]:text-(--n-accent)",text:"text-(--neba-muted-fg) hover:text-(--neba-fg) data-[active]:text-(--n-accent)"};export const Tab=/*@__PURE__*/a.forwardRef(function Tab({value:s,startIcon:p,endIcon:m,disabled:g=!1,className:w,style:y,children:j,...N},T){const{variant:$,size:E,density:P,fullWidth:C,align:R}=a.useContext(z);return t(i.Tab,{ref:T,value:s,disabled:g,style:{...g?void 0:n,...y},className:d("relative z-10 inline-flex shrink-0 cursor-pointer items-center select-none","whitespace-nowrap font-medium",k[R],"[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]",r[E],c[E],f[E],v[P][E],"solid"===$?h[E]:"",x,b,M[$],"focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:[outline-offset:-2px]","data-[disabled]:cursor-not-allowed data-[disabled]:text-(--neba-disabled-fg)",g?"":o,C?"flex-1":"",w??""),...N,onPointerMove:l(N.onPointerMove,!g),children:[u(p)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:p}):null,j,u(m)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:m}):null]})});export const TabPanel=/*@__PURE__*/a.forwardRef(function TabPanel({value:t,keepMounted:o=!1,className:n,children:l,...r},s){const{size:c}=a.useContext(z);return e(i.Panel,{ref:s,value:t,keepMounted:o,className:["min-w-0 flex-1 text-(--neba-fg)","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2","data-[starting-style]:opacity-0","[transition:opacity_var(--neba-duration)_var(--neba-ease)]",h[c],n??""].filter(Boolean).join(" "),...r,children:l})});export const Tabs=/*@__PURE__*/a.forwardRef(function Tabs(o,n){const{variant:l="outline",size:r="md",color:c="primary",density:f="default",value:u,defaultValue:b,onValueChange:v,orientation:p="horizontal",activateOnFocus:x=!1,loopFocus:k=!0,overflow:M="scroll",lines:E,wheel:P=!0,fullWidth:C=!1,align:R="center",className:V,style:W,children:_,...F}=y(o,["size","density","variant"]),A="horizontal"===p,L="wrap"===M,H=a.useRef(null),I=a.useRef(null),O=a.useMemo(()=>({variant:l,size:r,density:f,orientation:p,fullWidth:C,align:R}),[l,r,f,p,C,R]),B=[],q=[],D=e=>a.Children.forEach(e,e=>{a.isValidElement(e)&&e.type===a.Fragment?D(e.props.children):a.isValidElement(e)&&e.type===TabPanel?q.push(e):null!=e&&!1!==e&&B.push(e)});D(_);const G=B.length;return a.useEffect(()=>{const e=I.current,t=H.current;if(!e||!t)return;const a=()=>{const a=Math.abs(A?e.scrollLeft:e.scrollTop),o=A?e.clientWidth:e.clientHeight,n=A?e.scrollWidth:e.scrollHeight,l=A?"x":"y",i=A?"y":"x";t.toggleAttribute(`data-overflow-${l}-start`,a>1),t.toggleAttribute(`data-overflow-${l}-end`,n-o-a>1),t.removeAttribute(`data-overflow-${i}-start`),t.removeAttribute(`data-overflow-${i}-end`)};a(),e.addEventListener("scroll",a,{passive:!0});const o=g(e,a);return()=>{e.removeEventListener("scroll",a),o()}},[A,G]),a.useEffect(()=>{const e=I.current;if(e&&P)return w(e)},[P]),e(z.Provider,{value:O,children:t(i.Root,{ref:e=>{H.current=e,"function"==typeof n?n(e):n&&(n.current=e)},value:u,defaultValue:b,onValueChange:e=>v?.(e),orientation:p,className:d("flex min-w-0","vertical"===p?"flex-row gap-4":"flex-col gap-4",V??""),style:{...m(c,0),...W},...F,children:[t(i.List,{ref:I,activateOnFocus:x,loopFocus:k,className:d("relative shrink-0",j[l][p],"solid"===l?h[r]:"",C&&"horizontal"===p?"w-full":"",L?"flex-wrap":A?"overflow-x-auto":"",L&&void 0!==E?A?"overflow-y-auto":"overflow-x-auto":"",!L&&A?"overflow-y-hidden":"","overscroll-contain","[scrollbar-width:none] [&::-webkit-scrollbar]:hidden","neba-scroll-fade"),style:{"--n-fade":"2rem",maxHeight:L&&void 0!==E?`calc(${s[r]} * ${Math.max(1,Math.round(E))}${"solid"===l?" + 0.5rem":"outline"===l&&A?" + 1px":""})`:void 0},children:[B,e(i.Indicator,{className:["pointer-events-none",L&&"solid"!==l?T[p]:N[l][p],$[l],"solid"===l?h[r]:"rounded-full","[transition-property:left,top,width,height]","[transition-duration:var(--neba-duration)]","[transition-timing-function:var(--neba-ease)]"].join(" ")})]}),q]})})});
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as n from"react";import{Field as r}from"@base-ui/react/field";import{Input as l}from"@base-ui/react/input";import{SpinnerIcon as s}from"../../internal/icons.js";import{controlTextLeadingClasses as a,cx as i,disabledClasses as o,fieldFocusTransitionClasses as c,fieldHeightClasses as m,fieldReadOnlyClasses as d,fieldRestClasses as u,fieldRingClasses as p,gapClasses as f,iconClasses as x,metaTextClasses as h,paddingXClasses as b,radiusClasses as g,stackGapClasses as y,surfaceSlots as $,transitionClasses as w}from"../../internal/styles.js";import{keyHandler as N}from"../../internal/keys.js";import{useStyleDefaults as v}from"../../internal/defaults.js";const j={xs:`${f.xs} ${g.xs} ${a.xs}`,sm:`${f.sm} ${g.sm} ${a.sm}`,md:`${f.md} ${g.md} ${a.md}`,lg:`${f.lg} ${g.lg} ${a.lg}`,xl:`${f.xl} ${g.xl} ${a.xl}`},z={xs:"min-h-5.5 py-[3px]",sm:"min-h-6.5 py-[4px]",md:"min-h-8 py-[5px]",lg:"min-h-10 py-[8px]",xl:"min-h-12 py-[10px]"},k={none:"resize-none",vertical:"resize-y",horizontal:"resize-x",both:"resize"},D=["group relative flex w-full cursor-text","[-webkit-tap-highlight-color:transparent]",w,c,p,x].join(" "),R=u,I=d;export const TextField=/*@__PURE__*/n.forwardRef(function(a,c){const{variant:d="outline",size:u="md",color:p="primary",density:f="default",elevation:x=0,multiline:g=!1,rows:w=3,resize:K="vertical",label:O,description:T,error:C,invalid:E,startIcon:F,endIcon:L,loading:P=!1,fullWidth:W=!1,classNames:q,shortcuts:A,onKeyDown:B,readOnly:G=!1,disabled:H=!1,type:J="text",className:M,style:Q,...S}=v(a,["size","density","variant"]),U=null!=C&&!1!==C&&""!==C,V=E??U,X=V?"danger":p,Y=n.useRef(null),Z=n.useCallback(e=>{Y.current=e,"function"==typeof c?c(e):c&&(c.current=e)},[c]),_=i(D,j[u],g?`${z[u]} items-start`:`${m[u]} items-center`,b[f][u],H?o[d]:G?I[d]:R[d],q?.shell),ee=i("min-w-0 flex-1 bg-transparent [font:inherit] text-inherit","[outline:none]","placeholder:text-(--neba-muted-fg)","caret-(--n-accent) selection:bg-(--n-soft-press)","disabled:cursor-not-allowed",g?`block ${k[K]}`:"self-stretch",q?.control),te="inline-flex h-[1lh] shrink-0 items-center text-(--neba-muted-fg) transition-[color] duration-(--neba-duration) group-focus-within:text-(--n-accent)";return t(r.Root,{disabled:H,invalid:V,className:i("flex-col align-top",y[u],W?"flex w-full":"inline-flex",M??""),style:{...$(X,x),...Q},children:[O?e(r.Label,{className:i(h[u],"font-medium",H?"text-(--neba-disabled-fg)":"text-(--neba-fg)",q?.label),children:O}):null,t("span",{className:_,onPointerDown:e=>{e.target!==e.currentTarget||H||(e.preventDefault(),Y.current?.focus())},children:[F?e("span",{className:te,children:F}):null,e(l,{ref:Z,className:ee,disabled:H,readOnly:G,"aria-busy":P||void 0,"data-loading":P||void 0,...g?{render:e("textarea",{rows:w})}:{type:J},...S,onKeyDown:N(A,B)}),P?e("span",{className:te,children:e(s,{})}):L?e("span",{className:te,children:L}):null]}),T?e(r.Description,{className:i(h[u],"text-(--neba-muted-fg)",q?.description),children:T}):null,e(r.Error,U?{match:!0,className:i(h[u],"text-(--n-accent)",q?.error),children:C}:{className:i(h[u],"text-(--n-accent)",q?.error)})]})});
1
+ "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as n from"react";import{Field as r}from"@base-ui/react/field";import{Input as l}from"@base-ui/react/input";import{fieldLight as i,fieldSpotlightSlot as s,glowClasses as a}from"../../internal/glow.js";import{SpinnerIcon as o}from"../../internal/icons.js";import{controlTextLeadingClasses as c,cx as m,disabledClasses as d,fieldFocusTransitionClasses as u,fieldHeightClasses as p,fieldReadOnlyClasses as f,fieldRestClasses as x,fieldRingClasses as h,gapClasses as b,iconClasses as g,metaTextClasses as y,paddingXClasses as $,radiusClasses as w,stackGapClasses as v,surfaceSlots as N,transitionClasses as j}from"../../internal/styles.js";import{keyHandler as z}from"../../internal/keys.js";import{useStyleDefaults as k}from"../../internal/defaults.js";import{useFieldsetDisabled as D}from"../../internal/fieldset.js";const R={xs:`${b.xs} ${w.xs} ${c.xs}`,sm:`${b.sm} ${w.sm} ${c.sm}`,md:`${b.md} ${w.md} ${c.md}`,lg:`${b.lg} ${w.lg} ${c.lg}`,xl:`${b.xl} ${w.xl} ${c.xl}`},T={xs:"min-h-5.5 py-[3px]",sm:"min-h-6.5 py-[4px]",md:"min-h-8 py-[5px]",lg:"min-h-10 py-[8px]",xl:"min-h-12 py-[10px]"},F={none:"resize-none",vertical:"resize-y",horizontal:"resize-x",both:"resize"},I=["group relative flex w-full","[-webkit-tap-highlight-color:transparent]",j,u,h,g].join(" "),K=x,O=f;export const TextField=/*@__PURE__*/n.forwardRef(function TextField(c,u){const{variant:f="outline",size:x="md",color:h="primary",density:b="default",elevation:g=0,multiline:w=!1,rows:j=3,resize:C="vertical",label:E,description:L,error:P,invalid:W,startIcon:q,endIcon:A,loading:B=!1,fullWidth:G=!1,classNames:H,shortcuts:J,onKeyDown:M,readOnly:Q=!1,disabled:S,type:U="text",className:V,style:X,...Y}=k(c,["size","density","variant"]),Z=D(S),_=!Z&&!Q,ee=null!=P&&!1!==P&&""!==P,te=W??ee,ne=te?"danger":h,re=n.useRef(null),le=n.useCallback(e=>{re.current=e,"function"==typeof u?u(e):u&&(u.current=e)},[u]),ie=m(I,R[x],w?`${T[x]} items-start`:`${p[x]} items-center`,$[b][x],Z?d[f]:Q?O[f]:`${K[f]} ${a}`,Z?"":"cursor-text",H?.shell),se=m("neba-input min-w-0 flex-1 bg-transparent [font:inherit] text-inherit","[outline:none]","placeholder:text-(--neba-muted-fg)","caret-(--n-accent) selection:bg-(--n-soft-press)","disabled:cursor-not-allowed",w?`block ${F[C]}`:"self-stretch",H?.control),ae="inline-flex h-[1lh] shrink-0 items-center text-(--neba-muted-fg) transition-[color] duration-(--neba-duration) group-focus-within:text-(--n-accent)";return t(r.Root,{disabled:Z,invalid:te,className:m("flex-col align-top",v[x],G?"flex w-full":"inline-flex",V??""),style:{...N(ne,g),..._?s:void 0,...X},children:[E?e(r.Label,{className:m(y[x],"font-medium",Z?"text-(--neba-disabled-fg)":"text-(--neba-fg)",H?.label),children:E}):null,t("span",{className:ie,...i(_),onPointerDown:e=>{e.target!==e.currentTarget||Z||(e.preventDefault(),re.current?.focus())},children:[q?e("span",{className:ae,children:q}):null,e(l,{ref:le,className:se,disabled:Z,readOnly:Q,"aria-busy":B||void 0,"data-loading":B||void 0,...w?{render:e("textarea",{rows:j})}:{type:U},...Y,onKeyDown:z(J,M)}),B?e("span",{className:ae,children:e(o,{})}):A?e("span",{className:ae,children:A}):null]}),L?e(r.Description,{className:m(y[x],"text-(--neba-muted-fg)",H?.description),children:L}):null,e(r.Error,ee?{match:!0,className:m(y[x],"text-(--n-accent)",H?.error),children:P}:{className:m(y[x],"text-(--n-accent)",H?.error)})]})});
@@ -1 +1 @@
1
- "use client";import{jsx as n,Fragment as e,jsxs as r}from"react/jsx-runtime";import*as i from"react";import{useRender as a}from"@base-ui/react/use-render";import{linkMessages as o,useMessages as t}from"../../internal/i18n.js";import{ExternalLinkIcon as l,LinkIcon as s}from"../../internal/icons.js";import{safeRel as c}from"../../internal/link.js";import{controlTextLeadingClasses as m,cx as u,focusRingClasses as d,srOnlyClasses as p}from"../../internal/styles.js";import{useStyleDefaults as b}from"../../internal/defaults.js";const f={always:"[&.neba-link]:underline",hover:"[&.neba-link]:no-underline [&.neba-link]:hover:underline",none:"[&.neba-link]:no-underline"},v=["neba-link","cursor-pointer","[&_svg]:pointer-events-none [&_svg]:inline [&_svg]:size-[0.95em] [&_svg]:shrink-0",["[transition-property:color,text-decoration-color]","[transition-duration:var(--neba-duration)]","[transition-timing-function:var(--neba-ease)]"].join(" "),d,"focus-visible:rounded-[0.25rem]"].join(" ");export const TextLink=/*@__PURE__*/i.forwardRef(function(i,d){const{href:h,underline:k="always",color:j,size:g,newTab:x=!1,icon:y,locale:w,render:_,className:N,style:z,children:T,...C}=b(i,["size","locale"]),$=t(o,w),F=y??x,L=!0===F?n(x?l:s,{}):F,R=u(v,g?m[g]:"",f[k],j?"[&.neba-link]:text-(--n-accent)":"[&.neba-link]:text-inherit",N??""),q={"--n-underline":"color-mix(in oklab, currentColor 45%, transparent)","--n-underline-hover":"currentColor","--n-ring":`var(--neba-${j??"primary"}-ring)`,...j?{"--n-accent":`var(--neba-${j}-accent)`}:null},A=x?"_blank":void 0,{rel:B,...D}=C,E=c(A,B);return a({render:_??n("a",{}),ref:d,props:{href:h,target:A,className:R,style:{...q,...z},children:r(e,{children:[T,L?n("span",{className:"ms-[0.25em]",children:L}):null,x?r(e,{children:[" ",n("span",{className:p,children:$.newTab})]}):null]}),...D,rel:E}})});
1
+ "use client";import{jsx as n,Fragment as e,jsxs as r}from"react/jsx-runtime";import*as i from"react";import{useRender as a}from"@base-ui/react/use-render";import{linkMessages as t,useMessages as o}from"../../internal/i18n.js";import{ExternalLinkIcon as l,LinkIcon as s}from"../../internal/icons.js";import{safeHref as c,safeRel as m}from"../../internal/link.js";import{controlTextLeadingClasses as u,cx as d,focusRingClasses as p,srOnlyClasses as f}from"../../internal/styles.js";import{useStyleDefaults as b}from"../../internal/defaults.js";const h={always:"[&.neba-link]:underline",hover:"[&.neba-link]:no-underline [&.neba-link]:hover:underline",none:"[&.neba-link]:no-underline"},v=["neba-link","cursor-pointer","[&_svg]:pointer-events-none [&_svg]:inline [&_svg]:size-[0.95em] [&_svg]:shrink-0",["[transition-property:color,text-decoration-color]","[transition-duration:var(--neba-duration)]","[transition-timing-function:var(--neba-ease)]"].join(" "),p,"focus-visible:rounded-[0.25rem]"].join(" "),k=new Set(["_self","_parent","_top"]);export const TextLink=/*@__PURE__*/i.forwardRef(function TextLink(i,p){const{href:g,underline:j="always",color:x,size:_,newTab:y=!1,icon:w,locale:N,render:T,className:z,style:C,children:L,...$}=b(i,["locale"]),F=o(t,N),R=w??y,S=!0===R?n(y?l:s,{}):R,q=d(v,_?u[_]:"",h[j],x?"[&.neba-link]:text-(--n-accent)":"[&.neba-link]:text-inherit",z??""),A={"--n-underline":"color-mix(in oklab, currentColor 45%, transparent)","--n-underline-hover":"currentColor","--n-ring":`var(--neba-${x??"primary"}-ring)`,...x?{"--n-accent":`var(--neba-${x}-accent)`}:null},{rel:B,target:D,...E}=$,G=y?"_blank":D,H=m(G,B),I=void 0!==G&&!k.has(G);return a({render:T??n("a",{}),ref:p,props:{href:c(g),target:G,className:q,style:{...A,...C},children:r(e,{children:[L,S?n("span",{className:"ms-[0.25em]",children:S}):null,I?r(e,{children:[" ",n("span",{className:f,children:F.newTab})]}):null]}),...E,rel:H}})});
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as n}from"react/jsx-runtime";import*as o from"react";import{Button as l}from"../button/Button.js";import{TimeGrid as t,usePickerLabels as a}from"../../internal/calendar.js";import{ClockIcon as i}from"../../internal/icons.js";import{PickerFooter as r,PickerShell as s}from"../../internal/picker.js";import{displaySamples as c,formatDate as d,isHour12 as u,isValidDate as m,secondsOfDay as p,timeUnitSpan as h,toISOTime as f,withPlaceholder as y,withTime as S}from"../../internal/date.js";import{cx as b}from"../../internal/styles.js";import{useStyleDefaults as g}from"../../internal/defaults.js";export const TimePicker=/*@__PURE__*/o.forwardRef(function(v,j){const{value:x,defaultValue:C,onValueChange:w,open:z,defaultOpen:k,onOpenChange:D,referenceDate:O,minTime:T,maxTime:M,shouldDisableTime:V,hour12:B,showSeconds:I=!1,hourStep:N=1,minuteStep:R=1,secondStep:F=1,locale:H,format:L,placeholder:P,clearable:q=!1,showNowButton:A=!0,closeOnSelect:E=!1,labels:G,name:J,size:K="md",color:Q="primary",density:U="default",readOnly:W=!1,disabled:X=!1,startIcon:Y,...Z}=g(v,["size","density","locale"]),$=a(G,H),_=B??u(H),[ee,ne]=o.useState(C??null),oe=void 0!==x?x:ee,[le,te]=o.useState(k??!1),ae=z??le,[ie]=o.useState(()=>O??new Date),re=e=>{e&&(W||X)||(void 0===z&&te(e),D?.(e))},se=e=>{void 0===x&&ne(e),w?.(e)},ce=o.useCallback((e,n)=>{const[o,l]=h(n,e);return!!(m(T)&&l<p(T))||(!!(m(M)&&o>p(M))||(V?.(e,n)??!1))},[T,M,V]),de=o.useMemo(()=>L??{hour:"numeric",minute:"2-digit",...I?{second:"2-digit"}:{}},[L,I]),ue=new Date,me=S(O??ie,{hours:ue.getHours(),minutes:ue.getMinutes(),seconds:I?ue.getSeconds():0}),pe=A||q||!E,he=o.useMemo(()=>y(c(H,de),P),[H,de,P]);return e(s,{...Z,size:K,color:Q,density:U,readOnly:W,disabled:X,triggerRef:j,startIcon:Y??e(i,{}),display:m(oe)?d(oe,H,de):P??"",samples:he,empty:!m(oe),clearable:q,onClear:()=>se(null),open:ae,onOpenChange:re,clearLabel:$.clear,hiddenValues:J?[{name:J,value:m(oe)?f(oe,I):""}]:void 0,children:n("div",{className:b("flex flex-col",pe&&"gap-1.5"),children:[e(t,{size:K,density:U,locale:H,value:m(oe)?oe:null,referenceDate:O??ie,onChange:e=>{se(e),E&&re(!1)},hour12:_,showSeconds:I,hourStep:N,minuteStep:R,secondStep:F,shouldDisableTime:ce,labels:$,autoFocus:!0}),pe?n(r,{size:K,children:[q?e(l,{variant:"text",size:K,color:Q,density:"compact",onClick:()=>{se(null),re(!1)},children:$.clear}):null,A?e(l,{variant:"text",size:K,color:Q,density:"compact",disabled:ce(me,"second"),onClick:()=>{se(me),re(!1)},children:$.now}):null,E?null:e(l,{variant:"solid",size:K,color:Q,density:"compact",onClick:()=>re(!1),children:$.done})]}):null]})})});
1
+ "use client";import{jsx as e,jsxs as n}from"react/jsx-runtime";import*as o from"react";import{Button as t}from"../button/Button.js";import{TimeGrid as l,usePickerLabels as s}from"../../internal/calendar.js";import{ClockIcon as a}from"../../internal/icons.js";import{PickerFooter as i,PickerShell as r}from"../../internal/picker.js";import{displaySamples as c,formatDate as u,clampDate as d,isHour12 as m,isValidDate as p,secondsOfDay as h,startOfDay as f,timeUnitSpan as g,toISOTime as S,withPlaceholder as y,withTime as b}from"../../internal/date.js";import{cx as v}from"../../internal/styles.js";import{useStyleDefaults as j}from"../../internal/defaults.js";export const TimePicker=/*@__PURE__*/o.forwardRef(function TimePicker(x,C){const{value:w,defaultValue:z,onValueChange:k,open:D,defaultOpen:O,onOpenChange:T,referenceDate:M,minTime:V,maxTime:B,shouldDisableTime:H,hour12:I,showSeconds:N=!1,hourStep:P=1,minuteStep:R=1,secondStep:F=1,locale:L,format:q,placeholder:A,clearable:E=!1,showNowButton:G=!0,closeOnSelect:J=!1,labels:K,name:Q,size:U="md",color:W="primary",density:X="default",readOnly:Y=!1,disabled:Z=!1,startIcon:$,..._}=j(x,["size","density","variant","locale"]),ee=s(K,L),ne=I??m(L),[oe,te]=o.useState(z??null),le=void 0!==w?w:oe,[se,ae]=o.useState(O??!1),ie=D??se,[re]=o.useState(()=>M??f(new Date)),ce=e=>{e&&(Y||Z)||(void 0===D&&ae(e),T?.(e))},ue=(e,n)=>p(n)?b(e,{hours:n.getHours(),minutes:n.getMinutes(),seconds:n.getSeconds()}):null,de=e=>{const n=null===e?null:d(e,ue(e,V),ue(e,B));void 0===w&&te(n),k?.(n)},me=o.useCallback((e,n)=>{const[o,t]=g(n,e);return!!(p(V)&&t<h(V))||(!!(p(B)&&o>h(B))||(H?.(e,n)??!1))},[V,B,H]),pe=o.useMemo(()=>q??{hour:"numeric",minute:"2-digit",...N?{second:"2-digit"}:{}},[q,N]),he=new Date,fe=b(M??re,{hours:he.getHours(),minutes:he.getMinutes(),seconds:N?he.getSeconds():0}),ge=G||E||!J,Se=o.useMemo(()=>y(c(L,pe),A),[L,pe,A]);return e(r,{..._,size:U,color:W,density:X,readOnly:Y,disabled:Z,triggerRef:C,startIcon:$??e(a,{}),display:p(le)?u(le,L,pe):A??"",samples:Se,empty:!p(le),clearable:E,onClear:()=>de(null),open:ie,onOpenChange:ce,clearLabel:ee.clear,hiddenValues:Q?[{name:Q,value:p(le)?S(le,N):""}]:void 0,children:n("div",{className:v("flex flex-col",ge&&"gap-1.5"),children:[e(l,{size:U,density:X,locale:L,value:p(le)?le:null,referenceDate:M??re,onChange:e=>{de(e),J&&ce(!1)},hour12:ne,showSeconds:N,hourStep:P,minuteStep:R,secondStep:F,shouldDisableTime:me,labels:ee,autoFocus:!0}),ge?n(i,{size:U,children:[E?e(t,{variant:"text",size:U,color:W,density:"compact",onClick:()=>{de(null),ce(!1)},children:ee.clear}):null,G?e(t,{variant:"text",size:U,color:W,density:"compact",disabled:me(fe,"second"),onClick:()=>{de(fe),ce(!1)},children:ee.now}):null,J?null:e(t,{variant:"solid",size:U,color:W,density:"compact",onClick:()=>ce(!1),children:ee.done})]}):null]})})});
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { useRender } from '@base-ui/react/use-render';
3
+ import { type TimelineMessages } from '../../internal/i18n.js';
3
4
  import type { NebaColor, NebaDensity, NebaOrientation, NebaSize } from '../../types.js';
4
5
  /**
5
6
  * How far along one item is.
@@ -37,6 +38,13 @@ export interface TimelineProps extends Omit<React.ComponentPropsWithoutRef<'ol'>
37
38
  * @default 'vertical'
38
39
  */
39
40
  orientation?: NebaOrientation;
41
+ /**
42
+ * Which language a step's status is said in to a screen reader — "Completed"
43
+ * or "Upcoming", which the bullet otherwise says only by its shape.
44
+ */
45
+ locale?: string;
46
+ /** Those two words, written out. Overrides the `locale`'s. */
47
+ labels?: Partial<TimelineMessages>;
40
48
  /** Renders something other than an `<ol>` — Base UI's own escape hatch. */
41
49
  render?: useRender.RenderProp;
42
50
  children?: React.ReactNode;
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import*as t from"react";import{useRender as r}from"@base-ui/react/use-render";import{cx as n,hasContent as a,iconClasses as o,metaTextClasses as s,sheetBodyClasses as i,sheetTitleClasses as d,surfaceClasses as c,surfaceSlots as m,transitionClasses as p}from"../../internal/styles.js";const u=/*@__PURE__*/t.createContext(null),b=/*@__PURE__*/t.createContext({index:0,last:!1}),x={xs:"0.875rem",sm:"1rem",md:"1.25rem",lg:"1.5rem",xl:"1.875rem"},f={xs:"gap-2",sm:"gap-2.5",md:"gap-3",lg:"gap-3.5",xl:"gap-4"},v={default:{xs:"pb-5",sm:"pb-6",md:"pb-7",lg:"pb-8",xl:"pb-10"},compact:{xs:"pb-3",sm:"pb-3.5",md:"pb-4",lg:"pb-5",xl:"pb-6"}},g={default:{xs:"pe-5",sm:"pe-6",md:"pe-7",lg:"pe-8",xl:"pe-10"},compact:{xs:"pe-3",sm:"pe-3.5",md:"pe-4",lg:"pe-5",xl:"pe-6"}},h={solid:"border-solid",dashed:"border-dashed",dotted:"border-dotted",none:""},y={complete:`${c} bg-(--n-fill) text-(--n-on-solid) [box-shadow:var(--neba-plate-solid)]`,current:`${c} bg-(--n-fill) text-(--n-on-solid) [box-shadow:0_0_0_0.25rem_var(--n-soft),var(--neba-plate-solid)]`,upcoming:`${c} border-2 bg-(--n-panel) text-(--neba-muted-fg) [border-color:var(--n-line)]`},N={complete:"[border-color:var(--n-line-hover)]",current:"[border-color:var(--neba-border)]",upcoming:"[border-color:var(--neba-border)]"},w={complete:"text-(--neba-fg)",current:"text-(--n-accent)",upcoming:"text-(--neba-muted-fg)"};export const TimelineItem=/*@__PURE__*/t.forwardRef(function({title:r,meta:c,bullet:_,status:z,color:j,connector:C="solid",className:$,children:P,...R},T){const k=t.useContext(u),{index:A,last:I}=t.useContext(b),M=k?.size??"md",q=k?.density??"default",B=k?.orientation??"vertical",D=j??k?.color??"primary",E=k?.active??null,F=z??(null===E?"upcoming":A<E?"complete":A===E?"current":"upcoming"),G="horizontal"===B,H="none"!==C&&!I,J=e("span",{"aria-hidden":"true",className:n("relative z-10 flex shrink-0 items-center justify-center rounded-full","size-(--n-bullet) text-[calc(var(--n-bullet)*0.5)] leading-none font-semibold tabular-nums",y[F],p,o),children:_}),K=H?e("span",{"aria-hidden":"true",className:n("pointer-events-none absolute",G?"top-[calc(var(--n-bullet)/2_-_1px)] start-(--n-bullet) end-0 border-t-2":"start-[calc(var(--n-bullet)/2_-_1px)] top-(--n-bullet) bottom-0 border-s-2",h[C],N[F],p)}):null,L=l("div",{className:n("flex min-w-0 flex-col gap-0.5",G?"mt-2":""),children:[a(r)||a(c)?l("div",{className:"flex flex-wrap items-baseline gap-x-2",children:[a(r)?e("span",{className:n("font-semibold",d[M],w[F],p),children:r}):null,a(c)?e("span",{className:n("text-(--neba-muted-fg)",s[M]),children:c}):null]}):null,a(P)?e("div",{className:n("text-(--neba-muted-fg)",i[M]),children:P}):null]});return l("li",{ref:T,"aria-current":"current"===F?"step":void 0,"data-status":F,className:n("relative",G?n("flex min-w-0 flex-1 flex-col",I?"":g[q][M]):n("flex",f[M],I?"":v[q][M]),$),style:{"--n-bullet":x[M],...m(D,0),"--n-fill":`var(--neba-${D}-fill)`,"--n-on-solid":`var(--neba-${D}-on-solid)`},...R,children:[K,J,L]})});export const Timeline=/*@__PURE__*/t.forwardRef(function({active:l,size:a="md",color:o="primary",density:s="default",orientation:i="vertical",render:d,className:c,style:p,children:x,...f},v){const g=t.Children.toArray(x),h=g.length,y=t.useMemo(()=>({size:a,density:s,orientation:i,color:o,active:l??null}),[a,s,i,o,l]),N=r({render:d??e("ol",{}),ref:v,props:{role:"list",className:n("flex","horizontal"===i?"flex-row":"flex-col",c),style:{...m(o,0),...p},children:g.map((l,t)=>e(b.Provider,{value:{index:t,last:t===h-1},children:l},t)),...f}});return e(u.Provider,{value:y,children:N})});
1
+ "use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import*as r from"react";import{useRender as t}from"@base-ui/react/use-render";import{childKey as n}from"../../internal/children.js";import{timelineMessages as a,useMessages as o}from"../../internal/i18n.js";import{cx as s,hasContent as i,iconClasses as d,metaTextClasses as c,sheetBodyClasses as m,sheetTitleClasses as p,srOnlyClasses as u,surfaceClasses as b,surfaceSlots as x,transitionClasses as f}from"../../internal/styles.js";import{useStyleDefaults as g}from"../../internal/defaults.js";const v=/*@__PURE__*/r.createContext(null),h=/*@__PURE__*/r.createContext({index:0,last:!1}),y={xs:"0.875rem",sm:"1rem",md:"1.25rem",lg:"1.5rem",xl:"1.875rem"},N={xs:"gap-2",sm:"gap-2.5",md:"gap-3",lg:"gap-3.5",xl:"gap-4"},j={default:{xs:"pb-5",sm:"pb-6",md:"pb-7",lg:"pb-8",xl:"pb-10"},compact:{xs:"pb-3",sm:"pb-3.5",md:"pb-4",lg:"pb-5",xl:"pb-6"}},w={default:{xs:"pe-5",sm:"pe-6",md:"pe-7",lg:"pe-8",xl:"pe-10"},compact:{xs:"pe-3",sm:"pe-3.5",md:"pe-4",lg:"pe-5",xl:"pe-6"}},z={solid:"border-solid",dashed:"border-dashed",dotted:"border-dotted",none:""},_={complete:`${b} bg-(--n-fill) text-(--n-on-solid) [box-shadow:var(--neba-plate-solid)]`,current:`${b} bg-(--n-fill) text-(--n-on-solid) [box-shadow:0_0_0_0.25rem_var(--n-soft),var(--neba-plate-solid)]`,upcoming:`${b} border-2 bg-(--n-panel) text-(--neba-muted-fg) [border-color:var(--n-line)]`},C={complete:"[border-color:var(--n-line-hover)]",current:"[border-color:var(--neba-border)]",upcoming:"[border-color:var(--neba-border)]"},$={complete:"text-(--neba-fg)",current:"text-(--n-accent)",upcoming:"text-(--neba-muted-fg)"};export const TimelineItem=/*@__PURE__*/r.forwardRef(function TimelineItem({title:t,meta:n,bullet:b,status:g,color:T,connector:I="solid",className:M,style:P,children:R,...k},A){const q=r.useContext(v),{index:B,last:D}=r.useContext(h),E=q?.size??"md",F=q?.density??"default",G=q?.orientation??"vertical",H=T??q?.color??"primary",J=q?.active??null,K=o(a),L=q?.labels??K,O=g??(null===J?"upcoming":B<J?"complete":B===J?"current":"upcoming"),Q="horizontal"===G,S="none"!==I&&!D,U=e("span",{"aria-hidden":"true",className:s("relative z-10 flex shrink-0 items-center justify-center rounded-full","size-(--n-bullet) text-[calc(var(--n-bullet)*0.5)] leading-none font-semibold tabular-nums",_[O],f,d),children:b}),V=S?e("span",{"aria-hidden":"true",className:s("pointer-events-none absolute",Q?"top-[calc(var(--n-bullet)/2_-_1px)] start-(--n-bullet) end-0 border-t-2":"start-[calc(var(--n-bullet)/2_-_1px)] top-(--n-bullet) bottom-0 border-s-2",z[I],C[O],f)}):null,W=l("div",{className:s("flex min-w-0 flex-col gap-0.5",Q?"mt-2":""),children:["current"===O?null:e("span",{className:u,children:L[O]}),i(t)||i(n)?l("div",{className:"flex flex-wrap items-baseline gap-x-2",children:[i(t)?e("span",{className:s("font-semibold",p[E],$[O],f),children:t}):null,i(n)?e("span",{className:s("text-(--neba-muted-fg)",c[E]),children:n}):null]}):null,i(R)?e("div",{className:s("text-(--neba-muted-fg)",m[E]),children:R}):null]});return l("li",{ref:A,"aria-current":"current"===O?"step":void 0,"data-status":O,className:s("relative",Q?s("flex min-w-0 flex-1 flex-col",D?"":w[F][E]):s("flex",N[E],D?"":j[F][E]),M),style:{"--n-bullet":y[E],...x(H,0),"--n-fill":`var(--neba-${H}-fill)`,"--n-on-solid":`var(--neba-${H}-on-solid)`,...P},...k,children:[V,U,W]})});export const Timeline=/*@__PURE__*/r.forwardRef(function Timeline(l,i){const{active:d,size:c="md",color:m="primary",density:p="default",orientation:u="vertical",locale:b,labels:f,render:y,className:N,style:j,children:w,...z}=g(l,["size","density","locale"]),_=o(a,b),C=r.useMemo(()=>({..._,...f}),[_,f?.complete,f?.upcoming]),$=r.Children.toArray(w),T=$.length,I=r.useMemo(()=>({size:c,density:p,orientation:u,color:m,active:d??null,labels:C}),[c,p,u,m,d,C]),M=t({render:y??e("ol",{}),ref:i,props:{role:"list",className:s("flex","horizontal"===u?"flex-row":"flex-col",N),style:{...x(m,0),...j},children:$.map((l,r)=>e(h.Provider,{value:{index:r,last:r===T-1},children:l},n(l,r))),...z}});return e(v.Provider,{value:I,children:M})});
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as n}from"react/jsx-runtime";import*as t from"react";import{CartesianChart as o,markTransitionClasses as r}from"../../internal/chart-frame.js";import{barBandRatio as s,barMaxThickness as a,barRadius as l,formatTimeTicks as i,formatTimeValue as c,markGap as m,resolveColor as d,seriesColor as u,timeScale as h,toNumber as f}from"../../internal/chart.js";import{srOnlyClasses as x}from"../../internal/styles.js";import{useStyleDefaults as p}from"../../internal/defaults.js";export function TimelineChart(n){const{series:r,min:l,max:d,barSize:x,rounded:k=!0,size:g="md",density:v="default",xAxis:j,yAxis:$,locale:C,...z}=p(n,["size","density","locale"]),w=t.useMemo(()=>r.map(M),[r]),A=t.useMemo(()=>w.map(e=>e.spans),[w]),E=t.useMemo(()=>{let e=1/0,n=-1/0,t=!1;for(const o of A)for(const r of o)r&&(t=!0,e=Math.min(e,r.from),n=Math.max(n,r.to));return t?{min:e,max:n}:null},[A]),P=t.useMemo(()=>h(E,{min:f(l)??void 0,max:f(d)??void 0,tickCount:$?.tickCount}),[E,l,d,$?.tickCount]),B=t.useMemo(()=>i(P.ticks,P.unit,C),[P,C]),I=t.useMemo(()=>r.map((e,n)=>u(e,n)),[r]),N=t.useMemo(()=>[{data:A.map(e=>e.some(Boolean)?1:null)}],[A]),T=t.useMemo(()=>r.map((e,n)=>e.name??`${n+1}`),[r]),F=x??a[g],R=t.useCallback(e=>{const n=[];return w.forEach((t,o)=>{const r=Math.min(F,Math.max(1,(e.band.band-m*(t.lanes-1))/t.lanes)),s=r*t.lanes+m*(t.lanes-1),a=e.plot.top+e.categoryPx(o)-s/2+r/2;t.spans.forEach((t,s)=>{if(!t)return;const l=e.valuePx(t.from),i=e.valuePx(t.to);n.push({series:o,index:s,x:(l+i)/2,y:a+t.lane*(r+m),r:r/2,rx:Math.max(0,(i-l)/2),ry:r/2})})}),n},[w,F]),S=t.useCallback(e=>{const n=A[e.series]?.[e.index];if(!n)return null;const t=[{seriesIndex:e.series,name:T[e.series],color:n.color??I[e.series],value:n.to-n.from,formatted:`${c(n.from,P.unit,C)} – ${c(n.to,P.unit,C)}`}];return{heading:n.span.label??T[e.series],items:t}},[A,T,I,P.unit,C]);return e(o,{...z,series:N,categories:T,size:g,density:v,locale:C,horizontal:!0,scale:P,xAxis:j,yAxis:{tickFormat:(e,n)=>B[n]??"",...$},legend:!1,bandRatio:s[v],marks:R,markTooltip:S,table:n=>e(y,{id:n,names:T,series:r,spans:A,unit:P.unit,label:z.label,corner:j?.label,locale:C}),children:n=>e(b,{context:n,spans:A,colors:I,rounded:k})})}function M(e){const n=e.data.map(e=>{const n=f(e.start),t=f(e.end);return null===n||null===t?null:{from:Math.min(n,t),to:Math.max(n,t),lane:0,color:e.color?d(e.color):void 0,span:e}}),t=[];return n.map((e,n)=>({one:e,index:n})).filter(e=>Boolean(e.one)).sort((e,n)=>e.one.from-n.one.from).forEach(({one:e})=>{const n=t.findIndex(n=>n<=e.from),o=-1===n?t.length:n;t[o]=e.to,e.lane=o}),{spans:n,lanes:Math.max(1,t.length)}}function b({context:n,spans:t,colors:o,rounded:s}){const{marks:a,activeMark:i,plot:c}=n,m=s?l:0;return e("g",{children:a.map(n=>{const s=t[n.series]?.[n.index];if(!s)return null;const a=i?.series===n.series&&i?.index===n.index,l=n.rx??n.r,d=2*(n.ry??n.r),u=Math.max(c.left,n.x-l),h=Math.min(c.left+c.width,n.x+l);if(h<c.left||u>c.left+c.width)return null;const f=Math.max(1,h-u);return e("rect",{x:u,y:n.y-d/2,width:f,height:d,rx:Math.min(m,f/2,d/2),fill:s.color??o[n.series],opacity:a?1:.92,className:r},`${n.series}-${n.index}`)})})}const y=/*@__PURE__*/t.memo(function({id:t,names:o,series:r,spans:s,unit:a,label:l,corner:i,locale:m}){const d=r.some(e=>e.data.some(e=>void 0!==e.label));return n("table",{id:t,className:x,children:[l?e("caption",{children:l}):null,e("thead",{children:n("tr",{children:[e("th",{scope:"col",children:i??""}),d?e("th",{scope:"col",children:"label"}):null,e("th",{scope:"col",children:"start"}),e("th",{scope:"col",children:"end"})]})}),e("tbody",{children:s.flatMap((t,s)=>t.map((t,l)=>n("tr",{children:[e("th",{scope:"row",children:o[s]}),d?e("td",{children:r[s].data[l]?.label??""}):null,e("td",{children:t?c(t.from,a,m):""}),e("td",{children:t?c(t.to,a,m):""})]},`${s}-${l}`)))})]})});
1
+ "use client";import{jsx as e,jsxs as n}from"react/jsx-runtime";import*as t from"react";import{CartesianChart as o,markTransitionClasses as r}from"../../internal/chart-frame.js";import{barBandRatio as a,barMaxThickness as s,barRadius as i,formatTimeTicks as l,formatTimeValue as c,markGap as m,resolveColor as u,seriesColor as d,timeScale as h,toNumber as f}from"../../internal/chart.js";import{chartMessages as x,useMessages as p}from"../../internal/i18n.js";import{srOnlyClasses as M}from"../../internal/styles.js";import{useStyleDefaults as y}from"../../internal/defaults.js";export function TimelineChart(n){const{series:r,min:i,max:u,barSize:x,rounded:p=!0,size:M="md",density:v="default",xAxis:w,yAxis:$,locale:C,...T}=y(n,["size","density","locale"]),z=t.useMemo(()=>r.map(b),[r]),A=t.useMemo(()=>z.map(e=>e.spans),[z]),D=t.useMemo(()=>{let e=1/0,n=-1/0,t=!1;for(const o of A)for(const r of o)r&&(t=!0,e=Math.min(e,r.from),n=Math.max(n,r.to));return t?{min:e,max:n}:null},[A]),E=t.useMemo(()=>h(D,{min:f(i)??void 0,max:f(u)??void 0,tickCount:$?.tickCount}),[D,i,u,$?.tickCount]),P=t.useMemo(()=>l(E.ticks,E.unit,C),[E,C]),S=t.useMemo(()=>r.map((e,n)=>d(e,n)),[r]),B=t.useMemo(()=>[{data:A.map(e=>e.some(Boolean)?1:null)}],[A]),F=t.useMemo(()=>{const e=g(E.unit);return("day"===e||"week"===e)&&A.some(e=>e.some(e=>null!==e&&(k(e.from)||k(e.to))))},[A,E.unit]),I=t.useMemo(()=>{let e=0,n=1/0,t=-1/0;for(const o of A)for(const r of o)r&&(e+=1,n=Math.min(n,r.from),t=Math.max(t,r.to));return 0===e?{count:e,min:"",max:""}:{count:e,min:c(n,g(E.unit),C,F),max:c(t,g(E.unit),C,F)}},[A,E.unit,C,F]),N=t.useMemo(()=>r.map((e,n)=>e.name??`${n+1}`),[r]),q=x??s[M],R=t.useCallback(e=>{const n=[];return z.forEach((t,o)=>{const r=Math.min(q,Math.max(1,(e.band.band-m*(t.lanes-1))/t.lanes)),a=r*t.lanes+m*(t.lanes-1),s=e.plot.top+e.categoryPx(o)-a/2+r/2;t.spans.forEach((t,a)=>{if(!t||t.to<e.scale.min||t.from>e.scale.max)return;const i=e.valuePx(t.from),l=e.valuePx(t.to);n.push({series:o,index:a,x:(i+l)/2,y:s+t.lane*(r+m),r:r/2,rx:Math.max(0,(l-i)/2),ry:r/2})})}),n},[z,q]),Y=t.useCallback(e=>{const n=A[e.series]?.[e.index];if(!n)return null;const t=[{seriesIndex:e.series,name:N[e.series],color:n.color??S[e.series],value:n.to-n.from,formatted:`${c(n.from,g(E.unit),C,F)} – ${c(n.to,g(E.unit),C,F)}`}];return{heading:n.span.label??N[e.series],items:t}},[A,N,S,E.unit,C,F]);return e(o,{...T,series:B,categories:N,size:M,density:v,locale:C,horizontal:!0,scale:E,xAxis:w,yAxis:{tickFormat:(e,n)=>P[n]??"",...$},legend:!1,bandRatio:a[v],marks:R,markTooltip:Y,summary:I,table:n=>e(j,{id:n,names:N,series:r,spans:A,unit:g(E.unit),clock:F,label:T.label,corner:w?.label,locale:C}),children:n=>e(Spans,{context:n,spans:A,colors:S,rounded:p})})}function b(e){const n=e.data.map(e=>{const n=f(e.start),t=f(e.end);return null===n||null===t?null:{from:Math.min(n,t),to:Math.max(n,t),lane:0,color:e.color?u(e.color):void 0,span:e}}),t=[];return n.map((e,n)=>({one:e,index:n})).filter(e=>Boolean(e.one)).sort((e,n)=>e.one.from-n.one.from).forEach(({one:e})=>{const n=t.findIndex(n=>n<=e.from),o=-1===n?t.length:n;t[o]=e.to,e.lane=o}),{spans:n,lanes:Math.max(1,t.length)}}function Spans({context:n,spans:t,colors:o,rounded:a}){const{marks:s,activeMark:l,plot:c}=n,m=a?i:0;return e("g",{children:s.map(n=>{const a=t[n.series]?.[n.index];if(!a)return null;const s=l?.series===n.series&&l?.index===n.index,i=n.rx??n.r,u=2*(n.ry??n.r),d=Math.max(c.left,n.x-i),h=Math.min(c.left+c.width,n.x+i);if(h<c.left||d>c.left+c.width)return null;const f=Math.max(1,h-d);return e("rect",{x:d,y:n.y-u/2,width:f,height:u,rx:Math.min(m,f/2,u/2),fill:a.color??o[n.series],opacity:s?1:.92,className:r},`${n.series}-${n.index}`)})})}function k(e){const n=new Date(e);return n.getTime()!==new Date(n.getFullYear(),n.getMonth(),n.getDate()).getTime()}function g(e){return"month"===e||"quarter"===e||"year"===e?"day":e}const j=/*@__PURE__*/t.memo(function TimelineTable({id:t,names:o,series:r,spans:a,unit:s,clock:i,label:l,corner:m,locale:u}){const d=p(x,u),h=r.some(e=>e.data.some(e=>void 0!==e.label));return n("table",{id:t,className:M,children:[l?e("caption",{children:l}):null,e("thead",{children:n("tr",{children:[e("th",{scope:"col",children:m??""}),h?e("th",{scope:"col",children:d.title}):null,e("th",{scope:"col",children:d.start}),e("th",{scope:"col",children:d.end})]})}),e("tbody",{children:a.flatMap((t,a)=>t.map((t,l)=>n("tr",{children:[e("th",{scope:"row",children:o[a]}),h?e("td",{children:r[a].data[l]?.label??""}):null,e("td",{children:t?c(t.from,s,u,i):""}),e("td",{children:t?c(t.to,s,u,i):""})]},`${a}-${l}`)))})]})});
@@ -73,7 +73,8 @@ export interface ToastProviderProps extends Pick<NebaStyleProps, 'variant' | 'si
73
73
  timeout?: number;
74
74
  /**
75
75
  * How many are shown at once. The rest are kept and revealed as the stack
76
- * drains rather than being thrown away.
76
+ * drains rather than being thrown away. Their timers run while they wait, so
77
+ * a toast that waits longer than its `timeout` closes without being shown.
77
78
  * @default 3
78
79
  */
79
80
  limit?: number;
@@ -89,6 +90,11 @@ export interface ToastProviderProps extends Pick<NebaStyleProps, 'variant' | 'si
89
90
  locale?: string;
90
91
  /** Accessible name of every toast's × button. Defaults to the `locale`'s word. */
91
92
  closeLabel?: string;
93
+ /**
94
+ * Accessible name of the region the stack lives in, which a screen reader can
95
+ * jump to and F6 moves the focus into. Defaults to the `locale`'s word.
96
+ */
97
+ label?: string;
92
98
  /**
93
99
  * Class names for the parts of the stack. There is no `className` here — a
94
100
  * provider renders no element of its own to put one on.
@@ -105,6 +111,8 @@ export interface ToastProviderProps extends Pick<NebaStyleProps, 'variant' | 'si
105
111
  * message, is the shape this component exists to avoid.
106
112
  */
107
113
  export declare function useToast(): {
114
+ /** Every toast currently in the stack, newest first. */
115
+ toasts: import("@base-ui/react").ToastObject<ToastData>[];
108
116
  /** Raises a toast and returns its id. */
109
117
  add: (options: ToastOptions) => string;
110
118
  /** Closes one toast, or every toast when called with nothing. */
@@ -121,8 +129,6 @@ export declare function useToast(): {
121
129
  success: ToastOptions | ((value: Value) => ToastOptions);
122
130
  error: ToastOptions | ((error: unknown) => ToastOptions);
123
131
  }) => Promise<Value>;
124
- /** Every toast currently in the stack, newest first. */
125
- toasts: import("@base-ui/react").ToastObject<ToastData>[];
126
132
  };
127
133
  /**
128
134
  * Puts the toast stack on the page and lets anything under it raise a message.
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as o from"react";import{Toast as s}from"@base-ui/react/toast";import{boxPaddingClasses as i}from"../box/Box.js";import{actionMessages as n,useMessages as a}from"../../internal/i18n.js";import{CloseIcon as r,severityIcon as l}from"../../internal/icons.js";import{controlSlots as c,cx as d,focusRingClasses as m,hasContent as p,iconClasses as u,metaTextClasses as f,popupFadeClasses as b,radiusClasses as x,sheetBodyClasses as v,sheetHeaderGapClasses as h,sheetSectionGapClasses as w,sheetTitleClasses as g,surfaceClasses as y}from"../../internal/styles.js";import{useStyleDefaults as N}from"../../internal/defaults.js";const j={"top-start":"top-0 items-start","top-center":"top-0 items-center","top-end":"top-0 items-end","bottom-start":"bottom-0 items-start flex-col-reverse","bottom-center":"bottom-0 items-center flex-col-reverse","bottom-end":"bottom-0 items-end flex-col-reverse"},z={solid:[y,"text-(--n-on-solid) bg-(--n-fill)","[box-shadow:var(--neba-shadow-3),var(--neba-plate-solid)]"].join(" "),outline:[y,"border text-(--neba-fg) bg-(--n-panel-press)","[border-color:var(--n-line)]","[box-shadow:var(--neba-shadow-3),var(--neba-plate-glass)]"].join(" "),text:[y,"text-(--neba-fg) bg-(--n-panel-press)","[box-shadow:var(--neba-shadow-3),var(--neba-plate-glass)]"].join(" ")},T={solid:"",outline:"text-(--n-accent)",text:"text-(--n-accent)"};function _(e){const{color:t,variant:o,icon:s,actionLabel:i,onAction:n,...a}=e;return{...a,data:{color:t,variant:o,icon:s},actionProps:void 0===i?void 0:{children:i,onClick:n}}}export function useToast(){const e=s.useToastManager();return o.useMemo(()=>({add:t=>e.add(_(t)),close:t=>e.close(t),update:(t,o)=>e.update(t,_(o)),promise:(t,o)=>e.promise(t,{loading:_(o.loading),success:e=>_("function"==typeof o.success?o.success(e):o.success),error:e=>_("function"==typeof o.error?o.error(e):o.error)}),toasts:e.toasts}),[e])}function k({toast:o,variant:n,color:a,size:y,density:N,closeLabel:j,swipeDirection:_,classNames:k}){const D=o.data?.variant??n??"outline",L=o.data?.color??a,M=void 0===o.data?.icon?l(L):o.data.icon,P=T[D],$=p(o.title);return t(s.Root,{toast:o,swipeDirection:_,className:d("pointer-events-auto flex w-full items-start",i[N??"default"][y],x[y],w[y],v[y],z[D],u,b,"data-[limited]:hidden",m,k?.toast),style:c(L,3,D),children:[p(M)?e("span",{className:`flex h-[1lh] shrink-0 items-center ${P}`,children:M}):null,t("div",{className:`flex min-w-0 flex-1 flex-col ${h[y]}`,children:[e(s.Title,{className:d("neba-title font-semibold",g[y],P,k?.title)}),e(s.Description,{className:d($&&"solid"!==D?"text-(--neba-muted-fg)":"",k?.description)})]}),e(s.Action,{className:d("flex h-[1lh] shrink-0 cursor-pointer items-center rounded-full px-2","font-medium underline-offset-2",P||"text-(--n-on-solid)","hover:underline","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2",f[y],k?.action)}),e("span",{className:"flex h-[1lh] shrink-0 items-center",children:e(s.Close,{"aria-label":j,className:d("inline-flex size-[1.15em] cursor-pointer items-center justify-center rounded-full","opacity-70 [transition:opacity_var(--neba-duration)_var(--neba-ease)]","hover:opacity-100 focus-visible:opacity-100","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2",k?.close),children:e(r,{})})})]})}function D(t){const{toasts:i}=s.useToastManager(),{position:n,width:a,classNames:r,...l}=t,c=o.useMemo(()=>[n.startsWith("top")?"up":"down","left","right"],[n]);return e(s.Portal,{children:e(s.Viewport,{className:d("neba-portal pointer-events-none fixed inset-x-0 z-(--neba-z-portal) flex flex-col gap-2 p-4",j[n],r?.viewport),children:i.map(t=>e("div",{className:"w-full",style:{maxWidth:"number"==typeof a?`${a}px`:a},children:e(k,{toast:t,swipeDirection:c,classNames:r,...l})},t.id))})})}export function ToastProvider(o){const{variant:i="outline",size:r="md",color:l="primary",density:c="default",position:d="bottom-end",timeout:m=5e3,limit:p=3,width:u=380,locale:f,closeLabel:b,classNames:x,children:v}=N(o,["size","density","variant","locale"]),h=a(n,f);return t(s.Provider,{timeout:m,limit:p,children:[v,e(D,{position:d,variant:i,size:r,color:l,density:c,width:u,closeLabel:b??h.close,classNames:x})]})}
1
+ "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as o from"react";import{Toast as i}from"@base-ui/react/toast";import{boxPaddingClasses as s}from"../box/Box.js";import{actionMessages as n,toastMessages as a,useMessages as r}from"../../internal/i18n.js";import{CloseIcon as l,severityIcon as c}from"../../internal/icons.js";import{controlSlots as d,cx as m,focusRingClasses as u,hasContent as f,hitAreaClasses as p,iconClasses as b,metaTextClasses as v,popupFadeClasses as x,radiusClasses as h,sheetBodyClasses as w,sheetHeaderGapClasses as g,sheetSectionGapClasses as y,sheetTitleClasses as j,surfaceClasses as N}from"../../internal/styles.js";import{useStyleDefaults as T}from"../../internal/defaults.js";const L={"top-start":"top-0 items-start","top-center":"top-0 items-center","top-end":"top-0 items-end","bottom-start":"bottom-0 items-start flex-col-reverse","bottom-center":"bottom-0 items-center flex-col-reverse","bottom-end":"bottom-0 items-end flex-col-reverse"},z={solid:[N,"text-(--n-on-solid) bg-(--n-fill)","[box-shadow:var(--neba-shadow-3),var(--neba-plate-solid)]"].join(" "),outline:[N,"border text-(--neba-fg) bg-(--n-panel-press)","[border-color:var(--n-line)]","[box-shadow:var(--neba-shadow-3),var(--neba-plate-glass)]"].join(" "),text:[N,"text-(--neba-fg) bg-(--n-panel-press)","[box-shadow:var(--neba-shadow-3),var(--neba-plate-glass)]"].join(" ")},k={solid:"",outline:"text-(--n-on-tint)",text:"text-(--n-on-tint)"};function _(e){const{color:t,variant:o,icon:i,actionLabel:s,onAction:n,...a}=e;return{...a,data:{color:t,variant:o,icon:i},actionProps:void 0===s?void 0:{children:s,onClick:n}}}export function useToast(){const e=i.useToastManager(),t=o.useRef(e);o.useLayoutEffect(()=>{t.current=e});const s=o.useMemo(()=>({add:e=>t.current.add(_(e)),close:e=>t.current.close(e),update:(e,o)=>t.current.update(e,e=>function(e,t){const{color:o,variant:i,icon:s,actionLabel:n,onAction:a,...r}=e,l=Object.fromEntries(Object.entries(r).filter(([,e])=>void 0!==e)),c=Object.fromEntries(Object.entries({color:o,variant:i,icon:s}).filter(([,e])=>void 0!==e));return{...l,...0===Object.keys(c).length?null:{data:{...t.data,...c}},...void 0===n?null:{actionProps:{children:n,onClick:a}}}}(o,e)),promise:(e,o)=>t.current.promise(e,{loading:_(o.loading),success:e=>_("function"==typeof o.success?o.success(e):o.success),error:e=>_("function"==typeof o.error?o.error(e):o.error)})}),[]);return o.useMemo(()=>({...s,toasts:e.toasts}),[s,e.toasts])}function ToastItem({toast:o,variant:n,color:a,size:r,density:N,closeLabel:T,swipeDirection:L,classNames:_}){const M=o.data?.variant??n??"outline",O=o.data?.color??a,P=void 0===o.data?.icon?c(O):o.data.icon,D=k[M],A=f(o.title);return t(i.Root,{toast:o,swipeDirection:L,className:m("pointer-events-auto flex w-full items-start",s[N??"default"][r],h[r],y[r],w[r],z[M],b,x,"data-[limited]:hidden",u,_?.toast),style:d(O,3,M),children:[f(P)?e("span",{className:`flex h-[1lh] shrink-0 items-center ${D}`,children:P}):null,t("div",{className:`flex min-w-0 flex-1 flex-col ${g[r]}`,children:[e(i.Title,{className:m("neba-title font-semibold",j[r],D,_?.title)}),e(i.Description,{className:m(A&&"solid"!==M?"text-(--neba-muted-fg)":"",_?.description)})]}),e(i.Action,{className:m("flex h-[1lh] shrink-0 cursor-pointer items-center rounded-full px-2","font-medium underline-offset-2",D||"text-(--n-on-solid)","hover:underline","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2",v[r],_?.action)}),e("span",{className:"flex h-[1lh] shrink-0 items-center",children:e(i.Close,{"aria-label":T,className:m("relative inline-flex size-[1.15em] cursor-pointer items-center justify-center rounded-full",p,"opacity-70 [transition:opacity_var(--neba-duration)_var(--neba-ease)]","hover:opacity-100 focus-visible:opacity-100","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2",_?.close),children:e(l,{})})})]})}function ToastViewport(t){const{toasts:s}=i.useToastManager(),{position:n,width:a,classNames:r,regionLabel:l,...c}=t,d=o.useMemo(()=>[n.startsWith("top")?"up":"down","left","right"],[n]);return e(i.Portal,{children:e(i.Viewport,{"aria-label":l,className:m("neba-portal pointer-events-none fixed inset-x-0 z-(--neba-z-portal) flex flex-col gap-2 p-4",L[n],r?.viewport),children:s.map(t=>e("div",{className:"w-full",style:{maxWidth:"number"==typeof a?`${a}px`:a},children:e(ToastItem,{toast:t,swipeDirection:d,classNames:r,...c})},t.id))})})}export function ToastProvider(o){const{variant:s="outline",size:l="md",color:c="primary",density:d="default",position:m="bottom-end",timeout:u=5e3,limit:f=3,width:p=380,locale:b,closeLabel:v,label:x,classNames:h,children:w}=T(o,["size","density","variant","locale"]),g=r(n,b),y=r(a,b);return t(i.Provider,{timeout:u,limit:f,children:[w,e(ToastViewport,{position:m,variant:s,size:l,color:c,density:d,width:p,closeLabel:v??g.close,regionLabel:x??y.label,classNames:h})]})}
@@ -1 +1 @@
1
- "use client";import{jsxs as e}from"react/jsx-runtime";import*as t from"react";import{Toggle as n}from"@base-ui/react/toggle";import{ButtonGroupContext as o}from"../../internal/button-group.js";import{controlHeightClasses as s,controlSlots as r,controlSquareClasses as a,controlTextClasses as l,cx as i,disabledClasses as d,focusRingClasses as b,gapClasses as v,iconClasses as g,paddingXClasses as p,pressTransitionClasses as x,radiusClasses as m,surfaceClasses as f,transitionClasses as c}from"../../internal/styles.js";import{useStyleDefaults as h}from"../../internal/defaults.js";const u={xs:`${s.xs} ${v.xs} ${m.xs} ${l.xs}`,sm:`${s.sm} ${v.sm} ${m.sm} ${l.sm}`,md:`${s.md} ${v.md} ${m.md} ${l.md}`,lg:`${s.lg} ${v.lg} ${m.lg} ${l.lg}`,xl:`${s.xl} ${v.xl} ${m.xl} ${l.xl}`},$={xs:`${a.xs} px-0`,sm:`${a.sm} px-0`,md:`${a.md} px-0`,lg:`${a.lg} px-0`,xl:`${a.xl} px-0`},j=["relative inline-flex shrink-0 cursor-pointer select-none items-center justify-center","whitespace-nowrap align-middle font-medium leading-none","[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]",c,x,b,g].join(" "),y={solid:[f,"text-(--neba-muted-fg) bg-(--neba-panel-hover)","[box-shadow:var(--n-elev),var(--neba-plate-solid)]","hover:bg-(--neba-panel-press) hover:text-(--neba-fg)","active:bg-(--neba-panel-press)"].join(" "),outline:[f,"border text-(--neba-muted-fg) bg-(--neba-panel)","[border-color:var(--neba-border)]","[box-shadow:var(--n-elev),var(--neba-plate-glass)]","hover:bg-(--neba-panel-hover) hover:text-(--neba-fg)","active:bg-(--neba-panel-press)"].join(" "),text:["text-(--neba-muted-fg) bg-transparent","hover:bg-(--n-soft) hover:text-(--neba-fg)","active:bg-(--n-soft-hover)"].join(" ")},w={solid:[f,"text-(--n-on-solid) bg-(--n-fill)","[box-shadow:var(--n-elev),var(--neba-plate-solid)]","hover:bg-(--n-fill-hover)","active:bg-(--n-fill-active)"].join(" "),outline:[f,"border text-(--n-accent) bg-(--n-panel-press)","[border-color:var(--n-line-hover)]","[box-shadow:var(--n-elev),var(--neba-plate-glass)]","hover:bg-(--n-soft-hover)","active:bg-(--n-soft-press)"].join(" "),text:["text-(--n-accent) bg-(--n-soft-hover)","hover:bg-(--n-soft-press)","active:bg-(--n-soft-press)"].join(" ")};export const Toggle=/*@__PURE__*/t.forwardRef(function(s,a){const{variant:l,size:b,color:v,density:g,elevation:x,pressed:m,defaultPressed:f,onPressedChange:c,value:P,startIcon:z,endIcon:C,fullWidth:T=!1,disabled:k,className:E,style:I,children:M,onPointerMove:N,...R}=h(s,["size","density","variant"]),W=t.useContext(o),X=l??W?.variant??"outline",Y=b??W?.size??"md",q=v??W?.color??"primary",A=g??W?.density??"default",B=x??W?.elevation??0,D=k??W?.disabled??!1,F=null==M||!1===M;return e(n,{ref:a,value:P,pressed:m,defaultPressed:f,onPressedChange:e=>c?.(e),disabled:D,className:e=>i(j,u[Y],F?$[Y]:p[A][Y],D?d[X]:e.pressed?w[X]:y[X],D?"":"neba-glow",T?"w-full":"",E??""),style:{...r(q,B,X),...I},onPointerMove:e=>{if(!D){const t=e.currentTarget;t.style.setProperty("--n-mx",`${e.nativeEvent.offsetX}px`),t.style.setProperty("--n-my",`${e.nativeEvent.offsetY}px`)}N?.(e)},...R,children:[z,M,C]})});
1
+ "use client";import{jsxs as e}from"react/jsx-runtime";import*as n from"react";import{Toggle as t}from"@base-ui/react/toggle";import{ButtonGroupContext as o}from"../../internal/button-group.js";import{trackPointer as r}from"../../internal/glow.js";import{controlHeightClasses as s,controlSlots as a,controlSquareClasses as l,controlTextClasses as i,cx as d,disabledClasses as b,focusRingClasses as g,gapClasses as v,iconClasses as p,paddingXClasses as m,pressTransitionClasses as x,radiusClasses as f,surfaceClasses as c,transitionClasses as h}from"../../internal/styles.js";import{useStyleDefaults as u}from"../../internal/defaults.js";const $={xs:`${s.xs} ${v.xs} ${f.xs} ${i.xs}`,sm:`${s.sm} ${v.sm} ${f.sm} ${i.sm}`,md:`${s.md} ${v.md} ${f.md} ${i.md}`,lg:`${s.lg} ${v.lg} ${f.lg} ${i.lg}`,xl:`${s.xl} ${v.xl} ${f.xl} ${i.xl}`},j={xs:`${l.xs} px-0`,sm:`${l.sm} px-0`,md:`${l.md} px-0`,lg:`${l.lg} px-0`,xl:`${l.xl} px-0`},w=["relative inline-flex shrink-0 select-none items-center justify-center","whitespace-nowrap align-middle font-medium leading-none","[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]",h,x,g,p].join(" "),y={solid:[c,"text-(--neba-muted-fg) bg-(--neba-panel-hover)","[box-shadow:var(--n-elev),var(--neba-plate-solid)]","hover:bg-(--neba-panel-press) hover:text-(--neba-fg)","active:bg-(--neba-panel-press)"].join(" "),outline:[c,"border text-(--neba-muted-fg) bg-(--neba-panel)","[border-color:var(--neba-border)]","[box-shadow:var(--n-elev),var(--neba-plate-glass)]","hover:bg-(--neba-panel-hover) hover:text-(--neba-fg)","active:bg-(--neba-panel-press)"].join(" "),text:["text-(--neba-muted-fg) bg-transparent","hover:bg-(--n-soft) hover:text-(--neba-fg)","active:bg-(--n-soft-hover)"].join(" ")},P={solid:[c,"text-(--n-on-solid) bg-(--n-fill)","[box-shadow:var(--n-elev),var(--neba-plate-solid)]","hover:bg-(--n-fill-hover)","active:bg-(--n-fill-active)"].join(" "),outline:[c,"border text-(--n-on-tint) bg-(--n-panel-press)","[border-color:var(--n-line-hover)]","[box-shadow:var(--n-elev),var(--neba-plate-glass)]","hover:bg-(--n-soft-hover)","active:bg-(--n-soft-press)"].join(" "),text:["text-(--n-on-tint) bg-(--n-soft-hover)","hover:bg-(--n-soft-press)","active:bg-(--n-soft-press)"].join(" ")};export const Toggle=/*@__PURE__*/n.forwardRef(function Toggle(s,l){const i=n.useContext(o),{variant:g,size:v,color:p,density:x,elevation:f,pressed:c,defaultPressed:h,onPressedChange:z,value:C,startIcon:T,endIcon:k,fullWidth:I=!1,disabled:M,className:N,style:R,children:W,onPointerMove:q,...A}=u(s,["size","density","variant"],i),B=g??i?.variant??"outline",D=v??i?.size??"md",E=p??i?.color??"primary",F=x??i?.density??"default",G=f??i?.elevation??0,H=M??i?.disabled??!1,J=null==W||!1===W;return e(t,{ref:l,value:C,pressed:c,defaultPressed:h,onPressedChange:e=>z?.(e),disabled:H,className:e=>d(w,$[D],J?j[D]:m[F][D],H?b[B]:e.pressed?P[B]:y[B],H?"":"neba-glow cursor-pointer",I?"w-full":"",N??""),style:{...a(E,G,B),...R},onPointerMove:r(q,!H),...A,children:[T,W,k]})});
@@ -1 +1 @@
1
- "use client";import{jsx as e}from"react/jsx-runtime";import*as o from"react";import{ToggleGroup as l}from"@base-ui/react/toggle-group";import{ButtonGroupContext as i}from"../../internal/button-group.js";import{cx as t}from"../../internal/styles.js";import{useStyleDefaults as n}from"../../internal/defaults.js";const r={horizontal:"[&>*:not(:first-child)]:rounded-s-none [&>*:not(:last-child)]:rounded-e-none",vertical:"[&>*:not(:first-child)]:rounded-t-none [&>*:not(:last-child)]:rounded-b-none"},a={horizontal:"[&>*:not(:first-child)]:-ms-px",vertical:"[&>*:not(:first-child)]:-mt-px"},s=["inline-flex align-middle","[&>*]:relative [&>*:hover]:z-10 [&>*:focus-visible]:z-10","[&>*]:shrink-0"].join(" ");export const ToggleGroup=/*@__PURE__*/o.forwardRef(function(d,u){const{variant:c,size:f,color:m,density:h,elevation:p,value:v,defaultValue:g,onValueChange:x,multiple:z=!1,orientation:b="horizontal",disabled:j,loopFocus:y=!0,fullWidth:V=!1,className:w,children:C,...F}=n(d,["size","density","variant"]),G=o.useMemo(()=>({variant:c,size:f,color:m,density:h,elevation:p,disabled:j}),[c,f,m,h,p,j]);return e(i.Provider,{value:G,children:e(l,{ref:u,value:v,defaultValue:g,onValueChange:e=>x?.(e),multiple:z,orientation:b,disabled:j,loopFocus:y,className:t(s,"vertical"===b?"flex-col":"flex-row",r[b],"outline"===(c??"outline")?a[b]:"",V?"flex w-full [&>*]:flex-1":"",w??""),...F,children:C})})});
1
+ "use client";import{jsx as e}from"react/jsx-runtime";import*as o from"react";import{ToggleGroup as l}from"@base-ui/react/toggle-group";import{ButtonGroupContext as i}from"../../internal/button-group.js";import{cx as t}from"../../internal/styles.js";import{useStyleDefaults as n}from"../../internal/defaults.js";const r={horizontal:"[&>*:not(:first-child)]:rounded-s-none [&>*:not(:last-child)]:rounded-e-none",vertical:"[&>*:not(:first-child)]:rounded-t-none [&>*:not(:last-child)]:rounded-b-none"},a={horizontal:"[&>*:not(:first-child)]:-ms-px",vertical:"[&>*:not(:first-child)]:-mt-px"},s=["align-middle","[&>*]:relative [&>*:hover]:z-10 [&>*:focus-visible]:z-10","[&>*]:shrink-0"].join(" ");export const ToggleGroup=/*@__PURE__*/o.forwardRef(function ToggleGroup(u,d){const{variant:c,size:f,color:m,density:p,elevation:h,value:v,defaultValue:g,onValueChange:x,multiple:z=!1,orientation:b="horizontal",disabled:j,loopFocus:y=!0,fullWidth:V=!1,className:w,children:G,...T}=n(u,["size","density","variant"]),C=o.useMemo(()=>({variant:c,size:f,color:m,density:p,elevation:h,disabled:j}),[c,f,m,p,h,j]);return e(i.Provider,{value:C,children:e(l,{ref:d,value:v,defaultValue:g,onValueChange:e=>x?.(e),multiple:z,orientation:b,disabled:j,loopFocus:y,className:t(s,"vertical"===b?"flex-col":"flex-row",r[b],"outline"===(c??"outline")?a[b]:"",V?"flex w-full [&>*]:flex-1":"inline-flex",w??""),...T,children:G})})});