neba 1.17.1 → 1.18.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 (138) hide show
  1. package/dist/a2ui/adapter-catalog.json +1 -1
  2. package/dist/a2ui/catalog.json +2 -2
  3. package/dist/a2ui/index.d.ts +2 -0
  4. package/dist/a2ui/schema.d.ts +11 -1
  5. package/dist/a2ui/schema.js +1 -1
  6. package/dist/components/alert/Alert.js +1 -1
  7. package/dist/components/animate-counter/AnimateCounter.d.ts +6 -0
  8. package/dist/components/animate-counter/AnimateCounter.js +1 -1
  9. package/dist/components/animate-headline/AnimateHeadline.js +1 -1
  10. package/dist/components/animate-scramble/AnimateScramble.d.ts +9 -3
  11. package/dist/components/animate-scramble/AnimateScramble.js +1 -1
  12. package/dist/components/animate-split/AnimateSplit.d.ts +7 -1
  13. package/dist/components/animate-split/AnimateSplit.js +1 -1
  14. package/dist/components/animate-typing/AnimateTyping.d.ts +6 -0
  15. package/dist/components/animate-typing/AnimateTyping.js +1 -1
  16. package/dist/components/app-logo/AppLogo.js +1 -1
  17. package/dist/components/approval/Approval.js +1 -1
  18. package/dist/components/breadcrumb/Breadcrumb.d.ts +16 -0
  19. package/dist/components/breadcrumb/Breadcrumb.js +1 -1
  20. package/dist/components/calendar/Calendar.js +1 -1
  21. package/dist/components/card/Card.js +1 -1
  22. package/dist/components/carousel/Carousel.d.ts +3 -2
  23. package/dist/components/carousel/Carousel.js +1 -1
  24. package/dist/components/chat-bubble/ChatBubble.d.ts +6 -0
  25. package/dist/components/chat-bubble/ChatBubble.js +1 -1
  26. package/dist/components/code-block/CodeBlock.d.ts +2 -2
  27. package/dist/components/code-block/CodeBlock.js +1 -1
  28. package/dist/components/code-block/index.d.ts +2 -1
  29. package/dist/components/code-block/index.js +1 -1
  30. package/dist/components/color-picker/ColorPicker.js +1 -1
  31. package/dist/components/combobox/Combobox.js +1 -1
  32. package/dist/components/context-window/ContextWindow.js +1 -1
  33. package/dist/components/data-table/DataTable.d.ts +13 -1
  34. package/dist/components/data-table/DataTable.js +1 -1
  35. package/dist/components/date-picker/DatePicker.js +1 -1
  36. package/dist/components/date-range-picker/DateRangePicker.js +1 -1
  37. package/dist/components/date-time-picker/DateTimePicker.js +1 -1
  38. package/dist/components/drawer/Drawer.d.ts +21 -0
  39. package/dist/components/drawer/Drawer.js +1 -1
  40. package/dist/components/empty/Empty.js +1 -1
  41. package/dist/components/file-picker/FilePicker.d.ts +0 -8
  42. package/dist/components/file-picker/FilePicker.js +1 -1
  43. package/dist/components/file-picker/formatFileSize.d.ts +8 -0
  44. package/dist/components/file-picker/formatFileSize.js +1 -0
  45. package/dist/components/file-picker/index.d.ts +2 -1
  46. package/dist/components/file-picker/index.js +1 -1
  47. package/dist/components/floating-bottom-navigation/FloatingBottomNavigation.js +1 -1
  48. package/dist/components/gallery/Gallery.d.ts +45 -3
  49. package/dist/components/gallery/Gallery.js +1 -1
  50. package/dist/components/gallery/GalleryViewer.js +1 -1
  51. package/dist/components/gauge-chart/GaugeChart.js +1 -1
  52. package/dist/components/heatmap-chart/HeatmapChart.js +1 -1
  53. package/dist/components/how-to-steps/HowToSteps.d.ts +14 -0
  54. package/dist/components/how-to-steps/HowToSteps.js +1 -1
  55. package/dist/components/image/Image.d.ts +31 -6
  56. package/dist/components/image/Image.js +1 -1
  57. package/dist/components/menu/Menu.d.ts +17 -0
  58. package/dist/components/menu/Menu.js +1 -1
  59. package/dist/components/meter/Meter.js +1 -1
  60. package/dist/components/mockup/Mockup.js +1 -1
  61. package/dist/components/number-field/NumberField.js +1 -1
  62. package/dist/components/page-layout/PageLayout.js +1 -1
  63. package/dist/components/panes/Panes.js +1 -1
  64. package/dist/components/pie-chart/PieChart.js +1 -1
  65. package/dist/components/pill/Pill.js +1 -1
  66. package/dist/components/progress-box/ProgressBox.js +1 -1
  67. package/dist/components/progress-circular/ProgressCircular.js +1 -1
  68. package/dist/components/progress-linear/ProgressLinear.js +1 -1
  69. package/dist/components/prompt-input/PromptInput.js +1 -1
  70. package/dist/components/provider/NebaProvider.d.ts +0 -20
  71. package/dist/components/provider/NebaProvider.js +1 -1
  72. package/dist/components/provider/colorSchemeScript.d.ts +23 -0
  73. package/dist/components/provider/colorSchemeScript.js +1 -0
  74. package/dist/components/provider/index.d.ts +2 -1
  75. package/dist/components/provider/index.js +1 -1
  76. package/dist/components/reasoning/Reasoning.d.ts +21 -0
  77. package/dist/components/reasoning/Reasoning.js +1 -1
  78. package/dist/components/scatter-chart/ScatterChart.js +1 -1
  79. package/dist/components/scroll-zone/ScrollZone.js +1 -1
  80. package/dist/components/segmented-button/SegmentedButton.js +1 -1
  81. package/dist/components/select/Select.js +1 -1
  82. package/dist/components/sidebar/Sidebar.d.ts +13 -0
  83. package/dist/components/sidebar/Sidebar.js +1 -1
  84. package/dist/components/slider/Slider.js +1 -1
  85. package/dist/components/sources/Sources.d.ts +11 -0
  86. package/dist/components/sources/Sources.js +1 -1
  87. package/dist/components/spoiler/Spoiler.js +1 -1
  88. package/dist/components/statistic/Statistic.js +1 -1
  89. package/dist/components/streaming-text/StreamingText.d.ts +22 -11
  90. package/dist/components/streaming-text/StreamingText.js +1 -1
  91. package/dist/components/tabs/Tabs.d.ts +12 -1
  92. package/dist/components/tabs/Tabs.js +1 -1
  93. package/dist/components/text-link/TextLink.d.ts +7 -0
  94. package/dist/components/text-link/TextLink.js +1 -1
  95. package/dist/components/time-picker/TimePicker.js +1 -1
  96. package/dist/components/timeline-chart/TimelineChart.js +1 -1
  97. package/dist/components/toast/Toast.js +1 -1
  98. package/dist/components/tool-call/ToolCall.d.ts +11 -0
  99. package/dist/components/tool-call/ToolCall.js +1 -1
  100. package/dist/components/tour/Tour.js +1 -1
  101. package/dist/components/tree-view/TreeView.d.ts +13 -1
  102. package/dist/components/tree-view/TreeView.js +1 -1
  103. package/dist/components/typography/Typography.d.ts +7 -0
  104. package/dist/components/typography/Typography.js +1 -1
  105. package/dist/components/window-pane/WindowPane.js +1 -1
  106. package/dist/hooks/useElementSize.js +1 -1
  107. package/dist/internal/animate.js +1 -1
  108. package/dist/internal/calendar.d.ts +2 -2
  109. package/dist/internal/calendar.js +1 -1
  110. package/dist/internal/chart-frame.d.ts +59 -2
  111. package/dist/internal/chart-frame.js +1 -1
  112. package/dist/internal/chart-line.js +1 -1
  113. package/dist/internal/format.d.ts +7 -0
  114. package/dist/internal/format.js +1 -1
  115. package/dist/internal/highlight.d.ts +9 -0
  116. package/dist/internal/highlight.js +1 -1
  117. package/dist/internal/layout-effect.d.ts +17 -0
  118. package/dist/internal/layout-effect.js +1 -0
  119. package/dist/internal/media.d.ts +20 -0
  120. package/dist/internal/media.js +1 -1
  121. package/dist/internal/menu.d.ts +5 -0
  122. package/dist/internal/observe.d.ts +4 -1
  123. package/dist/internal/observe.js +1 -1
  124. package/dist/internal/overrides.d.ts +55 -0
  125. package/dist/internal/overrides.js +1 -0
  126. package/dist/internal/page-layout.d.ts +26 -1
  127. package/dist/internal/page-layout.js +1 -1
  128. package/dist/internal/run.d.ts +6 -1
  129. package/dist/internal/run.js +1 -1
  130. package/dist/internal/sizer.d.ts +10 -0
  131. package/dist/internal/sizer.js +1 -1
  132. package/dist/internal/styles.d.ts +28 -2
  133. package/dist/internal/styles.js +1 -1
  134. package/dist/internal/text.d.ts +25 -3
  135. package/dist/internal/text.js +1 -1
  136. package/dist/styles.css +1 -1
  137. package/dist/tailwind.css +91 -72
  138. package/package.json +2 -2
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as l,Fragment as t}from"react/jsx-runtime";import*as s from"react";import{Box as n,boxPaddingXClasses as a,boxPaddingYClasses as r}from"../box/Box.js";import{cx as i,hasContent as o,metaTextClasses as c,sheetBodyClasses as d,sheetHeaderGapClasses as m,sheetSectionGapClasses as f,sheetTitleClasses as u}from"../../internal/styles.js";import{useStyleDefaults as x}from"../../internal/defaults.js";export const Card=/*@__PURE__*/s.forwardRef(function Card(s,h){const{size:p="md",density:N="default",title:y,subtitle:$,headerAction:b,footer:v,dividers:j=!1,className:k,children:g,...w}=x(s,["size","density"]),z=a[N][p],C=r[N][p],A=j?`${z} ${C}`:z,B=o(y)||o($)||o(b),F=l(t,{children:[o(y)||o($)?l("div",{className:`flex min-w-0 flex-1 flex-col ${m[p]}`,children:[o(y)?e("div",{className:`neba-title font-semibold ${u[p]}`,children:y}):null,o($)?e("div",{className:`text-(--neba-muted-fg) ${c[p]}`,children:$}):null]}):null,o(b)?e("div",{className:"ms-auto shrink-0",children:b}):null]}),R=[B?{key:"header",className:"flex items-start gap-3",content:F}:null,o(g)?{key:"content",className:d[p],content:g}:null,o(v)?{key:"footer",className:`flex flex-wrap items-center gap-2 ${d[p]}`,content:v}:null].filter(e=>null!==e);return e(n,{ref:h,size:p,density:N,padded:!1,className:i("flex flex-col",j?"":`${C} ${f[p]}`,k??""),...w,children:R.map((l,t)=>e("div",{className:i(A,l.className,j&&t>0?"border-t [border-color:var(--n-line)]":""),children:l.content},l.key))})});
1
+ "use client";import{jsx as e,jsxs as l,Fragment as s}from"react/jsx-runtime";import*as t from"react";import{Box as n,boxPaddingXClasses as r,boxPaddingYClasses as a}from"../box/Box.js";import{cx as i,hasContent as o,metaTextClasses as c,sheetBodyClasses as d,sheetHeaderGapClasses as m,sheetSectionGapClasses as f,sheetTitleClasses as u,sheetTitleHeadingClasses as x}from"../../internal/styles.js";import{useStyleDefaults as h}from"../../internal/defaults.js";export const Card=/*@__PURE__*/t.forwardRef(function Card(t,p){const{size:N="md",density:$="default",title:y,subtitle:v,headerAction:b,footer:j,dividers:k=!1,className:g,children:w,...z}=h(t,["size","density"]),C=r[$][N],A=a[$][N],B=k?`${C} ${A}`:C,F=o(y)||o(v)||o(b),R=l(s,{children:[o(y)||o(v)?l("div",{className:`flex min-w-0 flex-1 flex-col ${m[N]}`,children:[o(y)?e("div",{className:`${x} font-semibold ${u[N]}`,children:y}):null,o(v)?e("div",{className:`text-(--neba-muted-fg) ${c[N]}`,children:v}):null]}):null,o(b)?e("div",{className:"ms-auto shrink-0",children:b}):null]}),q=[F?{key:"header",className:"flex items-start gap-3",content:R}:null,o(w)?{key:"content",className:d[N],content:w}:null,o(j)?{key:"footer",className:`flex flex-wrap items-center gap-2 ${d[N]}`,content:j}:null].filter(e=>null!==e);return e(n,{ref:p,size:N,density:$,padded:!1,className:i("flex flex-col",k?"":`${A} ${f[N]}`,g??""),...z,children:q.map((l,s)=>e("div",{className:i(B,l.className,k&&s>0?"border-t [border-color:var(--n-line)]":""),children:l.content},l.key))})});
@@ -24,8 +24,9 @@ export interface CarouselProps extends NebaStyleProps, Omit<React.ComponentProps
24
24
  *
25
25
  * Off by default and deliberately so: a carousel that moves while it is being
26
26
  * read is the most complained-about pattern on the web. It pauses on hover,
27
- * on focus anywhere inside it, while the tab is in the background, and it does
28
- * not start at all for a reader who has asked for reduced motion.
27
+ * on focus anywhere inside it, while the tab is in the background and while
28
+ * the strip is scrolled out of view, and it does not start at all for a
29
+ * reader who has asked for reduced motion.
29
30
  *
30
31
  * Turning it on draws a button that stops it, in the row under the frame
31
32
  * beside the dots. There is no prop to take that button away: hover and focus
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as r from"react";import{IconButton as n}from"../icon-button/IconButton.js";import{childKey as a}from"../../internal/children.js";import{carouselMessages as l,fillMessage as o,useMessages as i}from"../../internal/i18n.js";import{ChevronIcon as s,PauseIcon as c,PlayIcon as u}from"../../internal/icons.js";import{usePrefersReducedMotion as d}from"../../internal/media.js";import{cx as m,radiusClasses as f,srOnlyClasses as p,surfaceClasses as b,surfaceSlots as h,transitionClasses as v}from"../../internal/styles.js";import{useStyleDefaults as g}from"../../internal/defaults.js";const x={solid:[b,"text-(--neba-fg) bg-(--n-panel-hover)","[box-shadow:var(--n-elev),var(--neba-plate-solid)]"].join(" "),outline:[b,"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"},w={xs:"start-1 end-1",sm:"start-1.5 end-1.5",md:"start-2 end-2",lg:"start-3 end-3",xl:"start-4 end-4"},y={xs:{rest:"h-1 w-1",current:"h-1 w-3",gap:"gap-1"},sm:{rest:"h-1 w-1",current:"h-1 w-3.5",gap:"gap-1"},md:{rest:"h-1.5 w-1.5",current:"h-1.5 w-4",gap:"gap-1.5"},lg:{rest:"h-1.5 w-1.5",current:"h-1.5 w-5",gap:"gap-2"},xl:{rest:"h-2 w-2",current:"h-2 w-6",gap:"gap-2"}},j={xs:"0.25rem",sm:"0.25rem",md:"0.375rem",lg:"0.5rem",xl:"0.5rem"};export const Carousel=/*@__PURE__*/r.forwardRef(function Carousel(b,N){const{variant:C="outline",size:k="md",color:L="primary",density:S="default",elevation:M=0,value:_,defaultValue:z=0,onValueChange:P,loop:R=!0,autoPlay:T=!1,interval:W=5e3,arrows:E=!0,indicators:I=!0,locale:$,label:B,previousLabel:D,nextLabel:F,pauseLabel:V,playLabel:A,slideLabel:q,className:G,style:H,children:J,onPointerEnter:K,onPointerLeave:O,onFocus:Q,onBlur:U,...X}=g(b,["size","density","variant","locale"]),Y=i(l,$),Z=q??((e,t)=>o(Y.slide,{index:String(e),total:String(t)})),ee=r.Children.toArray(J),te=ee.length,[re,ne]=r.useState(z),ae=Math.min(Math.max(_??re,0),Math.max(te-1,0)),le=r.useRef(null),oe=r.useRef(!1),ie=r.useRef(!1),se=r.useRef(!1),[ce,ue]=r.useState(!1),[de,me]=r.useState(!1),fe=ce||de,[pe,be]=r.useState(!1),he=r.useCallback((e,t=!1)=>{if(0===te)return;const r=R?(e%te+te)%te:Math.min(Math.max(e,0),te-1);oe.current=t,void 0===_&&ne(r),r!==ae&&P?.(r)},[te,R,_,ae,P]);r.useEffect(()=>{if(oe.current)return void(oe.current=!1);const e=!ie.current;if(ie.current=!0,e&&0===ae)return;const t=le.current;if(t){const r="rtl"===getComputedStyle(t).direction?-1:1;t.scrollTo({left:r*ae*t.clientWidth,...e?{behavior:"instant"}:null})}se.current=!0;const r=window.setTimeout(()=>{se.current=!1},700);return()=>window.clearTimeout(r)},[ae]);const ve=d();r.useEffect(()=>{if(!T||pe||fe||ve||te<2)return;const e=window.setInterval(()=>{document.hidden||he(ae+1)},W);return()=>window.clearInterval(e)},[T,pe,fe,ve,te,W,ae,he]);const ge=ae<=0,xe=ae>=te-1,we=T&&!ve&&te>1,ye=I&&te>1;return t("div",{ref:N,role:"region","aria-roledescription":"carousel","aria-label":B??Y.label,className:m("flex flex-col",G??""),style:{...h(L,M),...H},onPointerEnter:e=>{ue(!0),K?.(e)},onPointerLeave:e=>{ue(!1),O?.(e)},onFocus:e=>{me(!0),Q?.(e)},onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||me(!1),U?.(e)},...X,children:[t("div",{className:["relative min-w-0 overflow-hidden",f[k],x[C],v].join(" "),children:[e("div",{ref:le,tabIndex:0,role:"group","aria-label":B??Y.label,className:["flex min-w-0 snap-x snap-mandatory overflow-x-auto scroll-smooth","motion-reduce:scroll-auto","[scrollbar-width:none] [&::-webkit-scrollbar]:hidden","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:[outline-offset:-2px]"].join(" "),onScroll:()=>{const e=le.current;if(se.current||!e||0===e.clientWidth)return;const t=Math.round(Math.abs(e.scrollLeft)/e.clientWidth);t!==ae&&t>=0&&t<te&&he(t,!0)},children:ee.map((t,r)=>e("div",{role:"group","aria-roledescription":"slide","aria-label":Z(r+1,te),className:"w-full shrink-0 grow-0 basis-full snap-start",children:t},a(t,r)))}),E&&te>1?t("div",{className:`pointer-events-none absolute inset-y-0 flex items-center ${w[k]}`,children:[e(n,{variant:"solid",size:k,color:L,density:S,elevation:1,label:D??Y.previous,disabled:!R&&ge,focusableWhenDisabled:!0,className:"pointer-events-auto",icon:e("span",{className:"flex items-center rotate-90 rtl:-rotate-90",children:e(s,{})}),onClick:()=>he(ae-1)}),e("span",{className:"flex-1"}),e(n,{variant:"solid",size:k,color:L,density:S,elevation:1,label:F??Y.next,disabled:!R&&xe,focusableWhenDisabled:!0,className:"pointer-events-auto",icon:e("span",{className:"flex items-center -rotate-90 rtl:rotate-90",children:e(s,{})}),onClick:()=>he(ae+1)})]}):null]}),we||ye?t("div",{className:"grid shrink-0 grid-cols-[1fr_auto_1fr] items-center pt-2",children:[e("span",{className:"flex justify-start",children:we?e(n,{variant:"text",size:k,color:L,density:S,label:pe?A??Y.play:V??Y.pause,icon:e(pe?u:c,{}),onClick:()=>be(e=>!e)}):null}),e("span",{className:`flex items-center ${y[k].gap}`,style:{"--n-hit-gap":j[k]},children:ye?ee.map((t,r)=>e("button",{type:"button","aria-label":Z(r+1,te),"aria-current":r===ae?"true":void 0,className:["neba-hit-row relative cursor-pointer rounded-full","[transition-property:width,background-color]","[transition-duration:var(--neba-duration)]","[transition-timing-function:var(--neba-ease)]","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2",r===ae?`${y[k].current} bg-(--n-accent)`:`${y[k].rest} bg-(--n-line-hover) hover:bg-(--n-accent)`].join(" "),onClick:()=>he(r)},r)):null}),e("span",{})]}):null,e("span",{className:p,"aria-live":!we||pe||fe?"polite":"off",children:te>0?Z(ae+1,te):""})]})});
1
+ "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as r from"react";import{IconButton as n}from"../icon-button/IconButton.js";import{childKey as a}from"../../internal/children.js";import{carouselMessages as l,fillMessage as o,useMessages as i}from"../../internal/i18n.js";import{ChevronIcon as s,PauseIcon as c,PlayIcon as u}from"../../internal/icons.js";import{usePrefersReducedMotion as d}from"../../internal/media.js";import{observeVisibility as m}from"../../internal/observe.js";import{cx as f,radiusClasses as p,srOnlyClasses as b,surfaceClasses as h,surfaceSlots as v,transitionClasses as g}from"../../internal/styles.js";import{useStyleDefaults as x}from"../../internal/defaults.js";const w={solid:[h,"text-(--neba-fg) bg-(--n-panel-hover)","[box-shadow:var(--n-elev),var(--neba-plate-solid)]"].join(" "),outline:[h,"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"},y={xs:"start-1 end-1",sm:"start-1.5 end-1.5",md:"start-2 end-2",lg:"start-3 end-3",xl:"start-4 end-4"},j={xs:{rest:"h-1 w-1",current:"h-1 w-3",gap:"gap-1"},sm:{rest:"h-1 w-1",current:"h-1 w-3.5",gap:"gap-1"},md:{rest:"h-1.5 w-1.5",current:"h-1.5 w-4",gap:"gap-1.5"},lg:{rest:"h-1.5 w-1.5",current:"h-1.5 w-5",gap:"gap-2"},xl:{rest:"h-2 w-2",current:"h-2 w-6",gap:"gap-2"}},N={xs:"0.25rem",sm:"0.25rem",md:"0.375rem",lg:"0.5rem",xl:"0.5rem"};export const Carousel=/*@__PURE__*/r.forwardRef(function Carousel(h,C){const{variant:k="outline",size:S="md",color:L="primary",density:M="default",elevation:_=0,value:z,defaultValue:E=0,onValueChange:P,loop:R=!0,autoPlay:T=!1,interval:W=5e3,arrows:I=!0,indicators:$=!0,locale:B,label:D,previousLabel:F,nextLabel:V,pauseLabel:A,playLabel:q,slideLabel:G,className:H,style:J,children:K,onPointerEnter:O,onPointerLeave:Q,onFocus:U,onBlur:X,...Y}=x(h,["size","density","variant","locale"]),Z=i(l,B),ee=G??((e,t)=>o(Z.slide,{index:String(e),total:String(t)})),te=r.Children.toArray(K),re=te.length,[ne,ae]=r.useState(E),le=Math.min(Math.max(z??ne,0),Math.max(re-1,0)),oe=r.useRef(null),ie=r.useRef(!1),se=r.useRef(!1),ce=r.useRef(!1),[ue,de]=r.useState(!1),[me,fe]=r.useState(!1),pe=ue||me,[be,he]=r.useState(!1),ve=r.useCallback((e,t=!1)=>{if(0===re)return;const r=R?(e%re+re)%re:Math.min(Math.max(e,0),re-1);ie.current=t,void 0===z&&ae(r),r!==le&&P?.(r)},[re,R,z,le,P]);r.useEffect(()=>{if(ie.current)return void(ie.current=!1);const e=!se.current;if(se.current=!0,e&&0===le)return;const t=oe.current;if(t){const r="rtl"===getComputedStyle(t).direction?-1:1;t.scrollTo({left:r*le*t.clientWidth,...e?{behavior:"instant"}:null})}ce.current=!0;const r=window.setTimeout(()=>{ce.current=!1},700);return()=>window.clearTimeout(r)},[le]);const ge=d(),[xe,we]=r.useState(!1),ye=T&&!be&&!ge&&re>1;r.useEffect(()=>{const e=oe.current;if(ye&&e)return m(e,0,e=>we(!e))??void 0},[ye]),r.useEffect(()=>{if(!T||be||pe||ge||xe||re<2)return;const e=window.setInterval(()=>{document.hidden||ve(le+1)},W);return()=>window.clearInterval(e)},[T,be,pe,ge,xe,re,W,le,ve]);const je=le<=0,Ne=le>=re-1,Ce=T&&!ge&&re>1,ke=$&&re>1;return t("div",{ref:C,role:"region","aria-roledescription":"carousel","aria-label":D??Z.label,className:f("flex flex-col",H??""),style:{...v(L,_),...J},onPointerEnter:e=>{de(!0),O?.(e)},onPointerLeave:e=>{de(!1),Q?.(e)},onFocus:e=>{fe(!0),U?.(e)},onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||fe(!1),X?.(e)},...Y,children:[t("div",{className:["relative min-w-0 overflow-hidden",p[S],w[k],g].join(" "),children:[e("div",{ref:oe,tabIndex:0,role:"group","aria-label":D??Z.label,className:["flex min-w-0 snap-x snap-mandatory overflow-x-auto scroll-smooth","motion-reduce:scroll-auto","[scrollbar-width:none] [&::-webkit-scrollbar]:hidden","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:[outline-offset:-2px]"].join(" "),onScroll:()=>{const e=oe.current;if(ce.current||!e||0===e.clientWidth)return;const t=Math.round(Math.abs(e.scrollLeft)/e.clientWidth);t!==le&&t>=0&&t<re&&ve(t,!0)},children:te.map((t,r)=>e("div",{role:"group","aria-roledescription":"slide","aria-label":ee(r+1,re),className:"w-full shrink-0 grow-0 basis-full snap-start",children:t},a(t,r)))}),I&&re>1?t("div",{className:`pointer-events-none absolute inset-y-0 flex items-center ${y[S]}`,children:[e(n,{variant:"solid",size:S,color:L,density:M,elevation:1,label:F??Z.previous,disabled:!R&&je,focusableWhenDisabled:!0,className:"pointer-events-auto",icon:e("span",{className:"flex items-center rotate-90 rtl:-rotate-90",children:e(s,{})}),onClick:()=>ve(le-1)}),e("span",{className:"flex-1"}),e(n,{variant:"solid",size:S,color:L,density:M,elevation:1,label:V??Z.next,disabled:!R&&Ne,focusableWhenDisabled:!0,className:"pointer-events-auto",icon:e("span",{className:"flex items-center -rotate-90 rtl:rotate-90",children:e(s,{})}),onClick:()=>ve(le+1)})]}):null]}),Ce||ke?t("div",{className:"grid shrink-0 grid-cols-[1fr_auto_1fr] items-center pt-2",children:[e("span",{className:"flex justify-start",children:Ce?e(n,{variant:"text",size:S,color:L,density:M,label:be?q??Z.play:A??Z.pause,icon:e(be?u:c,{}),onClick:()=>he(e=>!e)}):null}),e("span",{className:`flex items-center ${j[S].gap}`,style:{"--n-hit-gap":N[S]},children:ke?te.map((t,r)=>e("button",{type:"button","aria-label":ee(r+1,re),"aria-current":r===le?"true":void 0,className:["neba-hit-row relative cursor-pointer rounded-full","[transition-property:width,background-color]","[transition-duration:var(--neba-duration)]","[transition-timing-function:var(--neba-ease)]","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2",r===le?`${j[S].current} bg-(--n-accent)`:`${j[S].rest} bg-(--n-line-hover) hover:bg-(--n-accent)`].join(" "),onClick:()=>ve(r)},r)):null}),e("span",{})]}):null,e("span",{className:b,"aria-live":!Ce||be||pe?"polite":"off",children:re>0?ee(le+1,re):""})]})});
@@ -31,6 +31,12 @@ export interface ChatBubbleLinkPreview {
31
31
  site?: React.ReactNode;
32
32
  /** Opens the card in a new tab. @default false */
33
33
  newTab?: boolean;
34
+ /**
35
+ * The link's `rel`. A preview of a URL somebody posted is the usual reason:
36
+ * `'ugc nofollow'` tells a search engine the page did not choose the link.
37
+ * With `newTab`, `noopener noreferrer` is added to whatever is written here.
38
+ */
39
+ rel?: string;
34
40
  }
35
41
  export interface ChatBubbleProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'color' | 'title'> {
36
42
  /**
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as n}from"react/jsx-runtime";import*as r from"react";import{chatMessages as l,useMessages as a}from"../../internal/i18n.js";import{CheckIcon as i,ClockIcon as t,DangerIcon as o,LinkIcon as s}from"../../internal/icons.js";import{safeHref as c,safeRel as d}from"../../internal/link.js";import{NewTabNote as m}from"../../internal/new-tab.js";import{controlSlots as p,cx as u,hasContent as f,metaTextClasses as b,radiusClasses as h,sheetBodyClasses as v,sheetHeaderGapClasses as x,srOnlyClasses as g,surfaceClasses as k,transitionClasses as y}from"../../internal/styles.js";import{useStyleDefaults as w}from"../../internal/defaults.js";const N={default:{xs:"px-2 py-1",sm:"px-2.5 py-1.5",md:"px-3 py-2",lg:"px-3.5 py-2.5",xl:"px-4 py-3"},compact:{xs:"px-1.5 py-0.5",sm:"px-2 py-1",md:"px-2.5 py-1.5",lg:"px-3 py-1.5",xl:"px-3.5 py-2"}},j={start:"[border-start-start-radius:0.25rem]",end:"[border-start-end-radius:0.25rem]"},_={solid:[k,"text-(--n-on-solid) bg-(--n-fill)","[box-shadow:var(--n-elev),var(--neba-plate-solid)]"].join(" "),outline:[k,"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-(--n-soft) [box-shadow:var(--n-elev)]"};const L={sending:e(t,{}),sent:e(i,{}),delivered:e(function DoubleCheckIcon(){return n("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[e("path",{d:"m1.5 8.5 2.75 2.75L9.5 6",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round"}),e("path",{d:"M7 10.75 8.25 12l5.25-5.25",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round"})]})},{}),read:e(function ReadIcon(){const l=r.useId();return n("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[n("mask",{id:l,children:[e("rect",{width:"16",height:"16",fill:"white"}),n("g",{transform:"translate(2.375 1.25) scale(0.75)",stroke:"black",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e("path",{d:"m1.5 8.5 2.75 2.75L9.5 6"}),e("path",{d:"M7 10.75 8.25 12l5.25-5.25"})]})]}),e("circle",{cx:"8",cy:"8",r:"7.25",fill:"currentColor",mask:`url(#${l})`})]})},{}),failed:e(o,{})},C={sending:"text-(--neba-muted-fg)",sent:"text-(--neba-muted-fg)",delivered:"text-(--neba-muted-fg)",read:"text-(--n-accent)",failed:"text-(--neba-danger-accent)"},z=["block overflow-hidden rounded-(--neba-radius-sm) border no-underline","[border-color:color-mix(in_oklab,currentColor_18%,transparent)]","[background-color:color-mix(in_oklab,currentColor_7%,transparent)]","hover:[background-color:color-mix(in_oklab,currentColor_12%,transparent)]","[transition-property:background-color] [transition-duration:var(--neba-duration)]","[transition-timing-function:var(--neba-ease)]","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2"].join(" "),B=["shrink-0 opacity-0","[transition:opacity_var(--neba-duration)_var(--neba-ease)]","group-hover/bubble:opacity-100 group-focus-within/bubble:opacity-100","[@media(hover:none)]:opacity-100"].join(" ");export const ChatBubble=/*@__PURE__*/r.forwardRef(function ChatBubble(r,i){const{side:t="start",name:o,time:s,avatar:c,status:d,statusLabel:m,typing:k=!1,media:z,preview:D,actions:I,locale:T,variant:W="outline",size:M="md",color:P="primary",density:R="default",elevation:$=0,className:q,style:A,children:E,...F}=w(r,["size","density","variant","locale"]),G=a(l,T),H="end"===t,J=f(o)||f(s),K=k||f(E)||Boolean(D),O=["flex min-w-0 flex-col overflow-hidden",h[M],j[t],_[W],y].join(" "),Q=d?m??G[d]:"";return n("div",{ref:i,className:u("group/bubble flex w-full items-start gap-2",H?"flex-row-reverse":"",q??""),style:{...p(P,$,W),...A},...F,children:[f(c)?e("div",{className:"shrink-0",children:c}):null,n("div",{className:["flex min-w-0 max-w-[min(100%,32rem)] flex-col",x[M],H?"items-end":"items-start"].join(" "),children:[J?n("div",{className:`flex items-baseline gap-2 ${b[M]}`,children:[f(o)?e("span",{className:"font-semibold",children:o}):null,f(s)?e("span",{className:"text-(--neba-muted-fg)",children:s}):null]}):null,n("div",{className:"flex min-w-0 items-center gap-1 "+(H?"flex-row-reverse":""),children:[n("div",{className:O,children:[f(z)?e("div",{className:"[&_img]:block [&_img]:w-full [&_video]:block [&_video]:w-full",children:z}):null,K?n("div",{className:[N[R][M],"flex min-w-0 flex-col gap-2",v[M]].join(" "),children:[k?e(TypingDots,{label:G.typing}):f(E)?e("div",{className:"min-w-0 break-words whitespace-pre-line",children:E}):null,D?e(LinkPreview,{preview:D,locale:T}):null]}):null]}),f(I)?e("div",{className:B,children:I}):null]}),d?n("div",{className:["flex items-center gap-1",b[M],C[d],"[&_svg]:size-[1.15em] [&_svg]:shrink-0"].join(" "),children:[L[d],e("span",{className:g,children:Q})]}):null]})]})});function TypingDots({label:r}){return n("div",{className:"flex items-center gap-1 py-[0.35em]",role:"status",children:[[0,1,2].map(n=>e("span",{"aria-hidden":"true",className:"neba-typing-dot size-[0.45em] rounded-full",style:{"--n-i":n}},n)),e("span",{className:g,children:r})]})}function LinkPreview({preview:r,locale:l}){const{url:a,title:i,description:t,image:o,site:p,newTab:u=!1}=r,b=u?"_blank":void 0;return n("a",{href:c(a),target:b,rel:d(b,void 0),className:z,children:[o?e("img",{src:o,alt:"",loading:"lazy",decoding:"async",className:"block h-28 w-full object-cover"}):null,n("div",{className:"flex flex-col gap-0.5 p-2",children:[f(p)?n("span",{className:"flex items-center gap-1 text-[0.85em] opacity-70 [&_svg]:size-[1em] [&_svg]:shrink-0",children:[e(s,{}),e("span",{className:"truncate",children:p})]}):null,f(i)?e("span",{className:"font-semibold",children:i}):null,f(t)?e("span",{className:"line-clamp-2 text-[0.9em] opacity-80",children:t}):null,e(m,{target:b,locale:l})]})]})}
1
+ "use client";import{jsx as e,jsxs as n}from"react/jsx-runtime";import*as r from"react";import{chatMessages as l,useMessages as a}from"../../internal/i18n.js";import{CheckIcon as i,ClockIcon as t,DangerIcon as o,LinkIcon as s}from"../../internal/icons.js";import{safeHref as c,safeRel as d}from"../../internal/link.js";import{NewTabNote as m}from"../../internal/new-tab.js";import{controlSlots as p,cx as u,hasContent as f,metaTextClasses as b,radiusClasses as h,sheetBodyClasses as v,sheetHeaderGapClasses as x,srOnlyClasses as g,surfaceClasses as k,transitionClasses as y}from"../../internal/styles.js";import{useStyleDefaults as w}from"../../internal/defaults.js";const N={default:{xs:"px-2 py-1",sm:"px-2.5 py-1.5",md:"px-3 py-2",lg:"px-3.5 py-2.5",xl:"px-4 py-3"},compact:{xs:"px-1.5 py-0.5",sm:"px-2 py-1",md:"px-2.5 py-1.5",lg:"px-3 py-1.5",xl:"px-3.5 py-2"}},j={start:"[border-start-start-radius:0.25rem]",end:"[border-start-end-radius:0.25rem]"},_={solid:[k,"text-(--n-on-solid) bg-(--n-fill)","[box-shadow:var(--n-elev),var(--neba-plate-solid)]"].join(" "),outline:[k,"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-(--n-soft) [box-shadow:var(--n-elev)]"};const L={sending:e(t,{}),sent:e(i,{}),delivered:e(function DoubleCheckIcon(){return n("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[e("path",{d:"m1.5 8.5 2.75 2.75L9.5 6",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round"}),e("path",{d:"M7 10.75 8.25 12l5.25-5.25",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round"})]})},{}),read:e(function ReadIcon(){const l=r.useId();return n("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[n("mask",{id:l,children:[e("rect",{width:"16",height:"16",fill:"white"}),n("g",{transform:"translate(2.375 1.25) scale(0.75)",stroke:"black",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e("path",{d:"m1.5 8.5 2.75 2.75L9.5 6"}),e("path",{d:"M7 10.75 8.25 12l5.25-5.25"})]})]}),e("circle",{cx:"8",cy:"8",r:"7.25",fill:"currentColor",mask:`url(#${l})`})]})},{}),failed:e(o,{})},C={sending:"text-(--neba-muted-fg)",sent:"text-(--neba-muted-fg)",delivered:"text-(--neba-muted-fg)",read:"text-(--n-accent)",failed:"text-(--neba-danger-accent)"},z=["block overflow-hidden rounded-(--neba-radius-sm) border no-underline","[border-color:color-mix(in_oklab,currentColor_18%,transparent)]","[background-color:color-mix(in_oklab,currentColor_7%,transparent)]","hover:[background-color:color-mix(in_oklab,currentColor_12%,transparent)]","[transition-property:background-color] [transition-duration:var(--neba-duration)]","[transition-timing-function:var(--neba-ease)]","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2"].join(" "),B=["shrink-0 opacity-0","[transition:opacity_var(--neba-duration)_var(--neba-ease)]","group-hover/bubble:opacity-100 group-focus-within/bubble:opacity-100","[@media(hover:none)]:opacity-100"].join(" ");export const ChatBubble=/*@__PURE__*/r.forwardRef(function ChatBubble(r,i){const{side:t="start",name:o,time:s,avatar:c,status:d,statusLabel:m,typing:k=!1,media:z,preview:D,actions:I,locale:T,variant:W="outline",size:M="md",color:P="primary",density:R="default",elevation:$=0,className:q,style:A,children:E,...F}=w(r,["size","density","variant","locale"]),G=a(l,T),H="end"===t,J=f(o)||f(s),K=k||f(E)||Boolean(D),O=["flex min-w-0 flex-col overflow-hidden",h[M],j[t],_[W],y].join(" "),Q=d?m??G[d]:"";return n("div",{ref:i,className:u("group/bubble flex w-full items-start gap-2",H?"flex-row-reverse":"",q??""),style:{...p(P,$,W),...A},...F,children:[f(c)?e("div",{className:"shrink-0",children:c}):null,n("div",{className:["flex min-w-0 max-w-[min(100%,32rem)] flex-col",x[M],H?"items-end":"items-start"].join(" "),children:[J?n("div",{className:`flex items-baseline gap-2 ${b[M]}`,children:[f(o)?e("span",{className:"font-semibold",children:o}):null,f(s)?e("span",{className:"text-(--neba-muted-fg)",children:s}):null]}):null,n("div",{className:"flex min-w-0 items-center gap-1 "+(H?"flex-row-reverse":""),children:[n("div",{className:O,children:[f(z)?e("div",{className:"[&_img]:block [&_img]:w-full [&_video]:block [&_video]:w-full",children:z}):null,K?n("div",{className:[N[R][M],"flex min-w-0 flex-col gap-2",v[M]].join(" "),children:[k?e(TypingDots,{label:G.typing}):f(E)?e("div",{className:"min-w-0 break-words whitespace-pre-line",children:E}):null,D?e(LinkPreview,{preview:D,locale:T}):null]}):null]}),f(I)?e("div",{className:B,children:I}):null]}),d?n("div",{className:["flex items-center gap-1",b[M],C[d],"[&_svg]:size-[1.15em] [&_svg]:shrink-0"].join(" "),children:[L[d],e("span",{className:g,children:Q})]}):null]})]})});function TypingDots({label:r}){return n("div",{className:"flex items-center gap-1 py-[0.35em]",role:"status",children:[[0,1,2].map(n=>e("span",{"aria-hidden":"true",className:"neba-typing-dot size-[0.45em] rounded-full",style:{"--n-i":n}},n)),e("span",{className:g,children:r})]})}function LinkPreview({preview:r,locale:l}){const{url:a,title:i,description:t,image:o,site:p,newTab:u=!1,rel:b}=r,h=u?"_blank":void 0;return n("a",{href:c(a),target:h,rel:d(h,b),className:z,children:[o?e("img",{alt:"",loading:"lazy",decoding:"async",className:"block h-28 w-full object-cover",src:o}):null,n("div",{className:"flex flex-col gap-0.5 p-2",children:[f(p)?n("span",{className:"flex items-center gap-1 text-[0.85em] opacity-70 [&_svg]:size-[1em] [&_svg]:shrink-0",children:[e(s,{}),e("span",{className:"truncate",children:p})]}):null,f(i)?e("span",{className:"font-semibold",children:i}):null,f(t)?e("span",{className:"line-clamp-2 text-[0.9em] opacity-80",children:t}):null,e(m,{target:h,locale:l})]})]})}
@@ -1,6 +1,5 @@
1
1
  import * as React from 'react';
2
2
  import type { NebaColor, NebaDensity, NebaElevation, NebaSize } from '../../types.js';
3
- export { registerLanguage } from '../../internal/highlight.js';
4
3
  /**
5
4
  * Which palette the block wears.
6
5
  *
@@ -65,7 +64,8 @@ export interface CodeBlockProps extends Omit<React.ComponentPropsWithoutRef<'div
65
64
  * import, so a block that does not highlight costs no more than the text in
66
65
  * it. On, the block draws plain on the first frame and colours itself when
67
66
  * the grammar lands — a few milliseconds, and never a blank space where the
68
- * code should be.
67
+ * code should be. A block off screen fetches its grammar just the same, and
68
+ * is coloured once it is within a screen's height of the view.
69
69
  * @default true
70
70
  */
71
71
  highlight?: boolean;
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as n from"react";import{CheckIcon as o,CodeIcon as l,CopyIcon as r}from"../../internal/icons.js";import{codeMessages as i,useMessages as a}from"../../internal/i18n.js";import{observeResize as s}from"../../internal/observe.js";import{canonicalLanguage as c,highlight as d,plainLines as u}from"../../internal/highlight.js";import{cx as m,hasContent as p,metaTextClasses as f,radiusClasses as x,srOnlyClasses as g,surfaceSlots as h,toLength as y,transitionClasses as v}from"../../internal/styles.js";import{useStyleDefaults as b}from"../../internal/defaults.js";export{registerLanguage}from"../../internal/highlight.js";const w={xs:"text-[0.6875rem]/[1.55]",sm:"text-[0.75rem]/[1.6]",md:"text-[0.8125rem]/[1.65]",lg:"text-[0.875rem]/[1.7]",xl:"text-[1rem]/[1.7]"},N={default:{xs:"py-2",sm:"py-3",md:"py-3.5",lg:"py-4",xl:"py-5"},compact:{xs:"py-1.5",sm:"py-2",md:"py-2.5",lg:"py-3",xl:"py-3.5"}},k={default:{xs:"px-2",sm:"px-3",md:"px-3.5",lg:"px-4",xl:"px-5"},compact:{xs:"px-1.5",sm:"px-2",md:"px-2.5",lg:"px-3",xl:"px-3.5"}},S={default:{xs:"px-2.5 py-1",sm:"px-3.5 py-1",md:"px-4 py-1.5",lg:"px-4.5 py-2",xl:"px-5.5 py-2"},compact:{xs:"px-2 py-0.5",sm:"px-2.5 py-0.5",md:"px-3 py-1",lg:"px-3.5 py-1",xl:"px-4 py-1.5"}};export const CodeBlock=/*@__PURE__*/n.forwardRef(function CodeBlock(M,T){const{code:j,language:C,theme:L="dark",size:R="md",color:A="primary",density:E="default",elevation:H=0,highlight:_=!0,toolbar:z=!0,title:F,showLanguage:K=!0,copyable:$=!0,rawToggle:B=!1,highlightLines:D,lineNumbers:I=!1,startLine:W=1,prompt:q,wrap:G=!1,maxHeight:J,fontFamily:O,fontSize:P,lineHeight:Q,letterSpacing:U,locale:V,copyLabel:X,copiedLabel:Y,rawLabel:Z,onCopy:ee,className:te,style:ne,...oe}=b(M,["size","density","locale"]),le=a(i,V),re=n.useMemo(()=>j.replace(/\r\n?/g,"\n").trimEnd(),[j]),ie=c(C),[ae,se]=n.useState(!1),[ce,de]=n.useState(null),[ue,me]=n.useState(null),pe=_&&!ae&&null!==ie;n.useEffect(()=>{if(!pe||!ie)return void me(null);let e=!1;return d(re,ie).then(t=>{e||me(t?{source:re,name:ie,lines:t}:null)},()=>{e||me(null)}),()=>{e=!0}},[re,ie,pe]);const fe=n.useMemo(()=>pe&&ue&&ue.source===re&&ue.name===ie?ue.lines:u(re),[pe,ue,re,ie]),xe=`${String(W+Math.max(fe.length-1,0)).length}ch`,ge=n.useRef(void 0),he=n.useRef(void 0),[ye,ve]=n.useState(null);n.useEffect(()=>()=>{clearTimeout(ge.current),clearTimeout(he.current)},[]);const be=W+Math.max(fe.length-1,0),we=n.useMemo(()=>function(e,t,n){const o=new Set;if(void 0===e)return o;for(const l of Array.isArray(e)?e:[e])if("number"!=typeof l)for(const e of l.split(",")){const l=/^\s*(\d+)\s*(?:-\s*(\d+)\s*)?$/.exec(e);if(!l)continue;const r=Number(l[1]),i=void 0===l[2]?r:Number(l[2]),a=Math.max(Math.min(r,i),t),s=Math.min(Math.max(r,i),n);for(let e=a;e<=s;e+=1)o.add(e)}else Number.isFinite(l)&&o.add(Math.trunc(l));return o}(D,W,be),[D,W,be]),Ne=n.useRef(null),ke=n.useRef(null),[Se,Me]=n.useState(!1);n.useEffect(()=>{const e=ke.current,t=Ne.current;if(!e||!t)return;const n=()=>Me(e.scrollWidth>e.clientWidth+1||e.scrollHeight>e.clientHeight+1);n();const o=s(e,n),l=s(t,n);return()=>{o(),l()}},[]);const Te=X??le.copy,je=Y??le.copied,Ce=Z??le.raw,Le=m("inline-flex shrink-0 cursor-pointer items-center gap-1 border-0 bg-transparent","px-1.5 py-1 text-(--n-code-dim) hover:text-(--n-code-fg) hover:bg-(--n-code-hover)",x.xs,f[R],"[&_svg]:pointer-events-none [&_svg]:size-[1.15em] [&_svg]:shrink-0",v,"focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-1"),Re=n.useId(),Ae=p(F)&&"string"!=typeof F&&z,Ee="string"==typeof F&&""!==F?F:ie??le.code,He=e("div",{ref:ke,role:Se?"region":void 0,"aria-label":Se&&!Ae?Ee:void 0,"aria-labelledby":Se&&Ae?Re:void 0,tabIndex:Se?0:void 0,onKeyDown:e=>{if(!("a"===e.key||"A"===e.key||!/^[a-z]$/i.test(e.key)&&"KeyA"===e.code))return;if(!e.metaKey&&!e.ctrlKey||e.altKey)return;const t=Ne.current,n="undefined"==typeof window?null:window.getSelection();if(!t||!n)return;e.preventDefault();const o=document.createRange();o.selectNodeContents(t),n.removeAllRanges(),n.addRange(o)},className:m("min-h-0 overflow-auto",N[E][R],"focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:-outline-offset-2"),style:void 0===J?void 0:{maxHeight:y(J)},children:e("pre",{ref:Ne,className:m("m-0 bg-transparent p-0 font-mono",G?"w-full":"w-max min-w-full"),children:fe.map((t,o)=>{const l=W+o;return e("div",{className:m("neba-code-line",k[E][R]),"data-line":I?l:void 0,"data-mark":we.has(l)?"":void 0,"data-prompt":q&&t.length>0?q:void 0,children:e("code",{children:t.map((t,o)=>t.token?e("span",{className:t.token,children:t.text},o):e(n.Fragment,{children:t.text},o))})},o)})})});return t("div",{ref:T,className:m("neba-code flex min-w-0 flex-col overflow-hidden",x[R],"border bg-(--n-code-bg) text-(--n-code-fg) [border-color:var(--n-code-rule)]","[box-shadow:var(--n-elev)]",v,te),"data-code-theme":L,"data-code-wrap":G?"true":void 0,style:{...h(A,H),"--n-code-gutter":xe,...O?{fontFamily:O}:null,...void 0===P?null:{fontSize:y(P)},...void 0===Q?null:{lineHeight:Q},...void 0===U?null:{letterSpacing:y(U)},...ne},...oe,children:[z&&(K&&ie||$||B&&_||p(F))?t("div",{className:m("flex min-w-0 items-center gap-1 border-b [border-color:var(--n-code-rule)]",S[E][R]),children:[p(F)?e("span",{id:Re,className:m("min-w-0 truncate font-mono",f[R]),children:F}):null,K&&ie?e("span",{className:m("min-w-0 truncate font-mono tracking-wide text-(--n-code-dim) uppercase select-none",f[R]),children:ie}):null,e("span",{className:"flex-1"}),B&&_?e("button",{type:"button","aria-pressed":ae,"aria-label":Ce,title:Ce,onClick:()=>se(e=>!e),className:m(Le,ae?"text-(--n-code-fg) bg-(--n-code-hover)":""),children:e(l,{})}):null,$?t("button",{type:"button",onClick:async()=>{const e=await async function(e){try{if(navigator.clipboard?.writeText)return await navigator.clipboard.writeText(e),!0}catch{}const t=document.activeElement;try{const t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.setAttribute("aria-hidden","true"),t.style.cssText="position:fixed;top:0;left:0;opacity:0;pointer-events:none",document.body.append(t),t.select();const n=document.execCommand("copy");return t.remove(),n}catch{return!1}finally{t instanceof HTMLElement&&t.isConnected&&t.focus()}}(re);clearTimeout(ge.current),clearTimeout(he.current),de(e),ve(null),he.current=setTimeout(()=>ve(e),100),ge.current=setTimeout(()=>{de(null),ve(null)},2e3),e&&ee?.(re)},className:Le,children:[e(ce?o:r,{}),e("span",{children:null===ce?Te:ce?je:le.copyFailed})]}):null]}):null,e("div",{className:m("flex min-h-0 flex-col",w[R]),children:He}),e("span",{"aria-live":"polite",className:g,children:null===ye?"":ye?je:le.copyFailed})]})});
1
+ "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as n from"react";import{CheckIcon as o,CodeIcon as r,CopyIcon as l}from"../../internal/icons.js";import{codeMessages as i,useMessages as a}from"../../internal/i18n.js";import{observeResize as s,observeVisibility as c}from"../../internal/observe.js";import{canonicalLanguage as d,highlight as u,plainLines as m,preloadLanguage as p}from"../../internal/highlight.js";import{cx as f,hasContent as x,metaTextClasses as h,radiusClasses as g,srOnlyClasses as y,surfaceSlots as v,toLength as b,transitionClasses as w}from"../../internal/styles.js";import{useStyleDefaults as N}from"../../internal/defaults.js";const k={xs:"text-[0.6875rem]/[1.55]",sm:"text-[0.75rem]/[1.6]",md:"text-[0.8125rem]/[1.65]",lg:"text-[0.875rem]/[1.7]",xl:"text-[1rem]/[1.7]"},S={default:{xs:"py-2",sm:"py-3",md:"py-3.5",lg:"py-4",xl:"py-5"},compact:{xs:"py-1.5",sm:"py-2",md:"py-2.5",lg:"py-3",xl:"py-3.5"}},T={default:{xs:"px-2",sm:"px-3",md:"px-3.5",lg:"px-4",xl:"px-5"},compact:{xs:"px-1.5",sm:"px-2",md:"px-2.5",lg:"px-3",xl:"px-3.5"}},M={default:{xs:"px-2.5 py-1",sm:"px-3.5 py-1",md:"px-4 py-1.5",lg:"px-4.5 py-2",xl:"px-5.5 py-2"},compact:{xs:"px-2 py-0.5",sm:"px-2.5 py-0.5",md:"px-3 py-1",lg:"px-3.5 py-1",xl:"px-4 py-1.5"}};export const CodeBlock=/*@__PURE__*/n.forwardRef(function CodeBlock(j,C){const{code:E,language:R,theme:A="dark",size:H="md",color:L="primary",density:_="default",elevation:z=0,highlight:F=!0,toolbar:K=!0,title:$,showLanguage:B=!0,copyable:D=!0,rawToggle:I=!1,highlightLines:W,lineNumbers:q=!1,startLine:G=1,prompt:J,wrap:O=!1,maxHeight:P,fontFamily:Q,fontSize:U,lineHeight:V,letterSpacing:X,locale:Y,copyLabel:Z,copiedLabel:ee,rawLabel:te,onCopy:ne,className:oe,style:re,...le}=N(j,["size","density","locale"]),ie=a(i,Y),ae=n.useMemo(()=>E.replace(/\r\n?/g,"\n").trimEnd(),[E]),se=d(R),[ce,de]=n.useState(!1),[ue,me]=n.useState(null),[pe,fe]=n.useState(null),xe=F&&!ce&&null!==se,[he,ge]=n.useState(!1);n.useEffect(()=>{if(!xe||!se)return void fe(null);if(!he)return void p(se);let e=!1;return u(ae,se).then(t=>{e||n.startTransition(()=>fe(t?{source:ae,name:se,lines:t}:null))},()=>{e||fe(null)}),()=>{e=!0}},[ae,se,xe,he]);const ye=n.useMemo(()=>xe&&pe&&pe.source===ae&&pe.name===se?pe.lines:m(ae),[xe,pe,ae,se]),ve=`${String(G+Math.max(ye.length-1,0)).length}ch`,be=n.useRef(void 0),we=n.useRef(void 0),[Ne,ke]=n.useState(null);n.useEffect(()=>()=>{clearTimeout(be.current),clearTimeout(we.current)},[]);const Se=G+Math.max(ye.length-1,0),Te=n.useMemo(()=>function(e,t,n){const o=new Set;if(void 0===e)return o;for(const r of Array.isArray(e)?e:[e])if("number"!=typeof r)for(const e of r.split(",")){const r=/^\s*(\d+)\s*(?:-\s*(\d+)\s*)?$/.exec(e);if(!r)continue;const l=Number(r[1]),i=void 0===r[2]?l:Number(r[2]),a=Math.max(Math.min(l,i),t),s=Math.min(Math.max(l,i),n);for(let e=a;e<=s;e+=1)o.add(e)}else Number.isFinite(r)&&o.add(Math.trunc(r));return o}(W,G,Se),[W,G,Se]),Me=n.useRef(null),je=n.useRef(null),[Ce,Ee]=n.useState(!1);n.useEffect(()=>{const e=je.current;if(!xe||he||!e)return;const t=c(e,0,e=>{e&&ge(!0)},"100% 0px");if(t)return t;ge(!0)},[xe,he]),n.useEffect(()=>{const e=je.current,t=Me.current;if(!e||!t)return;const n=()=>Ee(e.scrollWidth>e.clientWidth+1||e.scrollHeight>e.clientHeight+1);n();const o=s(e,n),r=s(t,n);return()=>{o(),r()}},[]);const Re=Z??ie.copy,Ae=ee??ie.copied,He=te??ie.raw,Le=f("inline-flex shrink-0 cursor-pointer items-center gap-1 border-0 bg-transparent","px-1.5 py-1 text-(--n-code-dim) hover:text-(--n-code-fg) hover:bg-(--n-code-hover)",g.xs,h[H],"[&_svg]:pointer-events-none [&_svg]:size-[1.15em] [&_svg]:shrink-0",w,"focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-1"),_e=n.useId(),ze=x($)&&"string"!=typeof $&&K,Fe="string"==typeof $&&""!==$?$:se??ie.code,Ke=e("div",{ref:je,role:Ce?"region":void 0,"aria-label":Ce&&!ze?Fe:void 0,"aria-labelledby":Ce&&ze?_e:void 0,tabIndex:Ce?0:void 0,onKeyDown:e=>{if(!("a"===e.key||"A"===e.key||!/^[a-z]$/i.test(e.key)&&"KeyA"===e.code))return;if(!e.metaKey&&!e.ctrlKey||e.altKey)return;const t=Me.current,n="undefined"==typeof window?null:window.getSelection();if(!t||!n)return;e.preventDefault();const o=document.createRange();o.selectNodeContents(t),n.removeAllRanges(),n.addRange(o)},className:f("min-h-0 overflow-auto",S[_][H],"focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:-outline-offset-2"),style:void 0===P?void 0:{maxHeight:b(P)},children:e("pre",{ref:Me,className:f("m-0 bg-transparent p-0 font-mono",O?"w-full":"w-max min-w-full"),children:ye.map((t,o)=>{const r=G+o;return e("div",{className:f("neba-code-line",T[_][H]),"data-line":q?r:void 0,"data-mark":Te.has(r)?"":void 0,"data-prompt":J&&t.length>0?J:void 0,children:e("code",{children:t.map((t,o)=>t.token?e("span",{className:t.token,children:t.text},o):e(n.Fragment,{children:t.text},o))})},o)})})});return t("div",{ref:C,className:f("neba-code flex min-w-0 flex-col overflow-hidden",g[H],"border bg-(--n-code-bg) text-(--n-code-fg) [border-color:var(--n-code-rule)]","[box-shadow:var(--n-elev)]",w,oe),"data-code-theme":A,"data-code-wrap":O?"true":void 0,style:{...v(L,z),"--n-code-gutter":ve,...Q?{fontFamily:Q}:null,...void 0===U?null:{fontSize:b(U)},...void 0===V?null:{lineHeight:V},...void 0===X?null:{letterSpacing:b(X)},...re},...le,children:[K&&(B&&se||D||I&&F||x($))?t("div",{className:f("flex min-w-0 items-center gap-1 border-b [border-color:var(--n-code-rule)]",M[_][H]),children:[x($)?e("span",{id:_e,className:f("min-w-0 truncate font-mono",h[H]),children:$}):null,B&&se?e("span",{className:f("min-w-0 truncate font-mono tracking-wide text-(--n-code-dim) uppercase select-none",h[H]),children:se}):null,e("span",{className:"flex-1"}),I&&F?e("button",{type:"button","aria-pressed":ce,"aria-label":He,title:He,onClick:()=>de(e=>!e),className:f(Le,ce?"text-(--n-code-fg) bg-(--n-code-hover)":""),children:e(r,{})}):null,D?t("button",{type:"button",onClick:async()=>{const e=await async function(e){try{if(navigator.clipboard?.writeText)return await navigator.clipboard.writeText(e),!0}catch{}const t=document.activeElement;try{const t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.setAttribute("aria-hidden","true"),t.style.cssText="position:fixed;top:0;left:0;opacity:0;pointer-events:none",document.body.append(t),t.select();const n=document.execCommand("copy");return t.remove(),n}catch{return!1}finally{t instanceof HTMLElement&&t.isConnected&&t.focus()}}(ae);clearTimeout(be.current),clearTimeout(we.current),me(e),ke(null),we.current=setTimeout(()=>ke(e),100),be.current=setTimeout(()=>{me(null),ke(null)},2e3),e&&ne?.(ae)},className:Le,children:[e(ue?o:l,{}),e("span",{children:null===ue?Re:ue?Ae:ie.copyFailed})]}):null]}):null,e("div",{className:f("flex min-h-0 flex-col",k[H]),children:Ke}),e("span",{"aria-live":"polite",className:y,children:null===Ne?"":Ne?Ae:ie.copyFailed})]})});
@@ -1,2 +1,3 @@
1
- export { CodeBlock, registerLanguage } from './CodeBlock.js';
1
+ export { CodeBlock } from './CodeBlock.js';
2
+ export { registerLanguage } from '../../internal/highlight.js';
2
3
  export type { CodeBlockProps, CodeBlockTheme } from './CodeBlock.js';
@@ -1 +1 @@
1
- export{CodeBlock,registerLanguage}from"./CodeBlock.js";
1
+ export{CodeBlock}from"./CodeBlock.js";export{registerLanguage}from"../../internal/highlight.js";
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as r from"react";import{PickerShell as l}from"../../internal/picker.js";import{CheckIcon as n}from"../../internal/icons.js";import{colorMessages as t,fillMessage as o,useMessages as s}from"../../internal/i18n.js";import{numberFormatter as i}from"../../internal/format.js";import{checkerBackground as d,clamp as c,cssColor as u,defaultSwatches as h,formatColor as f,parseColor as p,readableInk as m}from"../../internal/color.js";import{controlTextClasses as b,cx as v,focusRingClasses as g,metaTextClasses as x,radiusClasses as w,stackGapClasses as y,surfaceSlots as k,transitionClasses as C}from"../../internal/styles.js";import{useStyleDefaults as N}from"../../internal/defaults.js";import{useFieldsetDisabled as _}from"../../internal/fieldset.js";const j={xs:"w-40",sm:"w-44",md:"w-52",lg:"w-60",xl:"w-72"},P={xs:"h-24",sm:"h-28",md:"h-32",lg:"h-40",xl:"h-48"},I={xs:"h-2.5",sm:"h-3",md:"h-3.5",lg:"h-4",xl:"h-5"},D={xs:"gap-1.5",sm:"gap-2",md:"gap-2.5",lg:"gap-3",xl:"gap-3.5"},z={xs:10,sm:12,md:14,lg:16,xl:18},A=["relative overflow-hidden border","[border-color:var(--neba-border)]","[box-shadow:var(--neba-plate-glass)]"].join(" "),T=["pointer-events-none absolute rounded-full border-2 border-white","[box-shadow:0_0_0_1px_rgba(0,0,0,0.35),0_1px_3px_rgba(0,0,0,0.4)]"].join(" ");function L(e){const a=e.currentTarget.getBoundingClientRect();return{x:0===a.width?0:c((e.clientX-a.left)/a.width,0,1),y:0===a.height?0:c((e.clientY-a.top)/a.height,0,1)}}function ColorPanel({hsv:r,alphaValue:l,onChange:t,text:s,onTextChange:h,withAlpha:b,swatches:y,editable:k,size:N,inert:_,disabled:O,labels:V,locale:q}){const S=z[N],B=i(q,{style:"percent",maximumFractionDigits:0}),E=i(q,{style:"unit",unit:"degree",unitDisplay:"long",maximumFractionDigits:0}),K=-S/2,M=u({h:r.h,s:100,v:100}),R=u(r),U=e=>({onPointerDown:a=>{_||(a.currentTarget.setPointerCapture(a.pointerId),e(a))},onPointerMove:a=>{!_&&a.currentTarget.hasPointerCapture(a.pointerId)&&e(a)}}),F=(e,a,r,l,n,t,o)=>({role:"slider",tabIndex:_?-1:0,"aria-label":e,"aria-valuemin":0,"aria-valuemax":l,"aria-valuenow":Math.round(r),"aria-valuetext":a,"aria-orientation":"horizontal","aria-disabled":_||void 0,onKeyDown:e=>{const a=function(e,a,r,l,n){const t=(e.shiftKey?10:1)*l;let o;switch(e.key){case"ArrowRight":case"ArrowUp":o=a+t;break;case"ArrowLeft":case"ArrowDown":o=a-t;break;case"PageUp":o=a+10*l;break;case"PageDown":o=a-10*l;break;case"Home":return 0;case"End":return r;default:return null}return n?(o%r+r)%r:c(o,0,r)}(e,r,l,n,t);_||null===a||(e.preventDefault(),o(a))}});return a("div",{className:v("flex flex-col",j[N],D[N]),children:[e("div",{...U(e=>{const{x:a,y:n}=L(e);t({hsv:{h:r.h,s:100*a,v:100*(1-n)},alpha:l})}),role:"slider",tabIndex:_?-1:0,"aria-label":V.area,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":Math.round(r.s),"aria-valuetext":o(V.areaValue,{saturation:B.format(r.s/100),brightness:B.format(r.v/100)}),"aria-disabled":_||void 0,onKeyDown:e=>{const a=function(e,a,r){const l=e.shiftKey?10:1;switch(e.key){case"ArrowLeft":return{s:a-l,v:r};case"ArrowRight":return{s:a+l,v:r};case"ArrowUp":return{s:a,v:r+l};case"ArrowDown":return{s:a,v:r-l};case"PageUp":return{s:a,v:r+10};case"PageDown":return{s:a,v:r-10};case"Home":return{s:0,v:r};case"End":return{s:100,v:r};default:return null}}(e,r.s,r.v);!_&&a&&(e.preventDefault(),t({hsv:{h:r.h,s:c(a.s,0,100),v:c(a.v,0,100)},alpha:l}))},className:v(A,P[N],w[N],g,_?"cursor-default":"cursor-crosshair touch-none"),style:{backgroundColor:M,backgroundImage:"linear-gradient(to top, #000000, rgba(0, 0, 0, 0)), linear-gradient(to right, #ffffff, rgba(255, 255, 255, 0))"},children:e("span",{className:T,style:{width:S,height:S,left:`${r.s}%`,top:100-r.v+"%",marginLeft:K,marginTop:K,backgroundColor:R}})}),e("div",{...U(e=>t({hsv:{...r,h:360*L(e).x},alpha:l})),...F(V.hue,E.format(r.h),r.h,360,2,!0,e=>t({hsv:{...r,h:e},alpha:l})),className:v(A,I[N],"rounded-full",g,_?"cursor-default":"cursor-pointer touch-none"),style:{backgroundImage:"linear-gradient(to right, #ff0000 0%, #ffff00 16.66%, #00ff00 33.33%, #00ffff 50%, #0000ff 66.66%, #ff00ff 83.33%, #ff0000 100%)"},children:e("span",{className:T,style:{width:S,height:S,left:r.h/360*100+"%",top:"50%",marginLeft:K,marginTop:K,backgroundColor:M}})}),b?a("div",{...U(e=>t({hsv:r,alpha:L(e).x})),...F(V.alpha,B.format(l),100*l,100,1,!1,e=>t({hsv:r,alpha:e/100})),className:v(A,I[N],"rounded-full",g,_?"cursor-default":"cursor-pointer touch-none"),style:d,children:[e("span",{"aria-hidden":"true",className:"absolute inset-0",style:{backgroundImage:`linear-gradient(to right, ${u(r,0)}, ${R})`}}),e("span",{className:T,style:{width:S,height:S,left:100*l+"%",top:"50%",marginLeft:K,marginTop:K,backgroundColor:u(r,l)}})]}):null,k?a("div",{className:v("flex items-center",D[N]),children:[e("span",{"aria-hidden":"true",className:v("shrink-0 rounded-full border","[border-color:var(--neba-border)]"),style:{width:S+6,height:S+6,...d},children:e("span",{className:"block size-full rounded-full",style:{backgroundColor:u(r,l)}})}),e("input",{type:"text",value:s,readOnly:_,disabled:O,spellCheck:!1,autoComplete:"off","aria-label":V.value,onChange:e=>h(e.target.value),className:v("neba-input min-w-0 flex-1 border bg-transparent px-1.5 py-1 font-mono lowercase","[border-color:var(--neba-border)]",w.xs,x[N],"text-(--neba-fg)",C,"focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-1")})]}):null,y&&y.length>0?e("div",{role:"group","aria-label":V.swatches,className:"grid grid-cols-8 gap-1",children:y.map(a=>{const o=p(a),s=null!==o&&f(o.hsv,o.alpha,"hex")===f(r,l,"hex");return e("button",{type:"button",disabled:_,"aria-label":a,"aria-pressed":s,onClick:()=>{o&&t(o)},className:v("flex aspect-square items-center justify-center rounded-full border","[border-color:color-mix(in_oklab,var(--neba-fg)_18%,transparent)]","[transition:box-shadow_var(--neba-duration)_var(--neba-ease)]",g,_?"cursor-default":"cursor-pointer hover:[box-shadow:var(--neba-shadow-1)]","[&_svg]:size-3"),style:{backgroundColor:a},children:s&&o?e("span",{style:{color:m(o.hsv)},children:e(n,{})}):null},a)})}):null]})}function O(e,a){return"hex"===e?[a?"#ffffffff":"#ffffff"]:"rgb"===e?[a?"rgba(255, 255, 255, 0.55)":"rgb(255, 255, 255)"]:[a?"hsla(360, 100%, 100%, 0.55)":"hsl(360, 100%, 100%)"]}const V={h:217,s:87,v:82};export const ColorPicker=/*@__PURE__*/r.forwardRef(function ColorPicker(n,o){const{value:i,defaultValue:c="#1a58d1",onValueChange:m,format:g="hex",alpha:w=!1,swatches:C=h,inline:j=!1,editable:P=!0,label:I,labelPlacement:D,description:z,error:A,invalid:T,required:L=!1,disabled:q,readOnly:S=!1,fullWidth:B=!1,clearable:E=!1,name:K,open:M,defaultOpen:R=!1,onOpenChange:U,locale:F,labels:$,variant:H="outline",size:W="md",color:X="primary",density:Y="default",elevation:G=0,className:J,style:Q,...Z}=N(n,["size","density","variant","locale","labelPlacement"]),ee=_(q),ae=s(t,F),re=r.useMemo(()=>({...ae,...$}),[ae,$]),[le,ne]=r.useState(c),te=i??le,[oe,se]=r.useState(R),ie=M??oe,[de,ce]=r.useState(()=>p(te)??{hsv:V,alpha:1}),[ue,he]=r.useState(()=>te||""),fe=f(de.hsv,w?de.alpha:1,g),pe=""===te;r.useEffect(()=>{const e=p(te);e?f(e.hsv,w?e.alpha:1,g)!==fe&&(he(te),ce(e)):he(te)},[te,fe,w,g]);const me=(e,a)=>{ce(e);const r=f(e.hsv,w?e.alpha:1,g);he(a??r),void 0===i&&ne(r),m?.(r)},be=ee||S,ve=r.useId(),ge=r.useId(),xe=r.useId(),we=e(ColorPanel,{hsv:de.hsv,alphaValue:de.alpha,onChange:me,text:ue,onTextChange:e=>{he(e);const a=p(e);a&&me(a,e)},withAlpha:w,swatches:C,editable:P,size:W,inert:be,disabled:Boolean(ee),labels:re,locale:F}),ye=K?e("input",{type:"hidden",name:K,value:pe?"":fe,disabled:ee}):null,ke=L&&!be?e("input",{"aria-hidden":"true",tabIndex:-1,required:!0,value:pe?"":"chosen",onChange:()=>{},onInvalid:e=>e.currentTarget.parentElement?.querySelector('[role="slider"]')?.focus(),className:"pointer-events-none absolute start-0 bottom-0 size-px overflow-hidden opacity-0 [clip-path:inset(50%)]"}):null;if(j){const r=T??Boolean(A)?"danger":X,l=[z?ge:"",A?xe:""].filter(Boolean).join(" ");return a("div",{ref:o,role:"group","aria-labelledby":I?ve:void 0,"aria-describedby":l||void 0,className:v("relative flex flex-col",y[W],J),style:{...k(r,G),...Q},...Z,children:[I?e("span",{id:ve,className:v(x[W],"font-medium",ee?"text-(--neba-disabled-fg)":"text-(--neba-fg)"),children:I}):null,we,z?e("span",{id:ge,className:v(x[W],"text-(--neba-muted-fg)"),children:z}):null,A?e("span",{id:xe,className:v(x[W],"text-(--n-accent)"),children:A}):null,ye,ke]})}return e("div",{ref:o,className:B?"w-full":"inline-block",...Z,children:e(l,{variant:H,size:W,color:X,density:Y,elevation:G,style:Q,label:I,labelPlacement:D,description:z,error:A,invalid:T,required:L,disabled:ee,readOnly:S,fullWidth:B,className:J,startIcon:e("span",{"aria-hidden":"true",className:v("block size-[1.15em] shrink-0 rounded-full border","[border-color:color-mix(in_oklab,var(--neba-fg)_18%,transparent)]"),style:d,children:e("span",{className:"block size-full rounded-full",style:{backgroundColor:pe?"transparent":u(de.hsv,w?de.alpha:1)}})}),display:pe?re.empty:fe,samples:O(g,w),empty:pe,clearable:E,onClear:()=>{void 0===i&&ne(""),he(""),m?.("")},open:ie,onOpenChange:e=>{void 0===M&&se(e),U?.(e)},clearLabel:re.clear,initialFocus:!0,hiddenValues:K?[{name:K,value:pe?"":fe}]:void 0,children:e("div",{className:b[W],children:we})})})});
1
+ "use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as r from"react";import{PickerShell as l}from"../../internal/picker.js";import{CheckIcon as n}from"../../internal/icons.js";import{colorMessages as t,fillMessage as o,useMessages as s}from"../../internal/i18n.js";import{numberFormatter as i}from"../../internal/format.js";import{checkerBackground as d,clamp as c,cssColor as u,defaultSwatches as h,formatColor as f,parseColor as p,readableInk as m}from"../../internal/color.js";import{controlTextClasses as b,cx as v,focusRingClasses as g,metaTextClasses as x,radiusClasses as w,stackGapClasses as y,surfaceSlots as k,transitionClasses as C}from"../../internal/styles.js";import{useStyleDefaults as N}from"../../internal/defaults.js";import{useIntlLocale as j}from"../../internal/media.js";import{useFieldsetDisabled as _}from"../../internal/fieldset.js";const P={xs:"w-40",sm:"w-44",md:"w-52",lg:"w-60",xl:"w-72"},I={xs:"h-24",sm:"h-28",md:"h-32",lg:"h-40",xl:"h-48"},D={xs:"h-2.5",sm:"h-3",md:"h-3.5",lg:"h-4",xl:"h-5"},z={xs:"gap-1.5",sm:"gap-2",md:"gap-2.5",lg:"gap-3",xl:"gap-3.5"},A={xs:10,sm:12,md:14,lg:16,xl:18},T=["relative overflow-hidden border","[border-color:var(--neba-border)]","[box-shadow:var(--neba-plate-glass)]"].join(" "),L=["pointer-events-none absolute rounded-full border-2 border-white","[box-shadow:0_0_0_1px_rgba(0,0,0,0.35),0_1px_3px_rgba(0,0,0,0.4)]"].join(" ");function O(e){const a=e.currentTarget.getBoundingClientRect();return{x:0===a.width?0:c((e.clientX-a.left)/a.width,0,1),y:0===a.height?0:c((e.clientY-a.top)/a.height,0,1)}}function ColorPanel({hsv:r,alphaValue:l,onChange:t,text:s,onTextChange:h,withAlpha:b,swatches:y,editable:k,size:N,inert:_,disabled:V,labels:q,locale:S}){const B=j(S),E=A[N],K=i(B,{style:"percent",maximumFractionDigits:0}),M=i(B,{style:"unit",unit:"degree",unitDisplay:"long",maximumFractionDigits:0}),R=-E/2,U=u({h:r.h,s:100,v:100}),F=u(r),$=e=>({onPointerDown:a=>{_||(a.currentTarget.setPointerCapture(a.pointerId),e(a))},onPointerMove:a=>{!_&&a.currentTarget.hasPointerCapture(a.pointerId)&&e(a)}}),H=(e,a,r,l,n,t,o)=>({role:"slider",tabIndex:_?-1:0,"aria-label":e,"aria-valuemin":0,"aria-valuemax":l,"aria-valuenow":Math.round(r),"aria-valuetext":a,"aria-orientation":"horizontal","aria-disabled":_||void 0,onKeyDown:e=>{const a=function(e,a,r,l,n){const t=(e.shiftKey?10:1)*l;let o;switch(e.key){case"ArrowRight":case"ArrowUp":o=a+t;break;case"ArrowLeft":case"ArrowDown":o=a-t;break;case"PageUp":o=a+10*l;break;case"PageDown":o=a-10*l;break;case"Home":return 0;case"End":return r;default:return null}return n?(o%r+r)%r:c(o,0,r)}(e,r,l,n,t);_||null===a||(e.preventDefault(),o(a))}});return a("div",{className:v("flex flex-col",P[N],z[N]),children:[e("div",{...$(e=>{const{x:a,y:n}=O(e);t({hsv:{h:r.h,s:100*a,v:100*(1-n)},alpha:l})}),role:"slider",tabIndex:_?-1:0,"aria-label":q.area,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":Math.round(r.s),"aria-valuetext":o(q.areaValue,{saturation:K.format(r.s/100),brightness:K.format(r.v/100)}),"aria-disabled":_||void 0,onKeyDown:e=>{const a=function(e,a,r){const l=e.shiftKey?10:1;switch(e.key){case"ArrowLeft":return{s:a-l,v:r};case"ArrowRight":return{s:a+l,v:r};case"ArrowUp":return{s:a,v:r+l};case"ArrowDown":return{s:a,v:r-l};case"PageUp":return{s:a,v:r+10};case"PageDown":return{s:a,v:r-10};case"Home":return{s:0,v:r};case"End":return{s:100,v:r};default:return null}}(e,r.s,r.v);!_&&a&&(e.preventDefault(),t({hsv:{h:r.h,s:c(a.s,0,100),v:c(a.v,0,100)},alpha:l}))},className:v(T,I[N],w[N],g,_?"cursor-default":"cursor-crosshair touch-none"),style:{backgroundColor:U,backgroundImage:"linear-gradient(to top, #000000, rgba(0, 0, 0, 0)), linear-gradient(to right, #ffffff, rgba(255, 255, 255, 0))"},children:e("span",{className:L,style:{width:E,height:E,left:`${r.s}%`,top:100-r.v+"%",marginLeft:R,marginTop:R,backgroundColor:F}})}),e("div",{...$(e=>t({hsv:{...r,h:360*O(e).x},alpha:l})),...H(q.hue,M.format(r.h),r.h,360,2,!0,e=>t({hsv:{...r,h:e},alpha:l})),className:v(T,D[N],"rounded-full",g,_?"cursor-default":"cursor-pointer touch-none"),style:{backgroundImage:"linear-gradient(to right, #ff0000 0%, #ffff00 16.66%, #00ff00 33.33%, #00ffff 50%, #0000ff 66.66%, #ff00ff 83.33%, #ff0000 100%)"},children:e("span",{className:L,style:{width:E,height:E,left:r.h/360*100+"%",top:"50%",marginLeft:R,marginTop:R,backgroundColor:U}})}),b?a("div",{...$(e=>t({hsv:r,alpha:O(e).x})),...H(q.alpha,K.format(l),100*l,100,1,!1,e=>t({hsv:r,alpha:e/100})),className:v(T,D[N],"rounded-full",g,_?"cursor-default":"cursor-pointer touch-none"),style:d,children:[e("span",{"aria-hidden":"true",className:"absolute inset-0",style:{backgroundImage:`linear-gradient(to right, ${u(r,0)}, ${F})`}}),e("span",{className:L,style:{width:E,height:E,left:100*l+"%",top:"50%",marginLeft:R,marginTop:R,backgroundColor:u(r,l)}})]}):null,k?a("div",{className:v("flex items-center",z[N]),children:[e("span",{"aria-hidden":"true",className:v("shrink-0 rounded-full border","[border-color:var(--neba-border)]"),style:{width:E+6,height:E+6,...d},children:e("span",{className:"block size-full rounded-full",style:{backgroundColor:u(r,l)}})}),e("input",{type:"text",value:s,readOnly:_,disabled:V,spellCheck:!1,autoComplete:"off","aria-label":q.value,onChange:e=>h(e.target.value),className:v("neba-input min-w-0 flex-1 border bg-transparent px-1.5 py-1 font-mono lowercase","[border-color:var(--neba-border)]",w.xs,x[N],"text-(--neba-fg)",C,"focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-1")})]}):null,y&&y.length>0?e("div",{role:"group","aria-label":q.swatches,className:"grid grid-cols-8 gap-1",children:y.map(a=>{const o=p(a),s=null!==o&&f(o.hsv,o.alpha,"hex")===f(r,l,"hex");return e("button",{type:"button",disabled:_,"aria-label":a,"aria-pressed":s,onClick:()=>{o&&t(o)},className:v("flex aspect-square items-center justify-center rounded-full border","[border-color:color-mix(in_oklab,var(--neba-fg)_18%,transparent)]","[transition:box-shadow_var(--neba-duration)_var(--neba-ease)]",g,_?"cursor-default":"cursor-pointer hover:[box-shadow:var(--neba-shadow-1)]","[&_svg]:size-3"),style:{backgroundColor:a},children:s&&o?e("span",{style:{color:m(o.hsv)},children:e(n,{})}):null},a)})}):null]})}function V(e,a){return"hex"===e?[a?"#ffffffff":"#ffffff"]:"rgb"===e?[a?"rgba(255, 255, 255, 0.55)":"rgb(255, 255, 255)"]:[a?"hsla(360, 100%, 100%, 0.55)":"hsl(360, 100%, 100%)"]}const q={h:217,s:87,v:82};export const ColorPicker=/*@__PURE__*/r.forwardRef(function ColorPicker(n,o){const{value:i,defaultValue:c="#1a58d1",onValueChange:m,format:g="hex",alpha:w=!1,swatches:C=h,inline:j=!1,editable:P=!0,label:I,labelPlacement:D,description:z,error:A,invalid:T,required:L=!1,disabled:O,readOnly:S=!1,fullWidth:B=!1,clearable:E=!1,name:K,open:M,defaultOpen:R=!1,onOpenChange:U,locale:F,labels:$,variant:H="outline",size:W="md",color:X="primary",density:Y="default",elevation:G=0,className:J,style:Q,...Z}=N(n,["size","density","variant","locale","labelPlacement"]),ee=_(O),ae=s(t,F),re=r.useMemo(()=>({...ae,...$}),[ae,$]),[le,ne]=r.useState(c),te=i??le,[oe,se]=r.useState(R),ie=M??oe,[de,ce]=r.useState(()=>p(te)??{hsv:q,alpha:1}),[ue,he]=r.useState(()=>te||""),fe=f(de.hsv,w?de.alpha:1,g),pe=""===te;r.useEffect(()=>{const e=p(te);e?f(e.hsv,w?e.alpha:1,g)!==fe&&(he(te),ce(e)):he(te)},[te,fe,w,g]);const me=(e,a)=>{ce(e);const r=f(e.hsv,w?e.alpha:1,g);he(a??r),void 0===i&&ne(r),m?.(r)},be=ee||S,ve=r.useId(),ge=r.useId(),xe=r.useId(),we=e(ColorPanel,{hsv:de.hsv,alphaValue:de.alpha,onChange:me,text:ue,onTextChange:e=>{he(e);const a=p(e);a&&me(a,e)},withAlpha:w,swatches:C,editable:P,size:W,inert:be,disabled:Boolean(ee),labels:re,locale:F}),ye=K?e("input",{type:"hidden",name:K,value:pe?"":fe,disabled:ee}):null,ke=L&&!be?e("input",{"aria-hidden":"true",tabIndex:-1,required:!0,value:pe?"":"chosen",onChange:()=>{},onInvalid:e=>e.currentTarget.parentElement?.querySelector('[role="slider"]')?.focus(),className:"pointer-events-none absolute start-0 bottom-0 size-px overflow-hidden opacity-0 [clip-path:inset(50%)]"}):null;if(j){const r=T??Boolean(A)?"danger":X,l=[z?ge:"",A?xe:""].filter(Boolean).join(" ");return a("div",{ref:o,role:"group","aria-labelledby":I?ve:void 0,"aria-describedby":l||void 0,className:v("relative flex flex-col",y[W],J),style:{...k(r,G),...Q},...Z,children:[I?e("span",{id:ve,className:v(x[W],"font-medium",ee?"text-(--neba-disabled-fg)":"text-(--neba-fg)"),children:I}):null,we,z?e("span",{id:ge,className:v(x[W],"text-(--neba-muted-fg)"),children:z}):null,A?e("span",{id:xe,className:v(x[W],"text-(--n-accent)"),children:A}):null,ye,ke]})}return e("div",{ref:o,className:B?"w-full":"inline-block",...Z,children:e(l,{variant:H,size:W,color:X,density:Y,elevation:G,style:Q,label:I,labelPlacement:D,description:z,error:A,invalid:T,required:L,disabled:ee,readOnly:S,fullWidth:B,className:J,startIcon:e("span",{"aria-hidden":"true",className:v("block size-[1.15em] shrink-0 rounded-full border","[border-color:color-mix(in_oklab,var(--neba-fg)_18%,transparent)]"),style:d,children:e("span",{className:"block size-full rounded-full",style:{backgroundColor:pe?"transparent":u(de.hsv,w?de.alpha:1)}})}),display:pe?re.empty:fe,samples:V(g,w),empty:pe,clearable:E,onClear:()=>{void 0===i&&ne(""),he(""),m?.("")},open:ie,onOpenChange:e=>{void 0===M&&se(e),U?.(e)},clearLabel:re.clear,initialFocus:!0,hiddenValues:K?[{name:K,value:pe?"":fe}]:void 0,children:e("div",{className:b[W],children:we})})})});
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import*as a from"react";import{Combobox as t}from"@base-ui/react/combobox";import{Field as n}from"@base-ui/react/field";import{Chip as i}from"../chip/Chip.js";import{actionMessages as r,comboboxMessages as o,fillMessage as s,useMessages as c}from"../../internal/i18n.js";import{CheckIcon as d,ChevronIcon as m,CloseIcon as u,PlusIcon as p}from"../../internal/icons.js";import{keyHandler as b}from"../../internal/keys.js";import{FieldNotch as h,NotchFrame as f,restEndOf as g}from"../../internal/notch.js";import{chipRemoveClasses as v,controlTextLeadingClasses as x,cx as y,disabledClasses as N,fieldFocusTransitionClasses as w,fieldHeightClasses as j,fieldReadOnlyClasses as C,fieldRestClasses as L,fieldRingClasses as I,fieldSheetClasses as S,fieldSheetDisabledClasses as z,fieldSheetReadOnlyClasses as $,gapClasses as O,hasContent as V,iconClasses as _,metaTextClasses as k,paddingXClasses as M,popupFadeClasses as P,radiusClasses as A,readOnlyFilterClasses as E,stackGapClasses as F,surfaceClasses as R,surfaceSlots as T,transitionClasses as q}from"../../internal/styles.js";import{useStyleDefaults as B}from"../../internal/defaults.js";import{fieldLight as D,fieldSpotlightSlot as G,glowClasses as H}from"../../internal/glow.js";import{useFieldsetDisabled as K}from"../../internal/fieldset.js";const W=["group relative flex w-full cursor-text items-center","[-webkit-tap-highlight-color:transparent]",q,w,_].join(" "),J={xs:"min-h-5.5 py-0",sm:"min-h-6.5 py-[2px]",md:"min-h-8 py-[3px]",lg:"min-h-10 py-[4px]",xl:"min-h-12 py-[4px]"},Q=[R,"max-h-[min(20rem,var(--available-height))] overflow-y-auto overscroll-contain","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]",P].join(" "),U=["relative flex cursor-pointer items-center gap-2 select-none","rounded-(--neba-radius-xs) py-1.5 pe-2 ps-7",q,"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(" "),X=["inline-flex h-[1lh] shrink-0 cursor-pointer items-center justify-center","rounded-(--neba-radius-xs) text-(--neba-muted-fg)","[transition:color_var(--neba-duration)_var(--neba-ease)]","hover:text-(--n-accent)","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-1","disabled:cursor-not-allowed disabled:text-(--neba-disabled-fg)"].join(" ");function Y(e){return null==e?[]:Array.isArray(e)?e.slice():[e]}export function Combobox(w){const{variant:_="outline",size:P="md",color:R="primary",density:q="default",elevation:Z=0,items:ee,multiple:le,value:ae,defaultValue:te,onValueChange:ne,filter:ie,onInputValueChange:re,allowCustom:oe=!0,customLabel:se,clearable:ce=!1,locale:de,emptyMessage:me,limit:ue,placeholder:pe,label:be,labelPlacement:he="top",description:fe,error:ge,invalid:ve,startIcon:xe,fullWidth:ye=!1,disabled:Ne,readOnly:we=!1,required:je=!1,name:Ce,open:Le,defaultOpen:Ie,onOpenChange:Se,clearLabel:ze,openLabel:$e,removeLabel:Oe,inputRef:Ve,shortcuts:_e,id:ke,className:Me,classNames:Pe,style:Ae,"aria-label":Ee,"aria-labelledby":Fe,...Re}=B(w,["size","density","variant","locale","labelPlacement"]),Te=K(Ne),qe=!Te&&!we,Be=c(o,de),De=c(r,de),Ge=Oe??(e=>s(Be.remove,{label:e})),He=V(ge),Ke=ve??He,We=Ke?"danger":R,Je=!0===le,Qe=a.useMemo(()=>ee.map(e=>({value:e.value,label:e.label??String(e.value),disabled:e.disabled})),[ee]),[Ue,Xe]=a.useState(()=>Y(te)),Ye=void 0===ae?Ue:Y(ae),[Ze,el]=a.useState(""),ll=a.useMemo(()=>new Map(Qe.map(e=>[e.value,e])),[Qe]),al=a.useCallback(e=>ll.get(e)??{value:e,label:String(e),custom:!0},[ll]),tl=Ze.trim(),nl=tl.toLocaleLowerCase(),il=""===tl||Qe.some(e=>e.label.toLocaleLowerCase()===nl||String(e.value).toLocaleLowerCase()===nl)||Ye.some(e=>String(e).toLocaleLowerCase()===nl),rl=!oe||we||Te||il?null:tl,ol=t.useFilter({locale:de}),sl=null!==rl&&void 0!==ue&&ue>-1,cl=a.useMemo(()=>{if(null===rl)return Qe;const e={value:rl,label:rl,custom:!0};if(!sl)return[...Qe,e];return[...(!1===ie?Qe:Qe.filter(e=>ie?ie(e,rl):ol.contains(e.label,rl))).slice(0,ue),e]},[Qe,rl,sl,ie,ol,ue]),dl=Je?Ye.map(al):Ye.length>0?al(Ye[0]):null;const ml=M[q][P],ul="top"!==he&&V(be),pl=ul&&"float"===he&&!V(xe),bl=[W,x[P],A[P],O[P],Je?J[P]:j[P],`${ml} pe-1.5`,ul?"":I,Te?(ul?z:N)[_]:we?ul?`${$[_]} ${E}`:C[_]:`${(ul?S:L)[_]} ${H}`,Pe?.shell].filter(Boolean).join(" "),hl=["neba-input min-w-0 flex-1 self-stretch bg-transparent [font:inherit] text-inherit","[outline:none]","placeholder:text-(--neba-muted-fg)","caret-(--n-accent) selection:bg-(--n-soft-press)","disabled:cursor-not-allowed",pl?"neba-float-control":"",Pe?.control].filter(Boolean).join(" "),fl=l=>e(t.Input,{ref:Ve,"aria-label":Ee,"aria-labelledby":Fe,onKeyDown:b(_e),placeholder:pl?pe||" ":pe,className:Je?`${hl} min-w-16 ${l?"ms-1.5":""}`:hl}),gl=l(t.InputGroup,{className:bl,...D(qe),children:[xe?e("span",{className:"flex h-[1lh] shrink-0 items-center text-(--neba-muted-fg)",children:xe}):null,Je?e(t.Chips,{className:"flex min-w-0 flex-1 flex-wrap items-center gap-1",children:e(t.Value,{children:n=>l(a.Fragment,{children:[n.map(l=>e(t.Chip,{render:e(i,{variant:"outline",size:P,color:We,density:"compact",disabled:Te,className:Pe?.chip,endIcon:we||Te?null:e(t.ChipRemove,{"aria-label":Ge(l.label),className:v,children:e(u,{})})}),children:l.label},String(l.value))),fl(n.length>0)]})})}):fl(!1),ce&&!we?e(t.Clear,{"aria-label":ze??De.clear,className:X,children:e(u,{})}):null,e(t.Trigger,{"aria-label":"string"==typeof be?void 0:$e??Be.open,className:X,children:e(t.Icon,{className:["flex items-center","[transition:rotate_var(--neba-duration)_var(--neba-ease)]","data-[popup-open]:rotate-180"].join(" "),children:e(m,{})})}),ul?e(h,{label:be,variant:_,disabled:Te,readOnly:we,rests:pl,empty:Je?0===Ye.length&&""===Ze:void 0,labelClassName:Pe?.label}):null]});return l(n.Root,{disabled:Te,invalid:Ke,className:y("flex-col align-top",F[P],ye?"flex w-full":"inline-flex",Me??""),style:{...T(We,Z),...qe?G:void 0,...Ae},...Re,children:[be&&!ul?e(n.Label,{className:y(k[P],"font-medium",Te?"text-(--neba-disabled-fg)":"text-(--neba-fg)",Pe?.label),children:be}):null,l(t.Root,{id:ke,name:Ce,items:cl,multiple:Je,value:dl,onValueChange:e=>{!function(e){void 0===ae&&Xe(e),ne?.(Je?e:e[0]??null)}((null===e?[]:Array.isArray(e)?e:[e]).map(e=>e.value))},onInputValueChange:e=>{el(e),re?.(e)},open:Le,defaultOpen:Ie,onOpenChange:e=>Se?.(e),autoHighlight:!0,itemToStringLabel:e=>e.label,itemToStringValue:e=>String(e.value),isItemEqualToValue:(e,l)=>e.value===l.value,limit:sl?-1:ue,filter:sl||!1===ie?null:ie?(e,l)=>!0===e.custom||ie(e,l):void 0,disabled:Te,readOnly:we,required:je,children:[ul?e(f,{label:be,size:P,density:q,variant:_,rests:pl,restEnd:g(P,ce&&!we?[1.2,1.2]:[1.2]),labelClassName:Pe?.label,children:gl}):gl,e(t.Portal,{children:e(t.Positioner,{className:"neba-portal z-(--neba-z-portal) [outline:none]",sideOffset:6,children:l(t.Popup,{className:y(Q,A[P],x[P],Pe?.popup),style:T(We,3),children:[e(t.Empty,{className:"px-2 py-1.5 text-(--neba-muted-fg) empty:hidden",children:me??Be.empty}),e(t.List,{children:n=>e(t.Item,{value:n,disabled:n.disabled,className:y(U,Pe?.item),children:n.custom?l(a.Fragment,{children:[e("span",{className:"absolute start-1.5 flex size-4 items-center justify-center text-(--n-accent) [&_svg]:size-4",children:e(p,{})}),e("span",{className:"truncate",children:se?se(n.label):s(Be.add,{label:n.label})})]}):l(a.Fragment,{children:[e(t.ItemIndicator,{className:"absolute start-1.5 flex size-4 items-center justify-center",children:e(d,{})}),e("span",{className:"truncate",children:n.label})]})},`${n.custom?"custom:":""}${String(n.value)}`)})]})})})]}),fe?e(n.Description,{className:y(k[P],"text-(--neba-muted-fg)",Pe?.description),children:fe}):null,e(n.Error,He?{match:!0,className:y(k[P],"text-(--n-accent)",Pe?.error),children:ge}:{className:y(k[P],"text-(--n-accent)",Pe?.error)})]})}
1
+ "use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import*as a from"react";import{Combobox as t}from"@base-ui/react/combobox";import{Field as n}from"@base-ui/react/field";import{Chip as r}from"../chip/Chip.js";import{actionMessages as i,comboboxMessages as o,fillMessage as s,useMessages as c}from"../../internal/i18n.js";import{CheckIcon as d,ChevronIcon as m,CloseIcon as u,PlusIcon as p}from"../../internal/icons.js";import{keyHandler as b}from"../../internal/keys.js";import{FieldNotch as h,NotchFrame as f,restEndOf as g}from"../../internal/notch.js";import{chipRemoveClasses as v,controlTextLeadingClasses as x,cx as y,disabledClasses as N,fieldFocusTransitionClasses as w,fieldHeightClasses as j,fieldReadOnlyClasses as C,fieldRestClasses as L,fieldRingClasses as S,fieldSheetClasses as I,fieldSheetDisabledClasses as z,fieldSheetReadOnlyClasses as $,gapClasses as O,hasContent as V,iconClasses as _,metaTextClasses as M,paddingXClasses as k,popupFadeClasses as P,radiusClasses as A,readOnlyFilterClasses as E,stackGapClasses as F,surfaceClasses as R,surfaceSlots as T,transitionClasses as q}from"../../internal/styles.js";import{useStyleDefaults as B}from"../../internal/defaults.js";import{fieldLight as D,fieldSpotlightSlot as G,glowClasses as H}from"../../internal/glow.js";import{useFieldsetDisabled as K}from"../../internal/fieldset.js";const W=["group relative flex w-full cursor-text items-center","[-webkit-tap-highlight-color:transparent]",q,w,_].join(" "),J={xs:"min-h-5.5 py-0",sm:"min-h-6.5 py-[2px]",md:"min-h-8 py-[3px]",lg:"min-h-10 py-[4px]",xl:"min-h-12 py-[4px]"},Q=[R,"max-h-[min(20rem,var(--available-height))] overflow-y-auto overscroll-contain","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]",P].join(" "),U=["relative flex cursor-pointer items-center gap-2 select-none","rounded-(--neba-radius-xs) py-1.5 pe-2 ps-7",q,"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(" "),X=["inline-flex h-[1lh] shrink-0 cursor-pointer items-center justify-center","rounded-(--neba-radius-xs) text-(--neba-muted-fg)","[transition:color_var(--neba-duration)_var(--neba-ease)]","hover:text-(--n-accent)","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-1","disabled:cursor-not-allowed disabled:text-(--neba-disabled-fg)"].join(" ");function Y(e){return null==e?[]:Array.isArray(e)?e.slice():[e]}export function Combobox(w){const{variant:_="outline",size:P="md",color:R="primary",density:q="default",elevation:Z=0,items:ee,multiple:le,value:ae,defaultValue:te,onValueChange:ne,filter:re,onInputValueChange:ie,allowCustom:oe=!0,customLabel:se,clearable:ce=!1,locale:de,emptyMessage:me,limit:ue,placeholder:pe,label:be,labelPlacement:he="top",description:fe,error:ge,invalid:ve,startIcon:xe,fullWidth:ye=!1,disabled:Ne,readOnly:we=!1,required:je=!1,name:Ce,open:Le,defaultOpen:Se,onOpenChange:Ie,clearLabel:ze,openLabel:$e,removeLabel:Oe,inputRef:Ve,shortcuts:_e,id:Me,className:ke,classNames:Pe,style:Ae,"aria-label":Ee,"aria-labelledby":Fe,...Re}=B(w,["size","density","variant","locale","labelPlacement"]),Te=K(Ne),qe=!Te&&!we,Be=c(o,de),De=c(i,de),Ge=Oe??(e=>s(Be.remove,{label:e})),He=V(ge),Ke=ve??He,We=Ke?"danger":R,Je=!0===le,Qe=a.useMemo(()=>ee.map(e=>({value:e.value,label:e.label??String(e.value),disabled:e.disabled})),[ee]),[Ue,Xe]=a.useState(()=>Y(te)),Ye=void 0===ae?Ue:Y(ae),[Ze,el]=a.useState(""),ll=a.useMemo(()=>new Map(Qe.map(e=>[e.value,e])),[Qe]),al=a.useCallback(e=>ll.get(e)??{value:e,label:String(e),custom:!0},[ll]),tl=oe&&!we&&!Te,nl=a.useMemo(()=>{if(!tl)return null;const e=new Set;for(const l of Qe)e.add(l.label.toLocaleLowerCase()),e.add(String(l.value).toLocaleLowerCase());return e},[tl,Qe]),rl=Ze.trim();let il=null;if(nl&&""!==rl){const e=rl.toLocaleLowerCase();nl.has(e)||Ye.some(l=>String(l).toLocaleLowerCase()===e)||(il=rl)}const ol=t.useFilter({locale:de}),sl=null!==il&&void 0!==ue&&ue>-1,cl=a.useMemo(()=>{if(null===il)return Qe;const e={value:il,label:il,custom:!0};if(!sl)return[...Qe,e];return[...(!1===re?Qe:Qe.filter(e=>re?re(e,il):ol.contains(e.label,il))).slice(0,ue),e]},[Qe,il,sl,re,ol,ue]),dl=Je?Ye.map(al):Ye.length>0?al(Ye[0]):null;const ml=k[q][P],ul="top"!==he&&V(be),pl=ul&&"float"===he&&!V(xe),bl=[W,x[P],A[P],O[P],Je?J[P]:j[P],`${ml} pe-1.5`,ul?"":S,Te?(ul?z:N)[_]:we?ul?`${$[_]} ${E}`:C[_]:`${(ul?I:L)[_]} ${H}`,Pe?.shell].filter(Boolean).join(" "),hl=["neba-input min-w-0 flex-1 self-stretch bg-transparent [font:inherit] text-inherit","[outline:none]","placeholder:text-(--neba-muted-fg)","caret-(--n-accent) selection:bg-(--n-soft-press)","disabled:cursor-not-allowed",pl?"neba-float-control":"",Pe?.control].filter(Boolean).join(" "),fl=l=>e(t.Input,{ref:Ve,"aria-label":Ee,"aria-labelledby":Fe,onKeyDown:b(_e),placeholder:pl?pe||" ":pe,className:Je?`${hl} min-w-16 ${l?"ms-1.5":""}`:hl}),gl=l(t.InputGroup,{className:bl,...D(qe),children:[xe?e("span",{className:"flex h-[1lh] shrink-0 items-center text-(--neba-muted-fg)",children:xe}):null,Je?e(t.Chips,{className:"flex min-w-0 flex-1 flex-wrap items-center gap-1",children:e(t.Value,{children:n=>l(a.Fragment,{children:[n.map(l=>e(t.Chip,{render:e(r,{variant:"outline",size:P,color:We,density:"compact",disabled:Te,className:Pe?.chip,endIcon:we||Te?null:e(t.ChipRemove,{"aria-label":Ge(l.label),className:v,children:e(u,{})})}),children:l.label},String(l.value))),fl(n.length>0)]})})}):fl(!1),ce&&!we?e(t.Clear,{"aria-label":ze??De.clear,className:X,children:e(u,{})}):null,e(t.Trigger,{"aria-label":"string"==typeof be?void 0:$e??Be.open,className:X,children:e(t.Icon,{className:["flex items-center","[transition:rotate_var(--neba-duration)_var(--neba-ease)]","data-[popup-open]:rotate-180"].join(" "),children:e(m,{})})}),ul?e(h,{label:be,variant:_,disabled:Te,readOnly:we,rests:pl,empty:Je?0===Ye.length&&""===Ze:void 0,labelClassName:Pe?.label}):null]});return l(n.Root,{disabled:Te,invalid:Ke,className:y("flex-col align-top",F[P],ye?"flex w-full":"inline-flex",ke??""),style:{...T(We,Z),...qe?G:void 0,...Ae},...Re,children:[be&&!ul?e(n.Label,{className:y(M[P],"font-medium",Te?"text-(--neba-disabled-fg)":"text-(--neba-fg)",Pe?.label),children:be}):null,l(t.Root,{id:Me,name:Ce,items:cl,multiple:Je,value:dl,onValueChange:e=>{!function(e){void 0===ae&&Xe(e),ne?.(Je?e:e[0]??null)}((null===e?[]:Array.isArray(e)?e:[e]).map(e=>e.value))},onInputValueChange:e=>{el(e),ie?.(e)},open:Le,defaultOpen:Se,onOpenChange:e=>Ie?.(e),autoHighlight:!0,itemToStringLabel:e=>e.label,itemToStringValue:e=>String(e.value),isItemEqualToValue:(e,l)=>e.value===l.value,limit:sl?-1:ue,filter:sl||!1===re?null:re?(e,l)=>!0===e.custom||re(e,l):void 0,disabled:Te,readOnly:we,required:je,children:[ul?e(f,{label:be,size:P,density:q,variant:_,rests:pl,restEnd:g(P,ce&&!we?[1.2,1.2]:[1.2]),labelClassName:Pe?.label,children:gl}):gl,e(t.Portal,{children:e(t.Positioner,{className:"neba-portal z-(--neba-z-portal) [outline:none]",sideOffset:6,children:l(t.Popup,{className:y(Q,A[P],x[P],Pe?.popup),style:T(We,3),children:[e(t.Empty,{className:"px-2 py-1.5 text-(--neba-muted-fg) empty:hidden",children:me??Be.empty}),e(t.List,{children:n=>e(t.Item,{value:n,disabled:n.disabled,className:y(U,Pe?.item),children:n.custom?l(a.Fragment,{children:[e("span",{className:"absolute start-1.5 flex size-4 items-center justify-center text-(--n-accent) [&_svg]:size-4",children:e(p,{})}),e("span",{className:"truncate",children:se?se(n.label):s(Be.add,{label:n.label})})]}):l(a.Fragment,{children:[e(t.ItemIndicator,{className:"absolute start-1.5 flex size-4 items-center justify-center",children:e(d,{})}),e("span",{className:"truncate",children:n.label})]})},`${n.custom?"custom:":""}${String(n.value)}`)})]})})})]}),fe?e(n.Description,{className:y(M[P],"text-(--neba-muted-fg)",Pe?.description),children:fe}):null,e(n.Error,He?{match:!0,className:y(M[P],"text-(--n-accent)",Pe?.error),children:ge}:{className:y(M[P],"text-(--n-accent)",Pe?.error)})]})}
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as s from"react";import{Meter as r}from"@base-ui/react/meter";import{contextMessages as t,fillMessage as l,useMessages as n}from"../../internal/i18n.js";import{numberFormatter as i}from"../../internal/format.js";import{progressFraction as o,progressSlots as c,thresholdColor as m}from"../../internal/progress.js";import{cx as d,gapClasses as f,hasContent as u,metaTextClasses as x,sheetTitleClasses as h,stackGapClasses as p}from"../../internal/styles.js";import{useStyleDefaults as b}from"../../internal/defaults.js";const k=[{key:"input",slot:1},{key:"output",slot:2},{key:"reasoning",slot:3},{key:"cached",slot:4}],g={xs:26,sm:30,md:36,lg:44,xl:54},y={xs:3,sm:3.5,md:4,lg:5,xl:6},N={xs:"size-1.5",sm:"size-2",md:"size-2",lg:"size-2.5",xl:"size-3"};export const ContextWindow=/*@__PURE__*/s.forwardRef(function ContextWindow(s,v){const{max:w,used:j,tokens:z,cost:$,currency:D="USD",thresholds:W,label:_,breakdown:C=!0,size:L="md",color:M="primary",locale:R,labels:V,classNames:A,className:B,style:F,children:I,...P}=b(s,["size","locale"]),S={...n(t,R),...V},T=k.filter(({key:e})=>"number"==typeof z?.[e]),U=j??T.reduce((e,{key:a})=>"cached"===a?e:e+(z?.[a]??0),0),q=o(U,0,w),E=m(U,M,W),G=i(R,{notation:"compact",maximumFractionDigits:1}),H=i(R,{style:"currency",currency:D}),J=l(S.usage,{used:G.format(U),max:G.format(w)}),K=g[L],O=K/2,Q=y[L],X=O-Q/2,Y=2*Math.PI*X;return a("div",{ref:v,className:d("flex w-full flex-col",p[L],B??""),style:{...c(E),...F},...P,children:[a("div",{className:d("flex items-center",f[L]),children:[a(r.Root,{value:U,min:0,max:w,getAriaValueText:()=>J,className:d("flex min-w-0 flex-1 items-center",f[L]),children:[a("svg",{className:d("shrink-0",A?.ring??""),width:K,height:K,viewBox:`0 0 ${K} ${K}`,fill:"none","aria-hidden":"true",children:[e("circle",{cx:O,cy:O,r:X,stroke:"var(--n-soft)",strokeWidth:Q}),e("circle",{cx:O,cy:O,r:X,stroke:"var(--n-fill)",strokeWidth:Q,strokeLinecap:"round",strokeDasharray:Y,strokeDashoffset:Y*(1-(q??0)),transform:`rotate(-90 ${O} ${O})`,className:"[transition:stroke-dashoffset_var(--neba-duration-fill)_var(--neba-ease),stroke_var(--neba-duration)_var(--neba-ease)]"})]}),a("div",{className:d("flex min-w-0 flex-1 flex-col",A?.label??""),children:[e(r.Label,{className:d("min-w-0 truncate font-medium text-(--neba-fg)",x[L]),children:u(_)?_:S.label}),e(r.Value,{className:d("min-w-0 truncate tabular-nums text-(--neba-fg)",h[L]),children:()=>J})]})]}),"number"==typeof $?a("div",{className:"flex shrink-0 flex-col items-end",children:[e("span",{className:d("text-(--neba-muted-fg)",x[L]),children:S.cost}),e("span",{className:d("tabular-nums text-(--neba-fg)",h[L]),children:H.format($)})]}):null]}),C&&T.length>0?e("ul",{className:d("m-0 flex list-none flex-wrap gap-x-4 gap-y-1 p-0",x[L],A?.breakdown??""),children:T.map(({key:s,slot:r})=>a("li",{className:"flex items-center gap-1.5",children:[e("span",{"aria-hidden":"true",className:d("shrink-0 rounded-[2px]",N[L]),style:{background:`var(--neba-chart-${r})`}}),e("span",{className:"text-(--neba-muted-fg)",children:S[s]}),e("span",{className:"tabular-nums text-(--neba-fg)",children:G.format(z?.[s]??0)})]},s))}):null,I]})});
1
+ "use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as s from"react";import{Meter as r}from"@base-ui/react/meter";import{contextMessages as t,fillMessage as l,useMessages as n}from"../../internal/i18n.js";import{numberFormatter as i}from"../../internal/format.js";import{progressFraction as o,progressSlots as m,thresholdColor as c}from"../../internal/progress.js";import{cx as d,gapClasses as f,hasContent as u,metaTextClasses as x,sheetTitleClasses as h,stackGapClasses as p}from"../../internal/styles.js";import{useStyleDefaults as b}from"../../internal/defaults.js";import{useIntlLocale as k}from"../../internal/media.js";const g=[{key:"input",slot:1},{key:"output",slot:2},{key:"reasoning",slot:3},{key:"cached",slot:4}],y={xs:26,sm:30,md:36,lg:44,xl:54},N={xs:3,sm:3.5,md:4,lg:5,xl:6},v={xs:"size-1.5",sm:"size-2",md:"size-2",lg:"size-2.5",xl:"size-3"};export const ContextWindow=/*@__PURE__*/s.forwardRef(function ContextWindow(s,w){const{max:j,used:z,tokens:$,cost:D,currency:W="USD",thresholds:_,label:C,breakdown:L=!0,size:M="md",color:R="primary",locale:V,labels:A,classNames:B,className:F,style:I,children:P,...S}=b(s,["size","locale"]),T=n(t,V),U=k(V),q={...T,...A},E=g.filter(({key:e})=>"number"==typeof $?.[e]),G=z??E.reduce((e,{key:a})=>"cached"===a?e:e+($?.[a]??0),0),H=o(G,0,j),J=c(G,R,_),K=i(U,{notation:"compact",maximumFractionDigits:1}),O=i(U,{style:"currency",currency:W}),Q=l(q.usage,{used:K.format(G),max:K.format(j)}),X=y[M],Y=X/2,Z=N[M],ee=Y-Z/2,ae=2*Math.PI*ee;return a("div",{ref:w,className:d("flex w-full flex-col",p[M],F??""),style:{...m(J),...I},...S,children:[a("div",{className:d("flex items-center",f[M]),children:[a(r.Root,{value:G,min:0,max:j,getAriaValueText:()=>Q,className:d("flex min-w-0 flex-1 items-center",f[M]),children:[a("svg",{className:d("shrink-0",B?.ring??""),width:X,height:X,viewBox:`0 0 ${X} ${X}`,fill:"none","aria-hidden":"true",children:[e("circle",{cx:Y,cy:Y,r:ee,stroke:"var(--n-soft)",strokeWidth:Z}),e("circle",{cx:Y,cy:Y,r:ee,stroke:"var(--n-fill)",strokeWidth:Z,strokeLinecap:"round",strokeDasharray:ae,strokeDashoffset:ae*(1-(H??0)),transform:`rotate(-90 ${Y} ${Y})`,className:"[transition:stroke-dashoffset_var(--neba-duration-fill)_var(--neba-ease),stroke_var(--neba-duration)_var(--neba-ease)]"})]}),a("div",{className:d("flex min-w-0 flex-1 flex-col",B?.label??""),children:[e(r.Label,{className:d("min-w-0 truncate font-medium text-(--neba-fg)",x[M]),children:u(C)?C:q.label}),e(r.Value,{className:d("min-w-0 truncate tabular-nums text-(--neba-fg)",h[M]),children:()=>Q})]})]}),"number"==typeof D?a("div",{className:"flex shrink-0 flex-col items-end",children:[e("span",{className:d("text-(--neba-muted-fg)",x[M]),children:q.cost}),e("span",{className:d("tabular-nums text-(--neba-fg)",h[M]),children:O.format(D)})]}):null]}),L&&E.length>0?e("ul",{className:d("m-0 flex list-none flex-wrap gap-x-4 gap-y-1 p-0",x[M],B?.breakdown??""),children:E.map(({key:s,slot:r})=>a("li",{className:"flex items-center gap-1.5",children:[e("span",{"aria-hidden":"true",className:d("shrink-0 rounded-[2px]",v[M]),style:{background:`var(--neba-chart-${r})`}}),e("span",{className:"text-(--neba-muted-fg)",children:q[s]}),e("span",{className:"tabular-nums text-(--neba-fg)",children:K.format($?.[s]??0)})]},s))}):null,P]})});
@@ -215,7 +215,9 @@ export interface DataTableProps<Row> extends NebaStyleProps, Omit<React.Componen
215
215
  /**
216
216
  * Leaves the rows that are off screen out of the DOM. Needs a `height` or a
217
217
  * `maxHeight` to have anything to measure against; without one every row is
218
- * rendered whatever this says.
218
+ * rendered whatever this says, and so is every row of a grouped table. A
219
+ * development build says so in the console when either draws more than 500
220
+ * rows; `false` says that every row is meant to be drawn.
219
221
  * @default true
220
222
  */
221
223
  virtual?: boolean;
@@ -313,6 +315,16 @@ export interface DataTableProps<Row> extends NebaStyleProps, Omit<React.Componen
313
315
  /** @default 1 */
314
316
  defaultPage?: number;
315
317
  onPageChange?: (page: number) => void;
318
+ /**
319
+ * The address of a page, which turns the footer's page numbers into real
320
+ * links — the same prop on Pagination, handed through.
321
+ *
322
+ * Without it the pages are buttons, and a crawler cannot press one, so the
323
+ * rows past the first page are out of its reach. A press on a link still
324
+ * moves the table without leaving the page; a press with a modifier key is
325
+ * left to the browser, which opens the address.
326
+ */
327
+ getPageHref?: (page: number) => string;
316
328
  /** How many rows a page holds. Use with `onPageSizeChange`. */
317
329
  pageSize?: number;
318
330
  /** @default 25 */
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as t,Fragment as n}from"react/jsx-runtime";import*as r from"react";import{Box as a}from"../box/Box.js";import{Button as o}from"../button/Button.js";import{Checkbox as l}from"../checkbox/Checkbox.js";import{Pagination as i}from"../pagination/Pagination.js";import{Select as s}from"../select/Select.js";import{TextField as c}from"../text-field/TextField.js";import{compareValues as u,dataHeaderHeights as d,dataRowHeights as p,dataTickWidths as f,defaultColumnWidth as g,isEmptyValue as m,keysBetween as h,minColumnWidth as y,nextSort as b,pageBounds as v,sortRows as k,virtualWindow as w}from"../../internal/data-table.js";import{beginPointerDrag as x,drawnScale as S}from"../../internal/drag.js";import{dateFormatter as C}from"../../internal/format.js";import{emptyMessages as M,fillMessage as N,tableMessages as _,useMessages as R}from"../../internal/i18n.js";import{searchHaystack as K,searchText as A}from"../../internal/search.js";import{ChevronIcon as $}from"../../internal/icons.js";import{observeResize as T}from"../../internal/observe.js";import{downloadText as D,toCsv as z}from"../../internal/csv.js";import{controlTextLeadingClasses as j,cx as I,hasContent as E,insetRingClasses as P,metaTextClasses as B,paddingXValues as F,srOnlyClasses as H,toLength as O,transitionClasses as W}from"../../internal/styles.js";import{useStyleDefaults as L}from"../../internal/defaults.js";const V=["[--n-row:transparent]","[transition:background-color_var(--neba-duration)_var(--neba-ease)]"].join(" "),X={"--n-stripe":"color-mix(in oklab, var(--neba-fg) 4%, transparent)"},q=["group/sort flex w-full min-w-0 cursor-pointer items-center gap-1","text-inherit [outline:none]","[transition:color_var(--neba-duration)_var(--neba-ease)]","hover:text-(--n-accent)","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-1","[&_svg]:pointer-events-none [&_svg]:size-[1.15em] [&_svg]:shrink-0"].join(" "),G="Alt+ArrowLeft Alt+ArrowRight";function U(e){const t=e.currentTarget;t.scrollWidth>t.clientWidth?t.title=t.textContent??"":t.removeAttribute("title")}const Y='button, a, input, select, textarea, label, [role="button"], [role="checkbox"], [role="switch"], [role="radio"]',J={start:"shadow-[inset_2px_0_0_var(--n-accent)] rtl:shadow-[inset_-2px_0_0_var(--n-accent)]",end:"shadow-[inset_-2px_0_0_var(--n-accent)] rtl:shadow-[inset_2px_0_0_var(--n-accent)]"},Q='[data-neba-tick] [role="checkbox"], [data-neba-editor]';function Z(e,t){return"boolean"==typeof e?String(e):e instanceof Date?Number.isNaN(e.getTime())?"":C(t,{dateStyle:"medium"}).format(e):e}function SearchIcon(){return t("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[e("circle",{cx:"7.25",cy:"7.25",r:"4.75",stroke:"currentColor",strokeWidth:"1.5"}),e("path",{d:"m10.75 10.75 2.75 2.75",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}export function DataTable(C){const{headers:ee,items:te,getRowKey:ne,variant:re="outline",size:ae="sm",color:oe="primary",density:le="compact",elevation:ie=0,height:se,maxHeight:ce,rowHeight:ue,striped:de=!1,hoverable:pe=!0,stickyHeader:fe=!0,caption:ge,label:me,empty:he,virtual:ye=!0,overscan:be=8,sortable:ve=!1,sortMode:ke="single",sort:we,defaultSort:xe,onSortChange:Se,resizable:Ce=!1,columnWidths:Me,columnOrder:Ne,defaultColumnOrder:_e,onColumnOrderChange:Re,reorderable:Ke=!1,defaultColumnWidths:Ae,onColumnWidthsChange:$e,selectionMode:Te="none",selected:De,defaultSelected:ze,onSelectedChange:je,checkboxes:Ie=!1,onRowClick:Ee,onRowActivate:Pe,paging:Be="scroll",page:Fe,defaultPage:He=1,onPageChange:Oe,pageSize:We,defaultPageSize:Le=25,onPageSizeChange:Ve,pageSizeOptions:Xe=[10,25,50,100],footer:qe,search:Ge,defaultSearch:Ue,onSearchChange:Ye,searchable:Je=!1,searchPlaceholder:Qe,filter:Ze,toolbar:et,exportable:tt=!1,exportFileName:nt="table.csv",onExport:rt,exportEscapeFormulas:at=!0,onCellEdit:ot,groupBy:lt,collapsibleGroups:it=!0,defaultCollapsedGroups:st,manual:ct=!1,rowCount:ut,locale:dt,className:pt,style:ft,...gt}=L(C,["size","density","variant","locale"]),mt=R(_,dt),ht=R(M,dt),yt=r.useId(),bt=ue??p[le][ae],vt=d[le][ae],kt=F[le][ae],wt=r.useMemo(()=>new Set(!0===ct?["sort","filter","pages"]:ct||[]),[ct]),[xt,St]=r.useState(()=>_e??[]),Ct=Ne??xt,Mt=e=>{void 0===Ne&&St(e),Re?.(e)},Nt=r.useMemo(()=>{const e=ee.filter(e=>!e.hidden),t=Ct.map(t=>e.find(e=>e.key===t)).filter(e=>void 0!==e),n=e.filter(e=>!Ct.includes(e.key)),r=0===Ct.length?e:[...t,...n],a=e=>"start"===e.pinned?0:"end"===e.pinned?2:1;return r.map((e,t)=>({column:e,index:t})).sort((e,t)=>a(e.column)-a(t.column)||e.index-t.index).map(e=>e.column)},[ee,Ct]),_t=Nt.some(e=>void 0!==e.group),Rt=_t?2:1,Kt="none"!==Te,At="multiple"===Te,$t=Kt&&Ie,Tt=void 0!==ot&&Nt.some(e=>void 0!==e.editable),Dt=Kt||void 0!==Pe||Tt,zt=r.useMemo(()=>te.map((e,t)=>{const n=ne?ne(e,t):t;return{row:e,identity:n,key:String(n),origin:t}}),[te,ne]),[jt,It]=r.useState(Ue??""),Et=(Ge??jt).trim(),Pt=r.useMemo(()=>Nt.filter(e=>!1!==e.searchable),[Nt]),Bt=r.useMemo(()=>{let e=null;return()=>e??=zt.map(e=>K(Pt.map(t=>t.value?t.value(e.row):e.row[t.key])))},[zt,Pt]),Ft=r.useMemo(()=>{if(wt.has("filter"))return zt;const e=A(Et);let t=zt;if(""!==e&&Pt.length>0){const n=Bt();t=zt.filter(t=>n[t.origin].includes(e))}return Ze?t.filter(e=>Ze(e.row,e.origin)):t},[zt,Et,Ze,wt,Pt,Bt]),Ht=r.useMemo(()=>new Intl.Collator(dt,{numeric:!0,sensitivity:"base"}),[dt]),[Ot,Wt]=r.useState(xe??[]),Lt=we??Ot,Vt=r.useMemo(()=>wt.has("sort")?Ft:k(Ft,Lt,e=>{const t=Nt.find(t=>t.key===e);if(!t)return null;if(t.compare)return(e,n)=>t.compare(e.row,n.row);const n=t.value?t.value:e=>e[t.key];return{compare:(e,t)=>u(n(e.row),n(t.row),Ht),isEmpty:e=>m(n(e.row))}}),[Ft,Lt,Nt,Ht,wt]),[Xt,qt]=r.useState(He),[Gt,Ut]=r.useState(Le),Yt=We??Gt,[Jt,Qt]=r.useState(()=>new Set(st??[])),Zt=r.useMemo(()=>{if(!lt)return null;const e=[],t=new Map;for(const n of Vt){const r=lt(n.row)??"";t.has(r)||(t.set(r,[]),e.push(r)),t.get(r).push(n)}return{order:[...e].sort((e,t)=>""===e?-1:""===t?1:0),byLabel:t}},[Vt,lt]),en=r.useMemo(()=>Zt?Zt.order.flatMap(e=>Jt.has(e)?[]:Zt.byLabel.get(e)??[]):Vt,[Zt,Jt,Vt]),tn=wt.has("pages")?ut??en.length:en.length,nn=v(tn,Fe??Xt,Yt),rn=r.useMemo(()=>"pages"!==Be||wt.has("pages")?en:en.slice(nn.start,nn.end),[en,Be,wt,nn.start,nn.end]),an="pages"===Be?nn.start:0,on=r.useMemo(()=>rn.map(e=>e.key),[rn]),ln=r.useMemo(()=>new Map(on.map((e,t)=>[e,t])),[on]),sn=r.useMemo(()=>new Map(zt.map(e=>[e.key,e])),[zt]),[cn,un]=r.useState(ze??[]),dn=De??cn,pn=r.useMemo(()=>new Set(dn.map(String)),[dn]),[fn,gn]=r.useState(null),mn=r.useRef(null),hn=r.useRef({paged:rn,pagedKeys:on,byKey:sn,selectedKeys:pn,selectedValues:dn,multiple:At});hn.current={paged:rn,pagedKeys:on,byKey:sn,selectedKeys:pn,selectedValues:dn,multiple:At};const yn=r.useCallback(e=>{const t=[],n=[],r=wt.has("pages")?new Map(hn.current.selectedValues.map(e=>[String(e),e])):null;for(const a of e){const e=hn.current.byKey.get(a);e?(t.push(e.identity),n.push(e.row)):r?.has(a)&&t.push(r.get(a))}void 0===De&&un(t),je?.(t,n)},[De,je,wt]),bn=r.useCallback(e=>{mn.current=e,yn([e])},[yn]),vn=r.useCallback(e=>{const t=hn.current.selectedKeys,n=new Set(t);n.has(e)?n.delete(e):n.add(e),mn.current=e,yn([...n])},[yn]),kn=r.useCallback((e,t)=>{const n=hn.current.pagedKeys,r=mn.current??n[0];if(void 0===r)return;const a=h(n,r,e);0!==a.length?yn(t?[...new Set([...hn.current.selectedKeys,...a])]:a):n.includes(e)&&(mn.current=e,yn(t?[...new Set([...hn.current.selectedKeys,e])]:[e]))},[yn]),wn=r.useRef(null),xn=r.useRef(null),Sn=r.useRef(null),Cn=r.useRef(null),[Mn,Nn]=r.useState(0),[_n,Rn]=r.useState(0),Kn=void 0!==se||void 0!==ce,An=void 0!==lt,$n=ye&&Kn&&rn.length>0&&!lt;r.useLayoutEffect(()=>{const e=wn.current;if(e&&$n)return Nn(e.clientHeight),T(e,e=>Nn(e.contentRect.height))},[$n]);const Tn=r.useCallback(e=>{if(!$n)return;const t=Math.floor(e.currentTarget.scrollTop/bt)*bt;Rn(e=>e===t?e:t)},[$n,bt]),Dn=$n?w(_n,Mn,bt,rn.length,be):{start:0,end:rn.length,before:0,after:0},zn=rn.slice(Dn.start,Dn.end),jn=Dt&&null!==fn&&zn.some(e=>e.key===fn),[In,En]=r.useState(Ae??{}),Pn=Me??In,Bn=r.useCallback(e=>{void 0===Me&&En(e),$e?.(e)},[Me,$e]),Fn=r.useRef(new Map),Hn=r.useRef(null),On=r.useRef(null),[Wn,Ln]=r.useState(null),[Vn,Xn]=r.useState(null),qn=r.useRef(null),Gn=r.useRef(null);r.useEffect(()=>()=>{Hn.current?.(),On.current?.()},[]);const Un=()=>{const e={...Pn};for(const t of Nt){const n=Fn.current.get(t.key);n&&void 0===e[t.key]&&(e[t.key]=n.offsetWidth)}return e},Yn=e=>Nt.find(t=>t.key===e)?.minWidth??y,Jn=r.useRef(null);r.useLayoutEffect(()=>{const e=Jn.current;if(null===e)return;Jn.current=null;const t=Fn.current.get(e),n=t?.querySelector("button")??t;n&&n!==document.activeElement&&n.focus()});const Qn=r.useCallback((e,t)=>{const n=wn.current,r=xn.current;if(!n||!r)return;const a=function(e,t){for(let n=0;n<e.rows.length;n+=1)if(e.rows[n].dataset.nebaRow===t)return e.rows[n];return null}(r,e);if(!Kn)return void a?.scrollIntoView({block:"nearest",inline:"nearest"});const o=n.getBoundingClientRect().top+n.clientTop-n.scrollTop,l=(a??r).getBoundingClientRect(),i=l.top-o+(a?0:t*bt),s=i+(a?l.height:bt),c=fe?Sn.current?.tHead?.getBoundingClientRect().height??0:0;i<n.scrollTop+c?n.scrollTop=Math.max(0,Math.floor(i-c)):s>n.scrollTop+n.clientHeight&&(n.scrollTop=Math.ceil(s-n.clientHeight))},[Kn,fe,bt]),Zn=(e,t,n=!0)=>{const r=hn.current.paged,a=Math.min(Math.max(e,0),r.length-1),o=r[a];o&&(t.preventDefault(),gn(o.key),Qn(o.key,a),Kt&&(t.shiftKey&&hn.current.multiple?kn(o.key,!1):!n||t.ctrlKey||t.metaKey||bn(o.key)))},er=(e,t,n)=>{const r=wn.current;if(!r||!Kn)return;n.preventDefault();const a=Math.max(0,r.scrollHeight-r.clientHeight),o="start"===e?0:"end"===e?a:r.scrollTop+e;r.scrollTop=Math.min(Math.max(o,0),a),Zn(t,n,!1)};const tr=r.useCallback(e=>{const t=xn.current,n=hn.current.paged;if(!t||0===n.length)return null;if(An){const r=t.querySelectorAll("tr[data-neba-row]");let a=0,o=r.length-1,l=0;for(;a<=o;){const t=a+o>>1;r[t].getBoundingClientRect().top<=e?(l=t,a=t+1):o=t-1}return Math.min(l,n.length-1)}const r=t.getBoundingClientRect().top,a=Math.floor((e-r)/bt);return Math.min(Math.max(a,0),n.length-1)},[bt,An]),nr=r.useRef(null),rr=r.useCallback(e=>{const t=tr(e),n=null===t?void 0:hn.current.paged[t],r=nr.current;!n||r&&r.key===n.key||(r&&(r.key=n.key),gn(n.key),kn(n.key,!1))},[tr,kn]),ar=r.useRef(rr);ar.current=rr;function or(e,t){if(Cn.current=null,Kt){if(!t.target.closest(Y))if("touch"!==t.pointerType)if(Sn.current?.focus({preventScroll:!0}),gn(e.key),2!==t.button){if(0===t.button)return t.shiftKey&&At?(t.preventDefault(),void kn(e.key,t.ctrlKey||t.metaKey)):void((t.ctrlKey||t.metaKey)&&At?vn(e.key):(bn(e.key),At&&((e,t)=>{const n=Sn.current;if(nr.current||!n)return;const r=e.clientY,a=()=>{const e=nr.current,t=wn.current;e&&t&&0!==e.speed?(t.scrollTop+=e.speed,ar.current(e.y),e.frame=requestAnimationFrame(a)):e&&(e.frame=null)};let o=()=>{};const l=()=>{const e=nr.current;null!=e?.frame&&cancelAnimationFrame(e.frame),nr.current=null,o()};nr.current={y:r,speed:0,frame:null,stop:l,key:t},o=x({target:n,pointerId:e.pointerId,onMove:e=>{const t=nr.current,n=wn.current;if(!t)return;if(t.y=e.clientY,ar.current(t.y),!n||!Kn)return;const r=n.getBoundingClientRect(),o=r.top+bt-t.y,l=t.y-(r.bottom-bt);t.speed=o>0?-Math.min(o,40):l>0?Math.min(l,40):0,0!==t.speed&&null===t.frame&&(t.frame=requestAnimationFrame(a))},onEnd:l,capture:!1,mark:!1})})(t,e.key)))}else hn.current.selectedKeys.has(e.key)||bn(e.key);else Cn.current=e.key}else Dt&&!t.target.closest(Y)&&gn(e.key)}r.useEffect(()=>()=>nr.current?.stop(),[]);const lr=r.useMemo(()=>on.reduce((e,t)=>pn.has(t)?e+1:e,0),[on,pn]),ir=on.length>0&&lr===on.length,sr=f[ae],cr=e=>Pn[e.key]??e.width,ur=($t?sr:0)+Nt.reduce((e,t)=>e+(cr(t)??y),0),dr=Nt.length>0&&Nt.every(e=>void 0!==cr(e)),pr=Nt.length+($t?1:0)+(dr?1:0),fr=r.useMemo(()=>{const e=[];return Nt.forEach((t,n)=>{const r=e[e.length-1];r&&void 0!==r.label&&r.label===t.group?r.span+=1:e.push({label:t.group,span:1,from:n})}),e},[Nt]),gr=r.useMemo(()=>{const e=new Map,t=new Map;let n=$t?sr:0;for(const t of Nt)"start"===t.pinned&&(e.set(t.key,n),n+=cr(t)??g);let r=0;for(let e=Nt.length-1;e>=0;e-=1){const n=Nt[e];"end"===n.pinned&&(t.set(n.key,r),r+=cr(n)??g)}return{start:e,end:t}},[Nt,Pn,$t,sr]),mr=(e,t,n)=>({position:"sticky",insetInlineStart:"start"===e?`${t}px`:void 0,insetInlineEnd:"end"===e?`${t}px`:void 0,zIndex:n?21:1,backgroundColor:"var(--n-panel-press)",backgroundImage:n?void 0:"linear-gradient(var(--n-row), var(--n-row))"}),hr=(e,t)=>{if(!e.pinned)return{};const n="start"===e.pinned?gr.start.get(e.key):gr.end.get(e.key);return mr(e.pinned,n??0,t)},yr=Nt.some(e=>"start"===e.pinned),br=e=>yr?mr("start",0,e):{},vr={padding:`0 ${kt}`,borderBottom:"1px solid var(--n-line)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},kr={...vr,height:`${vt}px`,backgroundColor:"var(--n-panel-press)",color:"var(--n-cell-ink, var(--neba-muted-fg))"},wr="odd"===de?0:1,xr=r.useMemo(()=>new Intl.NumberFormat(dt),[dt]),Sr=qe??"pages"===Be,Cr=N(mt.range,{start:xr.format(0===tn?0:("pages"===Be?nn.start:0)+1),end:xr.format("pages"===Be?nn.end:tn),total:xr.format(tn)}),Mr=Kt&&pn.size>0?N(mt.selected,{count:xr.format(pn.size)}):"",Nr=e=>{void 0===Fe&&qt(e),Oe?.(e)},_r=(n,r)=>{const a=pn.has(n.key),o=fn===n.key;return t("tr",{id:`${yt}-${n.key}`,"aria-selected":Kt?a:void 0,"aria-rowindex":$n?r+Rt+1:void 0,"data-neba-row":n.key,className:I(V,a?"[--n-row:var(--n-soft-press)]":!1!==de&&r%2===wr?"[--n-row:var(--n-stripe)]":"",!a&&pe?"hover:[--n-row:var(--n-soft)]":"",o&&Dt?"[box-shadow:inset_0_0_0_1px_var(--n-ring)]":"",Kt||Ee?"cursor-default":""),style:{height:`${bt}px`,backgroundColor:"var(--n-row)"},onPointerDown:e=>or(n,e),onClick:e=>{e.target.closest(Q)||(Cn.current===n.key&&(Cn.current=null,Sn.current?.focus({preventScroll:!0}),gn(n.key),bn(n.key)),Ee?.(n.row,an+r,e))},onDoubleClick:e=>{e.target.closest(Q)||Pe?.(n.row,an+r)},children:[$t?Fr(n):null,Nt.map((t,a)=>{const o=jr(t,n.row),l=$r?.key===n.key&&$r.column===t.key;return e("td",{id:$t&&0===a?Br(n):void 0,role:Dt?"gridcell":void 0,style:{...vr,...hr(t,!1),textAlign:t.align??"start",cursor:o&&!l?"cell":void 0},onPointerEnter:t.render||l?void 0:U,onDoubleClick:o?e=>{e.stopPropagation(),zr(n.key,t.key)}:void 0,children:l?Ir(n,t):t.render?t.render(n.row,an+r):Z(n.row[t.key],dt)},t.key)}),dr?e("td",{"aria-hidden":"true",style:{...vr,padding:0}}):null]},n.key)},Rr=e=>{const t=Nt.map(e=>e.key);return null!==Wn&&t.indexOf(Wn)<t.indexOf(e)?"end":"start"},Kr=(r,a,o)=>{const l=r.sortable??ve,i=r.resizable??Ce,s=Ke&&!r.pinned,c=(u=r.key,Lt.find(e=>e.key===u));var u;const d=c?Lt.findIndex(e=>e.key===r.key)+1:0,p=r.headerAlign??r.align??"start",f=i&&a<Nt.length-1,m=f||d>1?`${yt}-head-${a}`:void 0;return t("th",{"aria-labelledby":m,ref:e=>{e?Fn.current.set(r.key,e):Fn.current.delete(r.key)},scope:"col",rowSpan:o,"aria-sort":c&&1===d?"asc"===c.direction?"ascending":"descending":void 0,"data-column":r.key,"data-dragging":Wn===r.key||void 0,className:I("relative font-semibold select-none",fe?"sticky z-20 [backdrop-filter:var(--neba-blur)]":"",s?Wn===r.key?"cursor-grabbing":"cursor-grab":"",s&&!l?P:"",Vn===r.key?J[Rr(r.key)]:""),style:{...kr,...hr(r,!0),backgroundImage:Wn===r.key?"linear-gradient(var(--n-soft), var(--n-soft))":void 0,top:fe?2!==o&&_t?vt:0:void 0,textAlign:p,color:c?"var(--n-cell-ink, var(--n-accent))":kr.color},tabIndex:s&&!l?0:void 0,"aria-keyshortcuts":s&&!l?G:void 0,onPointerDown:s?e=>((e,t)=>{if(0!==t.button)return;const n=t.currentTarget,r=t.clientX;let a=!1;On.current=x({target:n,pointerId:t.pointerId,capture:!1,onMove:t=>{if(!a){if(Math.abs(t.clientX-r)<6)return;a=!0,qn.current=e,Ln(e)}const n=Nt.find(e=>{if(e.pinned)return!1;const n=Fn.current.get(e.key);if(!n)return!1;const r=n.getBoundingClientRect();return t.clientX>=r.left&&t.clientX<=r.right});Gn.current=n&&n.key!==e?n.key:null,Xn(Gn.current)},onEnd:()=>{const e=qn.current,t=Gn.current;if(On.current=null,qn.current=null,Gn.current=null,Ln(null),Xn(null),e&&t&&e!==t){const n=Nt.map(e=>e.key),r=n.indexOf(e),a=n.indexOf(t);n.splice(a,0,...n.splice(r,1)),Mt(n)}}})})(r.key,e):void 0,onKeyDown:s?e=>((e,t)=>{if(!t.altKey||"ArrowLeft"!==t.key&&"ArrowRight"!==t.key)return;t.preventDefault();const n="rtl"===getComputedStyle(t.currentTarget).direction,r="ArrowRight"===t.key!==n?1:-1,a=Nt.map(e=>e.key),o=a.indexOf(e),l=Nt[o+r];l&&!l.pinned&&(a.splice(o+r,0,...a.splice(o,1)),Jn.current=e,Mt(a))})(r.key,e):void 0,children:[l?t("button",{type:"button","aria-keyshortcuts":s?G:void 0,className:I(q,"end"===p?"justify-end":"center"===p?"justify-center":"justify-start"),onClick:e=>((e,t)=>{const n=b(Lt,e,t&&"multiple"===ke);void 0===we&&Wt(n),Se?.(n)})(r.key,e.shiftKey),children:[e("span",{id:m,className:"min-w-0 truncate",children:r.label??r.key}),e("span",{"aria-hidden":"true",className:I("flex items-center","desc"===c?.direction?"rotate-0":"rotate-180",c?"":"text-transparent group-hover/sort:text-inherit group-focus-visible/sort:text-inherit"),children:e($,{})}),d>1?t(n,{children:[e("span",{"aria-hidden":"true",className:"text-[0.85em] tabular-nums",children:d}),t("span",{className:H,children:[" ",N("desc"===c?.direction?mt.sortDescending:mt.sortAscending,{order:xr.format(d)})]})]}):null]}):e("span",{id:m,className:"block truncate",children:r.label??r.key}),f?e("span",{role:"separator","aria-orientation":"vertical","aria-label":N(mt.resizeColumn,{column:"string"==typeof r.label?r.label:r.key}),"aria-valuenow":Pn[r.key]??r.width,"aria-valuemin":Yn(r.key),tabIndex:0,className:"absolute inset-y-0 z-10 w-2 cursor-col-resize select-none end-0 translate-x-1/2 rtl:-translate-x-1/2 after:absolute after:inset-y-1 after:start-1/2 after:w-px after:[background:transparent] after:[transition:background_var(--neba-duration)_var(--neba-ease)] hover:after:[background:var(--n-accent)] data-[dragging]:after:[background:var(--n-accent)] focus-visible:after:[background:var(--n-accent)] [outline:0_solid_transparent] focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-0",onFocus:e=>{const t=Fn.current.get(r.key);t&&!e.currentTarget.hasAttribute("aria-valuenow")&&e.currentTarget.setAttribute("aria-valuenow",String(t.offsetWidth))},onPointerDown:e=>((e,t)=>{t.preventDefault(),t.stopPropagation();const n=t.currentTarget,r=Un(),a=Fn.current.get(e),o=a?S(a).x:1,l="rtl"===getComputedStyle(n).direction,i=t.clientX,s=r[e]??g,c=Yn(e);Hn.current=x({target:n,pointerId:t.pointerId,onMove:t=>{const n=(t.clientX-i)/o*(l?-1:1);Bn({...r,[e]:Math.max(c,Math.round(s+n))})},onEnd:()=>{Hn.current=null}})})(r.key,e),onDoubleClick:()=>(e=>{const t={...Pn};delete t[e],Bn(t)})(r.key),onKeyDown:e=>((e,t)=>{if("ArrowLeft"!==t.key&&"ArrowRight"!==t.key)return;t.preventDefault(),t.stopPropagation();const n="rtl"===getComputedStyle(t.currentTarget).direction,r="ArrowRight"===t.key!==n,a=Un(),o=a[e]??g;Bn({...a,[e]:Math.max(Yn(e),o+(r?16:-16))})})(r.key,e)}):null]},r.key)},Ar=(n,r)=>{const a=Jt.has(n),o=it,l=r.map(e=>e.row),i=()=>Qt(e=>{const t=new Set(e);return t.has(n)?t.delete(n):t.add(n),t}),s=t("span",{className:"flex min-w-0 items-center gap-1.5",children:[o?e("span",{"aria-hidden":"true",className:I("flex items-center text-(--neba-muted-fg)","[transition:rotate_var(--neba-duration)_var(--neba-ease)]",a?"-rotate-90 rtl:rotate-90":""),children:e($,{})}):null,e("span",{className:"truncate font-semibold",children:""===n?mt.noGroup:n}),e("span",{className:"shrink-0 text-(--neba-muted-fg) tabular-nums",children:xr.format(r.length)})]});return t("tr",{"data-neba-group":n,style:{height:`${bt}px`,backgroundColor:"var(--n-soft)"},children:[$t?e("td",{style:{...vr,padding:0,...br(!1)}}):null,Nt.map((t,n)=>e("td",{colSpan:1,style:{...vr,...hr(t,!1),textAlign:0===n?"start":t.align??"start"},children:0===n?o?e("button",{type:"button","aria-expanded":!a,className:`flex w-full min-w-0 items-center text-start ${W} focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:[outline-offset:-2px]`,onClick:i,children:s}):s:t.aggregate?e("span",{className:"tabular-nums",children:t.aggregate(l)}):null},t.key)),dr?e("td",{"aria-hidden":"true",style:{...vr,padding:0}}):null]})},[$r,Tr]=r.useState(null),Dr=r.useRef(!1);function zr(e,t){Dr.current=!1,Tr({key:e,column:t})}const jr=(e,t)=>void 0!==ot&&("function"==typeof e.editable?e.editable(t):Boolean(e.editable)),Ir=(t,n)=>{const r=n.value?n.value(t.row):t.row[n.key],a=e=>{Tr(null);const a="number"===n.editType?Number(e):e;("number"!==n.editType||""!==e.trim()&&!Number.isNaN(a))&&String(a)!==String(r??"")&&ot?.(t.row,n,a)};return e("input",{autoFocus:!0,"data-neba-editor":"",type:"number"===n.editType?"number":"text",defaultValue:null==r?"":String(r),"aria-label":"string"==typeof n.label?n.label:n.key,className:"neba-input w-full bg-transparent [font:inherit] text-inherit [outline:none]",style:{textAlign:n.align??"start"},onPointerDown:e=>e.stopPropagation(),onBlur:e=>{Dr.current||a(e.currentTarget.value)},onKeyDown:e=>{"Enter"!==e.key&&"Escape"!==e.key||(e.stopPropagation(),Dr.current=!0,"Enter"===e.key?(e.preventDefault(),a(e.currentTarget.value)):Tr(null),Sn.current?.focus({preventScroll:!0}))}})},Er=t=>e("span",{className:"flex items-center justify-center",children:t}),Pr=`${yt}-tick`,Br=e=>`${yt}-first-${e.origin}`,Fr=t=>e("td",{"data-neba-tick":"",role:Kt?"gridcell":void 0,style:{...vr,padding:0,overflow:"visible",...br(!1)},children:Er(e(l,{size:ae,color:oe,checked:pn.has(t.key),tabIndex:-1,"aria-labelledby":Nt.length>0?`${Pr} ${Br(t)}`:void 0,"aria-label":Nt.length>0?void 0:mt.selectRow,onCheckedChange:()=>{At?vn(t.key):bn(t.key)}}))}),Hr=At?Er(e(l,{size:ae,color:oe,checked:ir,indeterminate:lr>0&&!ir,"aria-label":mt.selectAll,onCheckedChange:()=>{if(ir){const e=new Set(on);yn([...pn].filter(t=>!e.has(t)))}else yn([...new Set([...pn,...on])])}})):null,Or=dr?e("th",{"aria-hidden":"true",className:I(fe?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{...kr,padding:0}}):null,Wr=(t,n)=>n>0?e("tr",{"aria-hidden":"true",style:{height:`${n}px`},children:e("td",{colSpan:pr,style:{padding:0,border:0}})},t):null;return t(a,{variant:re,size:ae,color:oe,density:le,elevation:ie,padded:!1,className:I("flex flex-col overflow-hidden",Dt?"has-[table:focus-visible,[data-neba-editor]:focus-visible]:[outline:2px_solid_var(--n-ring)] has-[table:focus-visible,[data-neba-editor]:focus-visible]:outline-offset-2":"",pt),style:{...X,...ft},...gt,children:[Je||tt||E(et)?t("div",{className:"flex items-center gap-2",style:{padding:`${kt} ${kt}`,borderBottom:"1px solid var(--n-line)"},children:[Je?e(c,{size:ae,color:oe,density:le,variant:"outline",type:"search",className:"w-full max-w-64",startIcon:e(SearchIcon,{}),placeholder:Qe??mt.search,"aria-label":Qe??mt.search,value:Ge??jt,onChange:e=>{const t=e.target.value;void 0===Ge&&It(t),Nr(1),Ye?.(t)}}):null,tt||E(et)?t("div",{className:"ms-auto flex items-center gap-2",children:[et,tt?e(o,{size:ae,color:oe,density:le,variant:"outline",onClick:()=>{const e=Nt.filter(e=>!1!==e.exportable),t=e.map(e=>"string"==typeof e.label?e.label:e.key),n=Vt.map(t=>e.map(e=>e.exportValue?e.exportValue(t.row):e.value?e.value(t.row):t.row[e.key])),r=z([t,...n],{escapeFormulas:at});rt?rt(r):D(r,nt,"text/csv;charset=utf-8")},children:mt.exportCsv}):null]}):null]}):null,e("div",{ref:wn,className:"min-h-0 flex-auto overflow-auto overscroll-contain",style:{height:O(se),maxHeight:O(ce)},onScroll:Tn,children:t("table",{ref:Sn,role:Dt?"grid":void 0,"aria-label":me,"aria-multiselectable":At||void 0,"aria-rowcount":$n?rn.length+Rt:void 0,"aria-activedescendant":jn?`${yt}-${fn}`:void 0,tabIndex:Dt?0:void 0,className:I("w-full text-start [outline:none]",j[ae],"text-(--neba-fg)",Kt?"select-none":""),style:{tableLayout:"fixed",borderCollapse:"separate",borderSpacing:0,minWidth:`${ur}px`},onKeyDown:function(e){if(!Dt||e.target!==e.currentTarget)return;const t=hn.current.paged;if(0===t.length)return;const n=null===fn?-1:hn.current.pagedKeys.indexOf(fn),r=wn.current,a=fe?Sn.current?.tHead?.getBoundingClientRect().height??0:0,o=r?r.clientHeight-a:0,l=Math.max(1,Math.floor((o>0?o:10*bt)/bt)-1);switch(e.key){case"ArrowDown":Zn(n+1,e);break;case"ArrowUp":Zn(-1===n?0:n-1,e);break;case"Home":er("start",0,e);break;case"End":er("end",t.length-1,e);break;case"PageDown":er(l*bt,Math.max(n,0)+l,e);break;case"PageUp":er(-l*bt,Math.max(n,0)-l,e);break;case" ":Kt&&-1!==n&&(e.preventDefault(),(e.ctrlKey||e.metaKey)&&At?vn(t[n].key):bn(t[n].key));break;case"a":case"A":Kt&&(e.ctrlKey||e.metaKey)&&At&&(e.preventDefault(),yn(hn.current.pagedKeys));break;case"Escape":Kt&&(e.preventDefault(),yn([]));break;case"Enter":-1!==n&&Pe&&(e.preventDefault(),Pe(t[n].row,an+n));break;case"F2":{const r=t[n],a=r?Nt.find(e=>jr(e,r.row)):void 0;r&&a&&(e.preventDefault(),zr(r.key,a.key));break}}},children:[ge?e("caption",{className:I(B[ae],"text-(--neba-muted-fg)"),style:{padding:`0.5rem ${kt}`,textAlign:"start"},children:ge}):null,t("colgroup",{children:[$t?e("col",{style:{width:`${sr}px`}}):null,Nt.map(t=>{const n=cr(t);return e("col",{style:void 0===n?void 0:{width:`${n}px`}},t.key)}),dr?e("col",{}):null]}),t("thead",{children:[_t?t("tr",{"aria-rowindex":$n?1:void 0,style:{height:`${vt}px`},children:[$t?e("th",{scope:"col",rowSpan:2,className:I(fe?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{...kr,padding:0,overflow:"visible",...br(!0)},children:Hr}):null,fr.map(t=>void 0===t.label?Kr(Nt[t.from],t.from,2):e("th",{scope:"colgroup",colSpan:t.span,className:I("font-semibold select-none",fe?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{...kr,textAlign:"center"},children:t.label},`group-${t.from}`)),dr?r.cloneElement(Or,{rowSpan:2}):null]}):null,t("tr",{"aria-rowindex":$n?Rt:void 0,style:{height:`${vt}px`},children:[$t&&!_t?e("th",{scope:"col",className:I(fe?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{...kr,padding:0,overflow:"visible",...br(!0)},children:Hr}):null,Nt.map((e,t)=>_t&&void 0===e.group?null:Kr(e,t)),dr&&!_t?Or:null]})]}),e("tbody",{ref:xn,children:0===rn.length?e("tr",{children:e("td",{colSpan:pr,style:{padding:`2rem ${kt}`,textAlign:"center",color:"var(--n-cell-ink, var(--neba-muted-fg))"},children:he??ht.title})}):e(n,{children:Zt?Zt.order.map(e=>{const n=Zt.byLabel.get(e)??[],a=n.filter(e=>ln.has(e.key));return 0!==a.length||Jt.has(e)?t(r.Fragment,{children:[Ar(e,n),a.map(e=>_r(e,ln.get(e.key)??0))]},e||"\0"):null}):(()=>{const e=$r?rn.findIndex(e=>e.key===$r.key):-1,t=-1!==e&&e<Dn.start,n=-1!==e&&e>=Dn.end;return[...t?[Wr("before",e*bt),_r(rn[e],e),Wr("before-rest",Dn.before-(e+1)*bt)]:[Wr("before",Dn.before)],...zn.map((e,t)=>_r(e,Dn.start+t)),...n?[Wr("after-rest",(e-Dn.end)*bt),_r(rn[e],e),Wr("after",Dn.after-(e-Dn.end+1)*bt)]:[Wr("after",Dn.after)]]})()})})]})}),Sr?t("div",{className:I("flex flex-wrap items-center gap-3",B[ae]),style:{padding:`0.375rem ${kt}`,borderTop:"1px solid var(--n-line)"},children:[t("span",{role:"status",className:"flex flex-wrap items-center gap-3",children:[e("span",{className:"text-(--neba-muted-fg) tabular-nums",children:Cr}),Mr?e("span",{className:"text-(--n-accent) tabular-nums",children:Mr}):null]}),t("div",{className:"ms-auto flex items-center gap-2",children:["pages"===Be&&Xe.length>0?e(n,{children:e(s,{size:ae,color:oe,density:le,variant:"outline",label:mt.rowsPerPage,items:Xe.map(e=>({value:e})),value:Yt,onValueChange:e=>{const t=Number(e);void 0===We&&Ut(t),Nr(Math.floor(nn.start/t)+1),Ve?.(t)}})}):null,"pages"===Be?e(i,{size:ae,color:oe,count:nn.pages,page:nn.page,siblingCount:0,onPageChange:Nr}):null]})]}):null,Sr?null:t("span",{role:"status",className:H,children:[Cr,Mr?` ${Mr}`:null]}),$t?e("span",{id:Pr,hidden:!0,children:mt.selectRow}):null]})}
1
+ "use client";import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import*as n from"react";import{useLayoutEffectOnClient as a}from"../../internal/layout-effect.js";import{Box as o}from"../box/Box.js";import{Button as l}from"../button/Button.js";import{Checkbox as i}from"../checkbox/Checkbox.js";import{Pagination as s}from"../pagination/Pagination.js";import{Select as c}from"../select/Select.js";import{TextField as u}from"../text-field/TextField.js";import{compareValues as d,dataHeaderHeights as p,dataRowHeights as f,dataTickWidths as g,defaultColumnWidth as m,isEmptyValue as h,keysBetween as y,minColumnWidth as b,nextSort as v,pageBounds as k,sortRows as w,virtualWindow as x}from"../../internal/data-table.js";import{beginPointerDrag as S,drawnScale as C}from"../../internal/drag.js";import{dateFormatter as M}from"../../internal/format.js";import{emptyMessages as N,fillMessage as R,tableMessages as _,useMessages as T}from"../../internal/i18n.js";import{searchHaystack as D,searchText as K}from"../../internal/search.js";import{ChevronIcon as $}from"../../internal/icons.js";import{observeResize as z}from"../../internal/observe.js";import{downloadText as A,toCsv as j}from"../../internal/csv.js";import{controlTextLeadingClasses as I,cx as E,hasContent as P,insetRingClasses as B,metaTextClasses as H,paddingXValues as O,srOnlyClasses as F,toLength as L,transitionClasses as W}from"../../internal/styles.js";import{useStyleDefaults as V}from"../../internal/defaults.js";import{useIntlLocale as X}from"../../internal/media.js";const q=["[--n-row:transparent]","[transition:background-color_var(--neba-duration)_var(--neba-ease)]"].join(" "),G={"--n-stripe":"color-mix(in oklab, var(--neba-fg) 4%, transparent)"},U=["group/sort flex w-full min-w-0 cursor-pointer items-center gap-1","text-inherit [outline:none]","[transition:color_var(--neba-duration)_var(--neba-ease)]","hover:text-(--n-accent)","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-1","[&_svg]:pointer-events-none [&_svg]:size-[1.15em] [&_svg]:shrink-0"].join(" "),Y="Alt+ArrowLeft Alt+ArrowRight";function J(e){const t=e.currentTarget;t.scrollWidth>t.clientWidth?t.title=t.textContent??"":t.removeAttribute("title")}const Q='button, a, input, select, textarea, label, [role="button"], [role="checkbox"], [role="switch"], [role="radio"]',Z={start:"shadow-[inset_2px_0_0_var(--n-accent)] rtl:shadow-[inset_-2px_0_0_var(--n-accent)]",end:"shadow-[inset_-2px_0_0_var(--n-accent)] rtl:shadow-[inset_2px_0_0_var(--n-accent)]"},ee='[data-neba-tick] [role="checkbox"], [data-neba-editor]';function SearchIcon(){return t("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[e("circle",{cx:"7.25",cy:"7.25",r:"4.75",stroke:"currentColor",strokeWidth:"1.5"}),e("path",{d:"m10.75 10.75 2.75 2.75",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}function te(e,t,r){return{position:"sticky",insetInlineStart:"start"===e?`${t}px`:void 0,insetInlineEnd:"end"===e?`${t}px`:void 0,zIndex:r?21:1,backgroundColor:"var(--n-panel-press)",backgroundImage:r?void 0:"linear-gradient(var(--n-row), var(--n-row))"}}function re(e,t,r){if(!e.pinned)return{};const n="start"===e.pinned?t.start.get(e.key):t.end.get(e.key);return te(e.pinned,n??0,r)}function ne(e,t){return e.value?e.value(t):t[e.key]}function ae(e,t,r){return r&&("function"==typeof e.editable?e.editable(t):Boolean(e.editable))}function oe(t){return e("span",{className:"flex items-center justify-center",children:t})}function DataTableRow({entry:r,index:n,position:a,selected:o,active:l,editing:s,look:c,actions:u}){const{columns:d,reactId:p,cellStyle:f}=c,g=`${p}-first-${r.origin}`;return t("tr",{id:`${p}-${r.key}`,"aria-selected":c.selects?o:void 0,"aria-rowindex":c.virtualized?n+c.headRows+1:void 0,"data-neba-row":r.key,className:E(q,o?"[--n-row:var(--n-soft-press)]":null!==c.stripe&&n%2===c.stripe?"[--n-row:var(--n-stripe)]":"",!o&&c.hoverable?"hover:[--n-row:var(--n-soft)]":"",l&&c.navigable?"[box-shadow:inset_0_0_0_1px_var(--n-ring)]":"",c.pressable?"cursor-default":""),style:{height:`${c.rowHeight}px`,backgroundColor:"var(--n-row)"},onPointerDown:e=>u.current?.pointerDown(r,e),onClick:e=>u.current?.click(r,a,e),onDoubleClick:e=>u.current?.doubleClick(r,a,e),children:[c.showTicks?e("td",{"data-neba-tick":"",role:c.selects?"gridcell":void 0,style:{...f,padding:0,overflow:"visible",...c.pinsStart?te("start",0,!1):{}},children:oe(e(i,{size:c.size,color:c.color,checked:o,tabIndex:-1,"aria-labelledby":d.length>0?`${c.tickNameId} ${g}`:void 0,"aria-label":d.length>0?void 0:c.selectRowLabel,onCheckedChange:()=>u.current?.tick(r.key)}))}):null,d.map((t,n)=>{const o=ae(t,r.row,c.edits),l=s===t.key,i=l?ne(t,r.row):void 0;return e("td",{id:c.showTicks&&0===n?g:void 0,role:c.navigable?"gridcell":void 0,style:{...f,...re(t,c.pinOffsets,!1),textAlign:t.align??"start",cursor:o&&!l?"cell":void 0},onPointerEnter:t.render||l?void 0:J,onDoubleClick:o?e=>{e.stopPropagation(),u.current?.openEditor(r.key,t.key)}:void 0,children:l?e("input",{autoFocus:!0,"data-neba-editor":"",type:"number"===t.editType?"number":"text",defaultValue:null==i?"":String(i),"aria-label":"string"==typeof t.label?t.label:t.key,className:"neba-input w-full bg-transparent [font:inherit] text-inherit [outline:none]",style:{textAlign:t.align??"start"},onPointerDown:e=>e.stopPropagation(),onBlur:e=>u.current?.editorBlur(r,t,e.currentTarget.value),onKeyDown:e=>u.current?.editorKeyDown(r,t,e)}):t.render?t.render(r.row,a):(d=r.row[t.key],p=c.intlLocale,"boolean"==typeof d?String(d):d instanceof Date?Number.isNaN(d.getTime())?"":M(p,{dateStyle:"medium"}).format(d):d)},t.key);var d,p}),c.filler?e("td",{"aria-hidden":"true",style:{...f,padding:0}}):null]})}const le=/*@__PURE__*/n.memo(DataTableRow);export function DataTable(M){const{headers:q,items:J,getRowKey:ie,variant:se="outline",size:ce="sm",color:ue="primary",density:de="compact",elevation:pe=0,height:fe,maxHeight:ge,rowHeight:me,striped:he=!1,hoverable:ye=!0,stickyHeader:be=!0,caption:ve,label:ke,empty:we,virtual:xe=!0,overscan:Se=8,sortable:Ce=!1,sortMode:Me="single",sort:Ne,defaultSort:Re,onSortChange:_e,resizable:Te=!1,columnWidths:De,columnOrder:Ke,defaultColumnOrder:$e,onColumnOrderChange:ze,reorderable:Ae=!1,defaultColumnWidths:je,onColumnWidthsChange:Ie,selectionMode:Ee="none",selected:Pe,defaultSelected:Be,onSelectedChange:He,checkboxes:Oe=!1,onRowClick:Fe,onRowActivate:Le,paging:We="scroll",page:Ve,defaultPage:Xe=1,onPageChange:qe,getPageHref:Ge,pageSize:Ue,defaultPageSize:Ye=25,onPageSizeChange:Je,pageSizeOptions:Qe=[10,25,50,100],footer:Ze,search:et,defaultSearch:tt,onSearchChange:rt,searchable:nt=!1,searchPlaceholder:at,filter:ot,toolbar:lt,exportable:it=!1,exportFileName:st="table.csv",onExport:ct,exportEscapeFormulas:ut=!0,onCellEdit:dt,groupBy:pt,collapsibleGroups:ft=!0,defaultCollapsedGroups:gt,manual:mt=!1,rowCount:ht,locale:yt,className:bt,style:vt,...kt}=V(M,["size","density","variant","locale"]),wt=T(_,yt),xt=T(N,yt),St=X(yt),Ct=n.useId(),Mt=me??f[de][ce],Nt=p[de][ce],Rt=O[de][ce],_t=n.useMemo(()=>new Set(!0===mt?["sort","filter","pages"]:mt||[]),[mt]),[Tt,Dt]=n.useState(()=>$e??[]),Kt=Ke??Tt,$t=e=>{void 0===Ke&&Dt(e),ze?.(e)},zt=n.useMemo(()=>{const e=q.filter(e=>!e.hidden),t=Kt.map(t=>e.find(e=>e.key===t)).filter(e=>void 0!==e),r=e.filter(e=>!Kt.includes(e.key)),n=0===Kt.length?e:[...t,...r],a=e=>"start"===e.pinned?0:"end"===e.pinned?2:1;return n.map((e,t)=>({column:e,index:t})).sort((e,t)=>a(e.column)-a(t.column)||e.index-t.index).map(e=>e.column)},[q,Kt]),At=zt.some(e=>void 0!==e.group),jt=At?2:1,It="none"!==Ee,Et="multiple"===Ee,Pt=It&&Oe,Bt=void 0!==dt&&zt.some(e=>void 0!==e.editable),Ht=It||void 0!==Le||Bt,Ot=n.useMemo(()=>J.map((e,t)=>{const r=ie?ie(e,t):t;return{row:e,identity:r,key:String(r),origin:t}}),[J,ie]),[Ft,Lt]=n.useState(tt??""),Wt=(et??Ft).trim(),Vt=n.useMemo(()=>zt.filter(e=>!1!==e.searchable),[zt]),Xt=n.useMemo(()=>{let e=null;return()=>e??=Ot.map(e=>D(Vt.map(t=>t.value?t.value(e.row):e.row[t.key])))},[Ot,Vt]),qt=n.useMemo(()=>new Intl.Collator(St,{numeric:!0,sensitivity:"base"}),[St]),[Gt,Ut]=n.useState(Re??[]),Yt=Ne??Gt,Jt=n.useMemo(()=>_t.has("sort")?Ot:w(Ot,Yt,e=>{const t=zt.find(t=>t.key===e);if(!t)return null;if(t.compare)return(e,r)=>t.compare(e.row,r.row);const r=t.value?t.value:e=>e[t.key];return{compare:(e,t)=>d(r(e.row),r(t.row),qt),isEmpty:e=>h(r(e.row))}}),[Ot,Yt,zt,qt,_t]),Qt=n.useMemo(()=>{if(_t.has("filter"))return Jt;const e=K(Wt);let t=Jt;if(""!==e&&Vt.length>0){const r=Xt();t=Jt.filter(t=>r[t.origin].includes(e))}return ot?t.filter(e=>ot(e.row,e.origin)):t},[Jt,Wt,ot,_t,Vt,Xt]),[Zt,er]=n.useState(Xe),[tr,rr]=n.useState(Ye),nr=Ue??tr,[ar,or]=n.useState(()=>new Set(gt??[])),lr=n.useMemo(()=>{if(!pt)return null;const e=[],t=new Map;for(const r of Qt){const n=pt(r.row)??"";t.has(n)||(t.set(n,[]),e.push(n)),t.get(n).push(r)}return{order:[...e].sort((e,t)=>""===e?-1:""===t?1:0),byLabel:t}},[Qt,pt]),ir=n.useMemo(()=>lr?lr.order.flatMap(e=>ar.has(e)?[]:lr.byLabel.get(e)??[]):Qt,[lr,ar,Qt]),sr=_t.has("pages")?ht??ir.length:ir.length,cr=k(sr,Ve??Zt,nr),ur=n.useMemo(()=>"pages"!==We||_t.has("pages")?ir:ir.slice(cr.start,cr.end),[ir,We,_t,cr.start,cr.end]),dr="pages"===We?cr.start:0,pr=n.useMemo(()=>ur.map(e=>e.key),[ur]),fr=n.useMemo(()=>new Map(pr.map((e,t)=>[e,t])),[pr]),gr=n.useMemo(()=>new Map(Ot.map(e=>[e.key,e])),[Ot]),[mr,hr]=n.useState(Be??[]),yr=Pe??mr,br=n.useMemo(()=>new Set(yr.map(String)),[yr]),[vr,kr]=n.useState(null),wr=n.useRef(null),xr=n.useRef({paged:ur,pagedKeys:pr,byKey:gr,selectedKeys:br,selectedValues:yr,multiple:Et});xr.current={paged:ur,pagedKeys:pr,byKey:gr,selectedKeys:br,selectedValues:yr,multiple:Et};const Sr=n.useCallback(e=>{const t=[],r=[],n=_t.has("pages")?new Map(xr.current.selectedValues.map(e=>[String(e),e])):null;for(const a of e){const e=xr.current.byKey.get(a);e?(t.push(e.identity),r.push(e.row)):n?.has(a)&&t.push(n.get(a))}void 0===Pe&&hr(t),He?.(t,r)},[Pe,He,_t]),Cr=n.useCallback(e=>{wr.current=e,Sr([e])},[Sr]),Mr=n.useCallback(e=>{const t=xr.current.selectedKeys,r=new Set(t);r.has(e)?r.delete(e):r.add(e),wr.current=e,Sr([...r])},[Sr]),Nr=n.useCallback((e,t)=>{const r=xr.current.pagedKeys,n=wr.current??r[0];if(void 0===n)return;const a=y(r,n,e);0!==a.length?Sr(t?[...new Set([...xr.current.selectedKeys,...a])]:a):r.includes(e)&&(wr.current=e,Sr(t?[...new Set([...xr.current.selectedKeys,e])]:[e]))},[Sr]),Rr=n.useRef(null),_r=n.useRef(null),Tr=n.useRef(null),Dr=n.useRef(null),[Kr,$r]=n.useState(0),[zr,Ar]=n.useState(0),jr=void 0!==fe||void 0!==ge,Ir=void 0!==pt,Er=xe&&jr&&ur.length>0&&!pt,Pr=xe&&!Er&&ur.length>500?ur.length:0,Br=n.useRef(!1);n.useEffect(()=>{"production"===process.env.NODE_ENV||0===Pr||Br.current||(Br.current=!0,console.warn(`Neba: a DataTable is drawing ${Pr} rows at once, because ${Ir?"a grouped table is never virtual":"nothing bounds its height"}. ${Ir?'Page it with paging="pages", or leave groupBy off and give it a height or a maxHeight':'Give it a height or a maxHeight to draw only the rows on screen, or page it with paging="pages"'}. Pass virtual={false} if every row is meant to be drawn.`))},[Pr,Ir]),a(()=>{const e=Rr.current;if(e&&Er)return $r(e.clientHeight),z(e,e=>$r(e.contentRect.height))},[Er]);const Hr=n.useCallback(e=>{if(!Er)return;const t=Math.floor(e.currentTarget.scrollTop/Mt)*Mt;Ar(e=>e===t?e:t)},[Er,Mt]),Or=Er?x(zr,Kr,Mt,ur.length,Se):{start:0,end:ur.length,before:0,after:0},Fr=ur.slice(Or.start,Or.end),Lr=Ht&&null!==vr&&Fr.some(e=>e.key===vr),[Wr,Vr]=n.useState(je??{}),Xr=De??Wr,qr=n.useCallback(e=>{void 0===De&&Vr(e),Ie?.(e)},[De,Ie]),Gr=n.useRef(new Map),Ur=n.useRef(null),Yr=n.useRef(null),[Jr,Qr]=n.useState(null),[Zr,en]=n.useState(null),tn=n.useRef(null),rn=n.useRef(null);n.useEffect(()=>()=>{Ur.current?.(),Yr.current?.()},[]);const nn=()=>{const e={...Xr};for(const t of zt){const r=Gr.current.get(t.key);r&&void 0===e[t.key]&&(e[t.key]=r.offsetWidth)}return e},an=e=>zt.find(t=>t.key===e)?.minWidth??b,on=n.useRef(null);a(()=>{const e=on.current;if(null===e)return;on.current=null;const t=Gr.current.get(e),r=t?.querySelector("button")??t;r&&r!==document.activeElement&&r.focus()});const ln=n.useCallback((e,t)=>{const r=Rr.current,n=_r.current;if(!r||!n)return;const a=function(e,t){for(let r=0;r<e.rows.length;r+=1)if(e.rows[r].dataset.nebaRow===t)return e.rows[r];return null}(n,e);if(!jr)return void a?.scrollIntoView({block:"nearest",inline:"nearest"});const o=r.getBoundingClientRect().top+r.clientTop-r.scrollTop,l=(a??n).getBoundingClientRect(),i=l.top-o+(a?0:t*Mt),s=i+(a?l.height:Mt),c=be?Tr.current?.tHead?.getBoundingClientRect().height??0:0;i<r.scrollTop+c?r.scrollTop=Math.max(0,Math.floor(i-c)):s>r.scrollTop+r.clientHeight&&(r.scrollTop=Math.ceil(s-r.clientHeight))},[jr,be,Mt]),sn=(e,t,r=!0)=>{const n=xr.current.paged,a=Math.min(Math.max(e,0),n.length-1),o=n[a];o&&(t.preventDefault(),kr(o.key),ln(o.key,a),It&&(t.shiftKey&&xr.current.multiple?Nr(o.key,!1):!r||t.ctrlKey||t.metaKey||Cr(o.key)))},cn=(e,t,r)=>{const n=Rr.current;if(!n||!jr)return;r.preventDefault();const a=Math.max(0,n.scrollHeight-n.clientHeight),o="start"===e?0:"end"===e?a:n.scrollTop+e;n.scrollTop=Math.min(Math.max(o,0),a),sn(t,r,!1)};const un=n.useCallback(e=>{const t=_r.current,r=xr.current.paged;if(!t||0===r.length)return null;if(Ir){const n=t.querySelectorAll("tr[data-neba-row]");let a=0,o=n.length-1,l=0;for(;a<=o;){const t=a+o>>1;n[t].getBoundingClientRect().top<=e?(l=t,a=t+1):o=t-1}return Math.min(l,r.length-1)}const n=t.getBoundingClientRect().top,a=Math.floor((e-n)/Mt);return Math.min(Math.max(a,0),r.length-1)},[Mt,Ir]),dn=n.useRef(null),pn=n.useCallback(e=>{const t=un(e),r=null===t?void 0:xr.current.paged[t],n=dn.current;!r||n&&n.key===r.key||(n&&(n.key=r.key),kr(r.key),Nr(r.key,!1))},[un,Nr]),fn=n.useRef(pn);fn.current=pn;n.useEffect(()=>()=>dn.current?.stop(),[]);const gn=n.useMemo(()=>pr.reduce((e,t)=>br.has(t)?e+1:e,0),[pr,br]),mn=pr.length>0&&gn===pr.length,hn=g[ce],yn=e=>Xr[e.key]??e.width,bn=(Pt?hn:0)+zt.reduce((e,t)=>e+(yn(t)??b),0),vn=zt.length>0&&zt.every(e=>void 0!==yn(e)),kn=zt.length+(Pt?1:0)+(vn?1:0),wn=n.useMemo(()=>{const e=[];return zt.forEach((t,r)=>{const n=e[e.length-1];n&&void 0!==n.label&&n.label===t.group?n.span+=1:e.push({label:t.group,span:1,from:r})}),e},[zt]),xn=zt.filter(e=>e.pinned).map(e=>yn(e)??"").join(","),Sn=n.useMemo(()=>{const e=new Map,t=new Map;let r=Pt?hn:0;for(const t of zt)"start"===t.pinned&&(e.set(t.key,r),r+=yn(t)??m);let n=0;for(let e=zt.length-1;e>=0;e-=1){const r=zt[e];"end"===r.pinned&&(t.set(r.key,n),n+=yn(r)??m)}return{start:e,end:t}},[zt,xn,Pt,hn]),Cn=(e,t)=>re(e,Sn,t),Mn=zt.some(e=>"start"===e.pinned),Nn=e=>Mn?te("start",0,e):{},Rn=n.useMemo(()=>({padding:`0 ${Rt}`,borderBottom:"1px solid var(--n-line)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),[Rt]),_n={...Rn,height:`${Nt}px`,backgroundColor:"var(--n-panel-press)",color:"var(--n-cell-ink, var(--neba-muted-fg))"},Tn=n.useMemo(()=>new Intl.NumberFormat(St),[St]),Dn=Ze??"pages"===We,Kn=R(wt.range,{start:Tn.format(0===sr?0:("pages"===We?cr.start:0)+1),end:Tn.format("pages"===We?cr.end:sr),total:Tn.format(sr)}),$n=It&&br.size>0?R(wt.selected,{count:Tn.format(br.size)}):"",zn=e=>{void 0===Ve&&er(e),qe?.(e)},An=`${Ct}-tick`,jn=It||void 0!==Fe,In=void 0!==dt,En=n.useMemo(()=>({columns:zt,reactId:Ct,selects:It,navigable:Ht,showTicks:Pt,pressable:jn,virtualized:Er,headRows:jt,stripe:!1===he?null:"odd"===he?0:1,hoverable:ye,rowHeight:Mt,cellStyle:Rn,pinOffsets:Sn,pinsStart:Mn,filler:vn,edits:In,size:ce,color:ue,intlLocale:St,tickNameId:An,selectRowLabel:wt.selectRow}),[zt,Ct,It,Ht,Pt,jn,Er,jt,he,ye,Mt,Rn,Sn,Mn,vn,In,ce,ue,St,An,wt.selectRow]),Pn=n.useRef(null),Bn=(t,r)=>e(le,{entry:t,index:r,position:dr+r,selected:br.has(t.key),active:vr===t.key,editing:Ln?.key===t.key?Ln.column:null,look:En,actions:Pn,redraw:M},t.key),Hn=e=>{const t=zt.map(e=>e.key);return null!==Jr&&t.indexOf(Jr)<t.indexOf(e)?"end":"start"},On=(n,a,o)=>{const l=n.sortable??Ce,i=n.resizable??Te,s=Ae&&!n.pinned,c=(u=n.key,Yt.find(e=>e.key===u));var u;const d=c?Yt.findIndex(e=>e.key===n.key)+1:0,p=n.headerAlign??n.align??"start",f=i&&a<zt.length-1,g=f||d>1?`${Ct}-head-${a}`:void 0;return t("th",{"aria-labelledby":g,ref:e=>{e?Gr.current.set(n.key,e):Gr.current.delete(n.key)},scope:"col",rowSpan:o,"aria-sort":c&&1===d?"asc"===c.direction?"ascending":"descending":void 0,"data-column":n.key,"data-dragging":Jr===n.key||void 0,className:E("relative font-semibold select-none",be?"sticky z-20 [backdrop-filter:var(--neba-blur)]":"",s?Jr===n.key?"cursor-grabbing":"cursor-grab":"",s&&!l?B:"",Zr===n.key?Z[Hn(n.key)]:""),style:{..._n,...Cn(n,!0),backgroundImage:Jr===n.key?"linear-gradient(var(--n-soft), var(--n-soft))":void 0,top:be?2!==o&&At?Nt:0:void 0,textAlign:p,color:c?"var(--n-cell-ink, var(--n-accent))":_n.color},tabIndex:s&&!l?0:void 0,"aria-keyshortcuts":s&&!l?Y:void 0,onPointerDown:s?e=>((e,t)=>{if(0!==t.button)return;const r=t.currentTarget,n=t.clientX;let a=!1;Yr.current=S({target:r,pointerId:t.pointerId,capture:!1,onMove:t=>{if(!a){if(Math.abs(t.clientX-n)<6)return;a=!0,tn.current=e,Qr(e)}const r=zt.find(e=>{if(e.pinned)return!1;const r=Gr.current.get(e.key);if(!r)return!1;const n=r.getBoundingClientRect();return t.clientX>=n.left&&t.clientX<=n.right});rn.current=r&&r.key!==e?r.key:null,en(rn.current)},onEnd:()=>{const e=tn.current,t=rn.current;if(Yr.current=null,tn.current=null,rn.current=null,Qr(null),en(null),e&&t&&e!==t){const r=zt.map(e=>e.key),n=r.indexOf(e),a=r.indexOf(t);r.splice(a,0,...r.splice(n,1)),$t(r)}}})})(n.key,e):void 0,onKeyDown:s?e=>((e,t)=>{if(!t.altKey||"ArrowLeft"!==t.key&&"ArrowRight"!==t.key)return;t.preventDefault();const r="rtl"===getComputedStyle(t.currentTarget).direction,n="ArrowRight"===t.key!==r?1:-1,a=zt.map(e=>e.key),o=a.indexOf(e),l=zt[o+n];l&&!l.pinned&&(a.splice(o+n,0,...a.splice(o,1)),on.current=e,$t(a))})(n.key,e):void 0,children:[l?t("button",{type:"button","aria-keyshortcuts":s?Y:void 0,className:E(U,"end"===p?"justify-end":"center"===p?"justify-center":"justify-start"),onClick:e=>((e,t)=>{const r=v(Yt,e,t&&"multiple"===Me);void 0===Ne&&Ut(r),_e?.(r)})(n.key,e.shiftKey),children:[e("span",{id:g,className:"min-w-0 truncate",children:n.label??n.key}),e("span",{"aria-hidden":"true",className:E("flex items-center","desc"===c?.direction?"rotate-0":"rotate-180",c?"":"text-transparent group-hover/sort:text-inherit group-focus-visible/sort:text-inherit"),children:e($,{})}),d>1?t(r,{children:[e("span",{"aria-hidden":"true",className:"text-[0.85em] tabular-nums",children:d}),t("span",{className:F,children:[" ",R("desc"===c?.direction?wt.sortDescending:wt.sortAscending,{order:Tn.format(d)})]})]}):null]}):e("span",{id:g,className:"block truncate",children:n.label??n.key}),f?e("span",{role:"separator","aria-orientation":"vertical","aria-label":R(wt.resizeColumn,{column:"string"==typeof n.label?n.label:n.key}),"aria-valuenow":Xr[n.key]??n.width,"aria-valuemin":an(n.key),tabIndex:0,className:"absolute inset-y-0 z-10 w-2 cursor-col-resize select-none end-0 translate-x-1/2 rtl:-translate-x-1/2 after:absolute after:inset-y-1 after:start-1/2 after:w-px after:[background:transparent] after:[transition:background_var(--neba-duration)_var(--neba-ease)] hover:after:[background:var(--n-accent)] data-[dragging]:after:[background:var(--n-accent)] focus-visible:after:[background:var(--n-accent)] [outline:0_solid_transparent] focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-0",onFocus:e=>{const t=Gr.current.get(n.key);t&&!e.currentTarget.hasAttribute("aria-valuenow")&&e.currentTarget.setAttribute("aria-valuenow",String(t.offsetWidth))},onPointerDown:e=>((e,t)=>{t.preventDefault(),t.stopPropagation();const r=t.currentTarget,n=nn(),a=Gr.current.get(e),o=a?C(a).x:1,l="rtl"===getComputedStyle(r).direction,i=t.clientX,s=n[e]??m,c=an(e);Ur.current=S({target:r,pointerId:t.pointerId,onMove:t=>{const r=(t.clientX-i)/o*(l?-1:1);qr({...n,[e]:Math.max(c,Math.round(s+r))})},onEnd:()=>{Ur.current=null}})})(n.key,e),onDoubleClick:()=>(e=>{const t={...Xr};delete t[e],qr(t)})(n.key),onKeyDown:e=>((e,t)=>{if("ArrowLeft"!==t.key&&"ArrowRight"!==t.key)return;t.preventDefault(),t.stopPropagation();const r="rtl"===getComputedStyle(t.currentTarget).direction,n="ArrowRight"===t.key!==r,a=nn(),o=a[e]??m;qr({...a,[e]:Math.max(an(e),o+(n?16:-16))})})(n.key,e)}):null]},n.key)},Fn=(r,n)=>{const a=ar.has(r),o=ft,l=n.map(e=>e.row),i=()=>or(e=>{const t=new Set(e);return t.has(r)?t.delete(r):t.add(r),t}),s=t("span",{className:"flex min-w-0 items-center gap-1.5",children:[o?e("span",{"aria-hidden":"true",className:E("flex items-center text-(--neba-muted-fg)","[transition:rotate_var(--neba-duration)_var(--neba-ease)]",a?"-rotate-90 rtl:rotate-90":""),children:e($,{})}):null,e("span",{className:"truncate font-semibold",children:""===r?wt.noGroup:r}),e("span",{className:"shrink-0 text-(--neba-muted-fg) tabular-nums",children:Tn.format(n.length)})]});return t("tr",{"data-neba-group":r,style:{height:`${Mt}px`,backgroundColor:"var(--n-soft)"},children:[Pt?e("td",{style:{...Rn,padding:0,...Nn(!1)}}):null,zt.map((t,r)=>e("td",{colSpan:1,style:{...Rn,...Cn(t,!1),textAlign:0===r?"start":t.align??"start"},children:0===r?o?e("button",{type:"button","aria-expanded":!a,className:`flex w-full min-w-0 items-center text-start ${W} focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:[outline-offset:-2px]`,onClick:i,children:s}):s:t.aggregate?e("span",{className:"tabular-nums",children:t.aggregate(l)}):null},t.key)),vn?e("td",{"aria-hidden":"true",style:{...Rn,padding:0}}):null]})},[Ln,Wn]=n.useState(null),Vn=n.useRef(!1);function Xn(e,t){Vn.current=!1,Wn({key:e,column:t})}const qn=(e,t)=>ae(e,t,void 0!==dt),Gn=(e,t,r)=>{Wn(null);const n=ne(t,e.row),a="number"===t.editType?Number(r):r;("number"!==t.editType||""!==r.trim()&&!Number.isNaN(a))&&String(a)!==String(n??"")&&dt?.(e.row,t,a)};Pn.current={pointerDown:function(e,t){if(Dr.current=null,It){if(!t.target.closest(Q))if("touch"!==t.pointerType)if(Tr.current?.focus({preventScroll:!0}),kr(e.key),2!==t.button){if(0===t.button)return t.shiftKey&&Et?(t.preventDefault(),void Nr(e.key,t.ctrlKey||t.metaKey)):void((t.ctrlKey||t.metaKey)&&Et?Mr(e.key):(Cr(e.key),Et&&((e,t)=>{const r=Tr.current;if(dn.current||!r)return;const n=e.clientY,a=()=>{const e=dn.current,t=Rr.current;if(!e||!t||0===e.speed)return void(e&&(e.frame=null));const r=t.scrollTop;t.scrollTop=r+e.speed;const n=t.scrollTop!==r;fn.current(e.y),e.frame=n?requestAnimationFrame(a):null};let o=()=>{};const l=()=>{const e=dn.current;null!=e?.frame&&cancelAnimationFrame(e.frame),dn.current=null,o()};dn.current={y:n,speed:0,frame:null,stop:l,key:t},o=S({target:r,pointerId:e.pointerId,onMove:e=>{const t=dn.current,r=Rr.current;if(t){if(t.y=e.clientY,r&&jr){const e=r.getBoundingClientRect(),n=e.top+Mt-t.y,a=t.y-(e.bottom-Mt);t.speed=n>0?-Math.min(n,40):a>0?Math.min(a,40):0}null!==t.frame&&0!==t.speed||(fn.current(t.y),0!==t.speed&&null===t.frame&&(t.frame=requestAnimationFrame(a)))}},onEnd:l,capture:!1,mark:!1})})(t,e.key)))}else xr.current.selectedKeys.has(e.key)||Cr(e.key);else Dr.current=e.key}else Ht&&!t.target.closest(Q)&&kr(e.key)},click:(e,t,r)=>{r.target.closest(ee)||(Dr.current===e.key&&(Dr.current=null,Tr.current?.focus({preventScroll:!0}),kr(e.key),Cr(e.key)),Fe?.(e.row,t,r))},doubleClick:(e,t,r)=>{r.target.closest(ee)||Le?.(e.row,t)},tick:e=>{Et?Mr(e):Cr(e)},openEditor:Xn,editorBlur:(e,t,r)=>{Vn.current||Gn(e,t,r)},editorKeyDown:(e,t,r)=>{"Enter"!==r.key&&"Escape"!==r.key||(r.stopPropagation(),Vn.current=!0,"Enter"===r.key?(r.preventDefault(),Gn(e,t,r.currentTarget.value)):Wn(null),Tr.current?.focus({preventScroll:!0}))}};const Un=Et?oe(e(i,{size:ce,color:ue,checked:mn,indeterminate:gn>0&&!mn,"aria-label":wt.selectAll,onCheckedChange:()=>{if(mn){const e=new Set(pr);Sr([...br].filter(t=>!e.has(t)))}else Sr([...new Set([...br,...pr])])}})):null,Yn=vn?e("th",{"aria-hidden":"true",className:E(be?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{..._n,padding:0}}):null,Jn=(t,r)=>r>0?e("tr",{"aria-hidden":"true",style:{height:`${r}px`},children:e("td",{colSpan:kn,style:{padding:0,border:0}})},t):null;return t(o,{variant:se,size:ce,color:ue,density:de,elevation:pe,padded:!1,className:E("flex flex-col overflow-hidden",Ht?"has-[table:focus-visible,[data-neba-editor]:focus-visible]:[outline:2px_solid_var(--n-ring)] has-[table:focus-visible,[data-neba-editor]:focus-visible]:outline-offset-2":"",bt),style:{...G,...vt},...kt,children:[nt||it||P(lt)?t("div",{className:"flex items-center gap-2",style:{padding:`${Rt} ${Rt}`,borderBottom:"1px solid var(--n-line)"},children:[nt?e(u,{size:ce,color:ue,density:de,variant:"outline",type:"search",className:"w-full max-w-64",startIcon:e(SearchIcon,{}),placeholder:at??wt.search,"aria-label":at??wt.search,value:et??Ft,onChange:e=>{const t=e.target.value;void 0===et&&Lt(t),zn(1),rt?.(t)}}):null,it||P(lt)?t("div",{className:"ms-auto flex items-center gap-2",children:[lt,it?e(l,{size:ce,color:ue,density:de,variant:"outline",onClick:()=>{const e=zt.filter(e=>!1!==e.exportable),t=e.map(e=>"string"==typeof e.label?e.label:e.key),r=Qt.map(t=>e.map(e=>e.exportValue?e.exportValue(t.row):e.value?e.value(t.row):t.row[e.key])),n=j([t,...r],{escapeFormulas:ut});ct?ct(n):A(n,st,"text/csv;charset=utf-8")},children:wt.exportCsv}):null]}):null]}):null,e("div",{ref:Rr,className:"min-h-0 flex-auto overflow-auto overscroll-contain",style:{height:L(fe),maxHeight:L(ge)},onScroll:Hr,children:t("table",{ref:Tr,role:Ht?"grid":void 0,"aria-label":ke,"aria-multiselectable":Et||void 0,"aria-rowcount":Er?ur.length+jt:void 0,"aria-activedescendant":Lr?`${Ct}-${vr}`:void 0,tabIndex:Ht?0:void 0,className:E("w-full text-start [outline:none]",I[ce],"text-(--neba-fg)",It?"select-none":""),style:{tableLayout:"fixed",borderCollapse:"separate",borderSpacing:0,minWidth:`${bn}px`},onKeyDown:function(e){if(!Ht||e.target!==e.currentTarget)return;const t=xr.current.paged;if(0===t.length)return;const r=null===vr?-1:xr.current.pagedKeys.indexOf(vr),n=Rr.current,a=be?Tr.current?.tHead?.getBoundingClientRect().height??0:0,o=n?n.clientHeight-a:0,l=Math.max(1,Math.floor((o>0?o:10*Mt)/Mt)-1);switch(e.key){case"ArrowDown":sn(r+1,e);break;case"ArrowUp":sn(-1===r?0:r-1,e);break;case"Home":cn("start",0,e);break;case"End":cn("end",t.length-1,e);break;case"PageDown":cn(l*Mt,Math.max(r,0)+l,e);break;case"PageUp":cn(-l*Mt,Math.max(r,0)-l,e);break;case" ":It&&-1!==r&&(e.preventDefault(),(e.ctrlKey||e.metaKey)&&Et?Mr(t[r].key):Cr(t[r].key));break;case"a":case"A":It&&(e.ctrlKey||e.metaKey)&&Et&&(e.preventDefault(),Sr(xr.current.pagedKeys));break;case"Escape":It&&(e.preventDefault(),Sr([]));break;case"Enter":-1!==r&&Le&&(e.preventDefault(),Le(t[r].row,dr+r));break;case"F2":{const n=t[r],a=n?zt.find(e=>qn(e,n.row)):void 0;n&&a&&(e.preventDefault(),Xn(n.key,a.key));break}}},children:[ve?e("caption",{className:E(H[ce],"text-(--neba-muted-fg)"),style:{padding:`0.5rem ${Rt}`,textAlign:"start"},children:ve}):null,t("colgroup",{children:[Pt?e("col",{style:{width:`${hn}px`}}):null,zt.map(t=>{const r=yn(t);return e("col",{style:void 0===r?void 0:{width:`${r}px`}},t.key)}),vn?e("col",{}):null]}),t("thead",{children:[At?t("tr",{"aria-rowindex":Er?1:void 0,style:{height:`${Nt}px`},children:[Pt?e("th",{scope:"col",rowSpan:2,className:E(be?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{..._n,padding:0,overflow:"visible",...Nn(!0)},children:Un}):null,wn.map(t=>void 0===t.label?On(zt[t.from],t.from,2):e("th",{scope:"colgroup",colSpan:t.span,className:E("font-semibold select-none",be?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{..._n,textAlign:"center"},children:t.label},`group-${t.from}`)),vn?n.cloneElement(Yn,{rowSpan:2}):null]}):null,t("tr",{"aria-rowindex":Er?jt:void 0,style:{height:`${Nt}px`},children:[Pt&&!At?e("th",{scope:"col",className:E(be?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{..._n,padding:0,overflow:"visible",...Nn(!0)},children:Un}):null,zt.map((e,t)=>At&&void 0===e.group?null:On(e,t)),vn&&!At?Yn:null]})]}),e("tbody",{ref:_r,children:0===ur.length?e("tr",{children:e("td",{colSpan:kn,style:{padding:`2rem ${Rt}`,textAlign:"center",color:"var(--n-cell-ink, var(--neba-muted-fg))"},children:we??xt.title})}):e(r,{children:lr?lr.order.map(e=>{const r=lr.byLabel.get(e)??[],a=r.filter(e=>fr.has(e.key));return 0!==a.length||ar.has(e)?t(n.Fragment,{children:[Fn(e,r),a.map(e=>Bn(e,fr.get(e.key)??0))]},e||"\0"):null}):(()=>{const e=Ln?ur.findIndex(e=>e.key===Ln.key):-1,t=-1!==e&&e<Or.start,r=-1!==e&&e>=Or.end;return[...t?[Jn("before",e*Mt),Bn(ur[e],e),Jn("before-rest",Or.before-(e+1)*Mt)]:[Jn("before",Or.before)],...Fr.map((e,t)=>Bn(e,Or.start+t)),...r?[Jn("after-rest",(e-Or.end)*Mt),Bn(ur[e],e),Jn("after",Or.after-(e-Or.end+1)*Mt)]:[Jn("after",Or.after)]]})()})})]})}),Dn?t("div",{className:E("flex flex-wrap items-center gap-3",H[ce]),style:{padding:`0.375rem ${Rt}`,borderTop:"1px solid var(--n-line)"},children:[t("span",{role:"status",className:"flex flex-wrap items-center gap-3",children:[e("span",{className:"text-(--neba-muted-fg) tabular-nums",children:Kn}),$n?e("span",{className:"text-(--n-accent) tabular-nums",children:$n}):null]}),t("div",{className:"ms-auto flex items-center gap-2",children:["pages"===We&&Qe.length>0?e(r,{children:e(c,{size:ce,color:ue,density:de,variant:"outline",label:wt.rowsPerPage,items:Qe.map(e=>({value:e})),value:nr,onValueChange:e=>{const t=Number(e);void 0===Ue&&rr(t),zn(Math.floor(cr.start/t)+1),Je?.(t)}})}):null,"pages"===We?e(s,{size:ce,color:ue,locale:yt,count:cr.pages,page:cr.page,siblingCount:0,getPageHref:Ge,onPageChange:zn}):null]})]}):null,Dn?null:t("span",{role:"status",className:F,children:[Kn,$n?` ${$n}`:null]}),Pt?e("span",{id:An,hidden:!0,children:wt.selectRow}):null]})}
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as t from"react";import{Button as l}from"../button/Button.js";import{Calendar as n,usePickerLabels as o}from"../../internal/calendar.js";import{CalendarIcon as r}from"../../internal/icons.js";import{PickerFooter as i,PickerShell as s}from"../../internal/picker.js";import{displaySamples as c,formatDate as m,isUnitOutside as d,isValidDate as u,localeWeekStart as h,mergeDateAndTime as p,startOfMonth as f,startOfUnit as y,toISODate as b,toISOMonth as g,toISOYear as j,today as v,withPlaceholder as x}from"../../internal/date.js";import{cx as D}from"../../internal/styles.js";import{useStyleDefaults as O}from"../../internal/defaults.js";const S={day:{dateStyle:"medium"},month:{year:"numeric",month:"long"},year:{year:"numeric"}},k={day:b,month:g,year:j};export const DatePicker=/*@__PURE__*/t.forwardRef(function DatePicker(b,g){const{value:j,defaultValue:z,onValueChange:C,open:w,defaultOpen:M,onOpenChange:P,granularity:V="day",defaultMonth:B,minDate:I,maxDate:R,shouldDisableDate:E,locale:F,weekStartsOn:L,format:N,placeholder:T,clearable:Y=!1,showTodayButton:q=!0,closeOnSelect:A=!0,labels:G,name:H,size:J="md",color:K="primary",readOnly:Q=!1,disabled:U=!1,startIcon:W,...X}=O(b,["size","density","variant","locale","labelPlacement"]),Z=o(G,F),$=L??h(F),_=N??S[V],[ee,ae]=t.useState(z??null),te=void 0!==j?j:ee,[le,ne]=t.useState(M??!1),oe=w??le,[re,ie]=t.useState(()=>f(u(te)?te:B??v()));t.useEffect(()=>{oe&&ie(f(u(te)?te:B??v()))},[oe]);const se=e=>{e&&(Q||U)||(void 0===w&&ne(e),P?.(e))},ce=e=>{void 0===j&&ae(e),C?.(e)},me=e=>{const a=y(e,V),t=u(te)?p(a,te):a;ce(t),ie(f(t)),A&&se(!1)},de=v(),ue=y(de,V),he=d(de,V,I,R)||(E?.(ue)??!1),pe="year"===V?Z.thisYear:"month"===V?Z.thisMonth:Z.today,fe=q||Y,ye=t.useMemo(()=>x(c(F,_),T),[F,_,T]);return e(s,{...X,size:J,color:K,readOnly:Q,disabled:U,triggerRef:g,startIcon:W??e(r,{}),display:u(te)?m(te,F,_):T??"",samples:ye,empty:!u(te),clearable:Y,onClear:()=>ce(null),open:oe,onOpenChange:se,clearLabel:Z.clear,hiddenValues:H?[{name:H,value:u(te)?k[V](te):""}]:void 0,children:a("div",{className:D("flex flex-col",fe&&"gap-1.5"),children:[e(n,{size:J,color:K,locale:F,weekStartsOn:$,month:re,onMonthChange:ie,selected:[te],onSelect:me,granularity:V,minDate:I,maxDate:R,shouldDisableDate:E,labels:Z,autoFocus:!0}),fe?a(i,{size:J,children:[Y?e(l,{variant:"text",size:J,color:K,density:"compact",onClick:()=>{ce(null),se(!1)},children:Z.clear}):null,q?e(l,{variant:"text",size:J,color:K,density:"compact",disabled:he,onClick:()=>me(de),children:pe}):null]}):null]})})});
1
+ "use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as t from"react";import{Button as l}from"../button/Button.js";import{Calendar as n,usePickerLabels as o}from"../../internal/calendar.js";import{CalendarIcon as r}from"../../internal/icons.js";import{PickerFooter as i,PickerShell as s}from"../../internal/picker.js";import{displaySamples as c,formatDate as m,isUnitOutside as d,isValidDate as u,localeWeekStart as p,mergeDateAndTime as h,startOfMonth as f,startOfUnit as y,toISODate as b,toISOMonth as j,toISOYear as g,today as v,withPlaceholder as x}from"../../internal/date.js";import{cx as D}from"../../internal/styles.js";import{useStyleDefaults as O}from"../../internal/defaults.js";import{useIntlLocale as S}from"../../internal/media.js";const k={day:{dateStyle:"medium"},month:{year:"numeric",month:"long"},year:{year:"numeric"}},z={day:b,month:j,year:g};export const DatePicker=/*@__PURE__*/t.forwardRef(function DatePicker(b,j){const{value:g,defaultValue:C,onValueChange:w,open:M,defaultOpen:P,onOpenChange:V,granularity:B="day",defaultMonth:I,minDate:R,maxDate:E,shouldDisableDate:F,locale:L,weekStartsOn:N,format:T,placeholder:Y,clearable:q=!1,showTodayButton:A=!0,closeOnSelect:G=!0,labels:H,name:J,size:K="md",color:Q="primary",readOnly:U=!1,disabled:W=!1,startIcon:X,...Z}=O(b,["size","density","variant","locale","labelPlacement"]),$=o(H,L),_=S(L),ee=N??p(_),ae=T??k[B],[te,le]=t.useState(C??null),ne=void 0!==g?g:te,[oe,re]=t.useState(P??!1),ie=M??oe,[se,ce]=t.useState(()=>f(u(ne)?ne:I??v()));t.useEffect(()=>{ie&&ce(f(u(ne)?ne:I??v()))},[ie]);const me=e=>{e&&(U||W)||(void 0===M&&re(e),V?.(e))},de=e=>{void 0===g&&le(e),w?.(e)},ue=e=>{const a=y(e,B),t=u(ne)?h(a,ne):a;de(t),ce(f(t)),G&&me(!1)},pe=v(),he=y(pe,B),fe=d(pe,B,R,E)||(F?.(he)??!1),ye="year"===B?$.thisYear:"month"===B?$.thisMonth:$.today,be=A||q,je=t.useMemo(()=>x(c(_,ae),Y),[_,ae,Y]);return e(s,{...Z,size:K,color:Q,readOnly:U,disabled:W,triggerRef:j,startIcon:X??e(r,{}),display:u(ne)?m(ne,_,ae):Y??"",samples:je,empty:!u(ne),clearable:q,onClear:()=>de(null),open:ie,onOpenChange:me,clearLabel:$.clear,hiddenValues:J?[{name:J,value:u(ne)?z[B](ne):""}]:void 0,children:a("div",{className:D("flex flex-col",be&&"gap-1.5"),children:[e(n,{size:K,color:Q,locale:L,weekStartsOn:ee,month:se,onMonthChange:ce,selected:[ne],onSelect:ue,granularity:B,minDate:R,maxDate:E,shouldDisableDate:F,labels:$,autoFocus:!0}),be?a(i,{size:K,children:[q?e(l,{variant:"text",size:K,color:Q,density:"compact",onClick:()=>{de(null),me(!1)},children:$.clear}):null,A?e(l,{variant:"text",size:K,color:Q,density:"compact",disabled:fe,onClick:()=>ue(pe),children:ye}):null]}):null]})})});