neba 1.18.0 → 1.19.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 (200) hide show
  1. package/dist/a2ui/adapter-catalog.json +1 -1
  2. package/dist/a2ui/catalog.json +2 -2
  3. package/dist/components/accordion/Accordion.js +1 -1
  4. package/dist/components/agent-steps/AgentSteps.js +1 -1
  5. package/dist/components/alert/Alert.js +1 -1
  6. package/dist/components/anchor/Anchor.js +1 -1
  7. package/dist/components/animate-counter/AnimateCounter.js +1 -1
  8. package/dist/components/animate-headline/AnimateHeadline.js +1 -1
  9. package/dist/components/animate-lighting/AnimateLighting.js +1 -1
  10. package/dist/components/animate-marquee/AnimateMarquee.js +1 -1
  11. package/dist/components/animate-scramble/AnimateScramble.js +1 -1
  12. package/dist/components/animate-typing/AnimateTyping.js +1 -1
  13. package/dist/components/app-logo/AppLogo.js +1 -1
  14. package/dist/components/approval/Approval.js +1 -1
  15. package/dist/components/aspect-ratio/AspectRatio.js +1 -1
  16. package/dist/components/avatar/Avatar.js +1 -1
  17. package/dist/components/badge/Badge.js +1 -1
  18. package/dist/components/bar-chart/BarChart.js +1 -1
  19. package/dist/components/blockquote/Blockquote.js +1 -1
  20. package/dist/components/bottom-navigation/BottomNavigation.js +1 -1
  21. package/dist/components/breadcrumb/Breadcrumb.js +1 -1
  22. package/dist/components/button/Button.js +1 -1
  23. package/dist/components/button-group/ButtonGroup.js +1 -1
  24. package/dist/components/calendar/Calendar.js +1 -1
  25. package/dist/components/carousel/Carousel.js +1 -1
  26. package/dist/components/chat-bubble/ChatBubble.js +1 -1
  27. package/dist/components/checkbox/Checkbox.js +1 -1
  28. package/dist/components/checkbox/index.d.ts +1 -1
  29. package/dist/components/checkbox-group/CheckboxGroup.d.ts +84 -0
  30. package/dist/components/checkbox-group/CheckboxGroup.js +1 -0
  31. package/dist/components/checkbox-group/index.d.ts +2 -0
  32. package/dist/components/checkbox-group/index.js +1 -0
  33. package/dist/components/chip/Chip.d.ts +32 -3
  34. package/dist/components/chip/Chip.js +1 -1
  35. package/dist/components/code-block/CodeBlock.js +1 -1
  36. package/dist/components/collapsible/Collapsible.js +1 -1
  37. package/dist/components/color-picker/ColorPicker.js +1 -1
  38. package/dist/components/combobox/Combobox.d.ts +11 -0
  39. package/dist/components/combobox/Combobox.js +1 -1
  40. package/dist/components/combobox/index.d.ts +1 -1
  41. package/dist/components/command-palette/CommandPalette.d.ts +21 -5
  42. package/dist/components/command-palette/CommandPalette.js +1 -1
  43. package/dist/components/command-palette/CommandPaletteSheet.d.ts +27 -0
  44. package/dist/components/command-palette/CommandPaletteSheet.js +1 -0
  45. package/dist/components/command-palette/index.d.ts +1 -1
  46. package/dist/components/confirm/Confirm.d.ts +7 -5
  47. package/dist/components/confirm/Confirm.js +1 -1
  48. package/dist/components/data-list/DataList.js +1 -1
  49. package/dist/components/data-table/DataTable.js +1 -1
  50. package/dist/components/data-table/RowsPerPage.d.ts +43 -0
  51. package/dist/components/data-table/RowsPerPage.js +1 -0
  52. package/dist/components/date-picker/DatePicker.js +1 -1
  53. package/dist/components/date-range-picker/DateRangePicker.js +1 -1
  54. package/dist/components/date-time-picker/DateTimePicker.js +1 -1
  55. package/dist/components/dialog/Dialog.js +1 -1
  56. package/dist/components/dialog/index.d.ts +1 -1
  57. package/dist/components/drawer/Drawer.d.ts +1 -1
  58. package/dist/components/drawer/Drawer.js +1 -1
  59. package/dist/components/empty/Empty.js +1 -1
  60. package/dist/components/fieldset/Fieldset.d.ts +12 -1
  61. package/dist/components/fieldset/Fieldset.js +1 -1
  62. package/dist/components/file-picker/FilePicker.js +1 -1
  63. package/dist/components/floating-action-button/FloatingActionButton.js +1 -1
  64. package/dist/components/floating-action-button/index.d.ts +1 -0
  65. package/dist/components/floating-bottom-navigation/FloatingBottomNavigation.js +1 -1
  66. package/dist/components/footer/Footer.js +1 -1
  67. package/dist/components/form/Form.d.ts +8 -2
  68. package/dist/components/form/Form.js +1 -1
  69. package/dist/components/gallery/Gallery.js +1 -1
  70. package/dist/components/gauge-chart/GaugeChart.js +1 -1
  71. package/dist/components/header/Header.js +1 -1
  72. package/dist/components/heatmap-chart/HeatmapChart.js +1 -1
  73. package/dist/components/highlight/Highlight.js +1 -1
  74. package/dist/components/hover-card/HoverCard.js +1 -1
  75. package/dist/components/how-to-steps/HowToSteps.d.ts +3 -0
  76. package/dist/components/how-to-steps/HowToSteps.js +1 -1
  77. package/dist/components/image/Image.js +1 -1
  78. package/dist/components/inline-citation/InlineCitation.d.ts +24 -0
  79. package/dist/components/inline-citation/InlineCitation.js +1 -1
  80. package/dist/components/list/List.d.ts +9 -0
  81. package/dist/components/list/List.js +1 -1
  82. package/dist/components/menu/Menu.js +1 -1
  83. package/dist/components/menubar/Menubar.js +1 -1
  84. package/dist/components/meter/Meter.js +1 -1
  85. package/dist/components/mockup/Mockup.js +1 -1
  86. package/dist/components/navigation-menu/NavigationMenu.d.ts +2 -1
  87. package/dist/components/navigation-menu/NavigationMenu.js +1 -1
  88. package/dist/components/number-field/NumberField.js +1 -1
  89. package/dist/components/number-field/index.d.ts +1 -1
  90. package/dist/components/overlay/Overlay.js +1 -1
  91. package/dist/components/page-layout/PageLayout.js +1 -1
  92. package/dist/components/pagination/Pagination.js +1 -1
  93. package/dist/components/panes/Panes.js +1 -1
  94. package/dist/components/pie-chart/PieChart.js +1 -1
  95. package/dist/components/pill/Pill.js +1 -1
  96. package/dist/components/popover/Popover.js +1 -1
  97. package/dist/components/progress-box/ProgressBox.js +1 -1
  98. package/dist/components/progress-circular/ProgressCircular.js +1 -1
  99. package/dist/components/progress-linear/ProgressLinear.js +1 -1
  100. package/dist/components/prompt-input/PromptInput.js +1 -1
  101. package/dist/components/provider/NebaProvider.d.ts +3 -2
  102. package/dist/components/provider/NebaProvider.js +1 -1
  103. package/dist/components/radio-group/RadioGroup.d.ts +13 -0
  104. package/dist/components/radio-group/RadioGroup.js +1 -1
  105. package/dist/components/radio-group/index.d.ts +1 -1
  106. package/dist/components/rating/Rating.js +1 -1
  107. package/dist/components/reasoning/Reasoning.js +1 -1
  108. package/dist/components/scatter-chart/ScatterChart.js +1 -1
  109. package/dist/components/scroll-area/ScrollArea.js +1 -1
  110. package/dist/components/scroll-zone/ScrollZone.js +1 -1
  111. package/dist/components/segmented-button/SegmentedButton.js +1 -1
  112. package/dist/components/select/Select.d.ts +12 -0
  113. package/dist/components/select/Select.js +1 -1
  114. package/dist/components/select/index.d.ts +1 -1
  115. package/dist/components/shortcut/Shortcut.js +1 -1
  116. package/dist/components/sidebar/Sidebar.js +1 -1
  117. package/dist/components/sidebar/SidebarTrigger.js +1 -1
  118. package/dist/components/skeleton/Skeleton.js +1 -1
  119. package/dist/components/slider/Slider.js +1 -1
  120. package/dist/components/slider/index.d.ts +1 -1
  121. package/dist/components/sources/Sources.js +1 -1
  122. package/dist/components/sparkline/Sparkline.d.ts +7 -0
  123. package/dist/components/sparkline/Sparkline.js +1 -1
  124. package/dist/components/spoiler/Spoiler.js +1 -1
  125. package/dist/components/statistic/Statistic.js +1 -1
  126. package/dist/components/streaming-text/StreamingText.d.ts +10 -6
  127. package/dist/components/streaming-text/StreamingText.js +1 -1
  128. package/dist/components/switch/Switch.js +1 -1
  129. package/dist/components/switch/index.d.ts +1 -1
  130. package/dist/components/table/Table.js +1 -1
  131. package/dist/components/table/index.d.ts +1 -1
  132. package/dist/components/tabs/Tabs.js +1 -1
  133. package/dist/components/text-field/TextField.js +1 -1
  134. package/dist/components/text-field/index.d.ts +1 -1
  135. package/dist/components/text-link/TextLink.js +1 -1
  136. package/dist/components/time-picker/TimePicker.js +1 -1
  137. package/dist/components/timeline-chart/TimelineChart.js +1 -1
  138. package/dist/components/toast/Toast.d.ts +38 -5
  139. package/dist/components/toast/Toast.js +1 -1
  140. package/dist/components/toast/index.d.ts +2 -2
  141. package/dist/components/toast/index.js +1 -1
  142. package/dist/components/toggle/Toggle.js +1 -1
  143. package/dist/components/toggle-group/ToggleGroup.js +1 -1
  144. package/dist/components/tool-call/ToolCall.js +1 -1
  145. package/dist/components/toolbar/Toolbar.js +1 -1
  146. package/dist/components/tooltip/Tooltip.js +1 -1
  147. package/dist/components/tour/Tour.js +1 -1
  148. package/dist/components/tour/index.d.ts +1 -1
  149. package/dist/components/transfer/Transfer.d.ts +7 -0
  150. package/dist/components/transfer/Transfer.js +1 -1
  151. package/dist/components/tree-select/TreeSelect.js +1 -1
  152. package/dist/components/tree-view/TreeView.js +1 -1
  153. package/dist/components/window-pane/WindowPane.js +1 -1
  154. package/dist/index.d.ts +1 -0
  155. package/dist/index.js +1 -1
  156. package/dist/internal/animate.d.ts +34 -2
  157. package/dist/internal/animate.js +1 -1
  158. package/dist/internal/cache.d.ts +7 -1
  159. package/dist/internal/cache.js +1 -1
  160. package/dist/internal/calendar.d.ts +40 -1
  161. package/dist/internal/calendar.js +1 -1
  162. package/dist/internal/chart-frame.d.ts +86 -8
  163. package/dist/internal/chart-frame.js +1 -1
  164. package/dist/internal/chart-line.js +1 -1
  165. package/dist/internal/chart.d.ts +13 -0
  166. package/dist/internal/chart.js +1 -1
  167. package/dist/internal/checkbox-group.d.ts +29 -0
  168. package/dist/internal/checkbox-group.js +1 -0
  169. package/dist/internal/data-table.d.ts +7 -1
  170. package/dist/internal/data-table.js +1 -1
  171. package/dist/internal/date.d.ts +10 -0
  172. package/dist/internal/date.js +1 -1
  173. package/dist/internal/defaults.d.ts +14 -2
  174. package/dist/internal/idle.d.ts +10 -0
  175. package/dist/internal/idle.js +1 -0
  176. package/dist/internal/link.d.ts +4 -3
  177. package/dist/internal/media.js +1 -1
  178. package/dist/internal/observe.d.ts +4 -0
  179. package/dist/internal/observe.js +1 -1
  180. package/dist/internal/page-layout.d.ts +30 -2
  181. package/dist/internal/page-layout.js +1 -1
  182. package/dist/internal/picker.js +1 -1
  183. package/dist/internal/progress.d.ts +17 -0
  184. package/dist/internal/progress.js +1 -1
  185. package/dist/internal/refs.d.ts +18 -0
  186. package/dist/internal/refs.js +1 -0
  187. package/dist/internal/run.d.ts +34 -19
  188. package/dist/internal/run.js +1 -1
  189. package/dist/internal/sizer.d.ts +9 -4
  190. package/dist/internal/sizer.js +1 -1
  191. package/dist/internal/styles.d.ts +27 -1
  192. package/dist/internal/styles.js +1 -1
  193. package/dist/internal/tile.d.ts +34 -0
  194. package/dist/internal/tile.js +1 -0
  195. package/dist/internal/wheel.d.ts +24 -1
  196. package/dist/internal/wheel.js +1 -1
  197. package/dist/styles.css +1 -1
  198. package/dist/tailwind.css +369 -62
  199. package/dist/types.d.ts +4 -2
  200. package/package.json +2 -2
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import*as t from"react";import{ChartDataTable as n,ChartExport as a,ChartLegendBar as i,ChartStatus as r,ChartSummary as o,ChartSurface as s,ChartTooltipPanel as u,markTransitionClasses as d,summarise as m,useMeasuredWidth as c,useReleaseOutside as h,useVisibility as f,chartHeight as p,useMeasuredHeight as v}from"../../internal/chart-frame.js";import{arcPath as x,categoryAt as g,chartFontSizes as b,compactNumber as y,formatCategory as M,inkOn as N,markGap as j,seriesColor as w,toValue as k,warnPaletteOverflow as E}from"../../internal/chart.js";import{numberFormatter as I}from"../../internal/format.js";import{cx as z,metaTextClasses as P}from"../../internal/styles.js";import{chartMessages as A,emptyMessages as $,useMessages as L}from"../../internal/i18n.js";import{useStyleDefaults as S}from"../../internal/defaults.js";import{useIntlLocale as B}from"../../internal/media.js";const C={pie:0,donut:.62,semi:.62};export function PieChart(R){const{data:D,categories:O,shape:_="pie",startAngle:F=0,hole:H,gap:K=j,center:T,valueLabels:V="none",height:W,format:q,locale:G,label:J,legend:Q,tooltip:U,empty:X,exportable:Y=!1,exportFileName:Z="chart.csv",onExport:ee,size:le="md",variant:te="text",padded:ne=!1,className:ae,...ie}=S(R,["size","variant","locale"]),re=t.useRef(null),oe=c(re),se=L($,G),ue=L(A,G),de=B(G),me=t.useId(),ce=t.useCallback(e=>q?I(de,q).format(e):y(e,de),[q,de]),he=t.useMemo(()=>D.map(k),[D]),fe=t.useMemo(()=>he.map((e,l)=>({name:M(g(l,O,[he]),de),data:[D[l]],color:e.color})),[he,O,D,de]),pe=f(fe);t.useEffect(()=>{E(fe.length)},[fe.length]);const[ve,xe]=t.useState(null);h(re,null!==ve,()=>xe(null));const ge=t.useId(),be=fe.map((e,l)=>w(e,l)),ye=he.reduce((e,l,t)=>pe.visible[t]&&null!==l.value?e+Math.max(0,l.value):e,0),Me="semi"===_,Ne=v(re,"string"==typeof W),je=p(W,le,Ne),we=b[le],ke=!1===Q?{interactive:!1}:!0===Q||void 0===Q?{}:Q,Ee=!1!==Q&&fe.length>1,Ie=ke.side??"bottom",ze=!1===U?{mode:"none"}:!0===U||void 0===U?{}:U,Pe="none"===ze.mode,Ae=oe/2,$e=Math.max(0,Math.min(oe/2,Me?je:je/2)-2),Le=Me?Math.min(je,je/2+$e/2):je/2,Se=$e*Math.min(.92,Math.max(0,H??C[_])),Be=ye<=0||$e<=0,Ce=$e>0?Math.min(15,Math.max(0,K)/$e*(180/Math.PI)):0,Re=Me?180:360,De=[];let Oe=Me?-90:F;he.forEach((e,l)=>{if(!pe.visible[l]||null===e.value||e.value<=0)return;const t=e.value/ye,n=t*Re;De.push({index:l,start:Oe,end:Oe+n,value:e.value,share:t}),Oe+=n});const _e=null===ve?[]:[{seriesIndex:ve,name:fe[ve]?.name,color:he[ve]?.color??be[ve],value:he[ve]?.value??null,formatted:`${ce(he[ve]?.value??0)} · ${Math.round(10*(Math.max(0,he[ve]?.value??0)/ye*100+Number.EPSILON))/10}%`,label:he[ve]?.label}];return l(s,{...ie,size:le,variant:te,padded:ne,className:ae,legendSide:Ie,legend:Ee?e(i,{series:fe,colors:be,options:ke,visibility:pe,size:le,values:ke.showValue?he.map(e=>null===e.value?void 0:ce(e.value)):void 0}):null,table:Be?null:e(n,{id:me,caption:J,categories:fe.map(e=>e.name??""),series:[{name:J,data:D}],values:[he],format:ce,locale:de}),children:[Y&&!Be?e(a,{rows:()=>[["",J??ue.label],...fe.map((e,l)=>[e.name??"",he[l]?.value??null])],fileName:Z,onExport:ee,label:ue.exportCsv}):null,l("div",{ref:re,role:"img",tabIndex:Be?void 0:0,"aria-label":J??ue.label,"aria-describedby":Be?void 0:ge,onPointerLeave:e=>{"touch"!==e.pointerType&&xe(null)},onBlur:()=>xe(null),onKeyDown:e=>{const l=De.map(e=>e.index);if("Escape"===e.key){if(null===ve)return;xe(null)}else{if(Pe||0===l.length)return;if("Home"===e.key)xe(l[0]);else if("End"===e.key)xe(l[l.length-1]);else{if("ArrowRight"!==e.key&&"ArrowLeft"!==e.key)return;{const t=null===ve?-1:l.indexOf(ve),n="ArrowRight"===e.key?t+1:t-1;xe(l[(n+l.length)%l.length])}}}e.preventDefault()},className:z("relative w-full rounded-(--neba-radius-xs)","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2"),style:{height:"string"==typeof W?W:je},children:[Be?e("div",{className:z("flex h-full items-center justify-center text-(--neba-muted-fg)",P[le]),children:X??se.title}):oe>0?l("svg",{width:oe,height:je,viewBox:`0 0 ${oe} ${je}`,"aria-hidden":"true",className:"block",children:[De.map(l=>{const t=null!==pe.hovered&&pe.hovered!==l.index||null!==ve&&ve!==l.index,n=De.length>1&&l.end-l.start>2*Ce?Ce/2:0;return e("path",{d:x(Ae,Le,$e,Se,l.start+n,l.end-n),fill:he[l.index].color??be[l.index],opacity:t?.32:1,onPointerEnter:Pe?void 0:()=>xe(l.index),className:d},l.index)}),"all"===V?De.map(l=>{const t=((l.start+l.end)/2-90)*(Math.PI/180),n=Se>0?(Se+$e)/2:.68*$e,a=`${Math.round(100*l.share)}%`;return(l.end-l.start)*(Math.PI/180)*n<2*we||$e-Se<1.6*we?null:e("text",{x:Ae+n*Math.cos(t),y:Le+n*Math.sin(t),textAnchor:"middle",dominantBaseline:"central",fontSize:we,fontWeight:600,fill:N(he[l.index].color,l.index),className:"tabular-nums",children:a},l.index)}):null]}):null,T&&Se>0?e("div",{className:"pointer-events-none absolute flex flex-col items-center justify-center text-center",style:{left:Ae-Se,top:Le-Se,width:2*Se,height:Me?Se:2*Se},children:T}):null,null===ve||Pe?null:ze.render?e("div",{className:"pointer-events-none absolute top-0 left-1/2 z-10",children:ze.render({index:ve,category:fe[ve]?.name??ve,items:_e})}):e(u,{heading:fe[ve]?.name,items:_e,x:Ae,y:8,flip:!1,size:le})]}),Be?null:e(o,{id:ge,template:ue.summary,locale:de,...m(he.filter((e,l)=>pe.visible[l]).map(e=>[e]),ce)}),Pe?null:e(r,{heading:null===ve?void 0:fe[ve]?.name,items:_e})]})}
1
+ "use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import*as t from"react";import{ChartDataTable as n,ChartExport as a,ChartLegendBar as i,ChartStatus as r,ChartSummary as o,ChartSurface as s,ChartTooltipPanel as u,markTransitionClasses as m,summarise as d,useMeasuredWidth as c,useReleaseOutside as h,useVisibility as f,chartHeight as p,initialWidthFor as v,useMeasuredHeight as x}from"../../internal/chart-frame.js";import{arcPath as g,categoryAt as b,chartFontSizes as y,compactNumber as M,formatCategory as N,inkOn as j,markGap as w,seriesColor as k,toValue as E,warnPaletteOverflow as I}from"../../internal/chart.js";import{numberFormatter as z}from"../../internal/format.js";import{cx as P,metaTextClasses as A}from"../../internal/styles.js";import{chartMessages as S,emptyMessages as $,useMessages as L}from"../../internal/i18n.js";import{useStyleDefaults as B}from"../../internal/defaults.js";import{useIntlLocale as C}from"../../internal/media.js";const O={pie:0,donut:.62,semi:.62};export function PieChart(R){const{data:D,categories:W,shape:_="pie",startAngle:F=0,hole:H,gap:J=w,center:K,valueLabels:T="none",height:V,initialWidth:q,format:G,locale:Q,label:U,legend:X,tooltip:Y,empty:Z,exportable:ee=!1,exportFileName:le="chart.csv",onExport:te,size:ne="md",variant:ae="text",padded:ie=!1,className:re,...oe}=B(R,["size","variant","locale"]),se=t.useRef(null),ue=c(se,{initial:v(q,V)}),me=L($,Q),de=L(S,Q),ce=C(Q),he=t.useId(),fe=G?JSON.stringify(G):"",pe=t.useCallback(e=>G?z(ce,G).format(e):M(e,ce),[fe,ce]),ve=t.useMemo(()=>D.map(E),[D]),xe=t.useMemo(()=>ve.map((e,l)=>({name:N(b(l,W,[ve]),ce),data:[D[l]],color:e.color})),[ve,W,D,ce]),ge=f(xe),be=t.useMemo(()=>xe.map(e=>e.name??""),[xe]),ye=t.useMemo(()=>[{name:U,data:D}],[U,D]),Me=t.useMemo(()=>[ve],[ve]);t.useEffect(()=>{I(xe.length)},[xe.length]);const[Ne,je]=t.useState(null);h(se,null!==Ne,()=>je(null));const we=t.useId(),ke=xe.map((e,l)=>k(e,l)),Ee=ve.reduce((e,l,t)=>ge.visible[t]&&null!==l.value?e+Math.max(0,l.value):e,0),Ie="semi"===_,ze=x(se,"string"==typeof V),Pe=p(V,ne,ze),Ae=y[ne],Se=!1===X?{interactive:!1}:!0===X||void 0===X?{}:X,$e=!1!==X&&xe.length>1,Le=Se.side??"bottom",Be=!1===Y?{mode:"none"}:!0===Y||void 0===Y?{}:Y,Ce="none"===Be.mode,Oe=ue/2,Re=Math.max(0,Math.min(ue/2,Ie?Pe:Pe/2)-2),De=Ie?Math.min(Pe,Pe/2+Re/2):Pe/2,We=Math.min(.92,Math.max(0,H??O[_])),_e=Re*We,Fe=ue>0,He=Ee<=0||Fe&&Re<=0,Je=Re>0?Math.min(15,Math.max(0,J)/Re*(180/Math.PI)):0,Ke=Ie?180:360,Te=[];let Ve=Ie?-90:F;ve.forEach((e,l)=>{if(!ge.visible[l]||null===e.value||e.value<=0)return;const t=e.value/Ee,n=t*Ke;Te.push({index:l,start:Ve,end:Ve+n,value:e.value,share:t}),Ve+=n});const qe=null===Ne?[]:[{seriesIndex:Ne,name:xe[Ne]?.name,color:ve[Ne]?.color??ke[Ne],value:ve[Ne]?.value??null,formatted:`${pe(ve[Ne]?.value??0)} · ${Math.round(10*(Math.max(0,ve[Ne]?.value??0)/Ee*100+Number.EPSILON))/10}%`,label:ve[Ne]?.label}];return l(s,{...oe,size:ne,variant:ae,padded:ie,className:re,legendSide:Le,legend:$e?e(i,{series:xe,colors:ke,options:Se,visibility:ge,size:ne,values:Se.showValue?ve.map(e=>null===e.value?void 0:pe(e.value)):void 0}):null,table:He?null:e(n,{id:he,caption:U,categories:be,series:ye,values:Me,format:pe,locale:ce}),children:[ee&&!He?e(a,{rows:()=>[["",U??de.label],...xe.map((e,l)=>[e.name??"",ve[l]?.value??null])],fileName:le,onExport:te,label:de.exportCsv}):null,l("div",{ref:se,role:"img",tabIndex:He?void 0:0,"aria-label":U??de.label,"aria-describedby":He?void 0:we,onPointerLeave:e=>{"touch"!==e.pointerType&&je(null)},onBlur:()=>je(null),onKeyDown:e=>{const l=Te.map(e=>e.index);if("Escape"===e.key){if(null===Ne)return;je(null)}else{if(Ce||0===l.length)return;if("Home"===e.key)je(l[0]);else if("End"===e.key)je(l[l.length-1]);else{if("ArrowRight"!==e.key&&"ArrowLeft"!==e.key)return;{const t=null===Ne?-1:l.indexOf(Ne),n="ArrowRight"===e.key?t+1:t-1;je(l[(n+l.length)%l.length])}}}e.preventDefault()},className:P("relative w-full rounded-(--neba-radius-xs)","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2"),style:{height:"string"==typeof V?V:Pe},children:[He?e("div",{className:P("flex h-full items-center justify-center text-(--neba-muted-fg)",A[ne]),children:Z??me.title}):Fe?l("svg",{width:ue,height:Pe,viewBox:`0 0 ${ue} ${Pe}`,"aria-hidden":"true",className:"block",children:[Te.map(l=>{const t=null!==ge.hovered&&ge.hovered!==l.index||null!==Ne&&Ne!==l.index,n=Te.length>1&&l.end-l.start>2*Je?Je/2:0;return e("path",{d:g(Oe,De,Re,_e,l.start+n,l.end-n),fill:ve[l.index].color??ke[l.index],opacity:t?.32:1,onPointerEnter:Ce?void 0:()=>je(l.index),className:m},l.index)}),"all"===T?Te.map(l=>{const t=((l.start+l.end)/2-90)*(Math.PI/180),n=_e>0?(_e+Re)/2:.68*Re,a=`${Math.round(100*l.share)}%`;return(l.end-l.start)*(Math.PI/180)*n<2*Ae||Re-_e<1.6*Ae?null:e("text",{x:Oe+n*Math.cos(t),y:De+n*Math.sin(t),textAnchor:"middle",dominantBaseline:"central",fontSize:Ae,fontWeight:600,fill:j(ve[l.index].color,l.index),className:"tabular-nums",children:a},l.index)}):null]}):null,K&&(Fe?_e>0:!He&&!Ie&&We>0)?e("div",{className:"pointer-events-none absolute flex flex-col items-center justify-center text-center",style:Fe?{left:Oe-_e,top:De-_e,width:2*_e,height:Ie?_e:2*_e}:{inset:0},children:K}):null,null===Ne||Ce?null:Be.render?e("div",{className:"pointer-events-none absolute top-0 left-1/2 z-10",children:Be.render({index:Ne,category:xe[Ne]?.name??Ne,items:qe})}):e(u,{heading:xe[Ne]?.name,items:qe,x:Oe,y:8,flip:!1,size:ne})]}),He?null:e(o,{id:we,template:de.summary,locale:ce,...d(ve.filter((e,l)=>ge.visible[l]).map(e=>[e]),pe)}),Ce?null:e(r,{heading:null===Ne?void 0:xe[Ne]?.name,items:qe})]})}
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as t,Fragment as n}from"react/jsx-runtime";import*as o from"react";import{useLayoutEffectOnClient as i}from"../../internal/layout-effect.js";import{trackPointer as l}from"../../internal/glow.js";import{observeResize as s}from"../../internal/observe.js";import{controlSlots as r,controlTextClasses as a,cx as c,gapClasses as m,hasContent as d,iconClasses as f,iconSizeClasses as x,insetRingClasses as p,metaTextClasses as u,paddingXClasses as h,pressTransitionClasses as v,sheetBodyClasses as b,surfaceClasses as g,transitionClasses as w}from"../../internal/styles.js";import{inertValue as j}from"../../internal/inert.js";import{useStyleDefaults as y}from"../../internal/defaults.js";const _={solid:[g,"text-(--n-on-solid) bg-(--n-fill)","[box-shadow:var(--n-elev),var(--neba-plate-solid)]"].join(" "),outline:[g,"border text-(--n-on-tint) bg-(--n-panel)","[border-color:var(--n-line)]","[box-shadow:var(--n-elev),var(--neba-plate-glass)]"].join(" "),text:`${g} text-(--n-on-tint) bg-(--n-soft)`},k={solid:"hover:bg-(--n-fill-hover) active:bg-(--n-fill-active)",outline:"hover:bg-(--n-panel-hover) active:bg-(--n-panel-press)",text:"hover:bg-(--n-soft) active:bg-(--n-soft-hover)"},z={xs:"min-h-5.5",sm:"min-h-6.5",md:"min-h-8",lg:"min-h-10",xl:"min-h-12"},N={xs:"rounded-[0.6875rem]",sm:"rounded-[0.8125rem]",md:"rounded-[1rem]",lg:"rounded-[1.25rem]",xl:"rounded-[1.5rem]"},$={default:{xs:"px-3",sm:"px-4",md:"px-5",lg:"px-6",xl:"px-8"},compact:{xs:"px-1.5",sm:"px-2",md:"px-2.5",lg:"px-3",xl:"px-4"}},I={static:{top:"",bottom:""},sticky:{top:"sticky top-3 z-20",bottom:"sticky bottom-3 z-20"},fixed:{top:"fixed inset-x-0 top-3 z-30 mx-auto w-fit",bottom:"fixed inset-x-0 bottom-3 z-30 mx-auto w-fit"}},P={static:{top:"",bottom:""},sticky:{top:"sticky top-[calc(0.75rem_+_env(safe-area-inset-top))] z-20",bottom:"sticky bottom-[calc(0.75rem_+_env(safe-area-inset-bottom))] z-20"},fixed:{top:"fixed inset-x-0 top-[calc(0.75rem_+_env(safe-area-inset-top))] z-30 mx-auto w-fit",bottom:"fixed inset-x-0 bottom-[calc(0.75rem_+_env(safe-area-inset-bottom))] z-30 mx-auto w-fit"}};export const Pill=/*@__PURE__*/o.forwardRef(function Pill(g,C){const{variant:H="solid",size:R="md",color:A="secondary",density:B="default",elevation:F=2,startIcon:M,endIcon:S,title:q,description:D,details:E,expanded:G=!1,position:J="static",side:K="top",safeArea:L=!0,className:O,style:Q,children:T,onClick:U,...V}=y(g,["size","density","variant"]),W=o.useRef(null),X=o.useId(),[Y,Z]=o.useState(null),ee=d(E);i(()=>{const e=W.current;if(e)return Z(e.scrollHeight),s(e,()=>Z(e.scrollHeight))},[ee]);const te=Boolean(U),ne=h[B][R],oe=t(n,{children:[d(M)?e("span",{className:`flex shrink-0 items-center justify-center overflow-hidden rounded-full [&_img]:size-full [&_img]:object-cover ${x[R]}`,children:M}):null,d(q)||d(D)||d(T)?t("span",{className:["flex min-w-0 flex-1 flex-col items-center justify-center text-center",$[B][R]].join(" "),children:[d(q)?e("span",{className:"max-w-full truncate",children:q}):null,d(D)?e("span",{className:`max-w-full truncate font-normal ${u[R]}`,children:D}):null,T]}):null]});return t("div",{ref:C,className:c("inline-flex max-w-full flex-col overflow-hidden align-middle",N[R],"font-medium whitespace-nowrap select-none",a[R],_[H],w,v,f,(L?P:I)[J][K],O??""),style:{...r(A,F,H),...Q},...V,children:[t("div",{className:["flex shrink-0 items-center py-1",z[R],m[R],te?"ps-0":ne,d(S)?"pe-1":te?"pe-0":""].join(" "),children:[te?e("button",{type:"button",className:["relative flex min-w-0 flex-1 cursor-pointer items-center justify-center self-stretch",N[R],m[R],ne,p,"neba-glow",k[H],w,v].join(" "),onPointerMove:l(void 0,!0),"aria-expanded":ee?G:void 0,"aria-controls":ee?X:void 0,onClick:U,children:oe}):oe,d(S)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:S}):null]}),ee?e("div",{id:X,className:["overflow-hidden","[transition:height_var(--neba-duration)_var(--neba-ease)]","motion-reduce:[transition-duration:0ms]"].join(" "),style:{height:G?Y??"auto":0},inert:j(!G),children:e("div",{ref:W,className:`whitespace-normal ${ne} pb-2 ${b[R]}`,children:E})}):null]})});
1
+ "use client";import{jsx as e,jsxs as t,Fragment as n}from"react/jsx-runtime";import*as r from"react";import{useLayoutEffectOnClient as o}from"../../internal/layout-effect.js";import{trackPointer as i}from"../../internal/glow.js";import{observeResize as a}from"../../internal/observe.js";import{controlSlots as l,controlTextClasses as s,cx as c,gapClasses as d,hasContent as m,iconClasses as f,iconSizeClasses as p,insetRingClasses as u,metaTextClasses as x,paddingXClasses as v,pressTransitionClasses as b,sheetBodyClasses as h,surfaceClasses as g,transitionClasses as y}from"../../internal/styles.js";import{inertValue as w}from"../../internal/inert.js";import{useStyleDefaults as k}from"../../internal/defaults.js";const j={solid:g+" text-(--n-on-solid) bg-(--n-fill) [box-shadow:var(--n-elev),var(--neba-plate-solid)]",outline:g+" border text-(--n-on-tint) bg-(--n-panel) [border-color:var(--n-line)] [box-shadow:var(--n-elev),var(--neba-plate-glass)]",text:`${g} text-(--n-on-tint) bg-(--n-soft) [@media(prefers-reduced-transparency:reduce)]:bg-(--neba-backing) [@media(prefers-reduced-transparency:reduce)]:[background-image:var(--neba-grain),var(--neba-sheen),linear-gradient(var(--n-soft),var(--n-soft))] [@media(prefers-reduced-transparency:reduce)]:[background-blend-mode:overlay,normal,normal]`},_={solid:"hover:bg-(--n-fill-hover) active:bg-(--n-fill-active)",outline:"hover:bg-(--n-panel-hover) active:bg-(--n-panel-press)",text:"hover:bg-(--n-soft) active:bg-(--n-soft-hover)"},z={xs:"min-h-5.5",sm:"min-h-6.5",md:"min-h-8",lg:"min-h-10",xl:"min-h-12"},N={xs:"rounded-[0.6875rem]",sm:"rounded-[0.8125rem]",md:"rounded-[1rem]",lg:"rounded-[1.25rem]",xl:"rounded-[1.5rem]"},$={default:{xs:"px-3",sm:"px-4",md:"px-5",lg:"px-6",xl:"px-8"},compact:{xs:"px-1.5",sm:"px-2",md:"px-2.5",lg:"px-3",xl:"px-4"}},I={static:{top:"",bottom:""},sticky:{top:"sticky top-3 z-20",bottom:"sticky bottom-3 z-20"},fixed:{top:"fixed inset-x-0 top-3 z-30 mx-auto w-fit",bottom:"fixed inset-x-0 bottom-3 z-30 mx-auto w-fit"}},P={static:{top:"",bottom:""},sticky:{top:"sticky top-[calc(0.75rem_+_env(safe-area-inset-top))] z-20",bottom:"sticky bottom-[calc(0.75rem_+_env(safe-area-inset-bottom))] z-20"},fixed:{top:"fixed inset-x-0 top-[calc(0.75rem_+_env(safe-area-inset-top))] z-30 mx-auto w-fit",bottom:"fixed inset-x-0 bottom-[calc(0.75rem_+_env(safe-area-inset-bottom))] z-30 mx-auto w-fit"}};export const Pill=/*@__PURE__*/r.forwardRef(function Pill(g,C){const{variant:H="solid",size:R="md",color:A="secondary",density:B="default",elevation:F=2,startIcon:M,endIcon:S,title:q,description:D,details:E,expanded:G=!1,position:J="static",side:K="top",safeArea:L=!0,className:O,style:Q,children:T,onClick:U,...V}=k(g,["size","density","variant"]),W=r.useRef(null),X=r.useId(),[Y,Z]=r.useState(null),ee=m(E);o(()=>{const e=W.current;if(e)return Z(e.scrollHeight),a(e,()=>Z(e.scrollHeight))},[ee]);const te=Boolean(U),ne=v[B][R],re=t(n,{children:[m(M)?e("span",{className:`flex shrink-0 items-center justify-center overflow-hidden rounded-full [&_img]:size-full [&_img]:object-cover ${p[R]}`,children:M}):null,m(q)||m(D)||m(T)?t("span",{className:"flex min-w-0 flex-1 flex-col items-center justify-center text-center "+$[B][R],children:[m(q)?e("span",{className:"max-w-full truncate",children:q}):null,m(D)?e("span",{className:`max-w-full truncate font-normal ${x[R]}`,children:D}):null,T]}):null]});return t("div",{ref:C,className:c("inline-flex max-w-full flex-col overflow-hidden align-middle",N[R],"font-medium whitespace-nowrap select-none",s[R],j[H],y,b,f,(L?P:I)[J][K],O??""),style:{...l(A,F,H),...Q},...V,children:[t("div",{className:"flex shrink-0 items-center py-1 "+z[R]+" "+d[R]+" "+(te?"ps-0":ne)+" "+(m(S)?"pe-1":te?"pe-0":""),children:[te?e("button",{type:"button",className:"relative flex min-w-0 flex-1 cursor-pointer items-center justify-center self-stretch "+N[R]+" "+d[R]+" "+ne+" "+u+" neba-glow "+_[H]+" "+y+" "+b,onPointerMove:i(void 0,!0),"aria-expanded":ee?G:void 0,"aria-controls":ee?X:void 0,onClick:U,children:re}):re,m(S)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:S}):null]}),ee?e("div",{id:X,className:"overflow-hidden [transition:height_var(--neba-duration)_var(--neba-ease)] motion-reduce:[transition-duration:0ms]",style:{height:G?Y??"auto":0},inert:w(!G),children:e("div",{ref:W,className:`whitespace-normal ${ne} pb-2 ${h[R]}`,children:E})}):null]})});
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import{Popover as s}from"@base-ui/react/popover";import{boxPaddingXClasses as o,boxPaddingYClasses as t}from"../box/Box.js";import{actionMessages as a,useMessages as i}from"../../internal/i18n.js";import{CloseIcon as n}from"../../internal/icons.js";import{cx as r,hasContent as d,metaTextClasses as c,popupFadeClasses as m,radiusClasses as p,sheetBodyClasses as f,sheetCloseClasses as u,sheetHeaderGapClasses as h,sheetSectionGapClasses as x,sheetTitleClasses as b,srOnlyClasses as g,surfaceClasses as v,surfaceSlots as w}from"../../internal/styles.js";import{useStyleDefaults as N}from"../../internal/defaults.js";const j={xs:"max-w-56",sm:"max-w-64",md:"max-w-80",lg:"max-w-96",xl:"max-w-lg"},y=[v,"relative flex flex-col","border text-(--neba-fg) bg-(--n-panel-press)","[border-color:var(--n-line)]","[box-shadow:var(--neba-shadow-3),var(--neba-plate-glass)]","[outline:none]",m].join(" "),O={xs:8,sm:9,md:10,lg:11,xl:12};export const PopoverClose=s.Close;export function Popover(m){const{size:v="md",color:k="primary",density:z="default",trigger:C,title:P,description:$,children:_,side:B="bottom",align:L="center",sideOffset:M=6,alignOffset:T=0,arrow:W=!1,open:A,defaultOpen:D,onOpenChange:E,modal:R=!1,dismissible:q=!0,showClose:F=!1,locale:G,closeLabel:H,width:I,className:J,style:K,...Q}=N(m,["size","density","locale"]),S=i(a,G),U=o[z][v],V=t[z][v],X=O[v],Y=d(P)||d($);return l(s.Root,{open:A,defaultOpen:D,modal:R,onOpenChange:(e,l)=>{q||e||"escape-key"!==l.reason&&"outside-press"!==l.reason&&"focus-out"!==l.reason?E?.(e):l.cancel()},children:[C?e(s.Trigger,{render:C}):null,e(s.Portal,{children:e(s.Positioner,{className:"neba-portal z-(--neba-z-portal) [outline:none]",side:B,align:L,sideOffset:M,alignOffset:T,children:l(s.Popup,{className:r(y,p[v],f[v],x[v],U,V,void 0===I?j[v]:"",J??""),style:{...w(k,3),...void 0===I?null:{maxWidth:"number"==typeof I?`${I}px`:I},...K},...Q,children:[W?e(s.Arrow,{className:["data-[side=top]:bottom-[-1px]","data-[side=bottom]:top-[-1px] data-[side=bottom]:rotate-180","data-[side=left]:right-[-1px] data-[side=left]:-rotate-90","data-[side=right]:left-[-1px] data-[side=right]:rotate-90"].join(" "),children:l("svg",{width:X,height:X/2,viewBox:"0 0 10 5","aria-hidden":"true",className:"block",children:[e("path",{d:"M0 0h10L5 5z",fill:"var(--n-panel-press)"}),e("path",{d:"M0 0 5 5 10 0",fill:"none",stroke:"var(--n-line)",strokeWidth:"1",vectorEffect:"non-scaling-stroke"})]})}):null,Y||F?l("div",{className:"flex shrink-0 items-start gap-3",children:[l("div",{className:`flex min-w-0 flex-1 flex-col ${h[v]}`,children:[d(P)?e(s.Title,{className:`m-0 font-semibold ${b[v]}`,children:P}):null,d($)?e(s.Description,{className:`m-0 text-(--neba-muted-fg) ${c[v]}`,children:$}):null]}),F?e(s.Close,{"aria-label":H??S.close,className:u,children:e(n,{})}):null]}):null,d(_)?e("div",{className:"min-w-0",children:_}):null,!1===R||F?null:e(s.Close,{"aria-label":H??S.close,className:r(g,"end-2 top-2 flex cursor-pointer items-center justify-center rounded-full","bg-(--n-panel-press) text-(--neba-muted-fg) [&_svg]:size-[1.1em] [&_svg]:shrink-0","focus-visible:size-[1.6em] focus-visible:[clip-path:none]","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2"),children:e(n,{})})]})})})]})}
1
+ "use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import{Popover as s}from"@base-ui/react/popover";import{boxPaddingXClasses as o,boxPaddingYClasses as t}from"../box/Box.js";import{actionMessages as a,useMessages as i}from"../../internal/i18n.js";import{CloseIcon as n}from"../../internal/icons.js";import{cx as r,hasContent as d,metaTextClasses as c,popupFadeClasses as m,radiusClasses as p,sheetBodyClasses as f,sheetCloseClasses as u,sheetHeaderGapClasses as h,sheetSectionGapClasses as x,sheetTitleClasses as b,srOnlyClasses as g,surfaceClasses as v,surfaceSlots as w}from"../../internal/styles.js";import{useStyleDefaults as N}from"../../internal/defaults.js";const j={xs:"max-w-56",sm:"max-w-64",md:"max-w-80",lg:"max-w-96",xl:"max-w-lg"},y=v+" relative flex flex-col border text-(--neba-fg) bg-(--n-panel-press) [border-color:var(--n-line)] [box-shadow:var(--neba-shadow-3),var(--neba-plate-glass)] [outline:none] "+m,O={xs:8,sm:9,md:10,lg:11,xl:12};export const PopoverClose=s.Close;export function Popover(m){const{size:v="md",color:k="primary",density:z="default",trigger:C,title:P,description:$,children:_,side:B="bottom",align:L="center",sideOffset:M=6,alignOffset:T=0,arrow:W=!1,open:A,defaultOpen:D,onOpenChange:E,modal:R=!1,dismissible:q=!0,showClose:F=!1,locale:G,closeLabel:H,width:I,className:J,style:K,...Q}=N(m,["size","density","locale"]),S=i(a,G),U=o[z][v],V=t[z][v],X=O[v],Y=d(P)||d($);return l(s.Root,{open:A,defaultOpen:D,modal:R,onOpenChange:(e,l)=>{q||e||"escape-key"!==l.reason&&"outside-press"!==l.reason&&"focus-out"!==l.reason?E?.(e):l.cancel()},children:[C?e(s.Trigger,{render:C}):null,e(s.Portal,{children:e(s.Positioner,{className:"neba-portal z-(--neba-z-portal) [outline:none]",side:B,align:L,sideOffset:M,alignOffset:T,children:l(s.Popup,{className:r(y,p[v],f[v],x[v],U,V,void 0===I?j[v]:"",J??""),style:{...w(k,3),...void 0===I?null:{maxWidth:"number"==typeof I?`${I}px`:I},...K},...Q,children:[W?e(s.Arrow,{className:"data-[side=top]:bottom-[-1px] data-[side=bottom]:top-[-1px] data-[side=bottom]:rotate-180 data-[side=left]:right-[-1px] data-[side=left]:-rotate-90 data-[side=right]:left-[-1px] data-[side=right]:rotate-90",children:l("svg",{width:X,height:X/2,viewBox:"0 0 10 5","aria-hidden":"true",className:"block",children:[e("path",{d:"M0 0h10L5 5z",fill:"var(--n-panel-press)"}),e("path",{d:"M0 0 5 5 10 0",fill:"none",stroke:"var(--n-line)",strokeWidth:"1",vectorEffect:"non-scaling-stroke"})]})}):null,Y||F?l("div",{className:"flex shrink-0 items-start gap-3",children:[l("div",{className:`flex min-w-0 flex-1 flex-col ${h[v]}`,children:[d(P)?e(s.Title,{className:`m-0 font-semibold ${b[v]}`,children:P}):null,d($)?e(s.Description,{className:`m-0 text-(--neba-muted-fg) ${c[v]}`,children:$}):null]}),F?e(s.Close,{"aria-label":H??S.close,className:u,children:e(n,{})}):null]}):null,d(_)?e("div",{className:"min-w-0",children:_}):null,!1===R||F?null:e(s.Close,{"aria-label":H??S.close,className:r(g,"end-2 top-2 flex cursor-pointer items-center justify-center rounded-full","bg-(--n-panel-press) text-(--neba-muted-fg) [&_svg]:size-[1.1em] [&_svg]:shrink-0","focus-visible:size-[1.6em] focus-visible:[clip-path:none]","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2"),children:e(n,{})})]})})})]})}
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as l from"react";import{Progress as s}from"@base-ui/react/progress";import{plateGapClasses as r,plateRadiusClasses as t,plateSizeClasses as n,progressAriaText as i,progressFraction as o,progressSlots as m,progressText as c}from"../../internal/progress.js";import{cx as f,metaTextClasses as u,stackGapClasses as d}from"../../internal/styles.js";import{useStyleDefaults as x}from"../../internal/defaults.js";import{useIntlLocale as b}from"../../internal/media.js";export const ProgressBox=/*@__PURE__*/l.forwardRef(function ProgressBox(l,h){const{size:p="md",color:g="primary",count:v=4,value:j=null,min:y=0,max:w=100,label:N,showValue:M=!1,format:V,locale:k,className:z,style:A,...B}=x(l,["size","locale"]),P=b(k),R=o(j,y,w),T=null===R,$=void 0!==V,_=Number.isFinite(v)?Math.max(1,Math.floor(v)):1;return a(s.Root,{ref:h,value:T?null:j,min:y,max:w,format:V,locale:P,getAriaValueText:i(R,$),className:f("inline-flex flex-col",d[p],z??""),style:{...m(g),...A},...B,children:[N||M?a("div",{className:["flex items-baseline gap-2",N?"justify-between":"justify-end",u[p]].join(" "),children:[N?e(s.Label,{className:"min-w-0 truncate text-(--neba-fg)",children:N}):null,M?e(s.Value,{className:"shrink-0 tabular-nums text-(--neba-muted-fg)",children:e=>c(R,e,$)}):null]}):null,e(s.Track,{className:`flex ${r[p]}`,children:Array.from({length:_},(a,l)=>e("span",{className:f("relative overflow-hidden bg-(--n-soft)","[box-shadow:var(--neba-plate-glass)]",n[p],t[p],T?"neba-plate-wave":""),style:T?{"--n-i":l}:void 0,children:T?null:e("span",{className:"absolute inset-y-0 start-0 bg-(--n-fill) [transition:width_var(--neba-duration-fill)_var(--neba-ease)]",style:{width:`${Math.min(100,Math.max(0,100*(R*_-l)))}%`}})},l))})]})});
1
+ "use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as l from"react";import{Progress as s}from"@base-ui/react/progress";import{plateGapClasses as r,plateRadiusClasses as t,plateSizeClasses as n,progressAriaText as i,progressFraction as o,progressLabelClasses as m,progressSlots as c,progressStatusAttribute as u,progressText as f}from"../../internal/progress.js";import{cx as d,metaTextClasses as p,stackGapClasses as b}from"../../internal/styles.js";import{useStyleDefaults as h}from"../../internal/defaults.js";import{useIntlLocale as x}from"../../internal/media.js";export const ProgressBox=/*@__PURE__*/l.forwardRef(function ProgressBox(v,g){const{size:y="md",color:j="primary",count:N=4,value:w=null,min:M=0,max:V=100,label:k,showValue:z=!1,format:A,locale:B,className:P,style:R,...T}=h(v,["size","locale"]),$=x(B),_=l.useId(),F=o(w,M,V),I=null===F,q=void 0!==A,C=Number.isFinite(N)?Math.max(1,Math.floor(N)):1;return a(s.Root,{ref:g,value:I?null:w,min:M,max:V,format:A,locale:$,getAriaValueText:i(F,q),className:d("inline-flex flex-col",b[y],P??""),style:{...c(j),...R},"aria-labelledby":k?_:void 0,...T,children:[k||z?a("div",{className:"flex items-baseline gap-2 "+(k?"justify-between":"justify-end")+" "+p[y],children:[k?e("span",{...u(F,w,V),id:_,role:"presentation",className:m,children:k}):null,z?e(s.Value,{className:"shrink-0 tabular-nums text-(--neba-muted-fg)",children:e=>f(F,e,q)}):null]}):null,e(s.Track,{className:`flex ${r[y]}`,children:Array.from({length:C},(a,l)=>e("span",{className:d("relative overflow-hidden bg-(--n-soft)","[box-shadow:var(--neba-plate-glass)]",n[y],t[y],I?"neba-plate-wave":""),style:I?{"--n-i":l}:void 0,children:I?null:e("span",{className:"absolute inset-y-0 start-0 bg-(--n-fill) [transition:width_var(--neba-duration-fill)_var(--neba-ease)]",style:{width:`${Math.min(100,Math.max(0,100*(F*C-l)))}%`}})},l))})]})});
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as r}from"react/jsx-runtime";import*as a from"react";import{Progress as s}from"@base-ui/react/progress";import{progressAriaText as t,progressFraction as n,progressSlots as i,progressText as l,ringDiameters as o,ringStrokes as c}from"../../internal/progress.js";import{cx as m,gapClasses as f,metaTextClasses as u}from"../../internal/styles.js";import{useStyleDefaults as h}from"../../internal/defaults.js";import{useIntlLocale as d}from"../../internal/media.js";export const ProgressCircular=/*@__PURE__*/a.forwardRef(function ProgressCircular(a,x){const{size:p="md",color:k="primary",value:g=null,min:b=0,max:v=100,label:j,showValue:y=!1,format:$,locale:N,thickness:w,className:M,style:P,...V}=h(a,["size","locale"]),z=d(N),C=n(g,b,v),D=null===C,L=void 0!==$,R=o[p],W=R/2,_=Math.min(Math.max(w??c[p],.5),W/2),A=W-_/2,B=2*Math.PI*A,I=D?`${.28*B} ${B}`:`${B}`,T=D?0:B*(1-C);return r(s.Root,{ref:x,value:D?null:g,min:b,max:v,format:$,locale:z,getAriaValueText:t(C,L),className:m("inline-flex items-center",f[p],u[p],M??""),style:{...i(k),...P},...V,children:[r("svg",{className:D?"neba-ring-spin shrink-0":"shrink-0",width:R,height:R,viewBox:`0 0 ${R} ${R}`,fill:"none","aria-hidden":"true",children:[e("circle",{cx:W,cy:W,r:A,stroke:"var(--n-soft)",strokeWidth:_}),e("circle",{cx:W,cy:W,r:A,stroke:"var(--n-accent)",strokeWidth:_,strokeLinecap:"round",strokeDasharray:I,strokeDashoffset:T,transform:`rotate(-90 ${W} ${W})`,className:"[transition:stroke-dashoffset_var(--neba-duration-fill)_var(--neba-ease)]"})]}),j?e(s.Label,{className:"min-w-0 truncate text-(--neba-fg)",children:j}):null,y?e(s.Value,{className:"shrink-0 tabular-nums text-(--neba-muted-fg)",children:e=>l(C,e,L)}):null]})});
1
+ "use client";import{jsx as e,jsxs as r}from"react/jsx-runtime";import*as a from"react";import{Progress as s}from"@base-ui/react/progress";import{progressAriaText as t,progressFraction as i,progressLabelClasses as l,progressSlots as n,progressStatusAttribute as o,progressText as c,ringDiameters as m,ringStrokes as u}from"../../internal/progress.js";import{cx as f,gapClasses as d,metaTextClasses as h}from"../../internal/styles.js";import{useStyleDefaults as p}from"../../internal/defaults.js";import{useIntlLocale as x}from"../../internal/media.js";export const ProgressCircular=/*@__PURE__*/a.forwardRef(function ProgressCircular(k,v){const{size:b="md",color:g="primary",value:y=null,min:j=0,max:$=100,label:N,showValue:w=!1,format:M,locale:P,thickness:V,className:z,style:C,...D}=p(k,["size","locale"]),I=x(P),R=a.useId(),W=i(y,j,$),_=null===W,A=void 0!==M,B=m[b],L=B/2,T=Math.min(Math.max(V??u[b],.5),L/2),q=L-T/2,E=2*Math.PI*q,F=_?`${.28*E} ${E}`:`${E}`,G=_?0:E*(1-W);return r(s.Root,{ref:v,value:_?null:y,min:j,max:$,format:M,locale:I,getAriaValueText:t(W,A),className:f("inline-flex items-center",d[b],h[b],z??""),style:{...n(g),...C},"aria-labelledby":N?R:void 0,...D,children:[r("svg",{className:_?"neba-ring-spin shrink-0":"shrink-0",width:B,height:B,viewBox:`0 0 ${B} ${B}`,fill:"none","aria-hidden":"true",children:[e("circle",{cx:L,cy:L,r:q,stroke:"var(--n-soft)",strokeWidth:T}),e("circle",{cx:L,cy:L,r:q,stroke:"var(--n-accent)",strokeWidth:T,strokeLinecap:"round",strokeDasharray:F,strokeDashoffset:G,transform:`rotate(-90 ${L} ${L})`,className:"[transition:stroke-dashoffset_var(--neba-duration-fill)_var(--neba-ease)]"})]}),N?e("span",{...o(W,y,$),id:R,role:"presentation",className:l,children:N}):null,w?e(s.Value,{className:"shrink-0 tabular-nums text-(--neba-muted-fg)",children:e=>c(W,e,A)}):null]})});
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import*as a from"react";import{Progress as r}from"@base-ui/react/progress";import{barThicknessClasses as s,progressAriaText as n,progressFraction as t,progressSlots as i,progressText as o}from"../../internal/progress.js";import{cx as m,metaTextClasses as u,stackGapClasses as c}from"../../internal/styles.js";import{useStyleDefaults as f}from"../../internal/defaults.js";import{useIntlLocale as d}from"../../internal/media.js";export const ProgressLinear=/*@__PURE__*/a.forwardRef(function ProgressLinear(a,p){const{size:b="md",color:g="primary",value:x=null,min:h=0,max:j=100,label:v,showValue:w=!1,format:y,locale:N,thickness:k,className:L,style:V,...z}=f(a,["size","locale"]),P=d(N),R=t(x,h,j),T=null===R,$=void 0!==y;return l(r.Root,{ref:p,value:T?null:x,min:h,max:j,format:y,locale:P,getAriaValueText:n(R,$),className:m("flex w-full flex-col",c[b],L??""),style:{...i(g),...V},...z,children:[v||w?l("div",{className:["flex items-baseline gap-2",v?"justify-between":"justify-end",u[b]].join(" "),children:[v?e(r.Label,{className:"min-w-0 truncate text-(--neba-fg)",children:v}):null,w?e(r.Value,{className:"shrink-0 tabular-nums text-(--neba-muted-fg)",children:e=>o(R,e,$)}):null]}):null,e(r.Track,{className:`neba-progress-track relative w-full overflow-hidden rounded-full bg-(--n-soft) ${s[b]}`,style:void 0===k?void 0:{height:`${k}px`},children:e(r.Indicator,{className:["neba-progress-indicator absolute rounded-full bg-(--n-fill)",T?"neba-sweep":"top-0 [transition:width_var(--neba-duration-fill)_var(--neba-ease)]"].join(" ")})})]})});
1
+ "use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import*as a from"react";import{Progress as r}from"@base-ui/react/progress";import{barThicknessClasses as s,progressAriaText as i,progressFraction as n,progressLabelClasses as t,progressSlots as o,progressStatusAttribute as m,progressText as u}from"../../internal/progress.js";import{cx as c,metaTextClasses as d,stackGapClasses as f}from"../../internal/styles.js";import{useStyleDefaults as p}from"../../internal/defaults.js";import{useIntlLocale as b}from"../../internal/media.js";export const ProgressLinear=/*@__PURE__*/a.forwardRef(function ProgressLinear(g,h){const{size:x="md",color:v="primary",value:j=null,min:w=0,max:y=100,label:N,showValue:k=!1,format:V,locale:z,thickness:I,className:L,style:P,...R}=p(g,["size","locale"]),T=b(z),$=a.useId(),_=n(j,w,y),A=null===_,q=void 0!==V;return l(r.Root,{ref:h,value:A?null:j,min:w,max:y,format:V,locale:T,getAriaValueText:i(_,q),className:c("flex w-full flex-col",f[x],L??""),style:{...o(v),...P},"aria-labelledby":N?$:void 0,...R,children:[N||k?l("div",{className:"flex items-baseline gap-2 "+(N?"justify-between":"justify-end")+" "+d[x],children:[N?e("span",{...m(_,j,y),id:$,role:"presentation",className:t,children:N}):null,k?e(r.Value,{className:"shrink-0 tabular-nums text-(--neba-muted-fg)",children:e=>u(_,e,q)}):null]}):null,e(r.Track,{className:`neba-progress-track relative w-full overflow-hidden rounded-full bg-(--n-soft) ${s[x]}`,style:void 0===I?void 0:{height:`${I}px`},children:e(r.Indicator,{className:"neba-progress-indicator absolute rounded-full bg-(--n-fill) "+(A?"neba-sweep":"top-0 [transition:width_var(--neba-duration-fill)_var(--neba-ease)]")})})]})});
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as n from"react";import{useLayoutEffectOnClient as r}from"../../internal/layout-effect.js";import{IconButton as l}from"../icon-button/IconButton.js";import{useDropZone as o}from"../../internal/drop.js";import{fieldLight as i,fieldSpotlightSlot as a,glowClasses as s}from"../../internal/glow.js";import{matchesShortcut as c}from"../../internal/keys.js";import{observeResize as m}from"../../internal/observe.js";import{promptMessages as d,useMessages as u}from"../../internal/i18n.js";import{controlTextLeadingClasses as f,cx as p,disabledClasses as h,fieldFocusTransitionClasses as g,fieldReadOnlyClasses as x,fieldRestClasses as v,fieldRingClasses as b,hasContent as w,iconClasses as y,metaTextClasses as j,paddingXClasses as $,radiusClasses as N,srOnlyClasses as k,surfaceSlots as I,transitionClasses as S}from"../../internal/styles.js";import{useStyleDefaults as C}from"../../internal/defaults.js";import{useFieldsetDisabled as D}from"../../internal/fieldset.js";function SendIcon(){return e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:e("path",{d:"M8 13V3.5m0 0L3.75 7.75M8 3.5l4.25 4.25",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round"})})}function StopIcon(){return e("svg",{viewBox:"0 0 16 16",fill:"currentColor","aria-hidden":"true",children:e("rect",{x:"4",y:"4",width:"8",height:"8",rx:"1.5"})})}const F={xs:`${N.sm} ${f.xs}`,sm:`${N.md} ${f.sm}`,md:`${N.lg} ${f.md}`,lg:`${N.xl} ${f.lg}`,xl:`${N.xl} ${f.xl}`},z={xs:"gap-1",sm:"gap-1.5",md:"gap-2",lg:"gap-2.5",xl:"gap-3"};export const PromptInput=/*@__PURE__*/n.forwardRef(function PromptInput(f,N){const{variant:E="outline",size:K="md",color:M="primary",density:P="default",elevation:R=0,value:V,defaultValue:W="",onValueChange:A,onSubmit:B,submitting:L=!1,onStop:H,submitKey:O="Enter",onFiles:q,label:T,minRows:G=1,maxRows:J=8,start:Q,end:U,locale:X,labels:Y,classNames:Z,id:_,disabled:ee,readOnly:te=!1,onKeyDown:ne,className:re,style:le,children:oe,...ie}=C(f,["size","density","variant","locale"]),ae=D(ee),se=!ae&&!te,ce={...u(d,X),...Y},[me,de]=n.useState(W),ue=void 0!==V,fe=ue?V:me,{over:pe,handlers:he}=o(se?q:void 0),ge=n.useId(),xe=_??ge,ve=n.useRef(null),be=n.useCallback(e=>{ve.current=e,"function"==typeof N?N(e):N&&(N.current=e)},[N]),we=n.useCallback(()=>{const e=ve.current;e&&(e.style.height="auto",e.style.height=`${e.scrollHeight}px`)},[]);r(we,[we,fe,G,J]),n.useEffect(()=>{const e=ve.current;if(!e)return;let t=e.clientWidth,n=0;const r=m(e,()=>{e.clientWidth!==t&&(t=e.clientWidth,cancelAnimationFrame(n),n=requestAnimationFrame(we))});return()=>{r(),cancelAnimationFrame(n)}},[we]);const ye=()=>{!fe.trim()||ae||te||L||B?.(fe)},je=fe.trim().length>0&&!ae&&!te;return t("form",{onSubmit:e=>{e.preventDefault(),L?H?.():ye()},className:p("flex w-full flex-col",re??""),style:{...I(M,R),...se?a:void 0,...le},children:[w(T)?e("label",{htmlFor:xe,className:k,children:T}):null,t("div",{"data-dropping":pe||void 0,...he,...i(se),onPointerDown:e=>{e.target!==e.currentTarget||ae||(e.preventDefault(),ve.current?.focus())},className:p("relative flex w-full flex-col py-2","[-webkit-tap-highlight-color:transparent]",F[K],z[K],$[P][K],S,g,b,y,ae?h[E]:te?x[E]:`${v[E]} ${s}`,pe?"[border-color:var(--n-ring)] bg-(--n-soft)":"",Z?.shell??""),children:[oe,e("textarea",{ref:be,id:xe,rows:G,value:fe,disabled:ae,readOnly:te,onChange:e=>{ue||de(e.target.value),A?.(e.target.value)},className:p("neba-input block w-full resize-none bg-transparent [font:inherit] text-inherit","[outline:none]","min-h-(--n-min-rows) max-h-(--n-max-rows) overflow-y-auto","placeholder:text-(--neba-muted-fg)","caret-(--n-accent) selection:bg-(--n-soft-press)","disabled:cursor-not-allowed",Z?.control??""),style:{"--n-min-rows":`calc(${Math.max(G,1)} * 1lh)`,"--n-max-rows":`calc(${Math.max(J,G,1)} * 1lh)`},enterKeyHint:"Enter"===O?"send":void 0,...ie,onKeyDown:e=>{ne?.(e),e.defaultPrevented||!e.nativeEvent.isComposing&&c(e,O)&&(e.preventDefault(),ye())}}),t("div",{className:p("flex min-w-0 items-center gap-2",j[K],Z?.toolbar??""),children:[w(Q)?e("div",{className:"flex min-w-0 items-center gap-1",children:Q}):null,t("div",{className:"ms-auto flex shrink-0 items-center gap-2",children:[w(U)?e("div",{className:"flex items-center gap-1",children:U}):null,e(l,{type:"submit",formNoValidate:L||void 0,size:K,color:M,icon:e(L?StopIcon:SendIcon,{}),label:L?ce.stop:ce.send,disabled:!L&&!je,className:Z?.send})]})]}),pe?e("div",{"aria-hidden":"true",className:p("pointer-events-none absolute inset-0 flex items-center justify-center","font-medium text-(--n-accent)",F[K]),children:ce.drop}):null]})]})});
1
+ "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as n from"react";import{useMergedRef as r}from"../../internal/refs.js";import{useLayoutEffectOnClient as l}from"../../internal/layout-effect.js";import{IconButton as o}from"../icon-button/IconButton.js";import{useDropZone as i}from"../../internal/drop.js";import{fieldLight as a,fieldSpotlightSlot as s,glowClasses as c}from"../../internal/glow.js";import{matchesShortcut as m}from"../../internal/keys.js";import{observeResize as d}from"../../internal/observe.js";import{promptMessages as u,useMessages as f}from"../../internal/i18n.js";import{controlTextLeadingClasses as p,cx as h,disabledClasses as g,fieldFocusTransitionClasses as x,fieldReadOnlyClasses as v,fieldRestClasses as b,fieldRingClasses as w,hasContent as y,iconClasses as j,metaTextClasses as $,paddingXClasses as N,radiusClasses as k,srOnlyClasses as S,surfaceSlots as I,transitionClasses as z}from"../../internal/styles.js";import{useStyleDefaults as C}from"../../internal/defaults.js";import{useFieldsetDisabled as D}from"../../internal/fieldset.js";function SendIcon(){return e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:e("path",{d:"M8 13V3.5m0 0L3.75 7.75M8 3.5l4.25 4.25",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round"})})}function StopIcon(){return e("svg",{viewBox:"0 0 16 16",fill:"currentColor","aria-hidden":"true",children:e("rect",{x:"4",y:"4",width:"8",height:"8",rx:"1.5"})})}const V={xs:`${k.sm} ${p.xs}`,sm:`${k.md} ${p.sm}`,md:`${k.lg} ${p.md}`,lg:`${k.xl} ${p.lg}`,xl:`${k.xl} ${p.xl}`},F={xs:"gap-1",sm:"gap-1.5",md:"gap-2",lg:"gap-2.5",xl:"gap-3"};export const PromptInput=/*@__PURE__*/n.forwardRef(function PromptInput(p,k){const{variant:P="outline",size:R="md",color:E="primary",density:K="default",elevation:M=0,value:W,defaultValue:A="",onValueChange:B,onSubmit:L,submitting:H=!1,onStop:O,submitKey:T="Enter",onFiles:Y,label:q,minRows:X=1,maxRows:G=8,start:J,end:Q,locale:U,labels:Z,classNames:_,id:ee,disabled:te,readOnly:ne=!1,onKeyDown:re,className:le,style:oe,children:ie,...ae}=C(p,["size","density","variant","locale"]),se=D(te),ce=!se&&!ne,me={...f(u,U),...Z},[de,ue]=n.useState(A),fe=void 0!==W,pe=fe?W:de,{over:he,handlers:ge}=i(ce?Y:void 0),xe=n.useId(),ve=ee??xe,be=n.useRef(null),we=r(be,k),ye=n.useRef(null),je=n.useCallback(()=>{const e=be.current;if(!e)return;if(ye.current??="content"===getComputedStyle(e).getPropertyValue("field-sizing").trim(),ye.current)return;const t=e.ownerDocument.defaultView,n=t?.scrollY??0;e.style.height="auto",e.style.height=`${e.scrollHeight}px`,t&&t.scrollY!==n&&t.scrollTo(t.scrollX,n)},[]);l(je,[je,pe,X,G]),n.useEffect(()=>{const e=be.current;if(!e||ye.current)return;let t=e.clientWidth,n=0;const r=d(e,()=>{e.clientWidth!==t&&(t=e.clientWidth,cancelAnimationFrame(n),n=requestAnimationFrame(je))});return()=>{r(),cancelAnimationFrame(n)}},[je]);const $e=()=>{!pe.trim()||se||ne||H||L?.(pe)},Ne=pe.trim().length>0&&!se&&!ne;return t("form",{onSubmit:e=>{e.preventDefault(),H?O?.():$e()},className:h("flex w-full flex-col",le??""),style:{...I(E,M),...ce?s:void 0,...oe},children:[y(q)?e("label",{htmlFor:ve,className:S,children:q}):null,t("div",{"data-dropping":he||void 0,...ge,...a(ce),onPointerDown:e=>{e.target!==e.currentTarget||se||(e.preventDefault(),be.current?.focus())},className:h("relative flex w-full flex-col py-2","[-webkit-tap-highlight-color:transparent]",V[R],F[R],N[K][R],z,x,w,j,se?g[P]:ne?v[P]:`${b[P]} ${c}`,he?"[border-color:var(--n-ring)] bg-(--n-soft)":"",_?.shell??""),children:[ie,e("textarea",{ref:we,id:ve,rows:X,value:pe,disabled:se,readOnly:ne,onChange:e=>{fe||ue(e.target.value),B?.(e.target.value)},className:h("neba-input block w-full resize-none bg-transparent [font:inherit] text-inherit","[outline:none]","min-h-(--n-min-rows) max-h-(--n-max-rows) overflow-y-auto",X<=1&&"supports-[field-sizing:content]:[field-sizing:content]","placeholder:text-(--neba-muted-fg)","caret-(--n-accent) selection:bg-(--n-soft-press)","disabled:cursor-not-allowed",_?.control??""),style:{"--n-min-rows":`calc(${Math.max(X,1)} * 1lh)`,"--n-max-rows":`calc(${Math.max(G,X,1)} * 1lh)`},enterKeyHint:"Enter"===T?"send":void 0,...ae,onKeyDown:e=>{re?.(e),e.defaultPrevented||!e.nativeEvent.isComposing&&m(e,T)&&(e.preventDefault(),$e())}}),t("div",{className:h("flex min-w-0 items-center gap-2",$[R],_?.toolbar??""),children:[y(J)?e("div",{className:"flex min-w-0 items-center gap-1",children:J}):null,t("div",{className:"ms-auto flex shrink-0 items-center gap-2",children:[y(Q)?e("div",{className:"flex items-center gap-1",children:Q}):null,e(o,{type:"submit",formNoValidate:H||void 0,size:R,color:E,icon:e(H?StopIcon:SendIcon,{}),label:H?me.stop:me.send,disabled:!H&&!Ne,className:_?.send})]})]}),he?e("div",{"aria-hidden":"true",className:h("pointer-events-none absolute inset-0 flex items-center justify-center","font-medium text-(--n-accent)",V[R]),children:me.drop}):null]})]})});
@@ -19,8 +19,9 @@ export interface NebaProviderProps {
19
19
  /**
20
20
  * Prop values every component under it starts from.
21
21
  *
22
- * `size`, `density`, `variant`, `locale` and `labelPlacement` — the axes whose
23
- * right value is a property of the product rather than of the control. A call site still wins:
22
+ * `size`, `density`, `variant`, `locale`, `labelPlacement` and `spacing` — the
23
+ * axes whose right value is a property of the product rather than of the
24
+ * control. A call site still wins:
24
25
  * the order is the caller, then this, then the component's own default.
25
26
  */
26
27
  defaults?: NebaDefaults;
@@ -1 +1 @@
1
- "use client";import{jsx as e}from"react/jsx-runtime";import*as t from"react";import{DirectionProvider as r,useDirection as o}from"@base-ui/react/direction-provider";import{DefaultsContext as n}from"../../internal/defaults.js";import{useHydrated as l,useMediaQuery as c}from"../../internal/media.js";import{DEFAULT_STORAGE_KEY as i}from"./colorSchemeScript.js";const s=/*@__PURE__*/t.createContext(null);export function NebaProvider({children:a,defaults:u,colorScheme:m,defaultColorScheme:d="system",onColorSchemeChange:h,storageKey:f=i,colorSchemeElement:S,direction:p}){const v=l(),b=t.useContext(n),y=t.useContext(s),C=o(),[g,E]=t.useState(null),P=t.useMemo(()=>v?function(e){if(!1===e||"undefined"==typeof localStorage)return null;try{const t=localStorage.getItem(e);return"light"===t||"dark"===t||"system"===t?t:null}catch{return null}}(f):null,[v,f]),x=m??g??P??d,k=c("(prefers-color-scheme: dark)"),w="system"===x?k?"dark":"light":x,N=t.useCallback(e=>{if(void 0===m&&E(e),!1!==f)try{localStorage.setItem(f,e)}catch{}h?.(e)},[m,f,h]);t.useEffect(()=>{if(!v)return;const e=S?S():null===y?document.documentElement:null;e&&(e.setAttribute("data-theme",w),e.style.colorScheme=w)},[v,w,S,y]);const j=t.useRef(!1);t.useEffect(()=>{const e=!j.current;if(j.current=!0,!p)return;const t=document.documentElement.dir;"production"!==process.env.NODE_ENV&&e&&(t||"ltr")!==p&&console.warn(`Neba: a NebaProvider has direction="${p}", and <html> ${t?`has dir="${t}"`:"has no dir"}. The provider sets dir only once it has mounted, so the page is drawn the other way round until then and mirrors when it does. Put dir="${p}" on <html> in the HTML itself.`),document.documentElement.setAttribute("dir",p)},[p]);const M=t.useMemo(()=>({colorScheme:x,resolvedColorScheme:w,setColorScheme:N,toggleColorScheme:()=>N("dark"===w?"light":"dark")}),[x,w,N]),$=u?.size??b?.size,z=u?.density??b?.density,A=u?.variant??b?.variant,I=u?.locale??b?.locale,T=u?.labelPlacement??b?.labelPlacement,D=null!=u||null!==b,H=t.useMemo(()=>D?{size:$,density:z,variant:A,locale:I,labelPlacement:T}:null,[D,$,z,A,I,T]);return e(n.Provider,{value:H,children:e(s.Provider,{value:M,children:e(r,{direction:p??C,children:a})})})}export function useColorScheme(){const e=t.useContext(s);if(!e)throw new Error("neba: useColorScheme() needs a <NebaProvider> above it.");return e}
1
+ "use client";import{jsx as e}from"react/jsx-runtime";import*as t from"react";import{DirectionProvider as r,useDirection as o}from"@base-ui/react/direction-provider";import{DefaultsContext as n}from"../../internal/defaults.js";import{useHydrated as l,useMediaQuery as s}from"../../internal/media.js";import{DEFAULT_STORAGE_KEY as c}from"./colorSchemeScript.js";const a=/*@__PURE__*/t.createContext(null);export function NebaProvider({children:i,defaults:u,colorScheme:d,defaultColorScheme:m="system",onColorSchemeChange:h,storageKey:f=c,colorSchemeElement:p,direction:g}){const v=l(),S=t.useContext(n),b=t.useContext(a),y=o(),[C,E]=t.useState(null),w=t.useMemo(()=>v?function(e){if(!1===e||"undefined"==typeof localStorage)return null;try{const t=localStorage.getItem(e);return"light"===t||"dark"===t||"system"===t?t:null}catch{return null}}(f):null,[v,f]),N=d??C??w??m,P=s("(prefers-color-scheme: dark)"),k="system"===N?P?"dark":"light":N,x=t.useRef(h);t.useEffect(()=>{x.current=h});const $=void 0!==d,j=t.useCallback(e=>{if($||E(e),!1!==f)try{localStorage.setItem(f,e)}catch{}x.current?.(e)},[$,f]),M=t.useRef(!1);t.useEffect(()=>{if(!v)return;const e=p?p():null===b?document.documentElement:null;if(!e)return;const t=!M.current;if(M.current=!0,"production"!==process.env.NODE_ENV&&t&&e===document.documentElement){const t=e.getAttribute("data-theme")??(e.classList.contains("dark")?"dark":e.classList.contains("light")?"light":null);(null===t?"system"!==N:t!==k)&&console.warn(`Neba: a NebaProvider resolved the colour scheme "${k}", and <html> ${null===t?"has no data-theme":`shows "${t}"`}. The provider writes it only once it has mounted, so the page is drawn in the other scheme until then and changes when it does. Call colorSchemeScript() in <head>, with the same storageKey and defaultColorScheme as the provider.`)}e.setAttribute("data-theme",k),e.style.colorScheme=k},[v,k,N,p,b]);const z=t.useRef(!1);t.useEffect(()=>{const e=!z.current;if(z.current=!0,!g)return;const t=document.documentElement.dir;"production"!==process.env.NODE_ENV&&e&&(t||"ltr")!==g&&console.warn(`Neba: a NebaProvider has direction="${g}", and <html> ${t?`has dir="${t}"`:"has no dir"}. The provider sets dir only once it has mounted, so the page is drawn the other way round until then and mirrors when it does. Put dir="${g}" on <html> in the HTML itself.`),document.documentElement.setAttribute("dir",g)},[g]);const A=t.useMemo(()=>({colorScheme:N,resolvedColorScheme:k,setColorScheme:j,toggleColorScheme:()=>j("dark"===k?"light":"dark")}),[N,k,j]),L=u?.size??S?.size,R=u?.density??S?.density,T=u?.variant??S?.variant,D=u?.locale??S?.locale,I=u?.labelPlacement??S?.labelPlacement,K=u?.spacing??S?.spacing,O=null!=u||null!==S,V=t.useMemo(()=>O?{size:L,density:R,variant:T,locale:D,labelPlacement:I,spacing:K}:null,[O,L,R,T,D,I,K]);return e(n.Provider,{value:V,children:e(a.Provider,{value:A,children:e(r,{direction:g??y,children:i})})})}export function useColorScheme(){const e=t.useContext(a);if(!e)throw new Error("neba: useColorScheme() needs a <NebaProvider> above it.");return e}
@@ -25,6 +25,19 @@ export interface RadioGroupProps extends Omit<React.ComponentPropsWithoutRef<typ
25
25
  * @default 'vertical'
26
26
  */
27
27
  orientation?: NebaOrientation;
28
+ /**
29
+ * The gap between the options, on Tailwind's spacing scale: `3` is
30
+ * `0.75rem`, the same step `gap-3` is. One length on both axes, so a
31
+ * horizontal group that wraps puts its lines as far apart as its options.
32
+ * Left out, a column follows `size` on the ladder a Form stands its fields
33
+ * on, `3` at `md`, and a row keeps `5` along it with the column's step
34
+ * between its lines.
35
+ *
36
+ * Not read from a `NebaProvider`: the provider's `spacing` is the gap between
37
+ * fields, and a product that spreads its fields apart should not spread every
38
+ * set of options with them.
39
+ */
40
+ spacing?: number;
28
41
  /** The question the options answer. Rendered as the group's legend. */
29
42
  label?: React.ReactNode;
30
43
  /** Helper text under the label. */
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as r from"react";import{Radio as n}from"@base-ui/react/radio";import{RadioGroup as l}from"@base-ui/react/radio-group";import{Field as i}from"@base-ui/react/field";import{controlTextClasses as o,cx as t,hitAreaClasses as s,metaTextClasses as d,surfaceClasses as c,tickDotClasses as b,tickRowLeadingClasses as f,tickSizeClasses as m,transitionClasses as h}from"../../internal/styles.js";import{useStyleDefaults as p}from"../../internal/defaults.js";import{useFieldsetDisabled as u}from"../../internal/fieldset.js";const v=/*@__PURE__*/r.createContext({size:"md",color:"primary",readOnly:!1,disabled:!1}),g=["relative inline-flex shrink-0 items-center justify-center rounded-full border",s,"[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]",h,"active:[transition-duration:0ms]","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2"].join(" "),x=[c,"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]:text-(--n-on-solid)","data-[checked]:[border-color:transparent]","data-[checked]:hover:bg-(--n-fill-hover)"].join(" "),N=[c,"cursor-default bg-(--n-panel) [border-color:var(--n-line)]","[filter:saturate(0.55)]","data-[checked]:bg-(--n-fill) data-[checked]:text-(--n-on-solid)","data-[checked]:[border-color:transparent]"].join(" "),y=["cursor-not-allowed bg-transparent [border-color:var(--neba-disabled-border)] shadow-none","data-[checked]:bg-(--neba-disabled-bg)"].join(" "),j=["neba-radio-dot rounded-full bg-current","[transition:width_var(--neba-duration)_var(--neba-ease),height_var(--neba-duration)_var(--neba-ease)]","data-[starting-style]:size-0 data-[ending-style]:size-0"].join(" ");export const Radio=/*@__PURE__*/r.forwardRef(function Radio({label:l,description:s,disabled:c,className:h,classNames:p,style:u,...k},z){const R=r.useContext(v),w=k.readOnly??R.readOnly,$=c??R.disabled;return e(i.Root,{disabled:$,className:t("flex flex-col",h??""),style:u,children:a("div",{className:`flex items-start gap-2 ${o[R.size]} ${f}`,children:[e("span",{className:"flex h-[1lh] shrink-0 items-center",children:e(n.Root,{ref:z,className:t(g,m[R.size],$?y:w?N:x,p?.control),disabled:$,...k,children:e(n.Indicator,{className:t(j,b[R.size],p?.indicator)})})}),l||s?a("span",{className:"flex min-w-0 flex-col gap-0.5",children:[l?e(i.Label,{className:t("leading-[1.4]",$?"text-(--neba-disabled-fg)":"cursor-pointer text-(--neba-fg)",p?.label),children:l}):null,s?e(i.Description,{className:t(d[R.size],"text-(--neba-muted-fg)",p?.description),children:s}):null]}):null]})})});export const RadioGroup=/*@__PURE__*/r.forwardRef(function RadioGroup(n,o){const{size:s="md",color:c="primary",orientation:b="vertical",label:f,description:m,error:h,invalid:g,disabled:x,readOnly:N=!1,className:y,classNames:j,style:k,children:z,...R}=p(n,["size"]),w=u(x),$=null!=h&&!1!==h&&""!==h,O=g??$,_=O?"danger":c,G={"--n-fill":`var(--neba-${_}-fill)`,"--n-fill-hover":`var(--neba-${_}-fill-hover)`,"--n-on-solid":`var(--neba-${_}-on-solid)`,"--n-accent":`var(--neba-${_}-accent)`,"--n-panel":"var(--neba-panel)","--n-panel-hover":"var(--neba-panel-hover)","--n-line":`var(--neba-${_}-line)`,"--n-line-hover":`var(--neba-${_}-line-hover)`,"--n-ring":`var(--neba-${_}-ring)`},C=r.useMemo(()=>({size:s,color:_,readOnly:N,disabled:w}),[s,_,N,w]);return e(v.Provider,{value:C,children:a(i.Root,{disabled:w,invalid:O,className:t("flex flex-col gap-1.5",y??""),style:{...G,...k},children:[f?e(i.Label,{className:t(d[s],"font-medium",w?"text-(--neba-disabled-fg)":"text-(--neba-fg)",j?.label),children:f}):null,m?e(i.Description,{className:t(d[s],"text-(--neba-muted-fg)",j?.description),children:m}):null,e(l,{ref:o,disabled:w,readOnly:N,className:t("flex","horizontal"===b?"flex-row flex-wrap gap-x-5 gap-y-2":"flex-col gap-2",j?.control),...R,children:z}),e(i.Error,$?{match:!0,className:t(d[s],"text-(--n-accent)",j?.error),children:h}:{className:t(d[s],"text-(--n-accent)",j?.error)})]})})});
1
+ "use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as r from"react";import{Radio as n}from"@base-ui/react/radio";import{RadioGroup as l}from"@base-ui/react/radio-group";import{Field as i}from"@base-ui/react/field";import{controlTextClasses as o,cx as t,hitAreaClasses as s,metaTextClasses as d,optionGapClasses as c,surfaceClasses as b,tickDotClasses as f,tickRowLeadingClasses as m,tickSizeClasses as h,transitionClasses as p}from"../../internal/styles.js";import{spacingValue as u}from"../../internal/grid.js";import{useStyleDefaults as v}from"../../internal/defaults.js";import{useFieldsetDisabled as g}from"../../internal/fieldset.js";const x=/*@__PURE__*/r.createContext({size:"md",color:"primary",readOnly:!1,disabled:!1}),N="relative inline-flex shrink-0 items-center justify-center rounded-full border "+s+" [-webkit-tap-highlight-color:transparent] [touch-action:manipulation] "+p+" active:[transition-duration:0ms] focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2",y=b+" 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]:text-(--n-on-solid) data-[checked]:[border-color:transparent] data-[checked]:hover:bg-(--n-fill-hover)",k=b+" cursor-default bg-(--n-panel) [border-color:var(--n-line)] [filter:saturate(0.55)] data-[checked]:bg-(--n-fill) data-[checked]:text-(--n-on-solid) data-[checked]:[border-color:transparent]";export const Radio=/*@__PURE__*/r.forwardRef(function Radio({label:l,description:s,disabled:c,className:b,classNames:p,style:u,...v},g){const z=r.useContext(x),R=v.readOnly??z.readOnly,w=c??z.disabled;return e(i.Root,{disabled:w,className:t("flex flex-col",b??""),style:u,children:a("div",{className:`flex items-start gap-2 ${o[z.size]} ${m}`,children:[e("span",{className:"flex h-[1lh] shrink-0 items-center",children:e(n.Root,{ref:g,className:t(N,h[z.size],w?"cursor-not-allowed bg-transparent [border-color:var(--neba-disabled-border)] shadow-none data-[checked]:bg-(--neba-disabled-bg)":R?k:y,p?.control),disabled:w,...v,children:e(n.Indicator,{className:t("neba-radio-dot rounded-full bg-current [transition:width_var(--neba-duration)_var(--neba-ease),height_var(--neba-duration)_var(--neba-ease)] data-[starting-style]:size-0 data-[ending-style]:size-0",f[z.size],p?.indicator)})})}),l||s?a("span",{className:"flex min-w-0 flex-col gap-0.5",children:[l?e(i.Label,{className:t("leading-[1.4]",w?"text-(--neba-disabled-fg)":"cursor-pointer text-(--neba-fg)",p?.label),children:l}):null,s?e(i.Description,{className:t(d[z.size],"text-(--neba-muted-fg)",p?.description),children:s}):null]}):null]})})});export const RadioGroup=/*@__PURE__*/r.forwardRef(function RadioGroup(n,o){const{size:s="md",color:b="primary",orientation:f="vertical",spacing:m,label:h,description:p,error:N,invalid:y,disabled:k,readOnly:z=!1,className:R,classNames:w,style:$,children:j,...O}=v(n,["size"]),_=g(k),G=null!=N&&!1!==N&&""!==N,C=y??G,D=C?"danger":b,L={"--n-fill":`var(--neba-${D}-fill)`,"--n-fill-hover":`var(--neba-${D}-fill-hover)`,"--n-on-solid":`var(--neba-${D}-on-solid)`,"--n-accent":`var(--neba-${D}-accent)`,"--n-panel":"var(--neba-panel)","--n-panel-hover":"var(--neba-panel-hover)","--n-line":`var(--neba-${D}-line)`,"--n-line-hover":`var(--neba-${D}-line-hover)`,"--n-ring":`var(--neba-${D}-ring)`},E=r.useMemo(()=>({size:s,color:D,readOnly:z,disabled:_}),[s,D,z,_]);return e(x.Provider,{value:E,children:a(i.Root,{disabled:_,invalid:C,className:t("flex flex-col gap-1.5",R??""),style:{...L,...$},children:[h?e(i.Label,{className:t(d[s],"font-medium",_?"text-(--neba-disabled-fg)":"text-(--neba-fg)",w?.label),children:h}):null,p?e(i.Description,{className:t(d[s],"text-(--neba-muted-fg)",w?.description),children:p}):null,e(l,{ref:o,disabled:_,readOnly:z,className:t("flex","horizontal"===f?"flex-row flex-wrap":"flex-col",void 0===m?c[f][s]:"",w?.control),style:void 0===m?void 0:{gap:u(m)},...O,children:j}),e(i.Error,G?{match:!0,className:t(d[s],"text-(--n-accent)",w?.error),children:N}:{className:t(d[s],"text-(--n-accent)",w?.error)})]})})});
@@ -1,2 +1,2 @@
1
1
  export { Radio, RadioGroup } from './RadioGroup.js';
2
- export type { RadioGroupProps, RadioProps } from './RadioGroup.js';
2
+ export type { RadioGroupProps, RadioGroupSlot, RadioProps, RadioSlot } from './RadioGroup.js';
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as n from"react";import{StarIcon as r,StarOutlineIcon as t}from"../../internal/icons.js";import{fillMessage as i,ratingMessages as l,useMessages as o}from"../../internal/i18n.js";import{controlSlots as s,cx as m,focusWithinRingClasses as d,gapClasses as c,iconSizeClasses as u,radiusClasses as h,srOnlyClasses as f,transitionClasses as b}from"../../internal/styles.js";import{useStyleDefaults as p}from"../../internal/defaults.js";const v="flex items-center justify-center",x={xs:"0.25rem",sm:"0.375rem",md:"0.375rem",lg:"0.5rem",xl:"0.625rem"};export const Rating=/*@__PURE__*/n.forwardRef(function Rating(g,y){const{value:j,defaultValue:M=0,onValueChange:N,count:w=5,precision:k=1,icon:S,emptyIcon:C,clearable:L=!0,readOnly:P=!1,disabled:q=!1,name:I,required:R=!1,size:z="md",color:A="warning",locale:V,label:_,valueLabel:E,className:F,style:O,onPointerLeave:$,...B}=p(g,["size","locale"]),D=o(l,V),G=n.useId(),H=I??G,J=void 0===I?`${G}-no-form`:void 0,[K,Q]=n.useState(M),T=void 0!==j,U=T?j:K,[W,X]=n.useState(null),Y=Math.max(1,Math.floor(w)),Z=k>0&&k<=1?k:1,ee=Math.round(1/Z),ae=Math.max(0,Math.min(Y,W??U)),ne=n.useCallback(e=>E?E(e,Y):e<=0?D.empty:i(D.value,{value:String(Math.round(10*e)/10),max:String(Y)}),[E,Y,D]),re=e=>{T||Q(e),N?.(e)},te=Array.from({length:Y},(n,i)=>{const l=Math.max(0,Math.min(1,ae-i));return a("span",{className:m("relative inline-flex shrink-0",u[z],h.xs,P||q?"":d),children:[e("span",{className:[v,u[z],q?"text-(--neba-disabled-fg)":"text-(--n-empty)"].join(" "),children:C??e(t,{})}),e("span",{"aria-hidden":"true",className:m("pointer-events-none absolute inset-y-0 start-0 overflow-hidden","[transition:width_var(--neba-duration)_var(--neba-ease)]"),style:{width:100*l+"%"},children:e("span",{className:[v,u[z],q?"text-(--neba-disabled-fg)":"text-(--n-fill)",b].join(" "),children:S??e(r,{})})}),P?null:Array.from({length:ee},(a,n)=>{const r=Number((i+(n+1)*Z).toFixed(4));return e("label",{className:["neba-hit-row absolute inset-y-0",q?"cursor-not-allowed":"cursor-pointer"].join(" "),style:{insetInlineStart:100*n/ee+"%",width:100/ee+"%","--n-hit-gap":1===ee?x[z]:void 0},onPointerEnter:()=>{q||X(r)},children:e("input",{type:"radio",className:f,name:H,form:J,value:r,checked:U===r,disabled:q,required:R,"aria-label":ne(r),onChange:()=>re(r),onClick:()=>{L&&U===r&&re(0)}})},r)})]},i)}),ie=m("inline-flex items-center align-middle",c[z],q?"cursor-not-allowed":"",F??""),le={...s(A,0,"solid"),"--n-empty":P?"color-mix(in oklab, var(--neba-muted-fg) 40%, transparent)":"color-mix(in oklab, var(--neba-muted-fg) 80%, transparent)",...O};return e("div",P?{ref:y,role:"img","aria-label":ne(Math.max(0,Math.min(Y,U))),className:ie,style:le,onPointerLeave:$,...B,children:te}:{ref:y,role:"radiogroup","aria-label":_??D.label,"aria-disabled":q||void 0,"aria-required":R||void 0,className:ie,style:le,onPointerLeave:e=>{X(null),$?.(e)},...B,children:te})});
1
+ "use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as n from"react";import{StarIcon as r,StarOutlineIcon as t}from"../../internal/icons.js";import{fillMessage as l,ratingMessages as i,useMessages as o}from"../../internal/i18n.js";import{controlSlots as s,cx as m,focusWithinRingClasses as d,gapClasses as c,iconSizeClasses as u,radiusClasses as h,srOnlyClasses as f,transitionClasses as b}from"../../internal/styles.js";import{useStyleDefaults as p}from"../../internal/defaults.js";const v="flex items-center justify-center",x={xs:"0.25rem",sm:"0.375rem",md:"0.375rem",lg:"0.5rem",xl:"0.625rem"};export const Rating=/*@__PURE__*/n.forwardRef(function Rating(g,y){const{value:M,defaultValue:N=0,onValueChange:w,count:j=5,precision:k=1,icon:S,emptyIcon:C,clearable:L=!0,readOnly:P=!1,disabled:q=!1,name:I,required:R=!1,size:z="md",color:A="warning",locale:V,label:_,valueLabel:E,className:F,style:O,onPointerLeave:$,...B}=p(g,["size","locale"]),D=o(i,V),G=n.useId(),H=I??G,J=void 0===I?`${G}-no-form`:void 0,[K,Q]=n.useState(N),T=void 0!==M,U=T?M:K,[W,X]=n.useState(null),Y=Math.max(1,Math.floor(j)),Z=k>0&&k<=1?k:1,ee=Math.round(1/Z),ae=Math.max(0,Math.min(Y,W??U)),ne=n.useCallback(e=>E?E(e,Y):e<=0?D.empty:l(D.value,{value:String(Math.round(10*e)/10),max:String(Y)}),[E,Y,D]),re=e=>{T||Q(e),w?.(e)},te=Array.from({length:Y},(n,l)=>{const i=Math.max(0,Math.min(1,ae-l));return a("span",{className:m("relative inline-flex shrink-0",u[z],h.xs,P||q?"":d),children:[e("span",{className:v+" "+u[z]+" "+(q?"text-(--neba-disabled-fg)":"text-(--n-empty)"),children:C??e(t,{})}),e("span",{"aria-hidden":"true",className:m("pointer-events-none absolute inset-y-0 start-0 overflow-hidden","[transition:width_var(--neba-duration)_var(--neba-ease)]"),style:{width:100*i+"%"},children:e("span",{className:v+" "+u[z]+" "+(q?"text-(--neba-disabled-fg)":"text-(--n-fill)")+" "+b,children:S??e(r,{})})}),P?null:Array.from({length:ee},(a,n)=>{const r=Number((l+(n+1)*Z).toFixed(4));return e("label",{className:"neba-hit-row absolute inset-y-0 "+(q?"cursor-not-allowed":"cursor-pointer"),style:{insetInlineStart:100*n/ee+"%",width:100/ee+"%","--n-hit-gap":1===ee?x[z]:void 0},onPointerEnter:()=>{q||X(r)},children:e("input",{type:"radio",className:f,name:H,form:J,value:r,checked:U===r,disabled:q,required:R,"aria-label":ne(r),onChange:()=>re(r),onClick:()=>{L&&U===r&&re(0)}})},r)})]},l)}),le=m("inline-flex items-center align-middle",c[z],q?"cursor-not-allowed":"",F??""),ie={...s(A,0,"solid"),"--n-empty":P?"color-mix(in oklab, var(--neba-muted-fg) 40%, transparent)":"color-mix(in oklab, var(--neba-muted-fg) 80%, transparent)",...O};return e("div",P?{ref:y,role:"img","aria-label":ne(Math.max(0,Math.min(Y,U))),className:le,style:ie,onPointerLeave:$,...B,children:te}:{ref:y,role:"radiogroup","aria-label":_??D.label,"aria-disabled":q||void 0,"aria-required":R||void 0,className:le,style:ie,onPointerLeave:e=>{X(null),$?.(e)},...B,children:te})});
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as n}from"react/jsx-runtime";import*as t from"react";import{Collapsible as a}from"@base-ui/react/collapsible";import{boxPaddingXClasses as o,boxPaddingYClasses as l}from"../box/Box.js";import{ChevronIcon as r,SpinnerIcon as s}from"../../internal/icons.js";import{formatDuration as i,useElapsed as d}from"../../internal/run.js";import{fillMessage as c,reasoningMessages as m,useMessages as u}from"../../internal/i18n.js";import{collapsiblePanelClasses as f,cx as p,gapClasses as b,hasContent as h,iconClasses as x,radiusClasses as v,sheetBodyClasses as g,sheetTitleClasses as j,surfaceClasses as N,surfaceSlots as y,transitionClasses as w,disclosureChevronClasses as C,disclosureTriggerClasses as O}from"../../internal/styles.js";import{useStyleDefaults as R}from"../../internal/defaults.js";const k={solid:[N,"text-(--neba-fg) bg-(--n-panel-hover)","[box-shadow:var(--n-elev),var(--neba-plate-solid)]"].join(" "),outline:[N,"border text-(--neba-fg) bg-(--n-panel)","[border-color:var(--n-line)]","[box-shadow:var(--n-elev),var(--neba-plate-glass)]"].join(" "),text:"text-(--neba-fg) bg-transparent"};export const Reasoning=/*@__PURE__*/t.forwardRef(function Reasoning(N,z){const{variant:F="text",size:S="md",color:U="secondary",density:_="default",elevation:B=0,streaming:P=!1,duration:T,open:q,defaultOpen:A=!1,onOpenChange:D,autoOpen:E=!0,autoClose:G=!0,hiddenUntilFound:H=!0,label:I,icon:J,locale:K,labels:L,classNames:M,className:Q,style:V,children:W,...X}=R(N,["size","density","variant","locale"]),Y={...u(m,K),...L},[Z,$]=t.useState(A||E&&P),[ee,ne]=t.useState(P),te=void 0!==q,ae=te?q:Z;ee!==P&&(ne(P),E&&!te&&(P||G)&&$(P));const oe=d(P,T),le=null===oe?null:i(oe,K),re=h(I)?I:P?Y.thinking:null===le?Y.done:c(Y.thought,{duration:le}),se=void 0===J?P?e(s,{}):null:J;return n(a.Root,{ref:z,open:ae,onOpenChange:e=>{te||$(e),D?.(e)},"aria-busy":P||void 0,"data-streaming":P||void 0,className:p("flex flex-col overflow-hidden",v[S],k[F],w,x,Q??""),style:{...y(U,B),...V},...X,children:[n(a.Trigger,{className:p("flex w-full cursor-pointer items-center text-start text-(--neba-muted-fg)",O,o[_][S],l[_][S],b[S],j[S],w,"hover:bg-(--n-soft) hover:text-(--n-on-tint)","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:[outline-offset:-2px]",M?.header??""),children:[h(se)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:se}):null,e("span",{className:"min-w-0 flex-1 truncate font-medium",children:re}),e("span",{className:C,children:e(r,{})})]}),e(a.Panel,{hiddenUntilFound:H,className:f,children:e("div",{className:p("min-w-0 border-s-2 text-(--neba-muted-fg) [border-color:var(--n-line)]",o[_][S],"compact"===_?"pb-2":"pb-4",g[S],M?.body??""),children:W})})]})});
1
+ "use client";import{jsx as e,jsxs as n}from"react/jsx-runtime";import*as t from"react";import{Collapsible as a}from"@base-ui/react/collapsible";import{boxPaddingXClasses as o,boxPaddingYClasses as l}from"../box/Box.js";import{ChevronIcon as r,SpinnerIcon as s}from"../../internal/icons.js";import{formatDuration as i,useRunClock as d}from"../../internal/run.js";import{fillMessage as c,reasoningMessages as m,useMessages as u}from"../../internal/i18n.js";import{collapsiblePanelClasses as f,cx as p,gapClasses as b,hasContent as h,iconClasses as x,radiusClasses as v,sheetBodyClasses as g,sheetTitleClasses as j,surfaceClasses as N,surfaceSlots as y,transitionClasses as w,disclosureChevronClasses as C,disclosureTriggerClasses as O}from"../../internal/styles.js";import{useStyleDefaults as R}from"../../internal/defaults.js";const k={solid:N+" text-(--neba-fg) bg-(--n-panel-hover) [box-shadow:var(--n-elev),var(--neba-plate-solid)]",outline:N+" border text-(--neba-fg) bg-(--n-panel) [border-color:var(--n-line)] [box-shadow:var(--n-elev),var(--neba-plate-glass)]",text:"text-(--neba-fg) bg-transparent"};export const Reasoning=/*@__PURE__*/t.forwardRef(function Reasoning(N,z){const{variant:F="text",size:S="md",color:U="secondary",density:_="default",elevation:B=0,streaming:P=!1,duration:T,open:q,defaultOpen:A=!1,onOpenChange:D,autoOpen:E=!0,autoClose:G=!0,hiddenUntilFound:H=!0,label:I,icon:J,locale:K,labels:L,classNames:M,className:Q,style:V,children:W,...X}=R(N,["size","density","variant","locale"]),Y={...u(m,K),...L},[Z,$]=t.useState(A||E&&P),[ee,ne]=t.useState(P),te=void 0!==q,ae=te?q:Z;ee!==P&&(ne(P),E&&!te&&(P||G)&&$(P));const oe=d(P,T).total,le=null===oe?null:i(oe,K),re=h(I)?I:P?Y.thinking:null===le?Y.done:c(Y.thought,{duration:le}),se=void 0===J?P?e(s,{}):null:J;return n(a.Root,{ref:z,open:ae,onOpenChange:e=>{te||$(e),D?.(e)},"aria-busy":P||void 0,"data-streaming":P||void 0,className:p("flex flex-col overflow-hidden",v[S],k[F],w,x,Q??""),style:{...y(U,B),...V},...X,children:[n(a.Trigger,{className:p("flex w-full cursor-pointer items-center text-start text-(--neba-muted-fg)",O,o[_][S],l[_][S],b[S],j[S],w,"hover:bg-(--n-soft) hover:text-(--n-on-tint)","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:[outline-offset:-2px]",M?.header??""),children:[h(se)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:se}):null,e("span",{className:"min-w-0 flex-1 truncate font-medium",children:re}),e("span",{className:C,children:e(r,{})})]}),e(a.Panel,{hiddenUntilFound:H,className:f,children:e("div",{className:p("min-w-0 border-s-2 text-(--neba-muted-fg) [border-color:var(--n-line)]",o[_][S],"compact"===_?"pb-2":"pb-4",g[S],M?.body??""),children:W})})]})});
@@ -1 +1 @@
1
- "use client";import{jsx as e,Fragment as r,jsxs as s}from"react/jsx-runtime";import*as t from"react";import{CartesianChart as o,chartTableClasses as l,markTransitionClasses as a,useDeferredRows as i}from"../../internal/chart-frame.js";import{bubbleRadius as n,formatCategory as c,markerRadii as u,markGap as m,markPath as d,markShapes as h,plotHeights as f,pointX as p}from"../../internal/chart.js";import{numberFormatter as x}from"../../internal/format.js";import{chartMessages as b,useMessages as v}from"../../internal/i18n.js";import{useStyleDefaults as y}from"../../internal/defaults.js";import{useIntlLocale as g}from"../../internal/media.js";export function ScatterChart(r){const{shape:s="auto",pointRadius:l,maxRadius:a,series:i,categories:c,size:m="md",xAxis:x,...g}=y(r,["size","locale"]),k=l??u[m],z=a??Math.max(k+2,("number"==typeof g.height?g.height:f[m])/12),M=i.reduce((e,r)=>r.color?e:e+1,0),w="auto"===s||"varied"===s?"circle":s,N="varied"===s||"auto"===s&&M>3,$=t.useCallback(e=>N?h[e%h.length]:w,[N,w]),S=t.useCallback(e=>{const r=[];let s=0;return e.values.forEach(e=>{e.forEach(e=>{null!==e.value&&void 0!==e.z&&Number.isFinite(e.z)&&(s=Math.max(s,e.z))})}),e.values.forEach((t,o)=>{e.visible[o]&&t.forEach((t,l)=>{if(null===t.value)return;const a=p(t,l,c);null!==a&&r.push({series:o,index:l,x:e.categoryValuePx(a),y:e.valuePx(t.value,o),r:void 0===t.z?k:n(t.z,s,z,2)})})}),r},[c,k,z]),A=v(b,g.locale);return e(o,{...g,series:i,categories:c,size:m,xScale:"value",xAxis:x,brush:void 0,secondaryAxis:void 0,marks:S,markInset:z,includeZero:!1,swatch:(r,s)=>e("svg",{viewBox:"0 0 10 10",className:"size-2.5 overflow-visible","aria-hidden":"true",children:e("path",{d:d($(r),5,5,4),fill:s})}),exportRows:()=>function(e,r,s,t,o){const l=e.some(e=>e.data.some(e=>"object"==typeof e&&null!==e&&void 0!==e.z));return[["","string"==typeof s?s:"x","string"==typeof t?t:"y",...l?[o]:[]],...e.flatMap((e,s)=>e.data.map((t,o)=>{const a="object"==typeof t&&null!==t?t:null,i=a?a.y:"number"==typeof t?t:null,n=a?.x??r?.[o]??o;return[e.name??`${s+1}`,n,null!==i&&Number.isFinite(i)?i:null,...l?[a?.z??null]:[]]}))]}(i,c,x?.label,g.yAxis?.label,A.size),table:(r,s)=>e(j,{id:r,series:i,categories:c,label:g.label,xLabel:x?.label,yLabel:g.yAxis?.label,locale:g.locale,format:s}),children:r=>e(ScatterMarks,{context:r,shapeOf:$})})}const k=128;function z(e){const r=[];for(let s=0;s<e.length;s+=k)r.push(e.slice(s,s+k));return r}function ScatterMarks({context:r,shapeOf:s}){const{marks:o,values:l,colors:i,hovered:n,activeMark:c}=r,u=t.useMemo(()=>l.some(e=>e.some(e=>void 0!==e.z)),[l]),m=t.useMemo(()=>{const e=[...o].sort((e,r)=>r.r-e.r);if(u)return[{series:-1,blocks:z(e)}];const r=new Map;for(const s of e){const e=r.get(s.series);e?e.push(s):r.set(s.series,[s])}return[...r].map(([e,r])=>({series:e,blocks:z(r)}))},[o,u]),d=t.useMemo(()=>{const e=new Map;for(const r of m)for(const s of r.blocks)for(const r of s)e.set(r,s);return e},[m]),h=c?d.get(c):void 0,f=(r,t)=>r.map((r,o)=>e(M,{marks:r,values:l,colors:i,shapeOf:s,active:r===h?c:null,hovered:t?n:void 0},o));return e("g",{children:u?f(m[0]?.blocks??[],!0):m.map(r=>e("g",{opacity:null!==n&&n!==r.series?.28:1,className:a,children:f(r.blocks,!1)},r.series))})}const M=/*@__PURE__*/t.memo(function MarkBlock({marks:s,values:t,colors:o,shapeOf:l,active:i,hovered:n}){return e(r,{children:s.map(r=>{const s=t[r.series]?.[r.index],c=i?.series===r.series&&i?.index===r.index;return e("path",{d:d(l(r.series),r.x,r.y,r.r),fill:s?.color??o[r.series],stroke:"var(--neba-chart-gap)",strokeWidth:m,opacity:void 0===n?void 0:null!==n&&n!==r.series?.28:1,className:a,style:{transformBox:"view-box",transformOrigin:`${r.x}px ${r.y}px`,scale:String(c&&r.r>0?(r.r+1)/r.r:1)}},`${r.series}-${r.index}`)})})});const j=/*@__PURE__*/t.memo(function ScatterTable({id:r,series:t,categories:o,label:a,xLabel:n,yLabel:u,locale:m,format:d}){const h=v(b,m),f=g(m),p=t.some(e=>e.data.some(e=>"object"==typeof e&&null!==e&&void 0!==e.z)),y=[],k=t.reduce((e,r)=>(y.push(e),e+r.data.length),0),z=i({rows:k,points:k,columns:p?4:3});return s("table",{id:r,className:l,"aria-busy":z<k||void 0,children:[a?e("caption",{children:a}):null,e("thead",{children:s("tr",{children:[e("th",{scope:"col"}),e("th",{scope:"col",children:n??"x"}),e("th",{scope:"col",children:u??"y"}),p?e("th",{scope:"col",children:h.size}):null]})}),e("tbody",{children:t.flatMap((r,t)=>r.data.slice(0,Math.max(0,z-y[t])).map((l,a)=>{const i="object"==typeof l&&null!==l?l:null,n=i?i.y:"number"==typeof l?l:null,u=i?.x??o?.[a]??a;return s("tr",{children:[e("th",{scope:"row",children:r.name??t+1}),e("td",{children:"number"==typeof u?x(f,{}).format(u):c(u,f)}),e("td",{children:null!==n&&Number.isFinite(n)?d(n):""}),p?e("td",{children:void 0===i?.z?"":x(f,{}).format(i.z)}):null]},`${t}-${a}`)}))})]})});
1
+ "use client";import{jsx as e,Fragment as r,jsxs as t}from"react/jsx-runtime";import*as o from"react";import{CartesianChart as s,chartTableClasses as l,markGroupClasses as a,markTransitionClasses as i,tableRuns as n,useDeferredRows as c}from"../../internal/chart-frame.js";import{bubbleRadius as u,formatCategory as d,markerRadii as m,markGap as h,markOrigin as f,markPath as p,markShapes as v,plotHeights as b,pointX as x}from"../../internal/chart.js";import{numberFormatter as y}from"../../internal/format.js";import{chartMessages as g,useMessages as k}from"../../internal/i18n.js";import{useStyleDefaults as z}from"../../internal/defaults.js";import{useIntlLocale as M}from"../../internal/media.js";export function ScatterChart(r){const{shape:t="auto",pointRadius:l,maxRadius:a,series:i,categories:n,size:c="md",xAxis:d,...h}=z(r,["size","locale"]),f=l??m[c],y=a??Math.max(f+2,("number"==typeof h.height?h.height:b[c])/12),M=i.reduce((e,r)=>r.color?e:e+1,0),j="auto"===t||"varied"===t?"circle":t,w="varied"===t||"auto"===t&&M>3,N=o.useCallback(e=>w?v[e%v.length]:j,[w,j]),S=o.useCallback(e=>{const r=[];let t=0;return e.values.forEach(e=>{e.forEach(e=>{null!==e.value&&void 0!==e.z&&Number.isFinite(e.z)&&(t=Math.max(t,e.z))})}),e.values.forEach((o,s)=>{e.visible[s]&&o.forEach((o,l)=>{if(null===o.value)return;const a=x(o,l,n);null!==a&&r.push({series:s,index:l,x:e.categoryValuePx(a),y:e.valuePx(o.value,s),r:void 0===o.z?f:u(o.z,t,y,2)})})}),r},[n,f,y]),$=k(g,h.locale);return e(s,{...h,series:i,categories:n,size:c,xScale:"value",xAxis:d,brush:void 0,secondaryAxis:void 0,marks:S,markInset:y,includeZero:!1,swatch:(r,t)=>e("svg",{viewBox:"0 0 10 10",className:"size-2.5 overflow-visible","aria-hidden":"true",children:e("path",{d:p(N(r),5,5,4),fill:t})}),exportRows:()=>function(e,r,t,o,s){const l=e.some(e=>e.data.some(e=>"object"==typeof e&&null!==e&&void 0!==e.z));return[["","string"==typeof t?t:"x","string"==typeof o?o:"y",...l?[s]:[]],...e.flatMap((e,t)=>e.data.map((o,s)=>{const a="object"==typeof o&&null!==o?o:null,i=a?a.y:"number"==typeof o?o:null,n=a?.x??r?.[s]??s;return[e.name??`${t+1}`,n,null!==i&&Number.isFinite(i)?i:null,...l?[a?.z??null]:[]]}))]}(i,n,d?.label,h.yAxis?.label,$.size),table:(r,t)=>e(A,{id:r,series:i,categories:n,label:h.label,xLabel:d?.label,yLabel:h.yAxis?.label,locale:h.locale,format:t}),children:r=>e(ScatterMarks,{context:r,shapeOf:N})})}const j=128;function w(e){const r=[];for(let t=0;t<e.length;t+=j)r.push(e.slice(t,t+j));return r}function ScatterMarks({context:r,shapeOf:t}){const{marks:s,values:l,colors:n,hovered:c,activeMark:u}=r,d=o.useMemo(()=>l.some(e=>e.some(e=>void 0!==e.z)),[l]),m=o.useMemo(()=>{const e=[...s].sort((e,r)=>r.r-e.r);if(d)return[{series:-1,blocks:w(e)}];const r=new Map;for(const t of e){const e=r.get(t.series);e?e.push(t):r.set(t.series,[t])}return[...r].map(([e,r])=>({series:e,blocks:w(r)}))},[s,d]),f=o.useMemo(()=>{const e=new Map;for(const r of m)for(const t of r.blocks)for(const r of t)e.set(r,t);return e},[m]),p=u?f.get(u):void 0,v=(r,o)=>r.map((r,s)=>e(S,{marks:r,values:l,colors:n,shapeOf:t,active:r===p?u:null,hovered:o?c:void 0},s));return e("g",{stroke:"var(--neba-chart-gap)",strokeWidth:h,className:a,children:d?v(m[0]?.blocks??[],!0):m.map(r=>e("g",{fill:n[r.series],opacity:null!==c&&c!==r.series?.28:1,className:i,style:N(t(r.series)),children:v(r.blocks,!1)},r.series))})}function N(e){const r=f(e);return void 0===r?void 0:{"--n-origin":r}}const S=/*@__PURE__*/o.memo(function MarkBlock({marks:t,values:o,colors:s,shapeOf:l,active:a,hovered:i}){const n=void 0===i;return e(r,{children:t.map(r=>{const t=o[r.series]?.[r.index],c=a?.series===r.series&&a?.index===r.index,u=l(r.series),d=n?void 0:f(u),m=c&&r.r>0?String((r.r+1)/r.r):void 0;return e("path",{d:p(u,r.x,r.y,r.r),fill:t?.color??(n?void 0:s[r.series]),opacity:n||null===i||i===r.series?void 0:.28,style:void 0===m&&void 0===d?void 0:{scale:m,"--n-origin":d}},`${r.series}-${r.index}`)})})});const A=/*@__PURE__*/o.memo(function ScatterTable({id:r,series:s,categories:a,label:i,xLabel:u,yLabel:m,locale:h,format:f}){const p=k(g,h),v=M(h),b=s.some(e=>e.data.some(e=>"object"==typeof e&&null!==e&&void 0!==e.z)),x=s.reduce((e,r)=>e+r.data.length,0),{shown:z,run:j}=c({rows:x,points:x,columns:b?4:3}),w=o.useCallback((r,o)=>{let l=0;return s.flatMap((s,i)=>{const n=Math.max(0,r-l),c=Math.min(s.data.length,o-l);return l+=s.data.length,s.data.slice(n,Math.max(n,c)).map((r,o)=>{const l=n+o,c="object"==typeof r&&null!==r?r:null,u=c?c.y:"number"==typeof r?r:null,m=c?.x??a?.[l]??l;return t("tr",{children:[e("th",{scope:"row",children:s.name??i+1}),e("td",{children:"number"==typeof m?y(v,{}).format(m):d(m,v)}),e("td",{children:null!==u&&Number.isFinite(u)?f(u):""}),b?e("td",{children:void 0===c?.z?"":y(v,{}).format(c.z)}):null]},`${i}-${l}`)})})},[s,a,b,f,v]);return t("table",{id:r,className:l,"aria-busy":z<x||void 0,children:[i?e("caption",{children:i}):null,e("thead",{children:t("tr",{children:[e("th",{scope:"col"}),e("th",{scope:"col",children:u??"x"}),e("th",{scope:"col",children:m??"y"}),b?e("th",{scope:"col",children:p.size}):null]})}),e("tbody",{children:n(z,j,w)})]})});
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as r}from"react/jsx-runtime";import*as a from"react";import{ScrollArea as n}from"@base-ui/react/scroll-area";import{scrollMessages as l,useMessages as o}from"../../internal/i18n.js";import{cx as i,toLength as t}from"../../internal/styles.js";import{useStyleDefaults as s}from"../../internal/defaults.js";const c={xs:"0.25rem",sm:"0.3125rem",md:"0.375rem",lg:"0.5rem",xl:"0.625rem"},m={xs:"1rem",sm:"1.25rem",md:"1.5rem",lg:"2rem",xl:"2.5rem"},h=["flex touch-none select-none rounded-full p-px","bg-transparent hover:bg-(--n-soft)","opacity-0 transition-[opacity,background-color] duration-(--neba-duration) ease-(--neba-ease)","data-[hovering]:opacity-100 data-[scrolling]:opacity-100 data-[scrolling]:duration-0"].join(" "),b="flex-1 rounded-full bg-(--n-thumb) hover:bg-(--n-thumb-hover)";export const ScrollArea=/*@__PURE__*/a.forwardRef(function ScrollArea(a,d){const{orientation:u="vertical",height:f,maxHeight:g,size:p="md",color:x="primary",fade:v=!1,label:y,locale:N,className:j,style:w,children:$,...S}=s(a,["size","locale"]),k=o(l,N),z="vertical"===u||"both"===u,_="horizontal"===u||"both"===u;return r(n.Root,{ref:d,className:i("relative overflow-hidden",j??""),style:{"--n-soft":`var(--neba-${x}-soft)`,"--n-ring":`var(--neba-${x}-ring)`,"--n-thumb":`color-mix(in oklab, var(--neba-${x}-accent) 35%, transparent)`,"--n-thumb-hover":`color-mix(in oklab, var(--neba-${x}-accent) 55%, transparent)`,"--n-rail":c[p],"--n-fade":m[p],height:t(f),maxHeight:t(g),...w},...S,children:[e(n.Viewport,{style:{height:"100%",width:"100%",maxHeight:"inherit"},role:y?"region":"group","aria-label":y??k.label,className:i("overscroll-contain","[outline:0_solid_var(--n-ring)] outline-offset-[-2px] focus-visible:[outline:2px_solid_var(--n-ring)]",v?"neba-scroll-fade":""),children:e(n.Content,{className:"min-w-full",children:$})}),z?e(n.Scrollbar,{orientation:"vertical",className:`${h} w-(--n-rail) [margin-block:2px]`,children:e(n.Thumb,{className:b})}):null,_?e(n.Scrollbar,{orientation:"horizontal",className:`${h} h-(--n-rail) [margin-inline:2px]`,children:e(n.Thumb,{className:b})}):null,z&&_?e(n.Corner,{}):null]})});
1
+ "use client";import{jsx as e,jsxs as r}from"react/jsx-runtime";import*as a from"react";import{ScrollArea as l}from"@base-ui/react/scroll-area";import{scrollMessages as n,useMessages as o}from"../../internal/i18n.js";import{cx as t,toLength as i}from"../../internal/styles.js";import{useStyleDefaults as s}from"../../internal/defaults.js";const c={xs:"0.25rem",sm:"0.3125rem",md:"0.375rem",lg:"0.5rem",xl:"0.625rem"},m={xs:"1rem",sm:"1.25rem",md:"1.5rem",lg:"2rem",xl:"2.5rem"},h="flex touch-none select-none rounded-full p-px bg-transparent hover:bg-(--n-soft) opacity-0 transition-[opacity,background-color] duration-(--neba-duration) ease-(--neba-ease) data-[hovering]:opacity-100 data-[scrolling]:opacity-100 data-[scrolling]:duration-0",b="flex-1 rounded-full bg-(--n-thumb) hover:bg-(--n-thumb-hover)";export const ScrollArea=/*@__PURE__*/a.forwardRef(function ScrollArea(a,d){const{orientation:u="vertical",height:f,maxHeight:g,size:p="md",color:x="primary",fade:v=!1,label:y,locale:N,className:j,style:w,children:$,...S}=s(a,["size","locale"]),k=o(n,N),z="vertical"===u||"both"===u,_="horizontal"===u||"both"===u;return r(l.Root,{ref:d,className:t("relative overflow-hidden",j??""),style:{"--n-soft":`var(--neba-${x}-soft)`,"--n-ring":`var(--neba-${x}-ring)`,"--n-thumb":`color-mix(in oklab, var(--neba-${x}-accent) 35%, transparent)`,"--n-thumb-hover":`color-mix(in oklab, var(--neba-${x}-accent) 55%, transparent)`,"--n-rail":c[p],"--n-fade":m[p],height:i(f),maxHeight:i(g),...w},...S,children:[e(l.Viewport,{style:{height:"100%",width:"100%",maxHeight:"inherit"},role:y?"region":"group","aria-label":y??k.label,className:t("overscroll-contain","[outline:0_solid_var(--n-ring)] outline-offset-[-2px] focus-visible:[outline:2px_solid_var(--n-ring)]",v?"neba-scroll-fade":""),children:e(l.Content,{className:"min-w-full",children:$})}),z?e(l.Scrollbar,{orientation:"vertical",className:`${h} w-(--n-rail) [margin-block:2px]`,children:e(l.Thumb,{className:b})}):null,_?e(l.Scrollbar,{orientation:"horizontal",className:`${h} h-(--n-rail) [margin-inline:2px]`,children:e(l.Thumb,{className:b})}):null,z&&_?e(l.Corner,{}):null]})});
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as n from"react";import{IconButton as r}from"../icon-button/IconButton.js";import{drawnScale as o}from"../../internal/drag.js";import{spacingValue as l}from"../../internal/grid.js";import{scrollMessages as i,useMessages as s}from"../../internal/i18n.js";import{ChevronIcon as a}from"../../internal/icons.js";import{useLayoutEffectOnClient as c}from"../../internal/layout-effect.js";import{queryMatches as u,reducedMotionQuery as d}from"../../internal/media.js";import{observeResize as p}from"../../internal/observe.js";import{cx as m}from"../../internal/styles.js";import{bindAxisWheel as f}from"../../internal/wheel.js";import{useStyleDefaults as g}from"../../internal/defaults.js";const v={xs:"p-1",sm:"p-1.5",md:"p-2",lg:"p-3",xl:"p-4"},b={xs:"gap-1",sm:"gap-1.5",md:"gap-2",lg:"gap-3",xl:"gap-4"};export const ScrollZone=/*@__PURE__*/n.forwardRef(function ScrollZone(h,y){const{orientation:w="horizontal",lines:x=1,spacing:k=2,buttons:E="auto",buttonPlacement:L="inline",mode:j="item",step:C=1,speed:R=900,snap:S=!1,drag:P=!0,wheel:T=!1,scrollbar:F=!1,variant:A="solid",size:M="md",color:N="primary",density:B="default",locale:D,label:W,previousLabel:z,nextLabel:H,scrollerRef:I,onScroll:$,className:q,style:X,children:Y,...Z}=g(h,["size","density","variant","locale"]),_=s(i,D),K="horizontal"===w,V=Math.max(1,Math.round(x)),G=Math.max(1,Math.round(C)),J=n.useRef(null),O=n.useRef(null),Q=n.useCallback(e=>{J.current=e,"function"==typeof I?I(e):I&&(I.current=e)},[I]),[U,ee]=n.useState(null),[te,ne]=n.useState(null),re=n.useCallback(()=>{const e=J.current;if(!e)return;const t=K?e.clientWidth:e.clientHeight,n=K?e.scrollWidth:e.scrollHeight,r=Math.abs(K?e.scrollLeft:e.scrollTop),o=t+function(e,t){const n=e.parentElement;if(!n||!e.previousElementSibling?.hasAttribute("data-held"))return 0;const r=getComputedStyle(n),o=t?n.clientWidth-parseFloat(r.paddingLeft)-parseFloat(r.paddingRight):n.clientHeight-parseFloat(r.paddingTop)-parseFloat(r.paddingBottom);return Math.max(0,o-(t?e.offsetWidth:e.offsetHeight))}(e,K);ee(e=>{const t=r>1,l=n-o-r>1;return e?.back===t&&e.forward===l?e:{back:t,forward:l}})},[K]);c(()=>{const e=J.current,t=O.current;if(!e)return;re();const n=[p(e,re),t?p(t,re):null];return()=>{for(const e of n)e?.()}},[re]);const oe=n.useCallback(()=>{const e=J.current;return e&&K&&"rtl"===getComputedStyle(e).direction?-1:1},[K]),le=n.useCallback((e,t)=>{const n=J.current;if(!n)return;const r=t?u(d)?"auto":"smooth":"auto";n.scrollBy(K?{left:e,behavior:r}:{top:e,behavior:r})},[K]),ie=n.useCallback(()=>{const e=J.current,t=O.current;if(!e||!t)return[];const n=K&&"rtl"===getComputedStyle(e).direction,r=K?n?"right":"left":"top",o=n?-1:1,l=e.getBoundingClientRect()[r],i=[];for(const e of Array.from(t.children)){const t=Math.round((e.getBoundingClientRect()[r]-l)*o);i.includes(t)||i.push(t)}return i.sort((e,t)=>e-t)},[K]),se=n.useCallback((e,t=j)=>{const n=J.current;if(!n)return;const r=oe(),o=K?n.clientWidth:n.clientHeight;if("page"===t)return void le(o*(e?1:-1)*r,!0);const l=ie(),i=l.filter(e=>e>1),s=l.filter(e=>e<-1),a=e?i[G-1]:s[s.length-G];le(void 0!==a?a*r:o*(e?1:-1)*r,!0)},[oe,K,ie,G,j,le]),ae=n.useRef(null);n.useEffect(()=>()=>ae.current?.(),[]);const ce=n.useCallback((e,t)=>{if(ae.current)return;const n=oe(),r=performance.now();let o=r,l=0;const i=t=>{const r=t-o;o=t,le(R*r/1e3*(e?1:-1)*n,!1),l=requestAnimationFrame(i)};l=requestAnimationFrame(i);const s=()=>{cancelAnimationFrame(l),ae.current=null,window.removeEventListener(t,s),window.removeEventListener("pointercancel",s),window.removeEventListener("blur",s),performance.now()-r<140&&se(e,"item")};ae.current=s,window.addEventListener(t,s),window.addEventListener("pointercancel",s),window.addEventListener("blur",s)},[se,oe,le,R]),ue=n.useRef(null);function de(e){return"hold"!==j?{onClick:()=>se(e)}:{onPointerDown:t=>{0===t.button&&ce(e,"pointerup")},onKeyDown:t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),ce(e,"keyup"))}}}n.useEffect(()=>()=>ue.current?.(),[]),n.useEffect(()=>{const e=J.current;if(e&&T&&K)return f(e)},[K,T]);const pe="inline"===L,me=U?.back??!1,fe=U?.forward??!1,ge=null===U&&pe&&"auto"===E,ve="none"!==E&&("always"===E||ge||me||fe);function be(t){const n=t?fe:me,o=t?"forward":"back";if("auto"===E&&!n&&!pe&&te!==o)return e("span",{});const l=K?t?"-rotate-90 rtl:rotate-90":"rotate-90 rtl:-rotate-90":t?"":"rotate-180",i=e(r,{variant:A,size:M,color:N,density:B,elevation:1,label:t?H??_.next:z??_.previous,disabled:!n,focusableWhenDisabled:!0,onFocus:()=>ne(o),onBlur:()=>ne(e=>e===o?null:e),className:"pointer-events-auto",icon:e("span",{className:m("flex items-center",l),children:e(a,{})}),...de(t)});return pe?e("span",{"data-held":ge?"":void 0,className:"flex shrink-0 items-center justify-center",style:ge?{visibility:"hidden"}:void 0,children:i}):i}return t("div",{ref:y,className:m("relative flex min-w-0",pe&&K?"flex-row items-stretch":"flex-col",pe?b[M]:"",q),style:{"--n-ring":`var(--neba-${N}-ring)`,...X},...Z,children:[ve&&pe?be(!1):null,e("div",{ref:Q,tabIndex:me||fe?0:-1,role:"group","aria-label":W??_.label,className:m("min-h-0 min-w-0 grow",K?"overflow-x-auto overflow-y-hidden":"overflow-y-auto overflow-x-hidden","overscroll-contain",S?K?"snap-x snap-mandatory":"snap-y snap-mandatory":"",F?"":"[scrollbar-width:none] [&::-webkit-scrollbar]:hidden",P&&(me||fe)?"cursor-grab data-[dragging]:cursor-grabbing":"","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:[outline-offset:-2px]"),onScroll:e=>{re(),$?.(e)},onPointerDown:function(e){if(!P||"touch"===e.pointerType||0!==e.button)return;ue.current?.();const t=e.currentTarget,n=e.clientX,r=e.clientY,l=t.scrollLeft,i=t.scrollTop,s=o(t);let a=!1;const c=document.body.style.getPropertyValue("-webkit-user-select"),u=e=>{if(0===e.buttons)return void d();const o=e.clientX-n,c=e.clientY-r;if(!a){if(Math.abs(K?o:c)<4)return;a=!0,t.setPointerCapture(e.pointerId),t.dataset.dragging="true",document.body.style.setProperty("-webkit-user-select","none"),S&&(t.style.scrollSnapType="none")}K?t.scrollLeft=l-o/s.x:t.scrollTop=i-c/s.y},d=()=>{ue.current=null,t.removeEventListener("pointermove",u),t.removeEventListener("pointerup",p),t.removeEventListener("pointercancel",d),delete t.dataset.dragging,t.style.removeProperty("scroll-snap-type"),c?document.body.style.setProperty("-webkit-user-select",c):document.body.style.removeProperty("-webkit-user-select")},p=()=>{const e=a;if(d(),!e)return;const n=e=>{e.stopPropagation(),e.preventDefault()};t.addEventListener("click",n,{capture:!0,once:!0}),window.setTimeout(()=>t.removeEventListener("click",n,!0),0)};ue.current=d,t.addEventListener("pointermove",u),t.addEventListener("pointerup",p),t.addEventListener("pointercancel",d)},children:e("div",{ref:O,className:m(S?"[&>*]:snap-start":""),style:{display:"grid",gap:l(k),gridAutoFlow:K?"column":"row",...K?{width:"max-content",gridTemplateRows:`repeat(${V}, auto)`,gridAutoColumns:"max-content"}:{gridTemplateColumns:`repeat(${V}, minmax(0, 1fr))`,gridAutoRows:"max-content"}},children:Y})}),ve&&pe?be(!0):null,ve&&!pe?t("div",{className:m("pointer-events-none absolute inset-0 flex justify-between",K?"items-center":"flex-col items-center",v[M]),children:[be(!1),be(!0)]}):null]})});
1
+ "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as n from"react";import{useMergedRef as r}from"../../internal/refs.js";import{IconButton as o}from"../icon-button/IconButton.js";import{drawnScale as l}from"../../internal/drag.js";import{spacingValue as i}from"../../internal/grid.js";import{scrollMessages as s,useMessages as a}from"../../internal/i18n.js";import{ChevronIcon as c}from"../../internal/icons.js";import{useLayoutEffectOnClient as u}from"../../internal/layout-effect.js";import{queryMatches as d,reducedMotionQuery as p}from"../../internal/media.js";import{observeResize as m}from"../../internal/observe.js";import{cx as f}from"../../internal/styles.js";import{bindAxisWheelWhileOverflowing as g}from"../../internal/wheel.js";import{useStyleDefaults as v}from"../../internal/defaults.js";const b={xs:"p-1",sm:"p-1.5",md:"p-2",lg:"p-3",xl:"p-4"},h={xs:"gap-1",sm:"gap-1.5",md:"gap-2",lg:"gap-3",xl:"gap-4"};export const ScrollZone=/*@__PURE__*/n.forwardRef(function ScrollZone(y,w){const{orientation:x="horizontal",lines:k=1,spacing:E=2,buttons:L="auto",buttonPlacement:j="inline",mode:C="item",step:R=1,speed:S=900,snap:P=!1,drag:T=!0,wheel:F=!1,scrollbar:A=!1,variant:M="solid",size:N="md",color:B="primary",density:D="default",locale:W,label:z,previousLabel:H,nextLabel:I,scrollerRef:$,onScroll:q,className:X,style:Y,children:Z,..._}=v(y,["size","density","variant","locale"]),K=a(s,W),V="horizontal"===x,G=Math.max(1,Math.round(k)),J=Math.max(1,Math.round(R)),O=n.useRef(null),Q=n.useRef(null),U=r(O,$),[ee,te]=n.useState(null),[ne,re]=n.useState(null),oe=n.useRef(null),le=n.useCallback(()=>{const e=O.current;if(!e)return;oe.current?.check();const t=V?e.clientWidth:e.clientHeight,n=V?e.scrollWidth:e.scrollHeight,r=Math.abs(V?e.scrollLeft:e.scrollTop),o=t+function(e,t){const n=e.parentElement;if(!n||!e.previousElementSibling?.hasAttribute("data-held"))return 0;const r=getComputedStyle(n),o=t?n.clientWidth-parseFloat(r.paddingLeft)-parseFloat(r.paddingRight):n.clientHeight-parseFloat(r.paddingTop)-parseFloat(r.paddingBottom);return Math.max(0,o-(t?e.offsetWidth:e.offsetHeight))}(e,V);te(e=>{const t=r>1,l=n-o-r>1;return e?.back===t&&e.forward===l?e:{back:t,forward:l}})},[V]);u(()=>{const e=O.current,t=Q.current;if(!e)return;le();const n=[m(e,le),t?m(t,le):null];return()=>{for(const e of n)e?.()}},[le]);const ie=n.useCallback(()=>{const e=O.current;return e&&V&&"rtl"===getComputedStyle(e).direction?-1:1},[V]),se=n.useCallback((e,t)=>{const n=O.current;if(!n)return;const r=t?d(p)?"auto":"smooth":"auto";n.scrollBy(V?{left:e,behavior:r}:{top:e,behavior:r})},[V]),ae=n.useCallback(()=>{const e=O.current,t=Q.current;if(!e||!t)return[];const n=V&&"rtl"===getComputedStyle(e).direction,r=V?n?"right":"left":"top",o=n?-1:1,l=e.getBoundingClientRect()[r],i=[];for(const e of Array.from(t.children)){const t=Math.round((e.getBoundingClientRect()[r]-l)*o);i.includes(t)||i.push(t)}return i.sort((e,t)=>e-t)},[V]),ce=n.useCallback((e,t=C)=>{const n=O.current;if(!n)return;const r=ie(),o=V?n.clientWidth:n.clientHeight;if("page"===t)return void se(o*(e?1:-1)*r,!0);const l=ae(),i=l.filter(e=>e>1),s=l.filter(e=>e<-1),a=e?i[J-1]:s[s.length-J];se(void 0!==a?a*r:o*(e?1:-1)*r,!0)},[ie,V,ae,J,C,se]),ue=n.useRef(null);n.useEffect(()=>()=>ue.current?.(),[]);const de=n.useCallback((e,t)=>{if(ue.current)return;const n=ie(),r=performance.now();let o=r,l=0;const i=t=>{const r=t-o;o=t,se(S*r/1e3*(e?1:-1)*n,!1),l=requestAnimationFrame(i)};l=requestAnimationFrame(i);const s=()=>{cancelAnimationFrame(l),ue.current=null,window.removeEventListener(t,s),window.removeEventListener("pointercancel",s),window.removeEventListener("blur",s),performance.now()-r<140&&ce(e,"item")};ue.current=s,window.addEventListener(t,s),window.addEventListener("pointercancel",s),window.addEventListener("blur",s)},[ce,ie,se,S]),pe=n.useRef(null);function me(e){return"hold"!==C?{onClick:()=>ce(e)}:{onPointerDown:t=>{0===t.button&&de(e,"pointerup")},onKeyDown:t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),de(e,"keyup"))}}}n.useEffect(()=>()=>pe.current?.(),[]),n.useEffect(()=>{const e=O.current;if(!e||!F||!V)return;const t=g(e);return oe.current=t,()=>{t.stop(),oe.current=null}},[V,F]);const fe="inline"===j,ge=ee?.back??!1,ve=ee?.forward??!1,be=null===ee&&fe&&"auto"===L,he="none"!==L&&("always"===L||be||ge||ve);function ye(t){const n=t?ve:ge,r=t?"forward":"back";if("auto"===L&&!n&&!fe&&ne!==r)return e("span",{});const l=V?t?"-rotate-90 rtl:rotate-90":"rotate-90 rtl:-rotate-90":t?"":"rotate-180",i=e(o,{variant:M,size:N,color:B,density:D,elevation:1,label:t?I??K.next:H??K.previous,disabled:!n,focusableWhenDisabled:!0,onFocus:()=>re(r),onBlur:()=>re(e=>e===r?null:e),className:"pointer-events-auto",icon:e("span",{className:f("flex items-center",l),children:e(c,{})}),...me(t)});return fe?e("span",{"data-held":be?"":void 0,className:"flex shrink-0 items-center justify-center",style:be?{visibility:"hidden"}:void 0,children:i}):i}return t("div",{ref:w,className:f("relative flex min-w-0",fe&&V?"flex-row items-stretch":"flex-col",fe?h[N]:"",X),style:{"--n-ring":`var(--neba-${B}-ring)`,...Y},..._,children:[he&&fe?ye(!1):null,e("div",{ref:U,tabIndex:ge||ve?0:-1,role:"group","aria-label":z??K.label,className:f("min-h-0 min-w-0 grow",V?"overflow-x-auto overflow-y-hidden":"overflow-y-auto overflow-x-hidden","overscroll-contain",P?V?"snap-x snap-mandatory":"snap-y snap-mandatory":"",A?"":"[scrollbar-width:none] [&::-webkit-scrollbar]:hidden",T&&(ge||ve)?"cursor-grab data-[dragging]:cursor-grabbing":"","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:[outline-offset:-2px]"),onScroll:e=>{le(),q?.(e)},onPointerDown:function(e){if(!T||"touch"===e.pointerType||0!==e.button)return;pe.current?.();const t=e.currentTarget,n=e.clientX,r=e.clientY,o=t.scrollLeft,i=t.scrollTop,s=l(t);let a=!1;const c=document.body.style.getPropertyValue("-webkit-user-select"),u=e=>{if(0===e.buttons)return void d();const l=e.clientX-n,c=e.clientY-r;if(!a){if(Math.abs(V?l:c)<4)return;a=!0,t.setPointerCapture(e.pointerId),t.dataset.dragging="true",document.body.style.setProperty("-webkit-user-select","none"),P&&(t.style.scrollSnapType="none")}V?t.scrollLeft=o-l/s.x:t.scrollTop=i-c/s.y},d=()=>{pe.current=null,t.removeEventListener("pointermove",u),t.removeEventListener("pointerup",p),t.removeEventListener("pointercancel",d),delete t.dataset.dragging,t.style.removeProperty("scroll-snap-type"),c?document.body.style.setProperty("-webkit-user-select",c):document.body.style.removeProperty("-webkit-user-select")},p=()=>{const e=a;if(d(),!e)return;const n=e=>{e.stopPropagation(),e.preventDefault()};t.addEventListener("click",n,{capture:!0,once:!0}),window.setTimeout(()=>t.removeEventListener("click",n,!0),0)};pe.current=d,t.addEventListener("pointermove",u),t.addEventListener("pointerup",p),t.addEventListener("pointercancel",d)},children:e("div",{ref:Q,className:f(P?"[&>*]:snap-start":""),style:{display:"grid",gap:i(E),gridAutoFlow:V?"column":"row",...V?{width:"max-content",gridTemplateRows:`repeat(${G}, auto)`,gridAutoColumns:"max-content"}:{gridTemplateColumns:`repeat(${G}, minmax(0, 1fr))`,gridAutoRows:"max-content"}},children:Z})}),he&&fe?ye(!0):null,he&&!fe?t("div",{className:f("pointer-events-none absolute inset-0 flex justify-between",V?"items-center":"flex-col items-center",b[N]),children:[ye(!1),ye(!0)]}):null]})});
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as a from"react";import{useLayoutEffectOnClient as n}from"../../internal/layout-effect.js";import{glowClasses as r,trackPointer as s}from"../../internal/glow.js";import{Radio as o}from"@base-ui/react/radio";import{RadioGroup as l}from"@base-ui/react/radio-group";import{observeResize as i}from"../../internal/observe.js";import{controlHeightClasses as d,controlSlots as u,controlTextClasses as f,cx as c,gapClasses as b,hasContent as p,iconClasses as m,paddingXClasses as h,surfaceClasses as g,transitionClasses as v}from"../../internal/styles.js";import{useStyleDefaults as x}from"../../internal/defaults.js";const y=/*@__PURE__*/a.createContext({variant:"outline",size:"md",density:"default",fullWidth:!1,disabled:!1,readOnly:!1}),w={solid:`${g} bg-(--n-panel) p-1 [box-shadow:var(--n-elev),var(--neba-plate-glass)]`,outline:`${g} border bg-(--n-panel) p-1 [border-color:var(--n-line)] [box-shadow:var(--n-elev),var(--neba-plate-glass)]`,text:""},j={solid:"bg-transparent p-1",outline:"border bg-transparent p-1 [border-color:var(--neba-disabled-border)]",text:""},k={solid:`${g} bg-(--n-fill) [box-shadow:var(--neba-shadow-1),var(--neba-plate-solid)]`,outline:`${g} bg-(--n-panel-press) [box-shadow:var(--neba-shadow-1),var(--neba-plate-glass)]`,text:`${g} bg-(--n-panel-press) [box-shadow:var(--neba-shadow-1),var(--neba-plate-glass)]`},$="data-[off]:bg-(--neba-disabled-bg) data-[off]:[box-shadow:none]",A={solid:"data-[checked]:text-(--n-on-solid)",outline:"data-[checked]:text-(--n-on-tint)",text:"data-[checked]:text-(--n-on-tint)"};export const Segment=/*@__PURE__*/a.forwardRef(function Segment({value:n,startIcon:l,endIcon:i,disabled:u=!1,className:g,children:x,...w},j){const k=a.useContext(y),{variant:$,size:N,density:P,fullWidth:R}=k,z=u||k.disabled,S=k.readOnly&&!z;return t(o.Root,{ref:j,value:n,disabled:u,"data-segment":"",className:c("neba-segment relative z-10 inline-flex shrink-0 items-center justify-center select-none","whitespace-nowrap font-medium","[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]",d[N],f[N],b[N],h[P][N],"rounded-full",v,m,z?"cursor-not-allowed text-(--neba-disabled-fg)":S?c("cursor-default text-(--neba-muted-fg)",A[$]):c("cursor-pointer text-(--neba-muted-fg) hover:text-(--neba-fg)",A[$],r),"focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:[outline-offset:-2px]",R?"flex-1":"",g??""),...w,onPointerMove:s(w.onPointerMove,!z&&!S),children:[p(l)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:l}):null,x,p(i)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:i}):null]})});export const SegmentedButton=/*@__PURE__*/a.forwardRef(function SegmentedButton(r,s){const{variant:o="outline",size:d="md",color:f="primary",density:c="default",elevation:b=0,value:p,defaultValue:m=null,onValueChange:h,disabled:g=!1,readOnly:A=!1,name:N,fullWidth:P=!1,className:R,style:z,children:S,...W}=x(r,["size","density","variant"]),[C,O]=a.useState(m),B=void 0!==p,M=B?p:C,V=a.useRef(null),I=a.useRef(null),_=a.useCallback(e=>{const t=V.current,a=I.current;if(!t||!a)return;const n=t.querySelector("[data-segment][data-checked]");if(a.hidden=!n,!n)return a.removeAttribute("data-ready"),void t.removeAttribute("data-placed");a.toggleAttribute("data-off",n.hasAttribute("data-disabled"));const r=!e||!a.hasAttribute("data-ready");r&&a.removeAttribute("data-ready"),a.style.setProperty("--n-seg-x",`${n.offsetLeft}px`),a.style.setProperty("--n-seg-y",`${n.offsetTop}px`),a.style.setProperty("--n-seg-w",`${n.offsetWidth}px`),a.style.setProperty("--n-seg-h",`${n.offsetHeight}px`),r&&a.offsetWidth,a.setAttribute("data-ready",""),t.setAttribute("data-placed","")},[]);n(()=>{_(!0)},[_,M,o,d,c,P,g,S]),a.useEffect(()=>{const e=V.current;if(e)return i(e,()=>_(!1))},[_]);const q=a.useMemo(()=>({variant:o,size:d,density:c,fullWidth:P,disabled:g,readOnly:A}),[o,d,c,P,g,A]);return e(y.Provider,{value:q,children:t(l,{ref:e=>{V.current=e,"function"==typeof s?s(e):s&&(s.current=e)},value:M,onValueChange:e=>{const t=e??null;B||O(t),h?.(t)},disabled:g,readOnly:A,name:N,className:["neba-segmented relative items-center rounded-full",g?j[o]:w[o],v,A?"[filter:saturate(0.55)]":"",P?"flex w-full":"inline-flex",R??""].filter(Boolean).join(" "),style:{...u(f,b,o),"--n-seg-bg":"solid"===o?"var(--n-fill)":"var(--n-panel-press)","--n-seg-plate":"solid"===o?"var(--neba-plate-solid)":"var(--neba-plate-glass)",...z},...W,children:[null!=M?e("span",{ref:I,"aria-hidden":"true",className:["pointer-events-none absolute rounded-full","left-(--n-seg-x) top-(--n-seg-y) h-(--n-seg-h) w-(--n-seg-w)",k[o],$,"[transition-property:left,top,width,height]","[transition-timing-function:var(--neba-ease)]","[transition-duration:0ms] data-[ready]:[transition-duration:var(--neba-duration)]","invisible data-[ready]:visible"].join(" ")}):null,S]})})});
1
+ "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as a from"react";import{useMergedRef as n}from"../../internal/refs.js";import{useLayoutEffectOnClient as r}from"../../internal/layout-effect.js";import{glowClasses as s,trackPointer as l}from"../../internal/glow.js";import{Radio as i}from"@base-ui/react/radio";import{RadioGroup as o}from"@base-ui/react/radio-group";import{watchTile as d}from"../../internal/tile.js";import{controlHeightClasses as u,controlSlots as f,controlTextClasses as c,cx as b,gapClasses as p,hasContent as m,iconClasses as h,paddingXClasses as g,surfaceClasses as v,transitionClasses as x}from"../../internal/styles.js";import{useStyleDefaults as y}from"../../internal/defaults.js";const w=/*@__PURE__*/a.createContext({variant:"outline",size:"md",density:"default",fullWidth:!1,disabled:!1,readOnly:!1}),A={solid:`${v} bg-(--n-panel) p-1 [box-shadow:var(--n-elev),var(--neba-plate-glass)]`,outline:`${v} border bg-(--n-panel) p-1 [border-color:var(--n-line)] [box-shadow:var(--n-elev),var(--neba-plate-glass)]`,text:""},$={solid:"bg-transparent p-1",outline:"border bg-transparent p-1 [border-color:var(--neba-disabled-border)]",text:""},j={solid:`${v} bg-(--n-fill) [box-shadow:var(--neba-shadow-1),var(--neba-plate-solid)]`,outline:`${v} bg-(--n-panel-press) [box-shadow:var(--neba-shadow-1),var(--neba-plate-glass)]`,text:`${v} bg-(--n-panel-press) [box-shadow:var(--neba-shadow-1),var(--neba-plate-glass)]`},k={solid:"data-[checked]:text-(--n-on-solid)",outline:"data-[checked]:text-(--n-on-tint)",text:"data-[checked]:text-(--n-on-tint)"};export const Segment=/*@__PURE__*/a.forwardRef(function Segment({value:n,startIcon:r,endIcon:o,disabled:d=!1,className:f,children:v,...y},A){const $=a.useContext(w),{variant:j,size:R,density:N,fullWidth:P}=$,S=d||$.disabled,z=$.readOnly&&!S;return t(i.Root,{ref:A,value:n,disabled:d,"data-segment":"",className:b("neba-segment relative z-10 inline-flex shrink-0 items-center justify-center select-none","whitespace-nowrap font-medium","[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]",u[R],c[R],p[R],g[N][R],"rounded-full",x,h,S?"cursor-not-allowed text-(--neba-disabled-fg)":z?b("cursor-default text-(--neba-muted-fg)",k[j]):b("cursor-pointer text-(--neba-muted-fg) hover:text-(--neba-fg)",k[j],s),"focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:[outline-offset:-2px]",P?"flex-1":"",f??""),...y,onPointerMove:l(y.onPointerMove,!S&&!z),children:[m(r)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:r}):null,v,m(o)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:o}):null]})});export const SegmentedButton=/*@__PURE__*/a.forwardRef(function SegmentedButton(s,l){const{variant:i="outline",size:u="md",color:c="primary",density:b="default",elevation:p=0,value:m,defaultValue:h=null,onValueChange:g,disabled:v=!1,readOnly:k=!1,name:R,fullWidth:N=!1,className:P,style:S,children:z,...C}=y(s,["size","density","variant"]),[W,O]=a.useState(h),B=void 0!==m,M=B?m:W,V=a.useRef(null),q=n(V,l),I=a.useRef(null),_=a.useRef(null),E=a.useCallback(e=>{const t=V.current,a=I.current;if(!t||!a)return;const n=t.querySelector("[data-segment][data-checked]");if(!n)return a.hidden=!0,a.removeAttribute("data-ready"),t.removeAttribute("data-placed"),void(_.current=null);const r=n.offsetLeft,s=n.offsetTop,l=n.offsetWidth,i=n.offsetHeight,o=n.hasAttribute("data-disabled"),d=`${r} ${s} ${l} ${i}`;if(a.hasAttribute("data-off")!==o&&a.toggleAttribute("data-off",o),_.current?.tile===a&&_.current.box===d&&!a.hidden&&a.hasAttribute("data-ready"))return;a.hidden&&(a.hidden=!1);const u=!e||!a.hasAttribute("data-ready");u&&a.removeAttribute("data-ready"),a.style.setProperty("--n-seg-x",`${r}px`),a.style.setProperty("--n-seg-y",`${s}px`),a.style.setProperty("--n-seg-w",`${l}px`),a.style.setProperty("--n-seg-h",`${i}px`),_.current={tile:a,box:d},u&&a.offsetWidth,a.setAttribute("data-ready",""),t.hasAttribute("data-placed")||(t.setAttribute("data-settling",""),t.setAttribute("data-placed",""),getComputedStyle(n,"::before").opacity,requestAnimationFrame(()=>t.removeAttribute("data-settling"))),t.setAttribute("data-placed","")},[]);r(()=>{E(!0)},[E,M,i,u,b,N,v]),a.useEffect(()=>{const e=V.current;if(e)return d(e,"[data-segment]","data-checked",E)},[E]);const F=a.useMemo(()=>({variant:i,size:u,density:b,fullWidth:N,disabled:v,readOnly:k}),[i,u,b,N,v,k]);return e(w.Provider,{value:F,children:t(o,{ref:q,value:M,onValueChange:e=>{const t=e??null;B||O(t),g?.(t)},disabled:v,readOnly:k,name:R,className:["neba-segmented relative items-center rounded-full",v?$[i]:A[i],x,k?"[filter:saturate(0.55)]":"",N?"flex w-full":"inline-flex",P??""].filter(Boolean).join(" "),style:{...f(c,p,i),"--n-seg-bg":"solid"===i?"var(--n-fill)":"var(--n-panel-press)","--n-seg-plate":"solid"===i?"var(--neba-plate-solid)":"var(--neba-plate-glass)",...S},...C,children:[null!=M?e("span",{ref:I,"aria-hidden":"true",className:"pointer-events-none absolute rounded-full left-(--n-seg-x) top-(--n-seg-y) h-(--n-seg-h) w-(--n-seg-w) "+j[i]+" data-[off]:bg-(--neba-disabled-bg) data-[off]:[box-shadow:none] [transition-property:left,top,width,height] [transition-timing-function:var(--neba-ease)] [transition-duration:0ms] data-[ready]:[transition-duration:var(--neba-duration)] invisible data-[ready]:visible"}):null,z]})})});
@@ -88,6 +88,18 @@ export interface SelectProps extends NebaStyleProps, Omit<React.ComponentPropsWi
88
88
  required?: boolean;
89
89
  /** Identifies the field when a form is submitted. */
90
90
  name?: string;
91
+ /**
92
+ * What the browser may fill the select in with, such as `country` or
93
+ * `address-level1`. It is written on the hidden input that submits the
94
+ * value, and an autofilled value that matches an option's value or label
95
+ * chooses that option.
96
+ */
97
+ autoComplete?: string;
98
+ /** The popup is open. Use with `onOpenChange` for a controlled popup. */
99
+ open?: boolean;
100
+ /** Whether the popup starts open. */
101
+ defaultOpen?: boolean;
102
+ onOpenChange?: (open: boolean) => void;
91
103
  id?: string;
92
104
  /**
93
105
  * Class names for the parts behind the root. `className` is the root — the
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as l from"react";import{Select as t}from"@base-ui/react/select";import{Field as r}from"@base-ui/react/field";import{CheckIcon as n,ChevronIcon as i}from"../../internal/icons.js";import{WidthSizer as s,widestSamples as o}from"../../internal/sizer.js";import{controlTextLeadingClasses as d,cx as c,disabledClasses as m,fieldFocusTransitionClasses as u,fieldHeightClasses as p,fieldReadOnlyClasses as b,fieldRestClasses as f,fieldRingClasses as h,fieldSheetClasses as g,fieldSheetDisabledClasses as v,fieldSheetReadOnlyClasses as x,gapClasses as N,hasContent as j,iconClasses as y,metaTextClasses as w,paddingXClasses as $,popupFadeClasses as z,radiusClasses as I,readOnlyFilterClasses as S,stackGapClasses as P,surfaceClasses as V,surfaceSlots as k,transitionClasses as C}from"../../internal/styles.js";import{useStyleDefaults as M}from"../../internal/defaults.js";import{FieldNotch as O,NotchFrame as R}from"../../internal/notch.js";import{fieldSpotlightSlot as T,glowClasses as q,trackPointer as G}from"../../internal/glow.js";import{useFieldsetDisabled as L}from"../../internal/fieldset.js";const W=["group relative flex w-full cursor-pointer items-center select-none","[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]",C,u,y].join(" "),_=[V,"max-h-[min(20rem,var(--available-height))] overflow-y-auto overscroll-contain","min-w-[var(--anchor-width)] border bg-(--n-panel-press) p-1","[border-color:var(--n-line)]","[box-shadow:var(--neba-shadow-3),var(--neba-plate-glass)]","[outline:none]",z].join(" "),D=["py-1.5 pe-2 ps-7 font-semibold tracking-wide text-(--neba-muted-fg) uppercase"].join(" "),E=["relative flex cursor-pointer items-center gap-2 select-none","rounded-(--neba-radius-xs) py-1.5 pe-2 ps-7",C,"data-[highlighted]:bg-(--n-soft-hover) data-[highlighted]:text-(--n-on-tint)","data-[selected]:text-(--n-on-tint) data-[selected]:font-medium","data-[disabled]:cursor-not-allowed data-[disabled]:text-(--neba-disabled-fg)","[outline:none]"].join(" ");export const Select=/*@__PURE__*/l.forwardRef(function Select(u,y){const{variant:z="outline",size:V="md",color:C="primary",density:A="default",elevation:B=0,items:F,value:H,defaultValue:J,onValueChange:K,placeholder:Q,label:U,labelPlacement:X="top",description:Y,error:Z,invalid:ee,startIcon:ae,fullWidth:le=!1,disabled:te,readOnly:re=!1,required:ne=!1,name:ie,id:se,className:oe,classNames:de,style:ce,"aria-label":me,"aria-labelledby":ue,...pe}=M(u,["size","density","variant","labelPlacement"]),be=L(te),fe=!be&&!re,he=null!=Z&&!1!==Z&&""!==Z,ge=ee??he,ve=ge?"danger":C,xe=l.useMemo(()=>F.map(e=>({label:e.label??String(e.value),value:e.value})),[F]),Ne=l.useMemo(()=>function(e){const a=[];for(const l of e){const e=a.at(-1);e&&e.label===l.group?e.items.push(l):a.push({label:l.group,items:[l]})}return a}(F),[F]),je="top"!==X&&j(U),ye=je&&"float"===X&&!j(ae),we=l.useMemo(()=>o([...F.map(e=>e.label??String(e.value)),...j(Q)?[Q]:[],...ye?[U]:[]]),[F,Q,ye,U]),$e=a(t.Trigger,{ref:y,onPointerMove:G(void 0,fe),"aria-label":me,"aria-labelledby":ue,className:c(W,p[V],d[V],I[V],N[V],$[A][V],je?"":h,be?(je?v:m)[z]:re?je?`${x[z]} ${S} cursor-default`:`${b[z]} cursor-default`:`${(je?g:f)[z]} ${q}`,ye?"neba-float-control":"",de?.control),children:[ae?e("span",{className:"flex h-[1lh] shrink-0 items-center text-(--neba-muted-fg)",children:ae}):null,a("span",{className:"flex min-w-0 flex-1 flex-col",children:[e(t.Value,{className:["w-full truncate text-start","data-[placeholder]:text-(--neba-muted-fg)"].join(" "),placeholder:Q}),e(s,{samples:we})]}),e(t.Icon,{className:["flex h-[1lh] shrink-0 items-center text-(--neba-muted-fg)","[transition:rotate_var(--neba-duration)_var(--neba-ease)]","data-[popup-open]:rotate-180"].join(" "),children:e(i,{})})]});return a(r.Root,{disabled:be,invalid:ge,className:c("flex-col align-top",P[V],le?"flex w-full":"inline-flex",oe??""),style:{...k(ve,B),...fe?T:void 0,...ce},...pe,children:[U&&!je?e(r.Label,{className:c(w[V],"font-medium",be?"text-(--neba-disabled-fg)":"text-(--neba-fg)",de?.label),children:U}):null,a(t.Root,{id:se,name:ie,items:xe,value:H,defaultValue:J,onValueChange:e=>K?.(e),disabled:be,readOnly:re,required:ne,children:[je?a(R,{label:U,size:V,density:A,variant:z,labelClassName:de?.label,className:c(I[V],be?"cursor-not-allowed":re?"cursor-default":"cursor-pointer"),children:[$e,e(O,{label:U,variant:z,disabled:be,readOnly:re,rests:ye,beside:!0,labelClassName:de?.label})]}):$e,e(t.Portal,{children:e(t.Positioner,{className:"neba-portal z-(--neba-z-portal) [outline:none]",sideOffset:6,alignItemWithTrigger:!1,children:e(t.Popup,{className:c(_,I[V],d[V],de?.popup),style:k(ve,3),children:Ne.map((l,r)=>{const i=l.items.map(l=>a(t.Item,{value:l.value,disabled:l.disabled,className:c(E,de?.item),children:[e(t.ItemIndicator,{className:"absolute start-1.5 flex size-4 items-center justify-center",children:e(n,{})}),e(t.ItemText,{className:"truncate",children:l.label??String(l.value)})]},String(l.value)));return void 0===l.label?i:a(t.Group,{children:[e(t.GroupLabel,{className:`${D} ${w[V]}`,children:l.label}),i]},`${l.label}-${r}`)})})})})]}),Y?e(r.Description,{className:c(w[V],"text-(--neba-muted-fg)",de?.description),children:Y}):null,e(r.Error,he?{match:!0,className:c(w[V],"text-(--n-accent)",de?.error),children:Z}:{className:c(w[V],"text-(--n-accent)",de?.error)})]})});
1
+ "use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as l from"react";import{Select as t}from"@base-ui/react/select";import{Field as n}from"@base-ui/react/field";import{CheckIcon as r,ChevronIcon as s}from"../../internal/icons.js";import{WidthSizer as o,widestSamples as i}from"../../internal/sizer.js";import{controlTextLeadingClasses as d,cx as c,disabledClasses as m,fieldHeightClasses as u,fieldReadOnlyClasses as p,fieldRestClasses as b,fieldRingClasses as f,fieldSheetClasses as h,fieldSheetDisabledClasses as g,fieldSheetReadOnlyClasses as v,gapClasses as x,hasContent as N,metaTextClasses as y,paddingXClasses as w,popupFadeClasses as j,radiusClasses as C,readOnlyFilterClasses as O,stackGapClasses as $,surfaceClasses as z,selectTriggerClasses as I,surfaceSlots as S,transitionClasses as P}from"../../internal/styles.js";import{useStyleDefaults as M}from"../../internal/defaults.js";import{FieldNotch as V,NotchFrame as k}from"../../internal/notch.js";import{fieldSpotlightSlot as R,glowClasses as T,trackPointer as q}from"../../internal/glow.js";import{useFieldsetDisabled as G}from"../../internal/fieldset.js";const L=z+" max-h-[min(20rem,var(--available-height))] overflow-y-auto overscroll-contain min-w-[var(--anchor-width)] border bg-(--n-panel-press) p-1 [border-color:var(--n-line)] [box-shadow:var(--neba-shadow-3),var(--neba-plate-glass)] [outline:none] "+j,W="relative flex cursor-pointer items-center gap-2 select-none rounded-(--neba-radius-xs) py-1.5 pe-2 ps-7 "+P+" data-[highlighted]:bg-(--n-soft-hover) data-[highlighted]:text-(--n-on-tint) data-[selected]:text-(--n-on-tint) data-[selected]:font-medium data-[disabled]:cursor-not-allowed data-[disabled]:text-(--neba-disabled-fg) [outline:none]";export const Select=/*@__PURE__*/l.forwardRef(function Select(j,z){const{variant:P="outline",size:_="md",color:D="primary",density:E="default",elevation:A=0,items:B,value:F,defaultValue:H,onValueChange:J,placeholder:K,label:Q,labelPlacement:U="top",description:X,error:Y,invalid:Z,startIcon:ee,fullWidth:ae=!1,disabled:le,readOnly:te=!1,required:ne=!1,name:re,autoComplete:se,open:oe,defaultOpen:ie,onOpenChange:de,id:ce,className:me,classNames:ue,style:pe,"aria-label":be,"aria-labelledby":fe,...he}=M(j,["size","density","variant","labelPlacement"]),ge=G(le),ve=!ge&&!te,xe=null!=Y&&!1!==Y&&""!==Y,Ne=Z??xe,ye=Ne?"danger":D,we=l.useMemo(()=>B.map(e=>({label:e.label??String(e.value),value:e.value})),[B]),je=l.useMemo(()=>function(e){const a=[];for(const l of e){const e=a.at(-1);e&&e.label===l.group?e.items.push(l):a.push({label:l.group,items:[l]})}return a}(B),[B]),Ce=ue?.item,Oe=l.useMemo(()=>{const l=c(W,Ce);return je.map((n,s)=>{const o=n.items.map(n=>a(t.Item,{value:n.value,disabled:n.disabled,className:l,children:[e(t.ItemIndicator,{className:"absolute start-1.5 flex size-4 items-center justify-center",children:e(r,{})}),e(t.ItemText,{className:"truncate",children:n.label??String(n.value)})]},String(n.value)));return void 0===n.label?o:a(t.Group,{children:[e(t.GroupLabel,{className:`py-1.5 pe-2 ps-7 font-semibold tracking-wide text-(--neba-muted-fg) uppercase ${y[_]}`,children:n.label}),o]},`${n.label}-${s}`)})},[je,Ce,_]),$e="top"!==U&&N(Q),ze=$e&&"float"===U&&!N(ee),Ie=l.useMemo(()=>i([...B.map(e=>e.label??String(e.value)),...N(K)?[K]:[],...ze?[Q]:[]]),[B,K,ze,Q]),Se=a(t.Trigger,{ref:z,onPointerMove:q(void 0,ve),"aria-label":be,"aria-labelledby":fe,className:c(I,u[_],d[_],C[_],x[_],w[E][_],$e?"":f,ge?($e?g:m)[P]:te?$e?`${v[P]} ${O} cursor-default`:`${p[P]} cursor-default`:`${($e?h:b)[P]} ${T}`,ze?"neba-float-control":"",ue?.control),children:[ee?e("span",{className:"flex h-[1lh] shrink-0 items-center text-(--neba-muted-fg)",children:ee}):null,a("span",{className:"flex min-w-0 flex-1 flex-col",children:[e(t.Value,{className:"w-full truncate text-start data-[placeholder]:text-(--neba-muted-fg)",placeholder:K}),e(o,{samples:Ie})]}),e(t.Icon,{className:"flex h-[1lh] shrink-0 items-center text-(--neba-muted-fg) [transition:rotate_var(--neba-duration)_var(--neba-ease)] data-[popup-open]:rotate-180",children:e(s,{})})]});return a(n.Root,{disabled:ge,invalid:Ne,className:c("flex-col align-top",$[_],ae?"flex w-full":"inline-flex",me??""),style:{...S(ye,A),...ve?R:void 0,...pe},...he,children:[Q&&!$e?e(n.Label,{className:c(y[_],"font-medium",ge?"text-(--neba-disabled-fg)":"text-(--neba-fg)",ue?.label),children:Q}):null,a(t.Root,{id:ce,name:re,autoComplete:se,items:we,value:F,defaultValue:H,onValueChange:e=>J?.(e),open:oe,defaultOpen:ie,onOpenChange:e=>de?.(e),disabled:ge,readOnly:te,required:ne,children:[$e?a(k,{label:Q,size:_,density:E,variant:P,labelClassName:ue?.label,className:c(C[_],ge?"cursor-not-allowed":te?"cursor-default":"cursor-pointer"),children:[Se,e(V,{label:Q,variant:P,disabled:ge,readOnly:te,rests:ze,beside:!0,labelClassName:ue?.label})]}):Se,e(t.Portal,{children:e(t.Positioner,{className:"neba-portal z-(--neba-z-portal) [outline:none]",sideOffset:6,alignItemWithTrigger:!1,children:e(t.Popup,{className:c(L,C[_],d[_],ue?.popup),style:S(ye,3),children:Oe})})})]}),X?e(n.Description,{className:c(y[_],"text-(--neba-muted-fg)",ue?.description),children:X}):null,e(n.Error,xe?{match:!0,className:c(y[_],"text-(--n-accent)",ue?.error),children:Y}:{className:c(y[_],"text-(--n-accent)",ue?.error)})]})});
@@ -1,2 +1,2 @@
1
1
  export { Select } from './Select.js';
2
- export type { SelectOption, SelectProps, SelectValue } from './Select.js';
2
+ export type { SelectOption, SelectProps, SelectSlot, SelectValue } from './Select.js';