neba 1.11.0 → 1.12.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 (161) hide show
  1. package/README.md +4 -4
  2. package/dist/components/animate-appear/AnimateAppear.d.ts +2 -13
  3. package/dist/components/animate-appear/AnimateAppear.js +1 -1
  4. package/dist/components/animate-blink/AnimateBlink.d.ts +2 -2
  5. package/dist/components/animate-blink/AnimateBlink.js +1 -1
  6. package/dist/components/animate-counter/AnimateCounter.d.ts +45 -0
  7. package/dist/components/animate-counter/AnimateCounter.js +1 -0
  8. package/dist/components/animate-counter/index.d.ts +1 -0
  9. package/dist/components/animate-counter/index.js +1 -0
  10. package/dist/components/animate-fade/AnimateFade.d.ts +2 -2
  11. package/dist/components/animate-fade/AnimateFade.js +1 -1
  12. package/dist/components/animate-float/AnimateFloat.d.ts +35 -0
  13. package/dist/components/animate-float/AnimateFloat.js +1 -0
  14. package/dist/components/animate-float/index.d.ts +1 -0
  15. package/dist/components/animate-float/index.js +1 -0
  16. package/dist/components/animate-grow/AnimateGrow.d.ts +2 -2
  17. package/dist/components/animate-grow/AnimateGrow.js +1 -1
  18. package/dist/components/animate-reveal/AnimateReveal.d.ts +41 -0
  19. package/dist/components/animate-reveal/AnimateReveal.js +1 -0
  20. package/dist/components/animate-reveal/index.d.ts +1 -0
  21. package/dist/components/animate-reveal/index.js +1 -0
  22. package/dist/components/animate-rotate/AnimateRotate.d.ts +2 -2
  23. package/dist/components/animate-rotate/AnimateRotate.js +1 -1
  24. package/dist/components/animate-scramble/AnimateScramble.d.ts +48 -0
  25. package/dist/components/animate-scramble/AnimateScramble.js +1 -0
  26. package/dist/components/animate-scramble/index.d.ts +1 -0
  27. package/dist/components/animate-scramble/index.js +1 -0
  28. package/dist/components/animate-shake/AnimateShake.d.ts +39 -0
  29. package/dist/components/animate-shake/AnimateShake.js +1 -0
  30. package/dist/components/animate-shake/index.d.ts +1 -0
  31. package/dist/components/animate-shake/index.js +1 -0
  32. package/dist/components/animate-slide/AnimateSlide.d.ts +2 -2
  33. package/dist/components/animate-slide/AnimateSlide.js +1 -1
  34. package/dist/components/animate-split/AnimateSplit.d.ts +61 -0
  35. package/dist/components/animate-split/AnimateSplit.js +1 -0
  36. package/dist/components/animate-split/index.d.ts +1 -0
  37. package/dist/components/animate-split/index.js +1 -0
  38. package/dist/components/animate-typing/AnimateTyping.js +1 -1
  39. package/dist/components/animate-zoom/AnimateZoom.d.ts +2 -2
  40. package/dist/components/animate-zoom/AnimateZoom.js +1 -1
  41. package/dist/components/avatar/Avatar.js +1 -1
  42. package/dist/components/bar-chart/BarChart.js +1 -1
  43. package/dist/components/checkbox/Checkbox.js +1 -1
  44. package/dist/components/combobox/Combobox.js +1 -1
  45. package/dist/components/command-palette/CommandPalette.js +1 -1
  46. package/dist/components/container/Container.d.ts +12 -4
  47. package/dist/components/container/Container.js +1 -1
  48. package/dist/components/data-table/DataTable.js +1 -1
  49. package/dist/components/dialog/Dialog.js +1 -1
  50. package/dist/components/drawer/Drawer.js +1 -1
  51. package/dist/components/flex/Flex.d.ts +93 -0
  52. package/dist/components/flex/Flex.js +1 -0
  53. package/dist/components/flex/index.d.ts +2 -0
  54. package/dist/components/flex/index.js +1 -0
  55. package/dist/components/floating-action-button/FloatingActionButton.js +1 -1
  56. package/dist/components/footer/Footer.d.ts +4 -3
  57. package/dist/components/footer/Footer.js +1 -1
  58. package/dist/components/gallery/Gallery.d.ts +150 -0
  59. package/dist/components/gallery/Gallery.js +1 -0
  60. package/dist/components/gallery/GalleryViewer.d.ts +30 -0
  61. package/dist/components/gallery/GalleryViewer.js +1 -0
  62. package/dist/components/gallery/index.d.ts +2 -0
  63. package/dist/components/gallery/index.js +1 -0
  64. package/dist/components/gauge-chart/GaugeChart.js +1 -1
  65. package/dist/components/grid/Grid.js +1 -1
  66. package/dist/components/grid-container/GridContainer.js +1 -1
  67. package/dist/components/header/Header.d.ts +5 -4
  68. package/dist/components/header/Header.js +1 -1
  69. package/dist/components/heatmap-chart/HeatmapChart.js +1 -1
  70. package/dist/components/hover-card/HoverCard.js +1 -1
  71. package/dist/components/how-to-steps/HowToSteps.js +1 -1
  72. package/dist/components/image/Image.d.ts +123 -3
  73. package/dist/components/image/Image.js +1 -1
  74. package/dist/components/image/index.d.ts +1 -1
  75. package/dist/components/menu/Menu.js +1 -1
  76. package/dist/components/navigation-menu/NavigationMenu.js +1 -1
  77. package/dist/components/overlay/Overlay.js +1 -1
  78. package/dist/components/pie-chart/PieChart.js +1 -1
  79. package/dist/components/popover/Popover.js +1 -1
  80. package/dist/components/radio-group/RadioGroup.js +1 -1
  81. package/dist/components/rating/Rating.js +1 -1
  82. package/dist/components/scatter-chart/ScatterChart.js +1 -1
  83. package/dist/components/scroll-zone/ScrollZone.d.ts +9 -4
  84. package/dist/components/scroll-zone/ScrollZone.js +1 -1
  85. package/dist/components/select/Select.js +1 -1
  86. package/dist/components/show/Show.d.ts +60 -0
  87. package/dist/components/show/Show.js +1 -0
  88. package/dist/components/show/index.d.ts +2 -0
  89. package/dist/components/show/index.js +1 -0
  90. package/dist/components/sidebar/Sidebar.js +1 -1
  91. package/dist/components/spoiler/Spoiler.js +1 -1
  92. package/dist/components/stack/Stack.d.ts +126 -0
  93. package/dist/components/stack/Stack.js +1 -0
  94. package/dist/components/stack/index.d.ts +1 -0
  95. package/dist/components/stack/index.js +1 -0
  96. package/dist/components/statistic/Statistic.d.ts +8 -3
  97. package/dist/components/tabs/Tabs.d.ts +28 -0
  98. package/dist/components/tabs/Tabs.js +1 -1
  99. package/dist/components/timeline-chart/TimelineChart.js +1 -1
  100. package/dist/components/toast/Toast.js +1 -1
  101. package/dist/components/toggle/Toggle.js +1 -1
  102. package/dist/components/tooltip/Tooltip.js +1 -1
  103. package/dist/components/tour/Tour.js +1 -1
  104. package/dist/components/transfer/Transfer.js +1 -1
  105. package/dist/components/tree-view/TreeView.js +1 -1
  106. package/dist/hooks/index.d.ts +1 -1
  107. package/dist/hooks/index.js +1 -1
  108. package/dist/hooks/useMediaQuery.d.ts +35 -1
  109. package/dist/hooks/useMediaQuery.js +1 -1
  110. package/dist/index.d.ts +10 -1
  111. package/dist/index.js +1 -1
  112. package/dist/internal/animate.d.ts +65 -2
  113. package/dist/internal/animate.js +1 -1
  114. package/dist/internal/chart-frame.d.ts +32 -0
  115. package/dist/internal/chart-frame.js +1 -1
  116. package/dist/internal/chart-line.js +1 -1
  117. package/dist/internal/chart.d.ts +16 -0
  118. package/dist/internal/chart.js +1 -1
  119. package/dist/internal/grid.d.ts +13 -27
  120. package/dist/internal/grid.js +1 -1
  121. package/dist/internal/i18n.d.ts +20 -0
  122. package/dist/internal/i18n.js +1 -1
  123. package/dist/internal/media.d.ts +9 -2
  124. package/dist/internal/media.js +1 -1
  125. package/dist/internal/page-layout.d.ts +11 -9
  126. package/dist/internal/page-layout.js +1 -1
  127. package/dist/internal/picker.js +1 -1
  128. package/dist/internal/responsive.d.ts +97 -0
  129. package/dist/internal/responsive.js +1 -0
  130. package/dist/internal/styles.d.ts +68 -0
  131. package/dist/internal/styles.js +1 -1
  132. package/dist/internal/text.d.ts +42 -0
  133. package/dist/internal/text.js +1 -0
  134. package/dist/locales/ar.js +1 -1
  135. package/dist/locales/de.js +1 -1
  136. package/dist/locales/es.js +1 -1
  137. package/dist/locales/fr.js +1 -1
  138. package/dist/locales/hi.js +1 -1
  139. package/dist/locales/id.js +1 -1
  140. package/dist/locales/it.js +1 -1
  141. package/dist/locales/ja.js +1 -1
  142. package/dist/locales/ko.js +1 -1
  143. package/dist/locales/nl.js +1 -1
  144. package/dist/locales/pl.js +1 -1
  145. package/dist/locales/pt.js +1 -1
  146. package/dist/locales/ru.js +1 -1
  147. package/dist/locales/th.js +1 -1
  148. package/dist/locales/tr.js +1 -1
  149. package/dist/locales/vi.js +1 -1
  150. package/dist/locales/zh-hans.js +1 -1
  151. package/dist/locales/zh-hant.js +1 -1
  152. package/dist/styles.css +1 -1
  153. package/dist/tailwind.css +280 -24
  154. package/dist/types.d.ts +119 -6
  155. package/package.json +18 -17
  156. package/dist/components/avatar-group/AvatarGroup.d.ts +0 -47
  157. package/dist/components/avatar-group/AvatarGroup.js +0 -1
  158. package/dist/components/avatar-group/index.d.ts +0 -2
  159. package/dist/components/avatar-group/index.js +0 -1
  160. package/dist/internal/avatar-group.d.ts +0 -22
  161. package/dist/internal/avatar-group.js +0 -1
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as a from"react";import{CartesianChart as n}from"../../internal/chart-frame.js";import{barBandRatio as l,barMaxThickness as r,barPath as o,barRadius as i,chartFontSizes as s,markGap as u,toValues as c}from"../../internal/chart.js";import{useStyleDefaults as d}from"../../internal/defaults.js";export function BarChart(t){const{orientation:o="vertical",stacked:i=!1,rounded:s=!0,barSize:u,valueLabels:m="none",series:f,yAxis:v,size:x="md",density:b="default",...p}=d(t,["size","density"]),y="horizontal"===o,z="full"===i,g=a.useMemo(()=>{if(!z)return f;const e=c(f),t=[];for(const a of e)a.forEach((e,a)=>{t[a]=(t[a]??0)+Math.abs(e.value??0)});return f.map((a,n)=>({...a,data:e[n].map((e,a)=>{if(null===e.value)return null;const n=t[a];return{x:e.x,y:0===n?0:e.value/n*100,color:e.color,label:e.label??String(e.value)}})}))},[f,z]);return e(n,{...p,series:g,size:x,density:b,horizontal:y,stacked:!1!==i,yAxis:z?{min:0,max:100,tickFormat:e=>`${e}%`,...v}:v,includeZero:!0,bandRatio:l[b],headroom:"none"===m?0:12,children:t=>e(h,{context:t,stacked:!1!==i,rounded:s,barSize:u??r[x],valueLabels:m,size:x})})}function h({context:a,stacked:n,rounded:l,barSize:r,valueLabels:c,size:d}){const{values:h,visible:f,colors:v,hovered:x,activeIndex:b,plot:p,band:y,horizontal:z,valuePx:g,categoryPx:M,zeroPx:k,format:j}=a,S=h.map((e,t)=>({one:e,index:t})).filter(e=>f[e.index]),A=n?1:Math.max(1,S.length),L=Math.min(r,Math.max(1,(y.band-u*(A-1))/A)),P=L*A+u*(A-1),W=[],w=[],B=s[d];return t("g",{children:[S.map(({one:a,index:r},s)=>{const d=v[r];return e("g",{opacity:null!==x&&x!==r?.28:1,children:a.map((r,h)=>{if(null===r.value)return null;const f=M(h),v=n?0:s*(L+u)-P/2+L/2,x=n?r.value>=0?W[h]??0:w[h]??0:0,y=g(x),k=g(x+r.value);n&&(r.value>=0?W[h]=x+r.value:w[h]=x+r.value);const S=n&&0!==x?u:0,A=Math.abs(k-y)-S;if(A<=0)return null;const C=k<y,E=h===b,F=z?o(Math.min(y,k)+(C?0:S),p.top+f+v-L/2,A,L,l&&!n?i:l?i/2:0,r.value>=0?"right":"left"):o(p.left+f+v-L/2,Math.min(y,k)+(C?0:S),L,A,l&&!n?i:l?i/2:0,r.value>=0?"up":"down");return t("g",{children:[e("path",{d:F,fill:r.color??d,opacity:E?1:.92}),"none"===c||"extremes"===c&&!m(a,h)||"last"===c&&h!==a.length-1?null:e("text",{x:z?k+(r.value>=0?5:-5):p.left+f+v,y:z?p.top+f+v:r.value>=0?k-5:k+B+2,textAnchor:z?r.value>=0?"start":"end":"middle",dominantBaseline:z?"central":void 0,fontSize:B,fontWeight:500,fill:"var(--neba-fg)",className:"tabular-nums",children:r.label??j(r.value)})]},h)})},r)}),e("line",z?{x1:k,x2:k,y1:p.top,y2:p.top+p.height,stroke:"var(--neba-chart-baseline)",strokeWidth:1}:{x1:p.left,x2:p.left+p.width,y1:k,y2:k,stroke:"var(--neba-chart-baseline)",strokeWidth:1})]})}function m(e,t){const a=e[t].value;if(null===a)return!1;let n=1/0,l=-1/0;for(const t of e)null!==t.value&&(n=Math.min(n,t.value),l=Math.max(l,t.value));return a===n||a===l}
1
+ "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as a from"react";import{CartesianChart as n,markTransitionClasses as l}from"../../internal/chart-frame.js";import{barBandRatio as r,barMaxThickness as o,barPath as i,barRadius as s,chartFontSizes as u,markGap as c,toValues as d}from"../../internal/chart.js";import{useStyleDefaults as m}from"../../internal/defaults.js";export function BarChart(t){const{orientation:l="vertical",stacked:i=!1,rounded:s=!0,barSize:u,valueLabels:c="none",series:f,yAxis:v,size:x="md",density:b="default",...p}=m(t,["size","density"]),y="horizontal"===l,z="full"===i,g=a.useMemo(()=>{if(!z)return f;const e=d(f),t=[];for(const a of e)a.forEach((e,a)=>{t[a]=(t[a]??0)+Math.abs(e.value??0)});return f.map((a,n)=>({...a,data:e[n].map((e,a)=>{if(null===e.value)return null;const n=t[a];return{x:e.x,y:0===n?0:e.value/n*100,color:e.color,label:e.label??String(e.value)}})}))},[f,z]);return e(n,{...p,series:g,size:x,density:b,horizontal:y,stacked:!1!==i,yAxis:z?{min:0,max:100,tickFormat:e=>`${e}%`,...v}:v,includeZero:!0,bandRatio:r[b],headroom:"none"===c?0:12,children:t=>e(h,{context:t,stacked:!1!==i,rounded:s,barSize:u??o[x],valueLabels:c,size:x})})}function h({context:a,stacked:n,rounded:r,barSize:o,valueLabels:d,size:m}){const{values:h,visible:v,colors:x,hovered:b,activeIndex:p,plot:y,band:z,horizontal:g,valuePx:M,categoryPx:k,zeroPx:j,format:S}=a,A=h.map((e,t)=>({one:e,index:t})).filter(e=>v[e.index]),L=n?1:Math.max(1,A.length),N=Math.min(o,Math.max(1,(z.band-c*(L-1))/L)),P=N*L+c*(L-1),W=[],w=[],B=u[m];return t("g",{children:[A.map(({one:a,index:o},u)=>{const m=x[o];return e("g",{opacity:null!==b&&b!==o?.28:1,className:l,children:a.map((o,h)=>{if(null===o.value)return null;const v=k(h),x=n?0:u*(N+c)-P/2+N/2,b=n?o.value>=0?W[h]??0:w[h]??0:0,z=M(b),j=M(b+o.value);n&&(o.value>=0?W[h]=b+o.value:w[h]=b+o.value);const A=n&&0!==b?c:0,L=Math.abs(j-z)-A;if(L<=0)return null;const C=j<z,E=h===p,F=g?i(Math.min(z,j)+(C?0:A),y.top+v+x-N/2,L,N,r&&!n?s:r?s/2:0,o.value>=0?"right":"left"):i(y.left+v+x-N/2,Math.min(z,j)+(C?0:A),N,L,r&&!n?s:r?s/2:0,o.value>=0?"up":"down");return t("g",{children:[e("path",{d:F,fill:o.color??m,opacity:E?1:.92,className:l}),"none"===d||"extremes"===d&&!f(a,h)||"last"===d&&h!==a.length-1?null:e("text",{x:g?j+(o.value>=0?5:-5):y.left+v+x,y:g?y.top+v+x:o.value>=0?j-5:j+B+2,textAnchor:g?o.value>=0?"start":"end":"middle",dominantBaseline:g?"central":void 0,fontSize:B,fontWeight:500,fill:"var(--neba-fg)",className:"tabular-nums",children:o.label??S(o.value)})]},h)})},o)}),e("line",g?{x1:j,x2:j,y1:y.top,y2:y.top+y.height,stroke:"var(--neba-chart-baseline)",strokeWidth:1}:{x1:y.left,x2:y.left+y.width,y1:j,y2:j,stroke:"var(--neba-chart-baseline)",strokeWidth:1})]})}function f(e,t){const a=e[t].value;if(null===a)return!1;let n=1/0,l=-1/0;for(const t of e)null!==t.value&&(n=Math.min(n,t.value),l=Math.max(l,t.value));return a===n||a===l}
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as n}from"react/jsx-runtime";import*as r from"react";import{Checkbox as a}from"@base-ui/react/checkbox";import{Field as i}from"@base-ui/react/field";import{controlTextClasses as t,cx as l,hitAreaClasses as o,metaTextClasses as s,surfaceClasses as c,tickRadiusClasses as d,tickRowLeadingClasses as b,tickSizeClasses as h,transitionClasses as f}from"../../internal/styles.js";import{useStyleDefaults as m}from"../../internal/defaults.js";const u=["relative inline-flex shrink-0 items-center justify-center border",o,"[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]",f,"active:[transition-duration:0ms]","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2"].join(" "),p=[c,"cursor-pointer bg-(--n-panel) [border-color:var(--n-line)]","hover:bg-(--n-panel-hover) hover:[border-color:var(--n-line-hover)]","data-[checked]:bg-(--n-fill) data-[checked]:text-(--n-on-solid)","data-[checked]:[border-color:transparent]","data-[checked]:hover:bg-(--n-fill-hover)","data-[indeterminate]:bg-(--n-fill) data-[indeterminate]:text-(--n-on-solid)","data-[indeterminate]:[border-color:transparent]"].join(" "),v=[c,"cursor-default bg-(--n-panel) [border-color:var(--n-line)]","[filter:saturate(0.55)]","data-[checked]:bg-(--n-fill) data-[checked]:text-(--n-on-solid)","data-[checked]:[border-color:transparent]"].join(" "),g=["cursor-not-allowed bg-transparent [border-color:var(--neba-disabled-border)]","text-(--neba-disabled-fg) shadow-none","data-[checked]:bg-(--neba-disabled-bg)","data-[indeterminate]:bg-(--neba-disabled-bg)"].join(" ");function x(){return e("svg",{viewBox:"0 0 12 12",fill:"none","aria-hidden":"true",className:"size-full",children:e("path",{d:"M2 6.2 4.6 8.8 10 3.4",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}function k(){return e("svg",{viewBox:"0 0 12 12",fill:"none","aria-hidden":"true",className:"size-full",children:e("path",{d:"M2.5 6h7",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})})}export const Checkbox=/*@__PURE__*/r.forwardRef(function(r,o){const{size:c="md",color:f="primary",label:N,description:j,error:$,invalid:y,disabled:w=!1,readOnly:z=!1,className:C,classNames:L,style:R,...B}=m(r,["size"]),M=null!=$&&!1!==$&&""!==$,O=y??M,W=O?"danger":f,_={"--n-fill":`var(--neba-${W}-fill)`,"--n-fill-hover":`var(--neba-${W}-fill-hover)`,"--n-on-solid":`var(--neba-${W}-on-solid)`,"--n-accent":`var(--neba-${W}-accent)`,"--n-panel":"var(--neba-panel)","--n-panel-hover":"var(--neba-panel-hover)","--n-line":`var(--neba-${W}-line)`,"--n-line-hover":`var(--neba-${W}-line-hover)`,"--n-ring":`var(--neba-${W}-ring)`},D=[u,h[c],d[c],w?g:z?v:p].join(" ");return n(i.Root,{disabled:w,invalid:O,className:l("inline-flex flex-col gap-1 align-top",C??""),style:{..._,...R},children:[n("div",{className:`flex items-start gap-2 ${t[c]} ${b}`,children:[e("span",{className:"flex h-[1lh] shrink-0 items-center",children:e(a.Root,{ref:o,className:l(D,L?.control),disabled:w,readOnly:z,...B,children:e(a.Indicator,{className:l("flex size-[70%] items-center justify-center",L?.indicator),children:B.indeterminate?e(k,{}):e(x,{})})})}),N||j?n("span",{className:"flex min-w-0 flex-col gap-0.5",children:[N?e(i.Label,{className:l("leading-[1.4]",w?"text-(--neba-disabled-fg)":"cursor-pointer text-(--neba-fg)",L?.label),children:N}):null,j?e(i.Description,{className:l(s[c],"text-(--neba-muted-fg)",L?.description),children:j}):null]}):null]}),e(i.Error,M?{match:!0,className:l(s[c],"text-(--n-accent)",L?.error),children:$}:{className:l(s[c],"text-(--n-accent)",L?.error)})]})});
1
+ "use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as n from"react";import{Checkbox as r}from"@base-ui/react/checkbox";import{Field as t}from"@base-ui/react/field";import{controlTextClasses as i,cx as o,hitAreaClasses as l,metaTextClasses as s,surfaceClasses as d,tickRadiusClasses as c,tickRowLeadingClasses as h,tickSizeClasses as b,transitionClasses as f}from"../../internal/styles.js";import{useStyleDefaults as p}from"../../internal/defaults.js";const m=["relative inline-flex shrink-0 items-center justify-center border",l,"[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]",f,"active:[transition-duration:0ms]","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2"].join(" "),u=[d,"cursor-pointer bg-(--n-panel) [border-color:var(--n-line)]","hover:bg-(--n-panel-hover) hover:[border-color:var(--n-line-hover)]","data-[checked]:bg-(--n-fill) data-[checked]:text-(--n-on-solid)","data-[checked]:[border-color:transparent]","data-[checked]:hover:bg-(--n-fill-hover)","data-[indeterminate]:bg-(--n-fill) data-[indeterminate]:text-(--n-on-solid)","data-[indeterminate]:[border-color:transparent]"].join(" "),v=[d,"cursor-default bg-(--n-panel) [border-color:var(--n-line)]","[filter:saturate(0.55)]","data-[checked]:bg-(--n-fill) data-[checked]:text-(--n-on-solid)","data-[checked]:[border-color:transparent]"].join(" "),g=["cursor-not-allowed bg-transparent [border-color:var(--neba-disabled-border)]","text-(--neba-disabled-fg) shadow-none","data-[checked]:bg-(--neba-disabled-bg)","data-[indeterminate]:bg-(--neba-disabled-bg)"].join(" "),x=["flex size-[70%] items-center justify-center","[transition:opacity_var(--neba-duration)_var(--neba-ease)]","data-[starting-style]:opacity-0 data-[ending-style]:opacity-0","[&_path]:[stroke-dasharray:1]","[&_path]:[transition:stroke-dashoffset_var(--neba-duration)_var(--neba-ease)]","[&[data-starting-style]_path]:[stroke-dashoffset:1]","[&[data-ending-style]_path]:[stroke-dashoffset:1]"].join(" ");function k(){return e("svg",{viewBox:"0 0 12 12",fill:"none","aria-hidden":"true",className:"size-full",children:e("path",{d:"M2 6.2 4.6 8.8 10 3.4",pathLength:"1",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}function y(){return e("svg",{viewBox:"0 0 12 12",fill:"none","aria-hidden":"true",className:"size-full",children:e("path",{d:"M2.5 6h7",pathLength:"1",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})})}export const Checkbox=/*@__PURE__*/n.forwardRef(function(n,l){const{size:d="md",color:f="primary",label:j,description:N,error:_,invalid:$,disabled:w=!1,readOnly:L=!1,className:z,classNames:C,style:R,...B}=p(n,["size"]),M=null!=_&&!1!==_&&""!==_,O=$??M,W=O?"danger":f,D={"--n-fill":`var(--neba-${W}-fill)`,"--n-fill-hover":`var(--neba-${W}-fill-hover)`,"--n-on-solid":`var(--neba-${W}-on-solid)`,"--n-accent":`var(--neba-${W}-accent)`,"--n-panel":"var(--neba-panel)","--n-panel-hover":"var(--neba-panel-hover)","--n-line":`var(--neba-${W}-line)`,"--n-line-hover":`var(--neba-${W}-line-hover)`,"--n-ring":`var(--neba-${W}-ring)`},E=[m,b[d],c[d],w?g:L?v:u].join(" ");return a(t.Root,{disabled:w,invalid:O,className:o("inline-flex flex-col gap-1 align-top",z??""),style:{...D,...R},children:[a("div",{className:`flex items-start gap-2 ${i[d]} ${h}`,children:[e("span",{className:"flex h-[1lh] shrink-0 items-center",children:e(r.Root,{ref:l,className:o(E,C?.control),disabled:w,readOnly:L,...B,children:e(r.Indicator,{className:o(x,C?.indicator),children:B.indeterminate?e(y,{}):e(k,{})})})}),j||N?a("span",{className:"flex min-w-0 flex-col gap-0.5",children:[j?e(t.Label,{className:o("leading-[1.4]",w?"text-(--neba-disabled-fg)":"cursor-pointer text-(--neba-fg)",C?.label),children:j}):null,N?e(t.Description,{className:o(s[d],"text-(--neba-muted-fg)",C?.description),children:N}):null]}):null]}),e(t.Error,M?{match:!0,className:o(s[d],"text-(--n-accent)",C?.error),children:_}:{className:o(s[d],"text-(--n-accent)",C?.error)})]})});
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as l 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 s,fillMessage as o,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 h}from"../../internal/keys.js";import{chipRemoveClasses as b,controlHeightClasses as f,controlTextLeadingClasses as g,cx as x,disabledClasses as v,fieldReadOnlyClasses as y,fieldRestClasses as N,focusWithinRingClasses as w,gapClasses as j,hasContent as C,iconClasses as L,metaTextClasses as I,paddingXClasses as S,radiusClasses as O,stackGapClasses as V,surfaceClasses as z,surfaceSlots as _,transitionClasses as $}from"../../internal/styles.js";import{useStyleDefaults as k}from"../../internal/defaults.js";const A=["group relative flex w-full cursor-text items-center","[-webkit-tap-highlight-color:transparent]",$,"focus-within:[transition-duration:0ms]",w,L].join(" "),M={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]"},R=[z,"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]"].join(" "),T=["relative flex cursor-pointer items-center gap-2 select-none","rounded-(--neba-radius-xs) py-1.5 pe-2 ps-7",$,"data-[highlighted]:bg-(--n-soft-hover) data-[highlighted]:text-(--n-accent)","data-[selected]:text-(--n-accent) data-[selected]:font-medium","data-[disabled]:cursor-not-allowed data-[disabled]:text-(--neba-disabled-fg)","[outline:none]"].join(" "),q=["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 E(e){return null==e?[]:Array.isArray(e)?e.slice():[e]}export function Combobox(w){const{variant:L="outline",size:z="md",color:$="primary",density:F="default",elevation:P=0,items:B,multiple:D,value:G,defaultValue:H,onValueChange:K,onInputValueChange:W,allowCustom:J=!0,customLabel:Q,clearable:U=!1,locale:X,emptyMessage:Y,limit:Z,placeholder:ee,label:ae,description:le,error:te,invalid:ne,startIcon:ie,fullWidth:re=!1,disabled:se=!1,readOnly:oe=!1,required:ce=!1,name:de,open:me,defaultOpen:ue,onOpenChange:pe,clearLabel:he,removeLabel:be,inputRef:fe,shortcuts:ge,id:xe,className:ve,classNames:ye,style:Ne,...we}=k(w,["size","density","variant","locale"]),je=c(s,X),Ce=c(r,X),Le=be??(e=>o(je.remove,{label:e})),Ie=C(te),Se=ne??Ie,Oe=Se?"danger":$,Ve=!0===D,ze=l.useMemo(()=>B.map(e=>({value:e.value,label:e.label??String(e.value),disabled:e.disabled})),[B]),[_e,$e]=l.useState(()=>E(H)),ke=void 0===G?_e:E(G),[Ae,Me]=l.useState(""),Re=l.useMemo(()=>new Map(ze.map(e=>[e.value,e])),[ze]),Te=l.useCallback(e=>Re.get(e)??{value:e,label:String(e),custom:!0},[Re]),qe=Ae.trim(),Ee=qe.toLocaleLowerCase(),Fe=""===qe||ze.some(e=>e.label.toLocaleLowerCase()===Ee||String(e.value).toLocaleLowerCase()===Ee)||ke.some(e=>String(e).toLocaleLowerCase()===Ee),Pe=!J||oe||se||Fe?null:qe,Be=l.useMemo(()=>null===Pe?ze:[...ze,{value:Pe,label:Pe,custom:!0}],[ze,Pe]),De=Ve?ke.map(Te):ke.length>0?Te(ke[0]):null;const Ge=S[F][z],He=[A,g[z],O[z],j[z],Ve?M[z]:f[z],`${Ge} pe-1.5`,se?v[L]:oe?y[L]:N[L],ye?.shell].filter(Boolean).join(" "),Ke=["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",ye?.control].filter(Boolean).join(" "),We=a=>e(t.Input,{ref:fe,onKeyDown:h(ge),placeholder:ee,className:Ve?`${Ke} min-w-16 ${a?"ms-1.5":""}`:Ke});return a(n.Root,{disabled:se,invalid:Se,className:x("flex-col align-top",V[z],re?"flex w-full":"inline-flex",ve??""),style:{..._(Oe,P),...Ne},...we,children:[ae?e(n.Label,{className:x(I[z],"font-medium",se?"text-(--neba-disabled-fg)":"text-(--neba-fg)",ye?.label),children:ae}):null,a(t.Root,{id:xe,name:de,items:Be,multiple:Ve,value:De,onValueChange:e=>{!function(e){void 0===G&&$e(e),K?.(Ve?e:e[0]??null)}((null===e?[]:Array.isArray(e)?e:[e]).map(e=>e.value))},onInputValueChange:e=>{Me(e),W?.(e)},open:me,defaultOpen:ue,onOpenChange:e=>pe?.(e),autoHighlight:!0,itemToStringLabel:e=>e.label,itemToStringValue:e=>String(e.value),isItemEqualToValue:(e,a)=>e.value===a.value,limit:Z,disabled:se,readOnly:oe,required:ce,children:[a(t.InputGroup,{className:He,children:[ie?e("span",{className:"flex h-[1lh] shrink-0 items-center text-(--neba-muted-fg)",children:ie}):null,Ve?e(t.Chips,{className:"flex min-w-0 flex-1 flex-wrap items-center gap-1",children:e(t.Value,{children:n=>a(l.Fragment,{children:[n.map(a=>e(t.Chip,{render:e(i,{variant:"outline",size:z,color:Oe,density:"compact",disabled:se,className:ye?.chip,endIcon:oe||se?null:e(t.ChipRemove,{"aria-label":Le(a.label),className:b,children:e(u,{})})}),children:a.label},String(a.value))),We(n.length>0)]})})}):We(!1),U&&!oe?e(t.Clear,{"aria-label":he??Ce.clear,className:q,children:e(u,{})}):null,e(t.Trigger,{"aria-label":"string"==typeof ae?void 0:"Open",className:q,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,{})})})]}),e(t.Portal,{children:e(t.Positioner,{className:"neba-portal z-50 [outline:none]",sideOffset:6,children:a(t.Popup,{className:x(R,O[z],g[z],ye?.popup),style:_(Oe,3),children:[e(t.Empty,{className:"px-2 py-1.5 text-(--neba-muted-fg) empty:hidden",children:Y??je.empty}),e(t.List,{children:n=>e(t.Item,{value:n,disabled:n.disabled,className:x(T,ye?.item),children:n.custom?a(l.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:Q?Q(n.label):`Add “${n.label}”`})]}):a(l.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)}`)})]})})})]}),le?e(n.Description,{className:x(I[z],"text-(--neba-muted-fg)",ye?.description),children:le}):null,e(n.Error,Ie?{match:!0,className:x(I[z],"text-(--n-accent)",ye?.error),children:te}:{className:x(I[z],"text-(--n-accent)",ye?.error)})]})}
1
+ "use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as l 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 s,fillMessage as o,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 h}from"../../internal/keys.js";import{chipRemoveClasses as b,controlHeightClasses as f,controlTextLeadingClasses as g,cx as x,disabledClasses as v,fieldReadOnlyClasses as y,fieldRestClasses as N,focusWithinRingClasses as w,gapClasses as j,hasContent as C,iconClasses as L,metaTextClasses as I,paddingXClasses as S,popupFadeClasses as O,radiusClasses as V,stackGapClasses as z,surfaceClasses as _,surfaceSlots as $,transitionClasses as k}from"../../internal/styles.js";import{useStyleDefaults as A}from"../../internal/defaults.js";const M=["group relative flex w-full cursor-text items-center","[-webkit-tap-highlight-color:transparent]",k,"focus-within:[transition-duration:0ms]",w,L].join(" "),R={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]"},T=[_,"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]",O].join(" "),q=["relative flex cursor-pointer items-center gap-2 select-none","rounded-(--neba-radius-xs) py-1.5 pe-2 ps-7",k,"data-[highlighted]:bg-(--n-soft-hover) data-[highlighted]:text-(--n-accent)","data-[selected]:text-(--n-accent) data-[selected]:font-medium","data-[disabled]:cursor-not-allowed data-[disabled]:text-(--neba-disabled-fg)","[outline:none]"].join(" "),E=["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 F(e){return null==e?[]:Array.isArray(e)?e.slice():[e]}export function Combobox(w){const{variant:L="outline",size:O="md",color:_="primary",density:k="default",elevation:P=0,items:B,multiple:D,value:G,defaultValue:H,onValueChange:K,onInputValueChange:W,allowCustom:J=!0,customLabel:Q,clearable:U=!1,locale:X,emptyMessage:Y,limit:Z,placeholder:ee,label:ae,description:le,error:te,invalid:ne,startIcon:ie,fullWidth:re=!1,disabled:se=!1,readOnly:oe=!1,required:ce=!1,name:de,open:me,defaultOpen:ue,onOpenChange:pe,clearLabel:he,removeLabel:be,inputRef:fe,shortcuts:ge,id:xe,className:ve,classNames:ye,style:Ne,...we}=A(w,["size","density","variant","locale"]),je=c(s,X),Ce=c(r,X),Le=be??(e=>o(je.remove,{label:e})),Ie=C(te),Se=ne??Ie,Oe=Se?"danger":_,Ve=!0===D,ze=l.useMemo(()=>B.map(e=>({value:e.value,label:e.label??String(e.value),disabled:e.disabled})),[B]),[_e,$e]=l.useState(()=>F(H)),ke=void 0===G?_e:F(G),[Ae,Me]=l.useState(""),Re=l.useMemo(()=>new Map(ze.map(e=>[e.value,e])),[ze]),Te=l.useCallback(e=>Re.get(e)??{value:e,label:String(e),custom:!0},[Re]),qe=Ae.trim(),Ee=qe.toLocaleLowerCase(),Fe=""===qe||ze.some(e=>e.label.toLocaleLowerCase()===Ee||String(e.value).toLocaleLowerCase()===Ee)||ke.some(e=>String(e).toLocaleLowerCase()===Ee),Pe=!J||oe||se||Fe?null:qe,Be=l.useMemo(()=>null===Pe?ze:[...ze,{value:Pe,label:Pe,custom:!0}],[ze,Pe]),De=Ve?ke.map(Te):ke.length>0?Te(ke[0]):null;const Ge=S[k][O],He=[M,g[O],V[O],j[O],Ve?R[O]:f[O],`${Ge} pe-1.5`,se?v[L]:oe?y[L]:N[L],ye?.shell].filter(Boolean).join(" "),Ke=["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",ye?.control].filter(Boolean).join(" "),We=a=>e(t.Input,{ref:fe,onKeyDown:h(ge),placeholder:ee,className:Ve?`${Ke} min-w-16 ${a?"ms-1.5":""}`:Ke});return a(n.Root,{disabled:se,invalid:Se,className:x("flex-col align-top",z[O],re?"flex w-full":"inline-flex",ve??""),style:{...$(Oe,P),...Ne},...we,children:[ae?e(n.Label,{className:x(I[O],"font-medium",se?"text-(--neba-disabled-fg)":"text-(--neba-fg)",ye?.label),children:ae}):null,a(t.Root,{id:xe,name:de,items:Be,multiple:Ve,value:De,onValueChange:e=>{!function(e){void 0===G&&$e(e),K?.(Ve?e:e[0]??null)}((null===e?[]:Array.isArray(e)?e:[e]).map(e=>e.value))},onInputValueChange:e=>{Me(e),W?.(e)},open:me,defaultOpen:ue,onOpenChange:e=>pe?.(e),autoHighlight:!0,itemToStringLabel:e=>e.label,itemToStringValue:e=>String(e.value),isItemEqualToValue:(e,a)=>e.value===a.value,limit:Z,disabled:se,readOnly:oe,required:ce,children:[a(t.InputGroup,{className:He,children:[ie?e("span",{className:"flex h-[1lh] shrink-0 items-center text-(--neba-muted-fg)",children:ie}):null,Ve?e(t.Chips,{className:"flex min-w-0 flex-1 flex-wrap items-center gap-1",children:e(t.Value,{children:n=>a(l.Fragment,{children:[n.map(a=>e(t.Chip,{render:e(i,{variant:"outline",size:O,color:Oe,density:"compact",disabled:se,className:ye?.chip,endIcon:oe||se?null:e(t.ChipRemove,{"aria-label":Le(a.label),className:b,children:e(u,{})})}),children:a.label},String(a.value))),We(n.length>0)]})})}):We(!1),U&&!oe?e(t.Clear,{"aria-label":he??Ce.clear,className:E,children:e(u,{})}):null,e(t.Trigger,{"aria-label":"string"==typeof ae?void 0:"Open",className:E,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,{})})})]}),e(t.Portal,{children:e(t.Positioner,{className:"neba-portal z-50 [outline:none]",sideOffset:6,children:a(t.Popup,{className:x(T,V[O],g[O],ye?.popup),style:$(Oe,3),children:[e(t.Empty,{className:"px-2 py-1.5 text-(--neba-muted-fg) empty:hidden",children:Y??je.empty}),e(t.List,{children:n=>e(t.Item,{value:n,disabled:n.disabled,className:x(q,ye?.item),children:n.custom?a(l.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:Q?Q(n.label):`Add “${n.label}”`})]}):a(l.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)}`)})]})})})]}),le?e(n.Description,{className:x(I[O],"text-(--neba-muted-fg)",ye?.description),children:le}):null,e(n.Error,Ie?{match:!0,className:x(I[O],"text-(--n-accent)",ye?.error),children:te}:{className:x(I[O],"text-(--n-accent)",ye?.error)})]})}
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as a from"react";import{Autocomplete as n}from"@base-ui/react/autocomplete";import{Dialog as l}from"@base-ui/react/dialog";import{Shortcut as r}from"../shortcut/Shortcut.js";import{matchesShortcut as s}from"../../internal/keys.js";import{commandMessages as o,useMessages as i}from"../../internal/i18n.js";import{searchHaystack as c,searchText as d}from"../../internal/search.js";import{controlTextLeadingClasses as m,cx as p,hasContent as u,metaTextClasses as h,radiusClasses as x,surfaceClasses as f,surfaceSlots as b,toLength as g}from"../../internal/styles.js";import{useStyleDefaults as y}from"../../internal/defaults.js";const v=["fixed inset-0 z-50 bg-(--neba-scrim)","[backdrop-filter:blur(2px)]","[transition:opacity_var(--neba-duration)_var(--neba-ease)]","data-[starting-style]:opacity-0 data-[ending-style]:opacity-0"].join(" "),w=[f,"relative flex w-full flex-col overflow-hidden","border text-(--neba-fg) bg-(--n-panel-press)","[border-color:var(--n-line)]","[box-shadow:var(--neba-shadow-3),var(--neba-plate-glass)]","[outline:none]","[transition:opacity_var(--neba-duration)_var(--neba-ease)]","data-[starting-style]:opacity-0 data-[ending-style]:opacity-0"].join(" "),N={xs:"max-w-sm",sm:"max-w-md",md:"max-w-xl",lg:"max-w-2xl",xl:"max-w-3xl"},k={xs:"h-9",sm:"h-10",md:"h-12",lg:"h-14",xl:"h-16"},j={xs:"py-1",sm:"py-1.5",md:"py-2",lg:"py-2.5",xl:"py-3"},_={xs:"px-2.5",sm:"px-3",md:"px-3.5",lg:"px-4",xl:"px-5"},z=["flex cursor-pointer items-center gap-3 select-none","[transition:background-color_var(--neba-duration)_var(--neba-ease)]","data-[highlighted]:bg-(--n-soft) data-[highlighted]:text-(--n-accent)","data-[disabled]:cursor-not-allowed data-[disabled]:text-(--neba-disabled-fg)"].join(" ");function C(e){return c([e.label,e.group,...e.keywords??[]])}export function CommandPalette(c){const{items:f,open:S,defaultOpen:E=!1,onOpenChange:M,onSelect:L,shortcut:O="Mod+K",width:P,maxHeight:V=320,locale:D,placeholder:F,emptyMessage:H,label:I,size:R="md",color:$="primary",density:B="default",className:K,classNames:T}=y(c,["size","density","locale"]),W=i(o,D),[q,A]=a.useState(E),[G,J]=a.useState(""),Q=S??q,U=a.useCallback(e=>{void 0===S&&A(e),M?.(e)},[S,M]);a.useEffect(()=>{if(!1===O)return;const e=e=>{s(e,O)&&(e.preventDefault(),U(!0))};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[O,U]);const X=a.useMemo(()=>f.map(C),[f]),Y=a.useMemo(()=>{const e=d(G);return""===e?f:f.filter((t,a)=>X[a].includes(e))},[f,X,G]),Z=g(P),ee=g(V);return e(l.Root,{open:Q,onOpenChange:e=>{e||J(""),U(e)},children:t(l.Portal,{children:[e(l.Backdrop,{className:p("neba-portal",v,T?.backdrop)}),e(l.Viewport,{className:p("neba-portal fixed inset-0 z-50 flex justify-center p-4 pt-[12vh]",T?.viewport),children:e(l.Popup,{"aria-label":I??W.label,className:p(w,x[R],m[R],void 0===Z?N[R]:"","self-start",K),style:{...b($,3),...void 0===Z?null:{maxWidth:Z}},children:t(n.Root,{open:!0,mode:"list",items:Y,filter:null,value:G,onValueChange:e=>J(e),itemToStringValue:e=>e.label,children:[e("div",{className:`flex shrink-0 items-center border-b [border-color:var(--n-line)] ${_[R]}`,children:e(n.Input,{autoFocus:!0,placeholder:F??W.search,className:p("min-w-0 flex-1 bg-transparent [font:inherit] text-inherit [outline:none]","placeholder:text-(--neba-muted-fg) caret-(--n-accent)",k[R],T?.input)})}),e(n.List,{className:p("min-h-0 flex-1 overflow-y-auto overscroll-contain p-1",T?.list),style:{maxHeight:ee},children:(l,s)=>t(a.Fragment,{children:[l.group&&l.group!==Y[s-1]?.group?e("div",{role:"presentation",className:p(_[R],"pt-2 pb-1 font-medium text-(--neba-muted-fg)",h[R],T?.group),children:l.group}):null,t(n.Item,{index:s,value:l,disabled:l.disabled,onClick:()=>(e=>{e.disabled||(e.onSelect?.(),L?.(e),U(!1))})(l),className:p(z,x[R],_[R],j["compact"===B?"xs":R],T?.item),children:[u(l.icon)?e("span",{className:"flex h-[1lh] shrink-0 items-center [&_svg]:size-[1.15em]",children:l.icon}):null,t("span",{className:"flex min-w-0 flex-1 flex-col",children:[e("span",{className:"truncate",children:l.label}),u(l.description)?e("span",{className:`truncate text-(--neba-muted-fg) ${h[R]}`,children:l.description}):null]}),l.shortcut?e(r,{size:"xs",keys:l.shortcut,className:"shrink-0"}):null]})]},l.value)}),e(n.Empty,{className:p(_[R],"py-6 text-center text-(--neba-muted-fg)",h[R],T?.empty),children:H??W.empty})]})})})]})})}
1
+ "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as a from"react";import{Autocomplete as l}from"@base-ui/react/autocomplete";import{Dialog as n}from"@base-ui/react/dialog";import{Shortcut as r}from"../shortcut/Shortcut.js";import{matchesShortcut as s}from"../../internal/keys.js";import{commandMessages as o,useMessages as i}from"../../internal/i18n.js";import{searchHaystack as c,searchText as d}from"../../internal/search.js";import{controlTextLeadingClasses as m,cx as p,hasContent as u,metaTextClasses as h,popupFadeClasses as x,radiusClasses as f,surfaceClasses as b,surfaceSlots as g,toLength as v}from"../../internal/styles.js";import{useStyleDefaults as w}from"../../internal/defaults.js";const y=["fixed inset-0 z-50 bg-(--neba-scrim)","[backdrop-filter:blur(2px)]",x].join(" "),N=[b,"relative flex w-full flex-col overflow-hidden","border text-(--neba-fg) bg-(--n-panel-press)","[border-color:var(--n-line)]","[box-shadow:var(--neba-shadow-3),var(--neba-plate-glass)]","[outline:none]",x].join(" "),k={xs:"max-w-sm",sm:"max-w-md",md:"max-w-xl",lg:"max-w-2xl",xl:"max-w-3xl"},j={xs:"h-9",sm:"h-10",md:"h-12",lg:"h-14",xl:"h-16"},z={xs:"py-1",sm:"py-1.5",md:"py-2",lg:"py-2.5",xl:"py-3"},C={xs:"px-2.5",sm:"px-3",md:"px-3.5",lg:"px-4",xl:"px-5"},S=["flex cursor-pointer items-center gap-3 select-none","[transition:background-color_var(--neba-duration)_var(--neba-ease)]","data-[highlighted]:bg-(--n-soft) data-[highlighted]:text-(--n-accent)","data-[disabled]:cursor-not-allowed data-[disabled]:text-(--neba-disabled-fg)"].join(" ");function E(e){return c([e.label,e.group,...e.keywords??[]])}export function CommandPalette(c){const{items:x,open:b,defaultOpen:M=!1,onOpenChange:L,onSelect:O,shortcut:P="Mod+K",width:V,maxHeight:_=320,locale:D,placeholder:F,emptyMessage:H,label:I,size:R="md",color:$="primary",density:B="default",className:K,classNames:T}=w(c,["size","density","locale"]),W=i(o,D),[q,A]=a.useState(M),[G,J]=a.useState(""),Q=b??q,U=a.useCallback(e=>{void 0===b&&A(e),L?.(e)},[b,L]);a.useEffect(()=>{if(!1===P)return;const e=e=>{s(e,P)&&(e.preventDefault(),U(!0))};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[P,U]);const X=a.useMemo(()=>x.map(E),[x]),Y=a.useMemo(()=>{const e=d(G);return""===e?x:x.filter((t,a)=>X[a].includes(e))},[x,X,G]),Z=v(V),ee=v(_);return e(n.Root,{open:Q,onOpenChange:e=>{e||J(""),U(e)},children:t(n.Portal,{children:[e(n.Backdrop,{className:p("neba-portal",y,T?.backdrop)}),e(n.Viewport,{className:p("neba-portal fixed inset-0 z-50 flex justify-center p-4 pt-[12vh]",T?.viewport),children:e(n.Popup,{"aria-label":I??W.label,className:p(N,f[R],m[R],void 0===Z?k[R]:"","self-start",K),style:{...g($,3),...void 0===Z?null:{maxWidth:Z}},children:t(l.Root,{open:!0,mode:"list",items:Y,filter:null,value:G,onValueChange:e=>J(e),itemToStringValue:e=>e.label,children:[e("div",{className:`flex shrink-0 items-center border-b [border-color:var(--n-line)] ${C[R]}`,children:e(l.Input,{autoFocus:!0,placeholder:F??W.search,className:p("min-w-0 flex-1 bg-transparent [font:inherit] text-inherit [outline:none]","placeholder:text-(--neba-muted-fg) caret-(--n-accent)",j[R],T?.input)})}),e(l.List,{className:p("min-h-0 flex-1 overflow-y-auto overscroll-contain p-1",T?.list),style:{maxHeight:ee},children:(n,s)=>t(a.Fragment,{children:[n.group&&n.group!==Y[s-1]?.group?e("div",{role:"presentation",className:p(C[R],"pt-2 pb-1 font-medium text-(--neba-muted-fg)",h[R],T?.group),children:n.group}):null,t(l.Item,{index:s,value:n,disabled:n.disabled,onClick:()=>(e=>{e.disabled||(e.onSelect?.(),O?.(e),U(!1))})(n),className:p(S,f[R],C[R],z["compact"===B?"xs":R],T?.item),children:[u(n.icon)?e("span",{className:"flex h-[1lh] shrink-0 items-center [&_svg]:size-[1.15em]",children:n.icon}):null,t("span",{className:"flex min-w-0 flex-1 flex-col",children:[e("span",{className:"truncate",children:n.label}),u(n.description)?e("span",{className:`truncate text-(--neba-muted-fg) ${h[R]}`,children:n.description}):null]}),n.shortcut?e(r,{size:"xs",keys:n.shortcut,className:"shrink-0"}):null]})]},n.value)}),e(l.Empty,{className:p(C[R],"py-6 text-center text-(--neba-muted-fg)",h[R],T?.empty),children:H??W.empty})]})})})]})})}
@@ -1,16 +1,24 @@
1
1
  import * as React from 'react';
2
2
  import { useRender } from '@base-ui/react/use-render';
3
- import type { NebaDensity, NebaSize } from '../../types.js';
3
+ import type { NebaDensity, NebaMeasure, NebaResponsive, NebaSize } from '../../types.js';
4
4
  export interface ContainerProps extends React.ComponentPropsWithoutRef<'div'> {
5
5
  /**
6
- * How wide the content is allowed to get, on the same ladder the breakpoints
7
- * use — `sm` 40rem, `md` 48rem, `lg` 64rem, `xl` 80rem, `xs` 30rem.
6
+ * How wide the content is allowed to get.
7
+ *
8
+ * A step of the measure ladder — `xs` 30rem, `sm` 40rem, `md` 48rem, `lg`
9
+ * 64rem, `xl` 80rem — or any length of your own: `'60ch'`, `'min(90vw,
10
+ * 72rem)'`, or a number, which is pixels. The four upper steps are the
11
+ * breakpoint floors; `xs` is not, because a measure of zero is not a thing.
12
+ *
13
+ * Responsive: `maxWidth={{ xs: 'none', lg: 'xl' }}` lets the content run to
14
+ * the gutters until 64rem and holds it at 80rem from there on. Every entry
15
+ * applies from its own breakpoint up.
8
16
  *
9
17
  * `none`, the default, is no limit: a Container's job is the gutter, and a
10
18
  * measure is a second decision that a page should have to ask for.
11
19
  * @default 'none'
12
20
  */
13
- maxWidth?: NebaSize | 'none';
21
+ maxWidth?: NebaResponsive<NebaMeasure>;
14
22
  /**
15
23
  * The gutter, on the `size`/`density` scale. Turn it off to keep the
16
24
  * centring and the measure without the padding.
@@ -1 +1 @@
1
- "use client";import*as e from"react";import{useRender as r}from"@base-ui/react/use-render";import{boxPaddingXClasses as m}from"../box/Box.js";import{cx as n}from"../../internal/styles.js";import{useStyleDefaults as t}from"../../internal/defaults.js";const o={xs:"max-w-[30rem]",sm:"max-w-[40rem]",md:"max-w-[48rem]",lg:"max-w-[64rem]",xl:"max-w-[80rem]"};export const Container=/*@__PURE__*/e.forwardRef(function(e,s){const{maxWidth:a="none",padded:i=!0,size:d="md",density:l="default",centered:c=!0,render:f,className:x,children:p,...u}=t(e,["size","density"]),w=n("block w-full","none"===a?"":o[a],c?"mx-auto":"",i?m[l][d]:"",x??"");return r({render:f,ref:s,props:{className:w,children:p,...u}})});
1
+ "use client";import*as e from"react";import{useRender as r}from"@base-ui/react/use-render";import{boxPaddingXClasses as t}from"../box/Box.js";import{responsiveSlots as s}from"../../internal/responsive.js";import{cx as n,measureValue as o}from"../../internal/styles.js";import{useStyleDefaults as a}from"../../internal/defaults.js";export const Container=/*@__PURE__*/e.forwardRef(function(e,i){const{maxWidth:m,padded:d=!0,size:l="md",density:f="default",centered:c=!0,render:p,className:u,style:x,children:w,...y}=a(e,["size","density"]),b=n("neba-measure block w-full max-w-(--n-max-w)",c?"mx-auto":"",d?t[f][l]:"",u??"");return r({render:p,ref:i,props:{className:b,style:{...s("max-w",m,o),...x},children:w,...y}})});
@@ -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 l}from"../button/Button.js";import{Checkbox as o}from"../checkbox/Checkbox.js";import{Pagination as s}from"../pagination/Pagination.js";import{Select as i}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 m,defaultColumnWidth as g,keysBetween as f,minColumnWidth as h,nextSort as y,pageBounds as b,sortRows as v,virtualWindow as k}from"../../internal/data-table.js";import{beginPointerDrag as w}from"../../internal/drag.js";import{emptyMessages as x,fillMessage as C,tableMessages as S,useMessages as M}from"../../internal/i18n.js";import{searchHaystack as N,searchText as K}from"../../internal/search.js";import{ChevronIcon as z}from"../../internal/icons.js";import{observeResize as _}from"../../internal/observe.js";import{downloadText as j,toCsv as $}from"../../internal/csv.js";import{controlTextLeadingClasses as E,cx as D,hasContent as P,metaTextClasses as R,paddingXValues as T,srOnlyClasses as A,toLength as I}from"../../internal/styles.js";import{useStyleDefaults as B}from"../../internal/defaults.js";const L=["[--n-row:transparent]","[transition:background-color_var(--neba-duration)_var(--neba-ease)]"].join(" "),F={"--n-stripe":"color-mix(in oklab, var(--neba-fg) 4%, transparent)"},O=["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(" "),H=["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)]"].join(" ");function W(){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(X){const{headers:V,items:q,getRowKey:G,variant:U="outline",size:Y="sm",color:J="primary",density:Q="compact",elevation:Z=0,height:ee,maxHeight:te,rowHeight:ne,striped:re=!1,hoverable:ae=!0,stickyHeader:le=!0,caption:oe,label:se,empty:ie,virtual:ce=!0,overscan:ue=8,sortable:de=!1,sortMode:pe="single",sort:me,defaultSort:ge,onSortChange:fe,resizable:he=!1,columnWidths:ye,columnOrder:be,defaultColumnOrder:ve,onColumnOrderChange:ke,reorderable:we=!1,defaultColumnWidths:xe,onColumnWidthsChange:Ce,selectionMode:Se="none",selected:Me,defaultSelected:Ne,onSelectedChange:Ke,checkboxes:ze=!1,onRowClick:_e,onRowActivate:je,paging:$e="scroll",page:Ee,defaultPage:De=1,onPageChange:Pe,pageSize:Re,defaultPageSize:Te=25,onPageSizeChange:Ae,pageSizeOptions:Ie=[10,25,50,100],footer:Be,search:Le,defaultSearch:Fe,onSearchChange:Oe,searchable:He=!1,searchPlaceholder:We,filter:Xe,toolbar:Ve,exportable:qe=!1,exportFileName:Ge="table.csv",onExport:Ue,onCellEdit:Ye,groupBy:Je,collapsibleGroups:Qe=!0,defaultCollapsedGroups:Ze,manual:et=!1,rowCount:tt,locale:nt,className:rt,style:at,...lt}=B(X,["size","density","variant","locale"]),ot=M(S,nt),st=M(x,nt),it=r.useId(),ct=ne??p[Q][Y],ut=d[Q][Y],dt=T[Q][Y],pt=r.useMemo(()=>new Set(!0===et?["sort","filter","pages"]:et||[]),[et]),[mt,gt]=r.useState(()=>ve??[]),ft=be??mt,ht=r.useMemo(()=>{const e=V.filter(e=>!e.hidden),t=ft.map(t=>e.find(e=>e.key===t)).filter(e=>void 0!==e),n=e.filter(e=>!ft.includes(e.key)),r=0===ft.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)},[V,ft]),yt=ht.some(e=>void 0!==e.group),bt="none"!==Se,vt="multiple"===Se,kt=bt&&ze,wt=r.useMemo(()=>q.map((e,t)=>{const n=G?G(e,t):t;return{row:e,identity:n,key:String(n),origin:t}}),[q,G]),[xt,Ct]=r.useState(Fe??""),St=(Le??xt).trim(),Mt=""!==St&&!pt.has("filter"),Nt=r.useMemo(()=>ht.filter(e=>!1!==e.searchable),[ht]),Kt=r.useMemo(()=>Mt&&0!==Nt.length?wt.map(e=>N(Nt.map(t=>t.value?t.value(e.row):e.row[t.key]))):null,[wt,Nt,Mt]),zt=r.useMemo(()=>{if(pt.has("filter"))return wt;const e=K(St),t=""!==e&&Kt?wt.filter(t=>Kt[t.origin].includes(e)):wt;return Xe?t.filter(e=>Xe(e.row,e.origin)):t},[wt,St,Xe,pt,Kt]),_t=r.useMemo(()=>new Intl.Collator(nt,{numeric:!0,sensitivity:"base"}),[nt]),[jt,$t]=r.useState(ge??[]),Et=me??jt,Dt=r.useMemo(()=>pt.has("sort")?zt:v(zt,Et,e=>{const t=ht.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(e,t)=>u(n(e.row),n(t.row),_t)}),[zt,Et,ht,_t,pt]),[Pt,Rt]=r.useState(De),[Tt,At]=r.useState(Te),It=Re??Tt,[Bt,Lt]=r.useState(()=>new Set(Ze??[])),Ft=r.useMemo(()=>{if(!Je)return null;const e=[],t=new Map;for(const n of Dt){const r=Je(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}},[Dt,Je]),Ot=r.useMemo(()=>Ft?Ft.order.flatMap(e=>Bt.has(e)?[]:Ft.byLabel.get(e)??[]):Dt,[Ft,Bt,Dt]),Ht=pt.has("pages")?tt??Ot.length:Ot.length,Wt=b(Ht,Ee??Pt,It),Xt=r.useMemo(()=>"pages"!==$e||pt.has("pages")?Ot:Ot.slice(Wt.start,Wt.end),[Ot,$e,pt,Wt.start,Wt.end]),Vt="pages"===$e?Wt.start:0,qt=r.useMemo(()=>Xt.map(e=>e.key),[Xt]),Gt=r.useMemo(()=>new Map(wt.map(e=>[e.key,e])),[wt]),[Ut,Yt]=r.useState(Ne??[]),Jt=Me??Ut,Qt=r.useMemo(()=>new Set(Jt.map(String)),[Jt]),[Zt,en]=r.useState(null),tn=r.useRef(null),nn=r.useRef({paged:Xt,pagedKeys:qt,byKey:Gt,selectedKeys:Qt,multiple:vt});nn.current={paged:Xt,pagedKeys:qt,byKey:Gt,selectedKeys:Qt,multiple:vt};const rn=r.useCallback(e=>{const t=[],n=[];for(const r of e){const e=nn.current.byKey.get(r);e&&(t.push(e.identity),n.push(e.row))}void 0===Me&&Yt(t),Ke?.(t,n)},[Me,Ke]),an=r.useCallback(e=>{tn.current=e,rn([e])},[rn]),ln=r.useCallback(e=>{const t=nn.current.selectedKeys,n=new Set(t);n.has(e)?n.delete(e):n.add(e),tn.current=e,rn([...n])},[rn]),on=r.useCallback((e,t)=>{const n=nn.current.pagedKeys,r=tn.current??n[0];if(void 0===r)return;const a=f(n,r,e);0!==a.length&&rn(t?[...new Set([...nn.current.selectedKeys,...a])]:a)},[rn]),sn=r.useRef(null),cn=r.useRef(null),un=r.useRef(null),[dn,pn]=r.useState(0),[mn,gn]=r.useState(0),fn=void 0!==ee||void 0!==te,hn=ce&&fn&&Xt.length>0&&!Je;r.useLayoutEffect(()=>{const e=sn.current;if(e&&hn)return pn(e.clientHeight),_(e,e=>pn(e.contentRect.height))},[hn]);const yn=r.useCallback(e=>{if(!hn)return;const t=Math.floor(e.currentTarget.scrollTop/ct)*ct;gn(e=>e===t?e:t)},[hn,ct]),bn=hn?k(mn,dn,ct,Xt.length,ue):{start:0,end:Xt.length,before:0,after:0},vn=Xt.slice(bn.start,bn.end),kn=bt&&null!==Zt&&vn.some(e=>e.key===Zt),[wn,xn]=r.useState(xe??{}),Cn=ye??wn,Sn=r.useCallback(e=>{void 0===ye&&xn(e),Ce?.(e)},[ye,Ce]),Mn=r.useRef(new Map),Nn=r.useRef(null),Kn=r.useRef(null),[zn,_n]=r.useState(null),[jn,$n]=r.useState(null);r.useEffect(()=>()=>{Nn.current?.(),Kn.current?.()},[]);const En=(e,t)=>{if(0!==t.button)return;const n=t.currentTarget,r=t.clientX;let a=!1;Kn.current=w({target:n,pointerId:t.pointerId,onMove:t=>{if(!a){if(Math.abs(t.clientX-r)<6)return;a=!0,_n(e)}const n=ht.find(e=>{if(e.pinned)return!1;const n=Mn.current.get(e.key);if(!n)return!1;const r=n.getBoundingClientRect();return t.clientX>=r.left&&t.clientX<=r.right});$n(n&&n.key!==e?n.key:null)},onEnd:()=>{Kn.current=null,_n(e=>($n(t=>{if(e&&t&&e!==t){const r=ht.map(e=>e.key),a=r.indexOf(e),l=r.indexOf(t);r.splice(l,0,...r.splice(a,1)),n=r,void 0===be&&gt(n),ke?.(n)}var n;return null}),null))}})},Dn=r.useCallback(e=>{const t=sn.current;if(!t||!fn)return;const n=le?ut*(yt?2:1):0,r=e*ct;r<t.scrollTop+n?t.scrollTop=Math.max(0,r-n):r+ct>t.scrollTop+t.clientHeight&&(t.scrollTop=r+ct-t.clientHeight)},[fn,le,ut,yt,ct]),Pn=(e,t)=>{const n=nn.current.paged,r=Math.min(Math.max(e,0),n.length-1),a=n[r];a&&(t.preventDefault(),en(a.key),Dn(r),t.shiftKey&&nn.current.multiple?on(a.key,!1):t.ctrlKey||t.metaKey||an(a.key))};const Rn=r.useCallback(e=>{const t=cn.current,n=nn.current.paged;if(!t||0===n.length)return null;const r=t.getBoundingClientRect().top,a=Math.floor((e-r)/ct);return Math.min(Math.max(a,0),n.length-1)},[ct]),Tn=r.useRef(null),An=r.useCallback(e=>{const t=Rn(e),n=null===t?void 0:nn.current.paged[t];n&&(en(n.key),on(n.key,!1))},[Rn,on]),In=r.useRef(An);In.current=An;function Bn(e,t){if(bt&&!t.target.closest('button, a, input, select, textarea, [role="button"]'))if(un.current?.focus({preventScroll:!0}),en(e.key),2!==t.button){if(0===t.button)return t.shiftKey&&vt?(t.preventDefault(),void on(e.key,t.ctrlKey||t.metaKey)):void((t.ctrlKey||t.metaKey)&&vt?ln(e.key):(an(e.key),vt&&(e=>{if(Tn.current)return;const t=e=>{const t=Tn.current,r=sn.current;if(!t)return;if(t.y=e.clientY,In.current(t.y),!r||!fn)return;const a=r.getBoundingClientRect(),l=a.top+ct-t.y,o=t.y-(a.bottom-ct);t.speed=l>0?-Math.min(l,40):o>0?Math.min(o,40):0,0!==t.speed&&null===t.frame&&(t.frame=requestAnimationFrame(n))},n=()=>{const e=Tn.current,t=sn.current;e&&t&&0!==e.speed?(t.scrollTop+=e.speed,In.current(e.y),e.frame=requestAnimationFrame(n)):e&&(e.frame=null)},r=()=>{const e=Tn.current;null!=e?.frame&&cancelAnimationFrame(e.frame),Tn.current=null,window.removeEventListener("pointermove",t),window.removeEventListener("pointerup",r),window.removeEventListener("pointercancel",r)};Tn.current={y:e,speed:0,frame:null,stop:r},window.addEventListener("pointermove",t),window.addEventListener("pointerup",r),window.addEventListener("pointercancel",r)})(t.clientY)))}else nn.current.selectedKeys.has(e.key)||an(e.key)}r.useEffect(()=>()=>Tn.current?.stop(),[]);const Ln=r.useMemo(()=>qt.reduce((e,t)=>Qt.has(t)?e+1:e,0),[qt,Qt]),Fn=qt.length>0&&Ln===qt.length,On=m[Y],Hn=e=>Cn[e.key]??e.width,Wn=(kt?On:0)+ht.reduce((e,t)=>e+(Hn(t)??h),0),Xn=ht.length>0&&ht.every(e=>void 0!==Hn(e)),Vn=ht.length+(kt?1:0)+(Xn?1:0),qn=r.useMemo(()=>{const e=[];return ht.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},[ht]),Gn=r.useMemo(()=>{const e=new Map,t=new Map;let n=kt?On:0;for(const t of ht)"start"===t.pinned&&(e.set(t.key,n),n+=Hn(t)??g);let r=0;for(let e=ht.length-1;e>=0;e-=1){const n=ht[e];"end"===n.pinned&&(t.set(n.key,r),r+=Hn(n)??g)}return{start:e,end:t}},[ht,Cn,kt,On]),Un=(e,t)=>{if(!e.pinned)return{};const n="start"===e.pinned?Gn.start.get(e.key):Gn.end.get(e.key);return{position:"sticky",insetInlineStart:"start"===e.pinned?`${n??0}px`:void 0,insetInlineEnd:"end"===e.pinned?`${n??0}px`:void 0,zIndex:t?3:1,backgroundColor:"var(--n-panel-press)",backgroundImage:t?void 0:"linear-gradient(var(--n-row), var(--n-row))"}},Yn={padding:`0 ${dt}`,borderBottom:"1px solid var(--n-line)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},Jn={...Yn,height:`${ut}px`,backgroundColor:"var(--n-panel-press)"},Qn="odd"===re?0:1,Zn=r.useMemo(()=>new Intl.NumberFormat(nt),[nt]),er=Be??"pages"===$e,tr=C(ot.range,{start:Zn.format(0===Ht?0:("pages"===$e?Wt.start:0)+1),end:Zn.format("pages"===$e?Wt.end:Ht),total:Zn.format(Ht)}),nr=e=>{void 0===Ee&&Rt(e),Pe?.(e)},rr=(n,r)=>{const a=Qt.has(n.key),l=Zt===n.key;return t("tr",{id:`${it}-${n.key}`,"aria-selected":bt?a:void 0,"aria-rowindex":hn?r+2:void 0,"data-neba-row":n.key,className:D(L,a?"[--n-row:var(--n-soft-press)]":!1!==re&&r%2===Qn?"[--n-row:var(--n-stripe)]":"",!a&&ae?"hover:[--n-row:var(--n-soft)]":"",l&&bt?"[box-shadow:inset_0_0_0_1px_var(--n-ring)]":"",bt||_e?"cursor-default":""),style:{height:`${ct}px`,backgroundColor:"var(--n-row)"},onPointerDown:e=>Bn(n,e),onClick:e=>_e?.(n.row,Vt+r,e),onDoubleClick:()=>je?.(n.row,Vt+r),children:[kt?dr(n):null,ht.map(t=>{const a=ir(t,n.row),l=or?.key===n.key&&or.column===t.key;return e("td",{role:bt?"gridcell":void 0,style:{...Yn,...Un(t,!1),textAlign:t.align??"start",cursor:a&&!l?"cell":void 0},onDoubleClick:a?e=>{e.stopPropagation(),sr({key:n.key,column:t.key})}:void 0,children:l?cr(n,t):t.render?t.render(n.row,Vt+r):n.row[t.key]},t.key)}),Xn?e("td",{"aria-hidden":"true",style:{...Yn,padding:0}}):null]})},ar=(n,r,a)=>{const l=n.sortable??de,o=n.resizable??he,s=we&&!n.pinned,i=(c=n.key,Et.find(e=>e.key===c));var c;const u=i?Et.findIndex(e=>e.key===n.key)+1:0,d=n.headerAlign??n.align??"start";return t("th",{ref:e=>{e?Mn.current.set(n.key,e):Mn.current.delete(n.key)},scope:"col",rowSpan:a,"aria-sort":i?"asc"===i.direction?"ascending":"descending":void 0,"data-column":n.key,"data-dragging":zn===n.key||void 0,className:D("relative font-semibold select-none",i?"text-(--n-accent)":"text-(--neba-muted-fg)",le?"sticky z-20 [backdrop-filter:var(--neba-blur)]":"",s?"cursor-grab":"",zn===n.key?"opacity-60":"",jn===n.key?"shadow-[inset_2px_0_0_var(--n-accent)]":""),style:{...Jn,...Un(n,!0),top:le?2!==a&&yt?ut:0:void 0,textAlign:d},onPointerDown:s?e=>En(n.key,e):void 0,children:[l?t("button",{type:"button",className:D(O,"end"===d?"justify-end":"center"===d?"justify-center":"justify-start"),onClick:e=>((e,t)=>{const n=y(Et,e,t&&"multiple"===pe);void 0===me&&$t(n),fe?.(n)})(n.key,e.shiftKey),children:[e("span",{className:"min-w-0 truncate",children:n.label??n.key}),e("span",{"aria-hidden":"true",className:D("flex items-center","desc"===i?.direction?"rotate-0":"rotate-180",i?"":"text-transparent group-hover/sort:text-inherit group-focus-visible/sort:text-inherit"),children:e(z,{})}),u>1?e("span",{"aria-hidden":"true",className:"text-[0.85em] tabular-nums",children:u}):null]}):e("span",{className:"block truncate",children:n.label??n.key}),o&&r<ht.length-1?e("span",{"aria-hidden":"true",className:H,onPointerDown:e=>((e,t)=>{t.preventDefault(),t.stopPropagation();const n=t.currentTarget,r={...Cn};for(const e of ht){const t=Mn.current.get(e.key);t&&void 0===r[e.key]&&(r[e.key]=Math.round(t.getBoundingClientRect().width))}const a="rtl"===getComputedStyle(n).direction,l=t.clientX,o=r[e]??g,s=ht.find(t=>t.key===e)?.minWidth??h;Nn.current=w({target:n,pointerId:t.pointerId,onMove:t=>{const n=(t.clientX-l)*(a?-1:1);Sn({...r,[e]:Math.max(s,Math.round(o+n))})},onEnd:()=>{Nn.current=null}})})(n.key,e),onDoubleClick:()=>(e=>{const t={...Cn};delete t[e],Sn(t)})(n.key)}):null]},n.key)},lr=(n,r)=>{const a=Bt.has(n),l=Qe,o=r.map(e=>e.row),s=()=>Lt(e=>{const t=new Set(e);return t.has(n)?t.delete(n):t.add(n),t}),i=t("span",{className:"flex min-w-0 items-center gap-1.5",children:[l?e("span",{"aria-hidden":"true",className:D("flex items-center text-(--neba-muted-fg)","[transition:rotate_var(--neba-duration)_var(--neba-ease)]",a?"-rotate-90 rtl:rotate-90":""),children:e(z,{})}):null,e("span",{className:"truncate font-semibold",children:""===n?st.title:n}),e("span",{className:"shrink-0 text-(--neba-muted-fg) tabular-nums",children:Zn.format(r.length)})]});return t("tr",{"data-neba-group":n,style:{height:`${ct}px`,backgroundColor:"var(--n-soft)"},children:[kt?e("td",{style:{...Yn,padding:0}}):null,ht.map((t,n)=>e("td",{colSpan:1,style:{...Yn,...Un(t,!1),textAlign:0===n?"start":t.align??"start"},children:0===n?l?e("button",{type:"button","aria-expanded":!a,className:"flex w-full min-w-0 items-center text-start [outline:none] focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:[outline-offset:-2px]",onClick:s,children:i}):i:t.aggregate?e("span",{className:"tabular-nums",children:t.aggregate(o)}):null},t.key)),Xn?e("td",{"aria-hidden":"true",style:{...Yn,padding:0}}):null]})},[or,sr]=r.useState(null),ir=(e,t)=>void 0!==Ye&&("function"==typeof e.editable?e.editable(t):Boolean(e.editable)),cr=(t,n)=>{const r=n.value?n.value(t.row):t.row[n.key],a=e=>{sr(null);const a="number"===n.editType?Number(e):e;"number"===n.editType&&Number.isNaN(a)||String(a)!==String(r??"")&&Ye?.(t.row,n,a)};return e("input",{autoFocus:!0,type:"number"===n.editType?"number":"text",defaultValue:null==r?"":String(r),"aria-label":"string"==typeof n.label?n.label:n.key,className:"w-full bg-transparent [font:inherit] text-inherit [outline:none]",style:{textAlign:n.align??"start"},onPointerDown:e=>e.stopPropagation(),onBlur:e=>a(e.currentTarget.value),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),e.stopPropagation(),a(e.currentTarget.value)),"Escape"===e.key&&(e.stopPropagation(),sr(null))}})},ur=t=>e("span",{className:"flex items-center justify-center",children:t}),dr=t=>e("td",{role:bt?"gridcell":void 0,style:{...Yn,padding:0,overflow:"visible"},children:ur(e(o,{size:Y,color:J,checked:Qt.has(t.key),"aria-label":ot.selectRow,onCheckedChange:()=>{vt?ln(t.key):an(t.key)}}))}),pr=vt?ur(e(o,{size:Y,color:J,checked:Fn,indeterminate:Ln>0&&!Fn,"aria-label":ot.selectAll,onCheckedChange:()=>{if(Fn){const e=new Set(qt);rn([...Qt].filter(t=>!e.has(t)))}else rn([...new Set([...Qt,...qt])])}})):null,mr=Xn?e("th",{"aria-hidden":"true",className:D(le?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{...Jn,padding:0}}):null,gr=(t,n)=>n>0?e("tr",{"aria-hidden":"true",style:{height:`${n}px`},children:e("td",{colSpan:Vn,style:{padding:0,border:0}})},t):null;return t(a,{variant:U,size:Y,color:J,density:Q,elevation:Z,padded:!1,className:D("flex flex-col overflow-hidden",bt?"has-[:focus-visible]:[outline:2px_solid_var(--n-ring)] has-[:focus-visible]:outline-offset-2":"",rt),style:{...F,...at},...lt,children:[He||qe||P(Ve)?t("div",{className:"flex items-center gap-2",style:{padding:`${dt} ${dt}`,borderBottom:"1px solid var(--n-line)"},children:[He?e(c,{size:Y,color:J,density:Q,variant:"outline",type:"search",className:"w-full max-w-64",startIcon:e(W,{}),placeholder:We??ot.search,"aria-label":We??ot.search,value:Le??xt,onChange:e=>{const t=e.target.value;void 0===Le&&Ct(t),nr(1),Oe?.(t)}}):null,qe||P(Ve)?t("div",{className:"ms-auto flex items-center gap-2",children:[Ve,qe?e(l,{size:Y,color:J,density:Q,variant:"outline",onClick:()=>{const e=ht.filter(e=>!1!==e.exportable),t=e.map(e=>"string"==typeof e.label?e.label:e.key),n=Dt.map(t=>e.map(e=>e.exportValue?e.exportValue(t.row):e.value?e.value(t.row):t.row[e.key])),r=$([t,...n]);Ue?Ue(r):j(r,Ge,"text/csv;charset=utf-8")},children:ot.exportCsv}):null]}):null]}):null,e("div",{ref:sn,className:"min-h-0 flex-auto overflow-auto overscroll-contain",style:{height:I(ee),maxHeight:I(te)},onScroll:yn,children:t("table",{ref:un,role:bt?"grid":void 0,"aria-label":se,"aria-multiselectable":vt||void 0,"aria-rowcount":hn?Xt.length+1:void 0,"aria-activedescendant":kn?`${it}-${Zt}`:void 0,tabIndex:bt?0:void 0,className:D("w-full text-start [outline:none]",E[Y],"text-(--neba-fg)",bt?"select-none":""),style:{tableLayout:"fixed",borderCollapse:"separate",borderSpacing:0,minWidth:`${Wn}px`},onKeyDown:function(e){if(!bt||e.target!==e.currentTarget)return;const t=nn.current.paged;if(0===t.length)return;const n=null===Zt?-1:nn.current.pagedKeys.indexOf(Zt),r=Math.max(1,Math.floor((dn||10*ct)/ct)-1);switch(e.key){case"ArrowDown":Pn(n+1,e);break;case"ArrowUp":Pn(-1===n?0:n-1,e);break;case"Home":Pn(0,e);break;case"End":Pn(t.length-1,e);break;case"PageDown":Pn(-1===n?0:n+r,e);break;case"PageUp":Pn(-1===n?0:n-r,e);break;case" ":-1!==n&&(e.preventDefault(),(e.ctrlKey||e.metaKey)&&vt?ln(t[n].key):an(t[n].key));break;case"a":case"A":(e.ctrlKey||e.metaKey)&&vt&&(e.preventDefault(),rn(nn.current.pagedKeys));break;case"Escape":e.preventDefault(),rn([]);break;case"Enter":-1!==n&&je&&(e.preventDefault(),je(t[n].row,Vt+n))}},children:[oe?e("caption",{className:D(R[Y],"text-(--neba-muted-fg)"),style:{padding:`0.5rem ${dt}`,textAlign:"start"},children:oe}):null,t("colgroup",{children:[kt?e("col",{style:{width:`${On}px`}}):null,ht.map(t=>{const n=Hn(t);return e("col",{style:void 0===n?void 0:{width:`${n}px`}},t.key)}),Xn?e("col",{}):null]}),t("thead",{children:[yt?t("tr",{style:{height:`${ut}px`},children:[kt?e("th",{scope:"col",rowSpan:2,className:D(le?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{...Jn,padding:0,overflow:"visible"},children:pr}):null,qn.map(t=>void 0===t.label?ar(ht[t.from],t.from,2):e("th",{scope:"colgroup",colSpan:t.span,className:D("font-semibold text-(--neba-muted-fg) select-none",le?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{...Jn,textAlign:"center"},children:t.label},`group-${t.from}`)),Xn?r.cloneElement(mr,{rowSpan:2}):null]}):null,t("tr",{style:{height:`${ut}px`},children:[kt&&!yt?e("th",{scope:"col",className:D(le?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{...Jn,padding:0,overflow:"visible"},children:pr}):null,ht.map((e,t)=>yt&&void 0===e.group?null:ar(e,t)),Xn&&!yt?mr:null]})]}),e("tbody",{ref:cn,children:0===Xt.length?e("tr",{children:e("td",{colSpan:Vn,className:"text-(--neba-muted-fg)",style:{padding:`2rem ${dt}`,textAlign:"center"},children:ie??st.title})}):t(n,{children:[gr("before",bn.before),Ft?Ft.order.map(e=>{const n=Ft.byLabel.get(e)??[],a=n.filter(e=>qt.includes(e.key));return t(r.Fragment,{children:[lr(e,n),a.map(e=>rr(e,Xt.indexOf(e)))]},e||"\0")}):vn.map((e,t)=>rr(e,bn.start+t)),gr("after",bn.after)]})})]})}),er?t("div",{className:D("flex flex-wrap items-center gap-3",R[Y]),style:{padding:`0.375rem ${dt}`,borderTop:"1px solid var(--n-line)"},children:[e("span",{className:"text-(--neba-muted-fg) tabular-nums",children:tr}),bt&&Qt.size>0?e("span",{className:"text-(--n-accent) tabular-nums",children:C(ot.selected,{count:Zn.format(Qt.size)})}):null,t("div",{className:"ms-auto flex items-center gap-2",children:["pages"===$e&&Ie.length>0?e(n,{children:e(i,{size:Y,color:J,density:Q,variant:"outline",label:ot.rowsPerPage,items:Ie.map(e=>({value:e})),value:It,onValueChange:e=>{const t=Number(e);void 0===Re&&At(t),nr(Math.floor(Wt.start/t)+1),Ae?.(t)}})}):null,"pages"===$e?e(s,{size:Y,color:J,count:Wt.pages,page:Wt.page,siblingCount:0,onPageChange:nr}):null]})]}):null,!er&&hn?e("span",{className:A,"aria-live":"polite",children:tr}):null]})}
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 l}from"../button/Button.js";import{Checkbox as o}from"../checkbox/Checkbox.js";import{Pagination as s}from"../pagination/Pagination.js";import{Select as i}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 m,defaultColumnWidth as g,keysBetween as f,minColumnWidth as h,nextSort as y,pageBounds as b,sortRows as v,virtualWindow as k}from"../../internal/data-table.js";import{beginPointerDrag as x}from"../../internal/drag.js";import{emptyMessages as w,fillMessage as C,tableMessages as S,useMessages as M}from"../../internal/i18n.js";import{searchHaystack as N,searchText as K}from"../../internal/search.js";import{ChevronIcon as z}from"../../internal/icons.js";import{observeResize as _}from"../../internal/observe.js";import{downloadText as j,toCsv as $}from"../../internal/csv.js";import{controlTextLeadingClasses as D,cx as E,hasContent as P,metaTextClasses as T,paddingXValues as R,srOnlyClasses as A,toLength as I}from"../../internal/styles.js";import{useStyleDefaults as B}from"../../internal/defaults.js";const L=["[--n-row:transparent]","[transition:background-color_var(--neba-duration)_var(--neba-ease)]"].join(" "),H={"--n-stripe":"color-mix(in oklab, var(--neba-fg) 4%, transparent)"},F=["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(" "),O=["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)]"].join(" ");function W(){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(X){const{headers:V,items:q,getRowKey:G,variant:U="outline",size:Y="sm",color:J="primary",density:Q="compact",elevation:Z=0,height:ee,maxHeight:te,rowHeight:ne,striped:re=!1,hoverable:ae=!0,stickyHeader:le=!0,caption:oe,label:se,empty:ie,virtual:ce=!0,overscan:ue=8,sortable:de=!1,sortMode:pe="single",sort:me,defaultSort:ge,onSortChange:fe,resizable:he=!1,columnWidths:ye,columnOrder:be,defaultColumnOrder:ve,onColumnOrderChange:ke,reorderable:xe=!1,defaultColumnWidths:we,onColumnWidthsChange:Ce,selectionMode:Se="none",selected:Me,defaultSelected:Ne,onSelectedChange:Ke,checkboxes:ze=!1,onRowClick:_e,onRowActivate:je,paging:$e="scroll",page:De,defaultPage:Ee=1,onPageChange:Pe,pageSize:Te,defaultPageSize:Re=25,onPageSizeChange:Ae,pageSizeOptions:Ie=[10,25,50,100],footer:Be,search:Le,defaultSearch:He,onSearchChange:Fe,searchable:Oe=!1,searchPlaceholder:We,filter:Xe,toolbar:Ve,exportable:qe=!1,exportFileName:Ge="table.csv",onExport:Ue,onCellEdit:Ye,groupBy:Je,collapsibleGroups:Qe=!0,defaultCollapsedGroups:Ze,manual:et=!1,rowCount:tt,locale:nt,className:rt,style:at,...lt}=B(X,["size","density","variant","locale"]),ot=M(S,nt),st=M(w,nt),it=r.useId(),ct=ne??p[Q][Y],ut=d[Q][Y],dt=R[Q][Y],pt=r.useMemo(()=>new Set(!0===et?["sort","filter","pages"]:et||[]),[et]),[mt,gt]=r.useState(()=>ve??[]),ft=be??mt,ht=r.useMemo(()=>{const e=V.filter(e=>!e.hidden),t=ft.map(t=>e.find(e=>e.key===t)).filter(e=>void 0!==e),n=e.filter(e=>!ft.includes(e.key)),r=0===ft.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)},[V,ft]),yt=ht.some(e=>void 0!==e.group),bt="none"!==Se,vt="multiple"===Se,kt=bt&&ze,xt=r.useMemo(()=>q.map((e,t)=>{const n=G?G(e,t):t;return{row:e,identity:n,key:String(n),origin:t}}),[q,G]),[wt,Ct]=r.useState(He??""),St=(Le??wt).trim(),Mt=""!==St&&!pt.has("filter"),Nt=r.useMemo(()=>ht.filter(e=>!1!==e.searchable),[ht]),Kt=r.useMemo(()=>Mt&&0!==Nt.length?xt.map(e=>N(Nt.map(t=>t.value?t.value(e.row):e.row[t.key]))):null,[xt,Nt,Mt]),zt=r.useMemo(()=>{if(pt.has("filter"))return xt;const e=K(St),t=""!==e&&Kt?xt.filter(t=>Kt[t.origin].includes(e)):xt;return Xe?t.filter(e=>Xe(e.row,e.origin)):t},[xt,St,Xe,pt,Kt]),_t=r.useMemo(()=>new Intl.Collator(nt,{numeric:!0,sensitivity:"base"}),[nt]),[jt,$t]=r.useState(ge??[]),Dt=me??jt,Et=r.useMemo(()=>pt.has("sort")?zt:v(zt,Dt,e=>{const t=ht.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(e,t)=>u(n(e.row),n(t.row),_t)}),[zt,Dt,ht,_t,pt]),[Pt,Tt]=r.useState(Ee),[Rt,At]=r.useState(Re),It=Te??Rt,[Bt,Lt]=r.useState(()=>new Set(Ze??[])),Ht=r.useMemo(()=>{if(!Je)return null;const e=[],t=new Map;for(const n of Et){const r=Je(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}},[Et,Je]),Ft=r.useMemo(()=>Ht?Ht.order.flatMap(e=>Bt.has(e)?[]:Ht.byLabel.get(e)??[]):Et,[Ht,Bt,Et]),Ot=pt.has("pages")?tt??Ft.length:Ft.length,Wt=b(Ot,De??Pt,It),Xt=r.useMemo(()=>"pages"!==$e||pt.has("pages")?Ft:Ft.slice(Wt.start,Wt.end),[Ft,$e,pt,Wt.start,Wt.end]),Vt="pages"===$e?Wt.start:0,qt=r.useMemo(()=>Xt.map(e=>e.key),[Xt]),Gt=r.useMemo(()=>new Map(xt.map(e=>[e.key,e])),[xt]),[Ut,Yt]=r.useState(Ne??[]),Jt=Me??Ut,Qt=r.useMemo(()=>new Set(Jt.map(String)),[Jt]),[Zt,en]=r.useState(null),tn=r.useRef(null),nn=r.useRef({paged:Xt,pagedKeys:qt,byKey:Gt,selectedKeys:Qt,multiple:vt});nn.current={paged:Xt,pagedKeys:qt,byKey:Gt,selectedKeys:Qt,multiple:vt};const rn=r.useCallback(e=>{const t=[],n=[];for(const r of e){const e=nn.current.byKey.get(r);e&&(t.push(e.identity),n.push(e.row))}void 0===Me&&Yt(t),Ke?.(t,n)},[Me,Ke]),an=r.useCallback(e=>{tn.current=e,rn([e])},[rn]),ln=r.useCallback(e=>{const t=nn.current.selectedKeys,n=new Set(t);n.has(e)?n.delete(e):n.add(e),tn.current=e,rn([...n])},[rn]),on=r.useCallback((e,t)=>{const n=nn.current.pagedKeys,r=tn.current??n[0];if(void 0===r)return;const a=f(n,r,e);0!==a.length&&rn(t?[...new Set([...nn.current.selectedKeys,...a])]:a)},[rn]),sn=r.useRef(null),cn=r.useRef(null),un=r.useRef(null),[dn,pn]=r.useState(0),[mn,gn]=r.useState(0),fn=void 0!==ee||void 0!==te,hn=ce&&fn&&Xt.length>0&&!Je;r.useLayoutEffect(()=>{const e=sn.current;if(e&&hn)return pn(e.clientHeight),_(e,e=>pn(e.contentRect.height))},[hn]);const yn=r.useCallback(e=>{if(!hn)return;const t=Math.floor(e.currentTarget.scrollTop/ct)*ct;gn(e=>e===t?e:t)},[hn,ct]),bn=hn?k(mn,dn,ct,Xt.length,ue):{start:0,end:Xt.length,before:0,after:0},vn=Xt.slice(bn.start,bn.end),kn=bt&&null!==Zt&&vn.some(e=>e.key===Zt),[xn,wn]=r.useState(we??{}),Cn=ye??xn,Sn=r.useCallback(e=>{void 0===ye&&wn(e),Ce?.(e)},[ye,Ce]),Mn=r.useRef(new Map),Nn=r.useRef(null),Kn=r.useRef(null),[zn,_n]=r.useState(null),[jn,$n]=r.useState(null);r.useEffect(()=>()=>{Nn.current?.(),Kn.current?.()},[]);const Dn=(e,t)=>{if(0!==t.button)return;const n=t.currentTarget,r=t.clientX;let a=!1;Kn.current=x({target:n,pointerId:t.pointerId,onMove:t=>{if(!a){if(Math.abs(t.clientX-r)<6)return;a=!0,_n(e)}const n=ht.find(e=>{if(e.pinned)return!1;const n=Mn.current.get(e.key);if(!n)return!1;const r=n.getBoundingClientRect();return t.clientX>=r.left&&t.clientX<=r.right});$n(n&&n.key!==e?n.key:null)},onEnd:()=>{Kn.current=null,_n(e=>($n(t=>{if(e&&t&&e!==t){const r=ht.map(e=>e.key),a=r.indexOf(e),l=r.indexOf(t);r.splice(l,0,...r.splice(a,1)),n=r,void 0===be&&gt(n),ke?.(n)}var n;return null}),null))}})},En=r.useCallback(e=>{const t=sn.current;if(!t||!fn)return;const n=le?ut*(yt?2:1):0,r=e*ct;r<t.scrollTop+n?t.scrollTop=Math.max(0,r-n):r+ct>t.scrollTop+t.clientHeight&&(t.scrollTop=r+ct-t.clientHeight)},[fn,le,ut,yt,ct]),Pn=(e,t)=>{const n=nn.current.paged,r=Math.min(Math.max(e,0),n.length-1),a=n[r];a&&(t.preventDefault(),en(a.key),En(r),t.shiftKey&&nn.current.multiple?on(a.key,!1):t.ctrlKey||t.metaKey||an(a.key))},Tn=(e,t)=>{const n=sn.current;if(!n||!fn)return;t.preventDefault();const r=Math.max(0,n.scrollHeight-n.clientHeight),a="start"===e?0:"end"===e?r:n.scrollTop+e;n.scrollTop=Math.min(Math.max(a,0),r)};const Rn=r.useCallback(e=>{const t=cn.current,n=nn.current.paged;if(!t||0===n.length)return null;const r=t.getBoundingClientRect().top,a=Math.floor((e-r)/ct);return Math.min(Math.max(a,0),n.length-1)},[ct]),An=r.useRef(null),In=r.useCallback(e=>{const t=Rn(e),n=null===t?void 0:nn.current.paged[t];n&&(en(n.key),on(n.key,!1))},[Rn,on]),Bn=r.useRef(In);Bn.current=In;function Ln(e,t){if(bt&&!t.target.closest('button, a, input, select, textarea, [role="button"]'))if(un.current?.focus({preventScroll:!0}),en(e.key),2!==t.button){if(0===t.button)return t.shiftKey&&vt?(t.preventDefault(),void on(e.key,t.ctrlKey||t.metaKey)):void((t.ctrlKey||t.metaKey)&&vt?ln(e.key):(an(e.key),vt&&(e=>{if(An.current)return;const t=e=>{const t=An.current,r=sn.current;if(!t)return;if(t.y=e.clientY,Bn.current(t.y),!r||!fn)return;const a=r.getBoundingClientRect(),l=a.top+ct-t.y,o=t.y-(a.bottom-ct);t.speed=l>0?-Math.min(l,40):o>0?Math.min(o,40):0,0!==t.speed&&null===t.frame&&(t.frame=requestAnimationFrame(n))},n=()=>{const e=An.current,t=sn.current;e&&t&&0!==e.speed?(t.scrollTop+=e.speed,Bn.current(e.y),e.frame=requestAnimationFrame(n)):e&&(e.frame=null)},r=()=>{const e=An.current;null!=e?.frame&&cancelAnimationFrame(e.frame),An.current=null,window.removeEventListener("pointermove",t),window.removeEventListener("pointerup",r),window.removeEventListener("pointercancel",r)};An.current={y:e,speed:0,frame:null,stop:r},window.addEventListener("pointermove",t),window.addEventListener("pointerup",r),window.addEventListener("pointercancel",r)})(t.clientY)))}else nn.current.selectedKeys.has(e.key)||an(e.key)}r.useEffect(()=>()=>An.current?.stop(),[]);const Hn=r.useMemo(()=>qt.reduce((e,t)=>Qt.has(t)?e+1:e,0),[qt,Qt]),Fn=qt.length>0&&Hn===qt.length,On=m[Y],Wn=e=>Cn[e.key]??e.width,Xn=(kt?On:0)+ht.reduce((e,t)=>e+(Wn(t)??h),0),Vn=ht.length>0&&ht.every(e=>void 0!==Wn(e)),qn=ht.length+(kt?1:0)+(Vn?1:0),Gn=r.useMemo(()=>{const e=[];return ht.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},[ht]),Un=r.useMemo(()=>{const e=new Map,t=new Map;let n=kt?On:0;for(const t of ht)"start"===t.pinned&&(e.set(t.key,n),n+=Wn(t)??g);let r=0;for(let e=ht.length-1;e>=0;e-=1){const n=ht[e];"end"===n.pinned&&(t.set(n.key,r),r+=Wn(n)??g)}return{start:e,end:t}},[ht,Cn,kt,On]),Yn=(e,t)=>{if(!e.pinned)return{};const n="start"===e.pinned?Un.start.get(e.key):Un.end.get(e.key);return{position:"sticky",insetInlineStart:"start"===e.pinned?`${n??0}px`:void 0,insetInlineEnd:"end"===e.pinned?`${n??0}px`:void 0,zIndex:t?3:1,backgroundColor:"var(--n-panel-press)",backgroundImage:t?void 0:"linear-gradient(var(--n-row), var(--n-row))"}},Jn={padding:`0 ${dt}`,borderBottom:"1px solid var(--n-line)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},Qn={...Jn,height:`${ut}px`,backgroundColor:"var(--n-panel-press)"},Zn="odd"===re?0:1,er=r.useMemo(()=>new Intl.NumberFormat(nt),[nt]),tr=Be??"pages"===$e,nr=C(ot.range,{start:er.format(0===Ot?0:("pages"===$e?Wt.start:0)+1),end:er.format("pages"===$e?Wt.end:Ot),total:er.format(Ot)}),rr=e=>{void 0===De&&Tt(e),Pe?.(e)},ar=(n,r)=>{const a=Qt.has(n.key),l=Zt===n.key;return t("tr",{id:`${it}-${n.key}`,"aria-selected":bt?a:void 0,"aria-rowindex":hn?r+2:void 0,"data-neba-row":n.key,className:E(L,a?"[--n-row:var(--n-soft-press)]":!1!==re&&r%2===Zn?"[--n-row:var(--n-stripe)]":"",!a&&ae?"hover:[--n-row:var(--n-soft)]":"",l&&bt?"[box-shadow:inset_0_0_0_1px_var(--n-ring)]":"",bt||_e?"cursor-default":""),style:{height:`${ct}px`,backgroundColor:"var(--n-row)"},onPointerDown:e=>Ln(n,e),onClick:e=>_e?.(n.row,Vt+r,e),onDoubleClick:()=>je?.(n.row,Vt+r),children:[kt?pr(n):null,ht.map(t=>{const a=cr(t,n.row),l=sr?.key===n.key&&sr.column===t.key;return e("td",{role:bt?"gridcell":void 0,style:{...Jn,...Yn(t,!1),textAlign:t.align??"start",cursor:a&&!l?"cell":void 0},onDoubleClick:a?e=>{e.stopPropagation(),ir({key:n.key,column:t.key})}:void 0,children:l?ur(n,t):t.render?t.render(n.row,Vt+r):n.row[t.key]},t.key)}),Vn?e("td",{"aria-hidden":"true",style:{...Jn,padding:0}}):null]},n.key)},lr=(n,r,a)=>{const l=n.sortable??de,o=n.resizable??he,s=xe&&!n.pinned,i=(c=n.key,Dt.find(e=>e.key===c));var c;const u=i?Dt.findIndex(e=>e.key===n.key)+1:0,d=n.headerAlign??n.align??"start";return t("th",{ref:e=>{e?Mn.current.set(n.key,e):Mn.current.delete(n.key)},scope:"col",rowSpan:a,"aria-sort":i?"asc"===i.direction?"ascending":"descending":void 0,"data-column":n.key,"data-dragging":zn===n.key||void 0,className:E("relative font-semibold select-none",i?"text-(--n-accent)":"text-(--neba-muted-fg)",le?"sticky z-20 [backdrop-filter:var(--neba-blur)]":"",s?"cursor-grab":"",zn===n.key?"opacity-60":"",jn===n.key?"shadow-[inset_2px_0_0_var(--n-accent)]":""),style:{...Qn,...Yn(n,!0),top:le?2!==a&&yt?ut:0:void 0,textAlign:d},onPointerDown:s?e=>Dn(n.key,e):void 0,children:[l?t("button",{type:"button",className:E(F,"end"===d?"justify-end":"center"===d?"justify-center":"justify-start"),onClick:e=>((e,t)=>{const n=y(Dt,e,t&&"multiple"===pe);void 0===me&&$t(n),fe?.(n)})(n.key,e.shiftKey),children:[e("span",{className:"min-w-0 truncate",children:n.label??n.key}),e("span",{"aria-hidden":"true",className:E("flex items-center","desc"===i?.direction?"rotate-0":"rotate-180",i?"":"text-transparent group-hover/sort:text-inherit group-focus-visible/sort:text-inherit"),children:e(z,{})}),u>1?e("span",{"aria-hidden":"true",className:"text-[0.85em] tabular-nums",children:u}):null]}):e("span",{className:"block truncate",children:n.label??n.key}),o&&r<ht.length-1?e("span",{"aria-hidden":"true",className:O,onPointerDown:e=>((e,t)=>{t.preventDefault(),t.stopPropagation();const n=t.currentTarget,r={...Cn};for(const e of ht){const t=Mn.current.get(e.key);t&&void 0===r[e.key]&&(r[e.key]=Math.round(t.getBoundingClientRect().width))}const a="rtl"===getComputedStyle(n).direction,l=t.clientX,o=r[e]??g,s=ht.find(t=>t.key===e)?.minWidth??h;Nn.current=x({target:n,pointerId:t.pointerId,onMove:t=>{const n=(t.clientX-l)*(a?-1:1);Sn({...r,[e]:Math.max(s,Math.round(o+n))})},onEnd:()=>{Nn.current=null}})})(n.key,e),onDoubleClick:()=>(e=>{const t={...Cn};delete t[e],Sn(t)})(n.key)}):null]},n.key)},or=(n,r)=>{const a=Bt.has(n),l=Qe,o=r.map(e=>e.row),s=()=>Lt(e=>{const t=new Set(e);return t.has(n)?t.delete(n):t.add(n),t}),i=t("span",{className:"flex min-w-0 items-center gap-1.5",children:[l?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(z,{})}):null,e("span",{className:"truncate font-semibold",children:""===n?st.title:n}),e("span",{className:"shrink-0 text-(--neba-muted-fg) tabular-nums",children:er.format(r.length)})]});return t("tr",{"data-neba-group":n,style:{height:`${ct}px`,backgroundColor:"var(--n-soft)"},children:[kt?e("td",{style:{...Jn,padding:0}}):null,ht.map((t,n)=>e("td",{colSpan:1,style:{...Jn,...Yn(t,!1),textAlign:0===n?"start":t.align??"start"},children:0===n?l?e("button",{type:"button","aria-expanded":!a,className:"flex w-full min-w-0 items-center text-start [outline:none] focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:[outline-offset:-2px]",onClick:s,children:i}):i:t.aggregate?e("span",{className:"tabular-nums",children:t.aggregate(o)}):null},t.key)),Vn?e("td",{"aria-hidden":"true",style:{...Jn,padding:0}}):null]})},[sr,ir]=r.useState(null),cr=(e,t)=>void 0!==Ye&&("function"==typeof e.editable?e.editable(t):Boolean(e.editable)),ur=(t,n)=>{const r=n.value?n.value(t.row):t.row[n.key],a=e=>{ir(null);const a="number"===n.editType?Number(e):e;"number"===n.editType&&Number.isNaN(a)||String(a)!==String(r??"")&&Ye?.(t.row,n,a)};return e("input",{autoFocus:!0,type:"number"===n.editType?"number":"text",defaultValue:null==r?"":String(r),"aria-label":"string"==typeof n.label?n.label:n.key,className:"w-full bg-transparent [font:inherit] text-inherit [outline:none]",style:{textAlign:n.align??"start"},onPointerDown:e=>e.stopPropagation(),onBlur:e=>a(e.currentTarget.value),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),e.stopPropagation(),a(e.currentTarget.value)),"Escape"===e.key&&(e.stopPropagation(),ir(null))}})},dr=t=>e("span",{className:"flex items-center justify-center",children:t}),pr=t=>e("td",{role:bt?"gridcell":void 0,style:{...Jn,padding:0,overflow:"visible"},children:dr(e(o,{size:Y,color:J,checked:Qt.has(t.key),"aria-label":ot.selectRow,onCheckedChange:()=>{vt?ln(t.key):an(t.key)}}))}),mr=vt?dr(e(o,{size:Y,color:J,checked:Fn,indeterminate:Hn>0&&!Fn,"aria-label":ot.selectAll,onCheckedChange:()=>{if(Fn){const e=new Set(qt);rn([...Qt].filter(t=>!e.has(t)))}else rn([...new Set([...Qt,...qt])])}})):null,gr=Vn?e("th",{"aria-hidden":"true",className:E(le?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{...Qn,padding:0}}):null,fr=(t,n)=>n>0?e("tr",{"aria-hidden":"true",style:{height:`${n}px`},children:e("td",{colSpan:qn,style:{padding:0,border:0}})},t):null;return t(a,{variant:U,size:Y,color:J,density:Q,elevation:Z,padded:!1,className:E("flex flex-col overflow-hidden",bt?"has-[:focus-visible]:[outline:2px_solid_var(--n-ring)] has-[:focus-visible]:outline-offset-2":"",rt),style:{...H,...at},...lt,children:[Oe||qe||P(Ve)?t("div",{className:"flex items-center gap-2",style:{padding:`${dt} ${dt}`,borderBottom:"1px solid var(--n-line)"},children:[Oe?e(c,{size:Y,color:J,density:Q,variant:"outline",type:"search",className:"w-full max-w-64",startIcon:e(W,{}),placeholder:We??ot.search,"aria-label":We??ot.search,value:Le??wt,onChange:e=>{const t=e.target.value;void 0===Le&&Ct(t),rr(1),Fe?.(t)}}):null,qe||P(Ve)?t("div",{className:"ms-auto flex items-center gap-2",children:[Ve,qe?e(l,{size:Y,color:J,density:Q,variant:"outline",onClick:()=>{const e=ht.filter(e=>!1!==e.exportable),t=e.map(e=>"string"==typeof e.label?e.label:e.key),n=Et.map(t=>e.map(e=>e.exportValue?e.exportValue(t.row):e.value?e.value(t.row):t.row[e.key])),r=$([t,...n]);Ue?Ue(r):j(r,Ge,"text/csv;charset=utf-8")},children:ot.exportCsv}):null]}):null]}):null,e("div",{ref:sn,className:"min-h-0 flex-auto overflow-auto overscroll-contain",style:{height:I(ee),maxHeight:I(te)},onScroll:yn,children:t("table",{ref:un,role:bt?"grid":void 0,"aria-label":se,"aria-multiselectable":vt||void 0,"aria-rowcount":hn?Xt.length+1:void 0,"aria-activedescendant":kn?`${it}-${Zt}`:void 0,tabIndex:bt?0:void 0,className:E("w-full text-start [outline:none]",D[Y],"text-(--neba-fg)",bt?"select-none":""),style:{tableLayout:"fixed",borderCollapse:"separate",borderSpacing:0,minWidth:`${Xn}px`},onKeyDown:function(e){if(!bt||e.target!==e.currentTarget)return;const t=nn.current.paged;if(0===t.length)return;const n=null===Zt?-1:nn.current.pagedKeys.indexOf(Zt),r=Math.max(1,Math.floor((dn||10*ct)/ct)-1);switch(e.key){case"ArrowDown":Pn(n+1,e);break;case"ArrowUp":Pn(-1===n?0:n-1,e);break;case"Home":Tn("start",e);break;case"End":Tn("end",e);break;case"PageDown":Tn(r*ct,e);break;case"PageUp":Tn(-r*ct,e);break;case" ":-1!==n&&(e.preventDefault(),(e.ctrlKey||e.metaKey)&&vt?ln(t[n].key):an(t[n].key));break;case"a":case"A":(e.ctrlKey||e.metaKey)&&vt&&(e.preventDefault(),rn(nn.current.pagedKeys));break;case"Escape":e.preventDefault(),rn([]);break;case"Enter":-1!==n&&je&&(e.preventDefault(),je(t[n].row,Vt+n))}},children:[oe?e("caption",{className:E(T[Y],"text-(--neba-muted-fg)"),style:{padding:`0.5rem ${dt}`,textAlign:"start"},children:oe}):null,t("colgroup",{children:[kt?e("col",{style:{width:`${On}px`}}):null,ht.map(t=>{const n=Wn(t);return e("col",{style:void 0===n?void 0:{width:`${n}px`}},t.key)}),Vn?e("col",{}):null]}),t("thead",{children:[yt?t("tr",{style:{height:`${ut}px`},children:[kt?e("th",{scope:"col",rowSpan:2,className:E(le?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{...Qn,padding:0,overflow:"visible"},children:mr}):null,Gn.map(t=>void 0===t.label?lr(ht[t.from],t.from,2):e("th",{scope:"colgroup",colSpan:t.span,className:E("font-semibold text-(--neba-muted-fg) select-none",le?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{...Qn,textAlign:"center"},children:t.label},`group-${t.from}`)),Vn?r.cloneElement(gr,{rowSpan:2}):null]}):null,t("tr",{style:{height:`${ut}px`},children:[kt&&!yt?e("th",{scope:"col",className:E(le?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{...Qn,padding:0,overflow:"visible"},children:mr}):null,ht.map((e,t)=>yt&&void 0===e.group?null:lr(e,t)),Vn&&!yt?gr:null]})]}),e("tbody",{ref:cn,children:0===Xt.length?e("tr",{children:e("td",{colSpan:qn,className:"text-(--neba-muted-fg)",style:{padding:`2rem ${dt}`,textAlign:"center"},children:ie??st.title})}):t(n,{children:[fr("before",bn.before),Ht?Ht.order.map(e=>{const n=Ht.byLabel.get(e)??[],a=n.filter(e=>qt.includes(e.key));return t(r.Fragment,{children:[or(e,n),a.map(e=>ar(e,Xt.indexOf(e)))]},e||"\0")}):vn.map((e,t)=>ar(e,bn.start+t)),fr("after",bn.after)]})})]})}),tr?t("div",{className:E("flex flex-wrap items-center gap-3",T[Y]),style:{padding:`0.375rem ${dt}`,borderTop:"1px solid var(--n-line)"},children:[e("span",{className:"text-(--neba-muted-fg) tabular-nums",children:nr}),bt&&Qt.size>0?e("span",{className:"text-(--n-accent) tabular-nums",children:C(ot.selected,{count:er.format(Qt.size)})}):null,t("div",{className:"ms-auto flex items-center gap-2",children:["pages"===$e&&Ie.length>0?e(n,{children:e(i,{size:Y,color:J,density:Q,variant:"outline",label:ot.rowsPerPage,items:Ie.map(e=>({value:e})),value:It,onValueChange:e=>{const t=Number(e);void 0===Te&&At(t),rr(Math.floor(Wt.start/t)+1),Ae?.(t)}})}):null,"pages"===$e?e(s,{size:Y,color:J,count:Wt.pages,page:Wt.page,siblingCount:0,onPageChange:rr}):null]})]}):null,!tr&&hn?e("span",{className:A,"aria-live":"polite",children:nr}):null]})}
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import{Dialog as l}from"@base-ui/react/dialog";import{boxPaddingXClasses as n,boxPaddingYClasses as i}from"../box/Box.js";import{actionMessages as o,useMessages as r}from"../../internal/i18n.js";import{CloseIcon as s}from"../../internal/icons.js";import{cx as t,hasContent as c,metaTextClasses as d,radiusClasses as m,sheetBodyClasses as f,sheetHeaderGapClasses as p,sheetSectionGapClasses as u,sheetTitleClasses as b,surfaceClasses as x,surfaceSlots as h}from"../../internal/styles.js";import{useStyleDefaults as v}from"../../internal/defaults.js";const g={xs:"max-w-80",sm:"max-w-96",md:"max-w-lg",lg:"max-w-2xl",xl:"max-w-4xl"},y=[x,"relative flex w-full flex-col overflow-hidden","border text-(--neba-fg) bg-(--n-panel-press)","[border-color:var(--n-line)]","[box-shadow:var(--neba-shadow-3),var(--neba-plate-glass)]","[outline:none]","[transition:opacity_var(--neba-duration)_var(--neba-ease)]","data-[starting-style]:opacity-0 data-[ending-style]:opacity-0"].join(" "),w=["fixed inset-0 z-50 bg-(--neba-scrim)","[backdrop-filter:blur(2px)]","[transition:opacity_var(--neba-duration)_var(--neba-ease)]","data-[starting-style]:opacity-0 data-[ending-style]:opacity-0"].join(" "),j="border-t [border-color:var(--n-line)]";export const DialogClose=l.Close;export function Dialog(x){const{size:N="md",color:_="primary",density:k="default",open:$,defaultOpen:z,onOpenChange:C,trigger:D,title:O,description:P,actions:B,dividers:T=!1,showClose:W=!0,locale:L,closeLabel:R,width:S,fullWidth:V=!0,fullScreen:q=!1,modal:A=!0,dismissible:E=!0,className:F,classNames:G,style:H,children:I,...J}=v(x,["size","density","locale"]),K=r(o,L),M=n[k][N],Q=i[k][N],U=T?`${M} ${Q}`:M,X=c(O)||c(P),Y=c(B);return a(l.Root,{open:$,defaultOpen:z,modal:A,disablePointerDismissal:!E,onOpenChange:(e,a)=>{E||e||"escape-key"!==a.reason?C?.(e):a.cancel()},children:[D?e(l.Trigger,{render:D}):null,a(l.Portal,{children:[e(l.Backdrop,{className:t("neba-portal",w,G?.backdrop)}),e(l.Viewport,{className:t("neba-portal fixed inset-0 z-50 flex justify-center",q?"items-stretch":"items-center p-4",G?.viewport),children:a(l.Popup,{className:t(y,f[N],q?"h-full max-w-none rounded-none":`max-h-full ${m[N]} ${void 0===S?g[N]:""}`,q||V?"":"w-auto",T?"":`${Q} ${u[N]}`,F??""),style:{...h(_,3),...void 0===S?null:{maxWidth:"number"==typeof S?`${S}px`:S},...H},...J,children:[X||W?a("div",{className:`flex shrink-0 items-start gap-3 ${U}`,children:[a("div",{className:`flex min-w-0 flex-1 flex-col ${p[N]}`,children:[c(O)?e(l.Title,{className:t("font-semibold",b[N],"m-0",G?.title),children:O}):null,c(P)?e(l.Description,{className:t("m-0 text-(--neba-muted-fg)",d[N],G?.description),children:P}):null]}),W?e(l.Close,{"aria-label":R??K.close,className:t("flex size-[1.6em] shrink-0 cursor-pointer items-center justify-center","rounded-full text-(--neba-muted-fg)","[&_svg]:size-[1.1em] [&_svg]:shrink-0","[transition:background-color_var(--neba-duration)_var(--neba-ease),color_var(--neba-duration)_var(--neba-ease)]","hover:bg-(--n-soft) hover:text-(--neba-fg)","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2",G?.close),children:e(s,{})}):null]}):null,c(I)?e("div",{className:t("min-h-0 flex-1 overflow-y-auto overscroll-contain",U,T&&(X||W)?j:"",T?"":"py-1 -my-1",G?.body),children:I}):null,Y?e("div",{className:t("flex shrink-0 flex-wrap items-center justify-end gap-2",U,T?j:"",G?.actions),children:B}):null]})})]})]})}
1
+ "use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import{Dialog as n}from"@base-ui/react/dialog";import{boxPaddingXClasses as o,boxPaddingYClasses as r}from"../box/Box.js";import{actionMessages as s,useMessages as i}from"../../internal/i18n.js";import{CloseIcon as a}from"../../internal/icons.js";import{cx as t,hasContent as c,metaTextClasses as d,popupFadeClasses as m,radiusClasses as f,sheetBodyClasses as u,sheetHeaderGapClasses as p,sheetSectionGapClasses as x,sheetTitleClasses as b,surfaceClasses as h,surfaceSlots as v}from"../../internal/styles.js";import{useStyleDefaults as g}from"../../internal/defaults.js";const w={xs:"max-w-80",sm:"max-w-96",md:"max-w-lg",lg:"max-w-2xl",xl:"max-w-4xl"},y=[h,"relative flex w-full flex-col overflow-hidden","border text-(--neba-fg) bg-(--n-panel-press)","[border-color:var(--n-line)]","[box-shadow:var(--neba-shadow-3),var(--neba-plate-glass)]","[outline:none]",m].join(" "),j=["fixed inset-0 z-50 bg-(--neba-scrim)","[backdrop-filter:blur(2px)]",m].join(" "),N="border-t [border-color:var(--n-line)]";export const DialogClose=n.Close;export function Dialog(m){const{size:h="md",color:k="primary",density:$="default",open:_,defaultOpen:z,onOpenChange:C,trigger:D,title:O,description:P,actions:B,dividers:T=!1,showClose:W=!0,locale:L,closeLabel:R,width:S,fullWidth:V=!0,fullScreen:q=!1,modal:A=!0,dismissible:E=!0,className:F,classNames:G,style:H,children:I,...J}=g(m,["size","density","locale"]),K=i(s,L),M=o[$][h],Q=r[$][h],U=T?`${M} ${Q}`:M,X=c(O)||c(P),Y=c(B);return l(n.Root,{open:_,defaultOpen:z,modal:A,disablePointerDismissal:!E,onOpenChange:(e,l)=>{E||e||"escape-key"!==l.reason?C?.(e):l.cancel()},children:[D?e(n.Trigger,{render:D}):null,l(n.Portal,{children:[e(n.Backdrop,{className:t("neba-portal",j,G?.backdrop)}),e(n.Viewport,{className:t("neba-portal fixed inset-0 z-50 flex justify-center",q?"items-stretch":"items-center p-4",G?.viewport),children:l(n.Popup,{className:t(y,u[h],q?"h-full max-w-none rounded-none":`max-h-full ${f[h]} ${void 0===S?w[h]:""}`,q||V?"":"w-auto",T?"":`${Q} ${x[h]}`,F??""),style:{...v(k,3),...void 0===S?null:{maxWidth:"number"==typeof S?`${S}px`:S},...H},...J,children:[X||W?l("div",{className:`flex shrink-0 items-start gap-3 ${U}`,children:[l("div",{className:`flex min-w-0 flex-1 flex-col ${p[h]}`,children:[c(O)?e(n.Title,{className:t("font-semibold",b[h],"m-0",G?.title),children:O}):null,c(P)?e(n.Description,{className:t("m-0 text-(--neba-muted-fg)",d[h],G?.description),children:P}):null]}),W?e(n.Close,{"aria-label":R??K.close,className:t("flex size-[1.6em] shrink-0 cursor-pointer items-center justify-center","rounded-full text-(--neba-muted-fg)","[&_svg]:size-[1.1em] [&_svg]:shrink-0","[transition:background-color_var(--neba-duration)_var(--neba-ease),color_var(--neba-duration)_var(--neba-ease)]","hover:bg-(--n-soft) hover:text-(--neba-fg)","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2",G?.close),children:e(a,{})}):null]}):null,c(I)?e("div",{className:t("min-h-0 flex-1 overflow-y-auto overscroll-contain",U,T&&(X||W)?N:"",T?"":"py-1 -my-1",G?.body),children:I}):null,Y?e("div",{className:t("flex shrink-0 flex-wrap items-center justify-end gap-2",U,T?N:"",G?.actions),children:B}):null]})})]})]})}
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as r,Fragment as a}from"react/jsx-runtime";import{Dialog as l}from"@base-ui/react/dialog";import{boxPaddingXClasses as n,boxPaddingYClasses as s}from"../box/Box.js";import{actionMessages as o,useMessages as i}from"../../internal/i18n.js";import{CloseIcon as d}from"../../internal/icons.js";import{cx as t,hasContent as u,metaTextClasses as m,sheetBodyClasses as b,sheetHeaderGapClasses as c,sheetSectionGapClasses as f,sheetTitleClasses as x,surfaceClasses as p,surfaceSlots as g}from"../../internal/styles.js";import{useStyleDefaults as h}from"../../internal/defaults.js";const v={xs:"w-56",sm:"w-64",md:"w-80",lg:"w-96",xl:"w-[28rem]"},y={left:{xs:"rounded-r-(--neba-radius-xs)",sm:"rounded-r-(--neba-radius-sm)",md:"rounded-r-(--neba-radius-md)",lg:"rounded-r-(--neba-radius-lg)",xl:"rounded-r-(--neba-radius-xl)"},right:{xs:"rounded-l-(--neba-radius-xs)",sm:"rounded-l-(--neba-radius-sm)",md:"rounded-l-(--neba-radius-md)",lg:"rounded-l-(--neba-radius-lg)",xl:"rounded-l-(--neba-radius-xl)"},top:{xs:"rounded-b-(--neba-radius-xs)",sm:"rounded-b-(--neba-radius-sm)",md:"rounded-b-(--neba-radius-md)",lg:"rounded-b-(--neba-radius-lg)",xl:"rounded-b-(--neba-radius-xl)"},bottom:{xs:"rounded-t-(--neba-radius-xs)",sm:"rounded-t-(--neba-radius-sm)",md:"rounded-t-(--neba-radius-md)",lg:"rounded-t-(--neba-radius-lg)",xl:"rounded-t-(--neba-radius-xl)"}},w={left:"border-r",right:"border-l",top:"border-b",bottom:"border-t"},j={left:"flex-row justify-start",right:"flex-row justify-end",top:"flex-col justify-start",bottom:"flex-col justify-end"},N=[p,"relative flex flex-col overflow-hidden","text-(--neba-fg) bg-(--n-panel-press)","[border-color:var(--n-line)]","[outline:none]"].join(" "),$=["[transition:opacity_var(--neba-duration)_var(--neba-ease)]","data-[starting-style]:opacity-0 data-[ending-style]:opacity-0"].join(" "),_=["fixed inset-0 z-50 bg-(--neba-scrim)","[backdrop-filter:blur(2px)]",$].join(" "),k="border-t [border-color:var(--n-line)]",C=["flex size-[1.6em] shrink-0 cursor-pointer items-center justify-center","rounded-full text-(--neba-muted-fg)","[&_svg]:size-[1.1em] [&_svg]:shrink-0","[transition:background-color_var(--neba-duration)_var(--neba-ease),color_var(--neba-duration)_var(--neba-ease)]","hover:bg-(--n-soft) hover:text-(--neba-fg)","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2"].join(" ");export const DrawerClose=l.Close;export function Drawer(p){const{side:z="left",mode:D="overlay",size:O="md",color:P="primary",density:B="default",open:T,defaultOpen:F,onOpenChange:L,trigger:R,title:V,description:q,actions:A,dividers:E=!1,showClose:G,locale:H,closeLabel:I,extent:J,rounded:K=!0,modal:M=!0,dismissible:Q=!0,className:S,style:U,children:W,...X}=h(p,["size","density","locale"]),Y=i(o,H),Z="overlay"===D,ee="left"===z||"right"===z,re=G??Z,ae=n[B][O],le=s[B][O],ne=E?`${ae} ${le}`:ae,se=u(V)||u(q),oe=u(A),ie=void 0===J?null:{[ee?"width":"height"]:"number"==typeof J?`${J}px`:J},de=t(N,b[O],w[z],K?y[z][O]:"",Z?"[box-shadow:var(--neba-shadow-3),var(--neba-plate-glass)]":"[box-shadow:var(--neba-plate-glass)]",Z?$:"",ee?`h-full max-w-full ${void 0===J?v[O]:""}`:"w-full "+(void 0===J?"max-h-[85%]":""),E?"":`${le} ${f[O]}`,S??""),te=Z?l.Title:"h2",ue=Z?l.Description:"p",me=r(a,{children:[se||re?r("div",{className:`flex shrink-0 items-start gap-3 ${ne}`,children:[r("div",{className:`flex min-w-0 flex-1 flex-col ${c[O]}`,children:[u(V)?e(te,{className:`m-0 font-semibold ${x[O]}`,children:V}):null,u(q)?e(ue,{className:`m-0 text-(--neba-muted-fg) ${m[O]}`,children:q}):null]}),re?Z?e(l.Close,{"aria-label":I??Y.close,className:C,children:e(d,{})}):e("button",{type:"button","aria-label":I??Y.close,className:C,onClick:()=>L?.(!1),children:e(d,{})}):null]}):null,u(W)?e("div",{className:t("min-h-0 flex-1 overflow-y-auto overscroll-contain",ne,E&&(se||re)?k:"",E?"":"py-1 -my-1"),children:W}):null,oe?e("div",{className:t("flex shrink-0 flex-wrap items-center justify-end gap-2",ne,E?k:""),children:A}):null]});return Z?r(l.Root,{open:T,defaultOpen:F,modal:M,disablePointerDismissal:!Q,onOpenChange:(e,r)=>{Q||e||"escape-key"!==r.reason?L?.(e):r.cancel()},children:[R?e(l.Trigger,{render:R}):null,r(l.Portal,{children:[e(l.Backdrop,{className:`neba-portal ${_}`}),e(l.Viewport,{className:`neba-portal fixed inset-0 z-50 flex ${j[z]}`,children:e(l.Popup,{className:de,style:{...g(P,3),...ie,...U},...X,children:me})})]})]}):T??F??!0?e("div",{className:de,style:{...g(P,0),...ie,...U},children:me}):null}
1
+ "use client";import{jsx as e,jsxs as a,Fragment as r}from"react/jsx-runtime";import{Dialog as l}from"@base-ui/react/dialog";import{boxPaddingXClasses as n,boxPaddingYClasses as s}from"../box/Box.js";import{actionMessages as t,useMessages as o}from"../../internal/i18n.js";import{CloseIcon as d}from"../../internal/icons.js";import{cx as i,hasContent as u,metaTextClasses as m,popupFadeClasses as b,sheetBodyClasses as c,sheetHeaderGapClasses as f,sheetSectionGapClasses as x,sheetTitleClasses as g,surfaceClasses as p,surfaceSlots as h}from"../../internal/styles.js";import{useStyleDefaults as v}from"../../internal/defaults.js";const y={xs:"w-56",sm:"w-64",md:"w-80",lg:"w-96",xl:"w-[28rem]"},w={left:{xs:"rounded-r-(--neba-radius-xs)",sm:"rounded-r-(--neba-radius-sm)",md:"rounded-r-(--neba-radius-md)",lg:"rounded-r-(--neba-radius-lg)",xl:"rounded-r-(--neba-radius-xl)"},right:{xs:"rounded-l-(--neba-radius-xs)",sm:"rounded-l-(--neba-radius-sm)",md:"rounded-l-(--neba-radius-md)",lg:"rounded-l-(--neba-radius-lg)",xl:"rounded-l-(--neba-radius-xl)"},top:{xs:"rounded-b-(--neba-radius-xs)",sm:"rounded-b-(--neba-radius-sm)",md:"rounded-b-(--neba-radius-md)",lg:"rounded-b-(--neba-radius-lg)",xl:"rounded-b-(--neba-radius-xl)"},bottom:{xs:"rounded-t-(--neba-radius-xs)",sm:"rounded-t-(--neba-radius-sm)",md:"rounded-t-(--neba-radius-md)",lg:"rounded-t-(--neba-radius-lg)",xl:"rounded-t-(--neba-radius-xl)"}},_={left:"border-r",right:"border-l",top:"border-b",bottom:"border-t"},j={left:"data-[starting-style]:[translate:-100%_0] data-[ending-style]:[translate:-100%_0]",right:"data-[starting-style]:[translate:100%_0] data-[ending-style]:[translate:100%_0]",top:"data-[starting-style]:[translate:0_-100%] data-[ending-style]:[translate:0_-100%]",bottom:"data-[starting-style]:[translate:0_100%] data-[ending-style]:[translate:0_100%]"},N={left:"flex-row justify-start",right:"flex-row justify-end",top:"flex-col justify-start",bottom:"flex-col justify-end"},$=[p,"relative flex flex-col overflow-hidden","text-(--neba-fg) bg-(--n-panel-press)","[border-color:var(--n-line)]","[outline:none]"].join(" "),k=["fixed inset-0 z-50 bg-(--neba-scrim)","[backdrop-filter:blur(2px)]",b].join(" "),C="border-t [border-color:var(--n-line)]",z=["flex size-[1.6em] shrink-0 cursor-pointer items-center justify-center","rounded-full text-(--neba-muted-fg)","[&_svg]:size-[1.1em] [&_svg]:shrink-0","[transition:background-color_var(--neba-duration)_var(--neba-ease),color_var(--neba-duration)_var(--neba-ease)]","hover:bg-(--n-soft) hover:text-(--neba-fg)","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2"].join(" ");export const DrawerClose=l.Close;export function Drawer(b){const{side:p="left",mode:D="overlay",size:O="md",color:P="primary",density:B="default",open:T,defaultOpen:F,onOpenChange:L,trigger:R,title:V,description:q,actions:A,dividers:E=!1,showClose:G,locale:H,closeLabel:I,extent:J,rounded:K=!0,modal:M=!0,dismissible:Q=!0,className:S,style:U,children:W,...X}=v(b,["size","density","locale"]),Y=o(t,H),Z="overlay"===D,ee="left"===p||"right"===p,ae=G??Z,re=n[B][O],le=s[B][O],ne=E?`${re} ${le}`:re,se=u(V)||u(q),te=u(A),oe=void 0===J?null:{[ee?"width":"height"]:"number"==typeof J?`${J}px`:J},de=i($,c[O],_[p],K?w[p][O]:"",Z?"[box-shadow:var(--neba-shadow-3),var(--neba-plate-glass)]":"[box-shadow:var(--neba-plate-glass)]",Z?`[transition:translate_var(--neba-duration)_var(--neba-ease)] ${j[p]}`:"",ee?`h-full max-w-full ${void 0===J?y[O]:""}`:"w-full "+(void 0===J?"max-h-[85%]":""),E?"":`${le} ${x[O]}`,S??""),ie=Z?l.Title:"h2",ue=Z?l.Description:"p",me=a(r,{children:[se||ae?a("div",{className:`flex shrink-0 items-start gap-3 ${ne}`,children:[a("div",{className:`flex min-w-0 flex-1 flex-col ${f[O]}`,children:[u(V)?e(ie,{className:`m-0 font-semibold ${g[O]}`,children:V}):null,u(q)?e(ue,{className:`m-0 text-(--neba-muted-fg) ${m[O]}`,children:q}):null]}),ae?Z?e(l.Close,{"aria-label":I??Y.close,className:z,children:e(d,{})}):e("button",{type:"button","aria-label":I??Y.close,className:z,onClick:()=>L?.(!1),children:e(d,{})}):null]}):null,u(W)?e("div",{className:i("min-h-0 flex-1 overflow-y-auto overscroll-contain",ne,E&&(se||ae)?C:"",E?"":"py-1 -my-1"),children:W}):null,te?e("div",{className:i("flex shrink-0 flex-wrap items-center justify-end gap-2",ne,E?C:""),children:A}):null]});return Z?a(l.Root,{open:T,defaultOpen:F,modal:M,disablePointerDismissal:!Q,onOpenChange:(e,a)=>{Q||e||"escape-key"!==a.reason?L?.(e):a.cancel()},children:[R?e(l.Trigger,{render:R}):null,a(l.Portal,{children:[e(l.Backdrop,{className:`neba-portal ${k}`}),e(l.Viewport,{className:`neba-portal fixed inset-0 z-50 flex ${N[p]}`,children:e(l.Popup,{className:de,style:{...h(P,3),...oe,...U},...X,children:me})})]})]}):T??F??!0?e("div",{className:de,style:{...h(P,0),...oe,...U},...X,children:me}):null}
@@ -0,0 +1,93 @@
1
+ import * as React from 'react';
2
+ import { useRender } from '@base-ui/react/use-render';
3
+ import type { NebaAlignItems, NebaJustifyContent, NebaOrientation, NebaResponsive } from '../../types.js';
4
+ export interface FlexProps extends React.ComponentPropsWithoutRef<'div'> {
5
+ /**
6
+ * Which way the row runs, in the library's own two words rather than CSS's
7
+ * four — `horizontal` is a row and `vertical` is a column, and `reverse`
8
+ * turns either around.
9
+ *
10
+ * Responsive, and this is the prop the component exists for:
11
+ * `direction={{ xs: 'vertical', md: 'horizontal' }}` is a stack on a phone
12
+ * and a row from 48rem, which is most of what a responsive layout is.
13
+ * @default 'horizontal'
14
+ */
15
+ direction?: NebaResponsive<NebaOrientation>;
16
+ /**
17
+ * Runs the children the other way along whichever axis `direction` chose —
18
+ * `row-reverse` or `column-reverse`.
19
+ *
20
+ * Not responsive on purpose: it applies to every breakpoint's direction at
21
+ * once, which is what "the same row, backwards" means. It is a visual order
22
+ * only, so the DOM order is still what a screen reader and the tab sequence
23
+ * follow — reverse a row whose order carries meaning and the two disagree.
24
+ * @default false
25
+ */
26
+ reverse?: boolean;
27
+ /**
28
+ * The gutter between children, on Tailwind's spacing scale — `spacing={4}`
29
+ * is `1rem`, the same length `gap-4` is. Fractions are allowed, so `1.5` is
30
+ * `0.375rem`.
31
+ *
32
+ * The same prop, the same scale and the same slot a
33
+ * [GridContainer](../grid) uses, so a gutter is one number across the two.
34
+ * @default 0
35
+ */
36
+ spacing?: NebaResponsive<number>;
37
+ /** The gutter between wrapped lines only. Falls back to `spacing`. */
38
+ rowSpacing?: NebaResponsive<number>;
39
+ /** The gutter along the row only. Falls back to `spacing`. */
40
+ columnSpacing?: NebaResponsive<number>;
41
+ /** How the row distributes the space its children did not use. */
42
+ justifyContent?: NebaJustifyContent;
43
+ /** How the children sit across the axis the row runs on. */
44
+ alignItems?: NebaAlignItems;
45
+ /** Where wrapped lines sit when the box is taller than they are. */
46
+ alignContent?: NebaJustifyContent;
47
+ /**
48
+ * Whether a row that runs out of width continues on the next line.
49
+ *
50
+ * Off by default, which is the opposite of a `GridContainer` and deliberate:
51
+ * a grid is columns and wrapping is what columns do, while a Flex is most
52
+ * often a toolbar or a field row that should stay on one line and let its
53
+ * children shrink.
54
+ * @default false
55
+ */
56
+ wrap?: boolean;
57
+ /** Lays the box out inline, so it sits in a line of text. @default false */
58
+ inline?: boolean;
59
+ /**
60
+ * Renders something other than a `<div>`: `render={<nav />}`,
61
+ * `render={<ul />}`. Base UI's own escape hatch.
62
+ */
63
+ render?: useRender.RenderProp;
64
+ children?: React.ReactNode;
65
+ }
66
+ /**
67
+ * A row, or a column, and the width at which it changes from one to the other.
68
+ *
69
+ * This is the most common responsive decision there is — a pair of buttons side
70
+ * by side on a desktop and stacked on a phone, a form's label beside its field
71
+ * and then above it — and until now the only way to say it was a
72
+ * [GridContainer](../grid) with a `Grid` around each child, which is two
73
+ * components and a column count to describe a row of two things.
74
+ *
75
+ * `direction` is the whole point and is responsive; `spacing` is the gutter, on
76
+ * the same scale and through the same slot a grid's is, so one number means one
77
+ * length across both. Everything else is the flexbox vocabulary spelled the way
78
+ * the rest of the library spells it.
79
+ *
80
+ * It draws nothing at all — no surface, no padding, not even a gutter unless
81
+ * one is asked for. That is the difference between it and a `GridContainer`,
82
+ * which pads by default because a grid is a page's own arrangement; a Flex is
83
+ * used inside everything, and a wrapper that changed how its children looked
84
+ * would make `direction` a visual decision. Put it in a Box or a Card when a
85
+ * sheet is wanted.
86
+ *
87
+ * The direction and the gutters arrive as inherited custom properties rather
88
+ * than through a context, for the reason `GridContainer` does the same: a media
89
+ * query can change one without React hearing about it, so what is on screen is
90
+ * always what the window is currently worth. A context would have to re-render
91
+ * the tree at every breakpoint to say the same thing.
92
+ */
93
+ export declare const Flex: React.ForwardRefExoticComponent<FlexProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1 @@
1
+ "use client";import*as e from"react";import{useRender as r}from"@base-ui/react/use-render";import{alignContentClasses as n,alignItemsClasses as i,justifyContentClasses as t,spacingValue as a}from"../../internal/grid.js";import{overlayResponsive as o,responsiveSlots as l,withBaseline as s}from"../../internal/responsive.js";import{cx as p}from"../../internal/styles.js";function c(e){return r=>{const n="vertical"===r?"column":"row";return e?`${n}-reverse`:n}}export const Flex=/*@__PURE__*/e.forwardRef(function({direction:e,reverse:f=!1,spacing:m,rowSpacing:x,columnSpacing:g,justifyContent:d,alignItems:u,alignContent:y,wrap:w=!1,inline:v=!1,render:j,className:h,style:b,children:C,...N},S){const z=p("neba-flex",v?"inline-flex":"flex","[flex-direction:var(--n-flex-dir)] gap-x-(--n-gap-x) gap-y-(--n-gap-y)",w?"flex-wrap":"flex-nowrap",d?t[d]:"",u?i[u]:"",y?n[y]:"",h??"");return r({render:j,ref:S,props:{className:z,style:{...l("flex-dir",s(e,"horizontal"),c(f)),...l("gap-x",o(s(m,0),g),a),...l("gap-y",o(s(m,0),x),a),...b},children:C,...N}})});
@@ -0,0 +1,2 @@
1
+ export { Flex } from './Flex.js';
2
+ export type { FlexProps } from './Flex.js';
@@ -0,0 +1 @@
1
+ export{Flex}from"./Flex.js";
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as o from"react";import{Button as n}from"../button/Button.js";import{CloseIcon as s,PlusIcon as a}from"../../internal/icons.js";import{cx as r,hasContent as i,metaTextClasses as l,radiusClasses as d,surfaceClasses as c}from"../../internal/styles.js";import{useStyleDefaults as f}from"../../internal/defaults.js";const p=/*@__PURE__*/o.createContext({variant:"solid",size:"md",color:"primary",density:"default",elevation:1,showLabels:!0,reversed:!0,close:()=>{}}),m={xs:"xs",sm:"xs",md:"sm",lg:"md",xl:"lg"},u="lg",b={static:"",absolute:"absolute z-30",sticky:"sticky z-30",fixed:"fixed z-40"},v={"top-start":"top-(--n-fab-offset) start-(--n-fab-offset)","top-end":"top-(--n-fab-offset) end-(--n-fab-offset)","bottom-start":"bottom-(--n-fab-offset) start-(--n-fab-offset)","bottom-end":"bottom-(--n-fab-offset) end-(--n-fab-offset)"},x=r("pointer-events-none max-w-40 truncate select-none","px-2 py-0.5 text-(--neba-fg) bg-(--n-panel)",c,d.xs,"[box-shadow:var(--neba-shadow-1),var(--neba-plate-glass)]");export const FloatingActionButton=/*@__PURE__*/o.forwardRef(function(i,l){const{variant:d="solid",size:c=u,color:x="primary",density:y="default",elevation:h=2,icon:g,label:w,extended:z=!1,openIcon:C,position:k="fixed",corner:L="bottom-end",offset:j=16,direction:N,open:E,defaultOpen:P=!1,onOpenChange:R,openOnHover:A=!0,closeOnAction:I=!0,showLabels:O=!0,disabled:B=!1,className:D,style:F,children:K,onClick:T,onKeyDown:W,onPointerEnter:H,onPointerLeave:M,...S}=f(i,["size","density","variant"]),$=o.useId(),q=o.useRef(null),G=o.useRef(null),[J,Q]=o.useState(P),U=void 0!==E,V=o.Children.toArray(K).length>0,X=(U?E:J)&&V&&!B,Y=o.useCallback(e=>{U||Q(e),R?.(e)},[U,R]),Z=o.useCallback(()=>Y(!1),[Y]);o.useEffect(()=>{if(!X)return;const e=e=>{const t=G.current;t&&e.target instanceof Node&&!t.contains(e.target)&&Z()};return document.addEventListener("pointerdown",e),()=>document.removeEventListener("pointerdown",e)},[X,Z]);const _=N??(L.startsWith("bottom")?"top":"bottom"),ee=L.endsWith("end"),te=o.useMemo(()=>({variant:d,size:m[c],color:x,density:y,elevation:h,showLabels:O,reversed:ee,close:I?Z:()=>{}}),[d,c,x,y,h,O,ee,I,Z]),oe=X&&!1!==C?C??e(s,{}):g??e(a,{});return t("div",{ref:e=>{G.current=e,"function"==typeof l?l(e):l&&(l.current=e)},className:r("flex w-fit","top"===_?"flex-col-reverse":"flex-col",ee?"items-end":"items-start","xs"===c||"sm"===c?"gap-1.5":"gap-2",b[k],"static"===k?"":v[L],D),style:{"--n-fab-offset":"number"==typeof j?`${j}px`:j,...F},onKeyDown:e=>{"Escape"===e.key&&X&&(e.stopPropagation(),Z(),q.current?.focus()),W?.(e)},onPointerEnter:e=>{A&&V&&!B&&"mouse"===e.pointerType&&Y(!0),H?.(e)},onPointerLeave:e=>{A&&"mouse"===e.pointerType&&Z(),M?.(e)},...S,children:[e(n,{ref:q,variant:d,size:c,color:x,density:y,elevation:h,disabled:B,"aria-label":w,"aria-expanded":V?X:void 0,"aria-controls":V&&X?$:void 0,startIcon:oe,style:{borderRadius:"9999px"},onClick:e=>{V&&Y(!X),T?.(e)},children:z?w:void 0}),X?e("div",{id:$,className:r("flex","top"===_?"flex-col-reverse":"flex-col",ee?"items-end":"items-start","xs"===c||"sm"===c?"gap-1.5":"gap-2"),children:e(p.Provider,{value:te,children:K})}):null]})});export const FloatingAction=/*@__PURE__*/o.forwardRef(function({icon:s,label:a,disabled:d=!1,className:c,onClick:f,...m},u){const b=o.useContext(p);return t("div",{className:r("flex items-center gap-2",b.reversed?"flex-row-reverse":"flex-row",c),children:[e(n,{ref:u,variant:b.variant,size:b.size,color:b.color,density:b.density,elevation:b.elevation,disabled:d,"aria-label":a,startIcon:s,style:{borderRadius:"9999px"},onClick:e=>{f?.(e),b.close()},...m}),b.showLabels&&i(a)?e("span",{"aria-hidden":"true",className:r(x,l[b.size]),children:a}):null]})});
1
+ "use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as o from"react";import{Button as n}from"../button/Button.js";import{CloseIcon as s,PlusIcon as a}from"../../internal/icons.js";import{cx as r,hasContent as i,metaTextClasses as l,radiusClasses as d,surfaceClasses as c}from"../../internal/styles.js";import{useStyleDefaults as f}from"../../internal/defaults.js";const m=/*@__PURE__*/o.createContext({variant:"solid",size:"md",color:"primary",density:"default",elevation:1,showLabels:!0,reversed:!0,close:()=>{}}),p={xs:"xs",sm:"xs",md:"sm",lg:"md",xl:"lg"},u="lg",b={static:"",absolute:"absolute z-30",sticky:"sticky z-30",fixed:"fixed z-40"},v={"top-start":"top-(--n-fab-offset) start-(--n-fab-offset)","top-end":"top-(--n-fab-offset) end-(--n-fab-offset)","bottom-start":"bottom-(--n-fab-offset) start-(--n-fab-offset)","bottom-end":"bottom-(--n-fab-offset) end-(--n-fab-offset)"},x=r("pointer-events-none max-w-40 truncate select-none","px-2 py-0.5 text-(--neba-fg) bg-(--n-panel)",c,d.xs,"[box-shadow:var(--neba-shadow-1),var(--neba-plate-glass)]");export const FloatingActionButton=/*@__PURE__*/o.forwardRef(function(i,l){const{variant:d="solid",size:c=u,color:x="primary",density:y="default",elevation:h=2,icon:g,label:w,extended:z=!1,openIcon:C,position:k="fixed",corner:L="bottom-end",offset:j=16,direction:N,open:E,defaultOpen:P=!1,onOpenChange:R,openOnHover:A=!0,closeOnAction:I=!0,showLabels:O=!0,disabled:_=!1,className:B,style:D,children:F,onClick:K,onKeyDown:T,onPointerEnter:W,onPointerLeave:H,...M}=f(i,["size","density","variant"]),S=o.useId(),$=o.useRef(null),q=o.useRef(null),[G,J]=o.useState(P),Q=void 0!==E,U=o.Children.toArray(F).length>0,V=(Q?E:G)&&U&&!_,X=o.useCallback(e=>{Q||J(e),R?.(e)},[Q,R]),Y=o.useCallback(()=>X(!1),[X]);o.useEffect(()=>{if(!V)return;const e=e=>{const t=q.current;t&&e.target instanceof Node&&!t.contains(e.target)&&Y()};return document.addEventListener("pointerdown",e),()=>document.removeEventListener("pointerdown",e)},[V,Y]);const Z=N??(L.startsWith("bottom")?"top":"bottom"),ee=L.endsWith("end"),te=o.useMemo(()=>({variant:d,size:p[c],color:x,density:y,elevation:h,showLabels:O,reversed:ee,close:I?Y:()=>{}}),[d,c,x,y,h,O,ee,I,Y]),oe=V&&!1!==C?C??e(s,{}):g??e(a,{});return t("div",{ref:e=>{q.current=e,"function"==typeof l?l(e):l&&(l.current=e)},className:r("flex w-fit","top"===Z?"flex-col-reverse":"flex-col",ee?"items-end":"items-start","xs"===c||"sm"===c?"gap-1.5":"gap-2",b[k],"static"===k?"":v[L],B),style:{"--n-fab-offset":"number"==typeof j?`${j}px`:j,...D},onKeyDown:e=>{"Escape"===e.key&&V&&(e.stopPropagation(),Y(),$.current?.focus()),T?.(e)},onPointerEnter:e=>{A&&U&&!_&&"mouse"===e.pointerType&&X(!0),W?.(e)},onPointerLeave:e=>{A&&"mouse"===e.pointerType&&Y(),H?.(e)},...M,children:[e(n,{ref:$,variant:d,size:c,color:x,density:y,elevation:h,disabled:_,"aria-label":w,"aria-expanded":U?V:void 0,"aria-controls":U&&V?S:void 0,startIcon:oe,style:{borderRadius:"9999px"},onClick:e=>{U&&X(!V),K?.(e)},children:z?w:void 0}),V?e("div",{id:S,className:r("flex","top"===Z?"flex-col-reverse":"flex-col",ee?"items-end":"items-start","xs"===c||"sm"===c?"gap-1.5":"gap-2","[animation:neba-anim-fade_var(--neba-duration)_var(--neba-ease)_both]"),children:e(m.Provider,{value:te,children:F})}):null]})});export const FloatingAction=/*@__PURE__*/o.forwardRef(function({icon:s,label:a,disabled:d=!1,className:c,onClick:f,...p},u){const b=o.useContext(m);return t("div",{className:r("flex items-center gap-2",b.reversed?"flex-row-reverse":"flex-row",c),children:[e(n,{ref:u,variant:b.variant,size:b.size,color:b.color,density:b.density,elevation:b.elevation,disabled:d,"aria-label":a,startIcon:s,style:{borderRadius:"9999px"},onClick:e=>{f?.(e),b.close()},...p}),b.showLabels&&i(a)?e("span",{"aria-hidden":"true",className:r(x,l[b.size]),children:a}):null]})});
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { useRender } from '@base-ui/react/use-render';
3
- import type { NebaColor, NebaDensity, NebaElevation, NebaPosition, NebaSize, NebaVariant } from '../../types.js';
3
+ import type { NebaColor, NebaDensity, NebaElevation, NebaMeasure, NebaPosition, NebaResponsive, NebaSize, NebaVariant } from '../../types.js';
4
4
  export interface FooterProps extends Omit<React.ComponentPropsWithoutRef<'footer'>, 'color' | 'title'> {
5
5
  /**
6
6
  * How the bar sits in the page's scroll. `static` — the default, and the
@@ -38,10 +38,11 @@ export interface FooterProps extends Omit<React.ComponentPropsWithoutRef<'footer
38
38
  divider?: boolean;
39
39
  /**
40
40
  * Holds the content to a measure and centres it, while the sheet itself still
41
- * spans the window. On the same ladder Container's own `maxWidth` uses.
41
+ * spans the window. The same ladder — and the same lengths, and the same
42
+ * per-breakpoint map — Container's own `maxWidth` takes.
42
43
  * @default 'none'
43
44
  */
44
- maxWidth?: NebaSize | 'none';
45
+ maxWidth?: NebaResponsive<NebaMeasure>;
45
46
  /** The gutter and the air above and below. @default true */
46
47
  padded?: boolean;
47
48
  /**
@@ -1 +1 @@
1
- "use client";import{jsx as e}from"react/jsx-runtime";import*as t from"react";import{useRender as r}from"@base-ui/react/use-render";import{boxPaddingXClasses as a,boxPaddingYClasses as o}from"../box/Box.js";import{PageLayoutContext as n}from"../../internal/page-layout.js";import{cx as s,surfaceClasses as i,surfaceSlots as l,transitionClasses as m}from"../../internal/styles.js";import{useStyleDefaults as d}from"../../internal/defaults.js";const f={solid:[i,"text-(--neba-fg) bg-(--n-panel-press)","[box-shadow:var(--n-elev),var(--neba-plate-solid)]"].join(" "),outline:[i,"text-(--neba-fg) bg-(--n-panel)","[box-shadow:var(--n-elev),var(--neba-plate-glass)]"].join(" "),text:"text-(--neba-fg) bg-transparent"},x={static:"",sticky:"sticky bottom-0 z-30",fixed:"fixed inset-x-0 bottom-0 z-40"},c={xs:"max-w-[30rem]",sm:"max-w-[40rem]",md:"max-w-[48rem]",lg:"max-w-[64rem]",xl:"max-w-[80rem]"};export const Footer=/*@__PURE__*/t.forwardRef(function(i,p){const{position:b="static",variant:u="outline",size:v="md",color:w="primary",density:g="default",elevation:y=0,divider:j=!0,maxWidth:h="none",padded:z=!0,label:k,render:N,className:C,style:B,children:F,...R}=d(i,["size","density","variant"]),W=t.useContext(n),{register:q}=W,A=t.useCallback(e=>{q("footer",e),"function"==typeof p?p(e):p&&(p.current=e)},[q,p]),D=s("w-full min-w-0",f[u],j?"border-t [border-color:var(--n-line)]":"",x[b],m,C);return r({render:N??e("footer",{}),ref:A,props:{"aria-label":k,className:D,style:{...l(w,y),...B},children:e("div",{className:s("w-full",z?s(a[g][v],o[g][v]):"","none"===h?"":s(c[h],"mx-auto")),children:F}),...R}})});
1
+ "use client";import{jsx as e}from"react/jsx-runtime";import*as t from"react";import{useRender as r}from"@base-ui/react/use-render";import{boxPaddingXClasses as a,boxPaddingYClasses as o}from"../box/Box.js";import{PageLayoutContext as n}from"../../internal/page-layout.js";import{cx as s,measureValue as i,surfaceClasses as l,surfaceSlots as m,transitionClasses as d}from"../../internal/styles.js";import{responsiveSlots as f}from"../../internal/responsive.js";import{useStyleDefaults as c}from"../../internal/defaults.js";const p={solid:[l,"text-(--neba-fg) bg-(--n-panel-press)","[box-shadow:var(--n-elev),var(--neba-plate-solid)]"].join(" "),outline:[l,"text-(--neba-fg) bg-(--n-panel)","[box-shadow:var(--n-elev),var(--neba-plate-glass)]"].join(" "),text:"text-(--neba-fg) bg-transparent"},b={static:"",sticky:"sticky bottom-0 z-30",fixed:"fixed inset-x-0 bottom-0 z-40"};export const Footer=/*@__PURE__*/t.forwardRef(function(l,x){const{position:u="static",variant:v="outline",size:y="md",color:g="primary",density:j="default",elevation:w=0,divider:h=!0,maxWidth:z,padded:k=!0,label:N,render:C,className:B,style:F,children:R,...W}=c(l,["size","density","variant"]),q=t.useContext(n),{register:A}=q,D=t.useCallback(e=>{A("footer",e),"function"==typeof x?x(e):x&&(x.current=e)},[A,x]),E=s("w-full min-w-0",p[v],h?"border-t [border-color:var(--n-line)]":"",b[u],d,B);return r({render:C??e("footer",{}),ref:D,props:{"aria-label":N,className:E,style:{...m(g,w),...F},children:e("div",{className:s("w-full",k?s(a[j][y],o[j][y]):"","neba-measure mx-auto max-w-(--n-max-w)"),style:f("max-w",z,i),children:R}),...W}})});