neba 1.16.1 → 1.17.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.
- package/README.md +5 -5
- package/dist/a2ui/adapter-catalog.json +1 -0
- package/dist/a2ui/catalog.json +632 -145
- package/dist/a2ui/components.js +1 -1
- package/dist/a2ui/index.d.ts +22 -10
- package/dist/a2ui/index.js +1 -1
- package/dist/a2ui/schema.d.ts +8 -6
- package/dist/a2ui/schema.js +1 -1
- package/dist/components/accordion/Accordion.js +1 -1
- package/dist/components/agent-steps/AgentSteps.js +1 -1
- package/dist/components/alert/Alert.js +1 -1
- package/dist/components/anchor/Anchor.d.ts +3 -1
- package/dist/components/anchor/Anchor.js +1 -1
- package/dist/components/animate-counter/AnimateCounter.d.ts +11 -4
- package/dist/components/animate-counter/AnimateCounter.js +1 -1
- package/dist/components/animate-scramble/AnimateScramble.d.ts +6 -3
- package/dist/components/animate-scramble/AnimateScramble.js +1 -1
- package/dist/components/animate-split/AnimateSplit.d.ts +6 -3
- package/dist/components/animate-split/AnimateSplit.js +1 -1
- package/dist/components/animate-typing/AnimateTyping.js +1 -1
- package/dist/components/app-logo/AppLogo.js +1 -1
- package/dist/components/approval/Approval.js +1 -1
- package/dist/components/avatar/Avatar.js +1 -1
- package/dist/components/bar-chart/BarChart.js +1 -1
- package/dist/components/bottom-navigation/BottomNavigation.js +1 -1
- package/dist/components/box/Box.js +1 -1
- package/dist/components/breadcrumb/Breadcrumb.d.ts +3 -3
- package/dist/components/breadcrumb/Breadcrumb.js +1 -1
- package/dist/components/card/Card.js +1 -1
- package/dist/components/chat-bubble/ChatBubble.js +1 -1
- package/dist/components/chip/Chip.d.ts +4 -1
- package/dist/components/chip/Chip.js +1 -1
- package/dist/components/code-block/CodeBlock.js +1 -1
- package/dist/components/collapsible/Collapsible.js +1 -1
- package/dist/components/color-picker/ColorPicker.d.ts +13 -3
- package/dist/components/color-picker/ColorPicker.js +1 -1
- package/dist/components/combobox/Combobox.d.ts +9 -2
- package/dist/components/combobox/Combobox.js +1 -1
- package/dist/components/command-palette/CommandPalette.js +1 -1
- package/dist/components/confirm/Confirm.js +1 -1
- package/dist/components/context-window/ContextWindow.d.ts +4 -1
- package/dist/components/context-window/ContextWindow.js +1 -1
- package/dist/components/data-list/DataList.d.ts +3 -2
- package/dist/components/data-list/DataList.js +1 -1
- package/dist/components/data-table/DataTable.d.ts +11 -5
- package/dist/components/data-table/DataTable.js +1 -1
- package/dist/components/date-picker/DatePicker.js +1 -1
- package/dist/components/date-range-picker/DateRangePicker.d.ts +3 -2
- package/dist/components/date-range-picker/DateRangePicker.js +1 -1
- package/dist/components/date-time-picker/DateTimePicker.js +1 -1
- package/dist/components/dialog/Dialog.js +1 -1
- package/dist/components/drawer/Drawer.js +1 -1
- package/dist/components/fieldset/Fieldset.js +1 -1
- package/dist/components/file-picker/FilePicker.d.ts +4 -0
- package/dist/components/file-picker/FilePicker.js +1 -1
- package/dist/components/footer/Footer.d.ts +4 -2
- package/dist/components/form/Form.d.ts +0 -14
- package/dist/components/form/Form.js +1 -1
- package/dist/components/gallery/Gallery.js +1 -1
- package/dist/components/gallery/GalleryViewer.js +1 -1
- package/dist/components/header/Header.d.ts +4 -3
- package/dist/components/heatmap-chart/HeatmapChart.js +1 -1
- package/dist/components/hover-card/HoverCard.d.ts +1 -1
- package/dist/components/how-to-steps/HowToSteps.d.ts +2 -1
- package/dist/components/how-to-steps/HowToSteps.js +1 -1
- package/dist/components/image/Image.d.ts +4 -1
- package/dist/components/image/Image.js +1 -1
- package/dist/components/inline-citation/InlineCitation.d.ts +4 -2
- package/dist/components/inline-citation/InlineCitation.js +1 -1
- package/dist/components/menu/Menu.d.ts +6 -2
- package/dist/components/menu/Menu.js +1 -1
- package/dist/components/mockup/Mockup.js +1 -1
- package/dist/components/navigation-menu/NavigationMenu.d.ts +1 -1
- package/dist/components/navigation-menu/NavigationMenu.js +1 -1
- package/dist/components/number-field/NumberField.d.ts +9 -4
- package/dist/components/number-field/NumberField.js +1 -1
- package/dist/components/overlay/Overlay.d.ts +1 -1
- package/dist/components/page-layout/PageLayout.js +1 -1
- package/dist/components/pagination/Pagination.d.ts +3 -2
- package/dist/components/panes/Panes.js +1 -1
- package/dist/components/pie-chart/PieChart.js +1 -1
- package/dist/components/pill/Pill.js +1 -1
- package/dist/components/popover/Popover.js +1 -1
- package/dist/components/progress-box/ProgressBox.js +1 -1
- package/dist/components/prompt-input/PromptInput.d.ts +5 -3
- package/dist/components/prompt-input/PromptInput.js +1 -1
- package/dist/components/provider/NebaProvider.d.ts +2 -2
- package/dist/components/provider/NebaProvider.js +1 -1
- package/dist/components/radio-group/RadioGroup.js +1 -1
- package/dist/components/rating/Rating.js +1 -1
- package/dist/components/reasoning/Reasoning.d.ts +7 -4
- package/dist/components/reasoning/Reasoning.js +1 -1
- package/dist/components/scatter-chart/ScatterChart.d.ts +7 -1
- package/dist/components/scatter-chart/ScatterChart.js +1 -1
- package/dist/components/scroll-area/ScrollArea.d.ts +12 -0
- package/dist/components/scroll-area/ScrollArea.js +1 -1
- package/dist/components/scroll-zone/ScrollZone.js +1 -1
- package/dist/components/segmented-button/SegmentedButton.js +1 -1
- package/dist/components/select/Select.d.ts +10 -2
- package/dist/components/select/Select.js +1 -1
- package/dist/components/sidebar/Sidebar.js +1 -1
- package/dist/components/sidebar/SidebarTrigger.js +1 -1
- package/dist/components/skeleton/Skeleton.js +1 -1
- package/dist/components/sources/Sources.d.ts +1 -1
- package/dist/components/sources/Sources.js +1 -1
- package/dist/components/stack/Stack.js +1 -1
- package/dist/components/streaming-text/StreamingText.js +1 -1
- package/dist/components/switch/Switch.d.ts +13 -2
- package/dist/components/switch/Switch.js +1 -1
- package/dist/components/switch/index.d.ts +1 -1
- package/dist/components/table/Table.d.ts +4 -2
- package/dist/components/tabs/Tabs.js +1 -1
- package/dist/components/text-field/TextField.d.ts +13 -5
- package/dist/components/text-field/TextField.js +1 -1
- package/dist/components/text-link/TextLink.js +1 -1
- package/dist/components/time-picker/TimePicker.js +1 -1
- package/dist/components/timeline-chart/TimelineChart.d.ts +6 -1
- package/dist/components/timeline-chart/TimelineChart.js +1 -1
- package/dist/components/toggle/Toggle.js +1 -1
- package/dist/components/tool-call/ToolCall.js +1 -1
- package/dist/components/tour/Tour.js +1 -1
- package/dist/components/transfer/Transfer.js +1 -1
- package/dist/components/tree-select/TreeSelect.js +1 -1
- package/dist/components/tree-view/TreeView.js +1 -1
- package/dist/components/typography/Typography.js +1 -1
- package/dist/components/visually-hidden/VisuallyHidden.d.ts +2 -2
- package/dist/components/window-pane/WindowPane.js +1 -1
- package/dist/hooks/useElementSize.d.ts +6 -2
- package/dist/hooks/useElementSize.js +1 -1
- package/dist/hooks/useMediaQuery.d.ts +3 -2
- package/dist/hooks/useOnScreen.d.ts +2 -2
- package/dist/hooks/useShortcut.d.ts +11 -3
- package/dist/hooks/useShortcut.js +1 -1
- package/dist/internal/animate.d.ts +8 -0
- package/dist/internal/animate.js +1 -1
- package/dist/internal/calendar.js +1 -1
- package/dist/internal/chart-brush.d.ts +3 -1
- package/dist/internal/chart-brush.js +1 -1
- package/dist/internal/chart-frame.d.ts +28 -2
- package/dist/internal/chart-frame.js +1 -1
- package/dist/internal/chart-line.js +1 -1
- package/dist/internal/chart.d.ts +21 -0
- package/dist/internal/chart.js +1 -1
- package/dist/internal/defaults.d.ts +8 -4
- package/dist/internal/drag.d.ts +15 -0
- package/dist/internal/drag.js +1 -1
- package/dist/internal/drop.d.ts +12 -8
- package/dist/internal/drop.js +1 -1
- package/dist/internal/highlight.js +1 -1
- package/dist/internal/i18n.d.ts +40 -4
- package/dist/internal/i18n.js +1 -1
- package/dist/internal/icons.d.ts +3 -0
- package/dist/internal/icons.js +1 -1
- package/dist/internal/link.d.ts +27 -0
- package/dist/internal/link.js +1 -1
- package/dist/internal/new-tab.d.ts +19 -0
- package/dist/internal/new-tab.js +1 -0
- package/dist/internal/notch.d.ts +102 -0
- package/dist/internal/notch.js +1 -0
- package/dist/internal/observe.d.ts +3 -4
- package/dist/internal/picker.d.ts +30 -4
- package/dist/internal/picker.js +1 -1
- package/dist/internal/run.d.ts +7 -5
- package/dist/internal/run.js +1 -1
- package/dist/internal/search.d.ts +3 -3
- package/dist/internal/styles.d.ts +56 -0
- package/dist/internal/styles.js +1 -1
- package/dist/locales/ar.js +1 -1
- package/dist/locales/de.js +1 -1
- package/dist/locales/es.js +1 -1
- package/dist/locales/fr.js +1 -1
- package/dist/locales/hi.js +1 -1
- package/dist/locales/id.js +1 -1
- package/dist/locales/it.js +1 -1
- package/dist/locales/ja.js +1 -1
- package/dist/locales/ko.js +1 -1
- package/dist/locales/nl.js +1 -1
- package/dist/locales/pl.js +1 -1
- package/dist/locales/pt.js +1 -1
- package/dist/locales/ru.js +1 -1
- package/dist/locales/th.js +1 -1
- package/dist/locales/tr.js +1 -1
- package/dist/locales/vi.js +1 -1
- package/dist/locales/zh-hans.js +1 -1
- package/dist/locales/zh-hant.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/tailwind.css +287 -3
- package/dist/types.d.ts +18 -0
- package/package.json +23 -17
|
@@ -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 f,isEmptyValue as g,keysBetween as h,minColumnWidth as y,nextSort as b,pageBounds as v,sortRows as k,virtualWindow as w}from"../../internal/data-table.js";import{beginPointerDrag as x}from"../../internal/drag.js";import{dateFormatter as C}from"../../internal/format.js";import{emptyMessages as S,fillMessage as M,tableMessages as N,useMessages as K}from"../../internal/i18n.js";import{searchHaystack as R,searchText as j}from"../../internal/search.js";import{ChevronIcon as z}from"../../internal/icons.js";import{observeResize as _}from"../../internal/observe.js";import{downloadText as T,toCsv as D}from"../../internal/csv.js";import{controlTextLeadingClasses as $,cx as I,hasContent as E,metaTextClasses as P,paddingXValues as A,srOnlyClasses as B,toLength as F,transitionClasses as H}from"../../internal/styles.js";import{useStyleDefaults as O}from"../../internal/defaults.js";const V=["[--n-row:transparent]","[transition:background-color_var(--neba-duration)_var(--neba-ease)]"].join(" "),W={"--n-stripe":"color-mix(in oklab, var(--neba-fg) 4%, transparent)"},L=["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(" "),X=["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(" "),q='button, a, input, select, textarea, label, [role="button"], [role="checkbox"], [role="switch"], [role="radio"]';function G(e,t){return e instanceof Date?Number.isNaN(e.getTime())?"":C(t,{dateStyle:"medium"}).format(e):e}function SearchIcon(){return t("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[e("circle",{cx:"7.25",cy:"7.25",r:"4.75",stroke:"currentColor",strokeWidth:"1.5"}),e("path",{d:"m10.75 10.75 2.75 2.75",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}export function DataTable(C){const{headers:U,items:Y,getRowKey:J,variant:Q="outline",size:Z="sm",color:ee="primary",density:te="compact",elevation:ne=0,height:re,maxHeight:ae,rowHeight:le,striped:oe=!1,hoverable:se=!0,stickyHeader:ie=!0,caption:ce,label:ue,empty:de,virtual:pe=!0,overscan:me=8,sortable:fe=!1,sortMode:ge="single",sort:he,defaultSort:ye,onSortChange:be,resizable:ve=!1,columnWidths:ke,columnOrder:we,defaultColumnOrder:xe,onColumnOrderChange:Ce,reorderable:Se=!1,defaultColumnWidths:Me,onColumnWidthsChange:Ne,selectionMode:Ke="none",selected:Re,defaultSelected:je,onSelectedChange:ze,checkboxes:_e=!1,onRowClick:Te,onRowActivate:De,paging:$e="scroll",page:Ie,defaultPage:Ee=1,onPageChange:Pe,pageSize:Ae,defaultPageSize:Be=25,onPageSizeChange:Fe,pageSizeOptions:He=[10,25,50,100],footer:Oe,search:Ve,defaultSearch:We,onSearchChange:Le,searchable:Xe=!1,searchPlaceholder:qe,filter:Ge,toolbar:Ue,exportable:Ye=!1,exportFileName:Je="table.csv",onExport:Qe,exportEscapeFormulas:Ze=!0,onCellEdit:et,groupBy:tt,collapsibleGroups:nt=!0,defaultCollapsedGroups:rt,manual:at=!1,rowCount:lt,locale:ot,className:st,style:it,...ct}=O(C,["size","density","variant","locale"]),ut=K(N,ot),dt=K(S,ot),pt=r.useId(),mt=le??p[te][Z],ft=d[te][Z],gt=A[te][Z],ht=r.useMemo(()=>new Set(!0===at?["sort","filter","pages"]:at||[]),[at]),[yt,bt]=r.useState(()=>xe??[]),vt=we??yt,kt=r.useMemo(()=>{const e=U.filter(e=>!e.hidden),t=vt.map(t=>e.find(e=>e.key===t)).filter(e=>void 0!==e),n=e.filter(e=>!vt.includes(e.key)),r=0===vt.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)},[U,vt]),wt=kt.some(e=>void 0!==e.group),xt=wt?2:1,Ct="none"!==Ke,St="multiple"===Ke,Mt=Ct&&_e,Nt=void 0!==et&&kt.some(e=>void 0!==e.editable),Kt=Ct||void 0!==De||Nt,Rt=r.useMemo(()=>Y.map((e,t)=>{const n=J?J(e,t):t;return{row:e,identity:n,key:String(n),origin:t}}),[Y,J]),[jt,zt]=r.useState(We??""),_t=(Ve??jt).trim(),Tt=""!==_t&&!ht.has("filter"),Dt=r.useMemo(()=>kt.filter(e=>!1!==e.searchable),[kt]),$t=r.useMemo(()=>Tt&&0!==Dt.length?Rt.map(e=>R(Dt.map(t=>t.value?t.value(e.row):e.row[t.key]))):null,[Rt,Dt,Tt]),It=r.useMemo(()=>{if(ht.has("filter"))return Rt;const e=j(_t),t=""!==e&&$t?Rt.filter(t=>$t[t.origin].includes(e)):Rt;return Ge?t.filter(e=>Ge(e.row,e.origin)):t},[Rt,_t,Ge,ht,$t]),Et=r.useMemo(()=>new Intl.Collator(ot,{numeric:!0,sensitivity:"base"}),[ot]),[Pt,At]=r.useState(ye??[]),Bt=he??Pt,Ft=r.useMemo(()=>ht.has("sort")?It:k(It,Bt,e=>{const t=kt.find(t=>t.key===e);if(!t)return null;if(t.compare)return(e,n)=>t.compare(e.row,n.row);const n=t.value?t.value:e=>e[t.key];return{compare:(e,t)=>u(n(e.row),n(t.row),Et),isEmpty:e=>g(n(e.row))}}),[It,Bt,kt,Et,ht]),[Ht,Ot]=r.useState(Ee),[Vt,Wt]=r.useState(Be),Lt=Ae??Vt,[Xt,qt]=r.useState(()=>new Set(rt??[])),Gt=r.useMemo(()=>{if(!tt)return null;const e=[],t=new Map;for(const n of Ft){const r=tt(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}},[Ft,tt]),Ut=r.useMemo(()=>Gt?Gt.order.flatMap(e=>Xt.has(e)?[]:Gt.byLabel.get(e)??[]):Ft,[Gt,Xt,Ft]),Yt=ht.has("pages")?lt??Ut.length:Ut.length,Jt=v(Yt,Ie??Ht,Lt),Qt=r.useMemo(()=>"pages"!==$e||ht.has("pages")?Ut:Ut.slice(Jt.start,Jt.end),[Ut,$e,ht,Jt.start,Jt.end]),Zt="pages"===$e?Jt.start:0,en=r.useMemo(()=>Qt.map(e=>e.key),[Qt]),tn=r.useMemo(()=>new Map(en.map((e,t)=>[e,t])),[en]),nn=r.useMemo(()=>new Map(Rt.map(e=>[e.key,e])),[Rt]),[rn,an]=r.useState(je??[]),ln=Re??rn,on=r.useMemo(()=>new Set(ln.map(String)),[ln]),[sn,cn]=r.useState(null),un=r.useRef(null),dn=r.useRef({paged:Qt,pagedKeys:en,byKey:nn,selectedKeys:on,selectedValues:ln,multiple:St});dn.current={paged:Qt,pagedKeys:en,byKey:nn,selectedKeys:on,selectedValues:ln,multiple:St};const pn=r.useCallback(e=>{const t=[],n=[],r=ht.has("pages")?new Map(dn.current.selectedValues.map(e=>[String(e),e])):null;for(const a of e){const e=dn.current.byKey.get(a);e?(t.push(e.identity),n.push(e.row)):r?.has(a)&&t.push(r.get(a))}void 0===Re&&an(t),ze?.(t,n)},[Re,ze,ht]),mn=r.useCallback(e=>{un.current=e,pn([e])},[pn]),fn=r.useCallback(e=>{const t=dn.current.selectedKeys,n=new Set(t);n.has(e)?n.delete(e):n.add(e),un.current=e,pn([...n])},[pn]),gn=r.useCallback((e,t)=>{const n=dn.current.pagedKeys,r=un.current??n[0];if(void 0===r)return;const a=h(n,r,e);0!==a.length&&pn(t?[...new Set([...dn.current.selectedKeys,...a])]:a)},[pn]),hn=r.useRef(null),yn=r.useRef(null),bn=r.useRef(null),vn=r.useRef(null),[kn,wn]=r.useState(0),[xn,Cn]=r.useState(0),Sn=void 0!==re||void 0!==ae,Mn=void 0!==tt,Nn=pe&&Sn&&Qt.length>0&&!tt;r.useLayoutEffect(()=>{const e=hn.current;if(e&&Nn)return wn(e.clientHeight),_(e,e=>wn(e.contentRect.height))},[Nn]);const Kn=r.useCallback(e=>{if(!Nn)return;const t=Math.floor(e.currentTarget.scrollTop/mt)*mt;Cn(e=>e===t?e:t)},[Nn,mt]),Rn=Nn?w(xn,kn,mt,Qt.length,me):{start:0,end:Qt.length,before:0,after:0},jn=Qt.slice(Rn.start,Rn.end),zn=Ct&&null!==sn&&jn.some(e=>e.key===sn),[_n,Tn]=r.useState(Me??{}),Dn=ke??_n,$n=r.useCallback(e=>{void 0===ke&&Tn(e),Ne?.(e)},[ke,Ne]),In=r.useRef(new Map),En=r.useRef(null),Pn=r.useRef(null),[An,Bn]=r.useState(null),[Fn,Hn]=r.useState(null),On=r.useRef(null),Vn=r.useRef(null);r.useEffect(()=>()=>{En.current?.(),Pn.current?.()},[]);const Wn=(e,t)=>{if(0!==t.button)return;const n=t.currentTarget,r=t.clientX;let a=!1;Pn.current=x({target:n,pointerId:t.pointerId,capture:!1,onMove:t=>{if(!a){if(Math.abs(t.clientX-r)<6)return;a=!0,On.current=e,Bn(e)}const n=kt.find(e=>{if(e.pinned)return!1;const n=In.current.get(e.key);if(!n)return!1;const r=n.getBoundingClientRect();return t.clientX>=r.left&&t.clientX<=r.right});Vn.current=n&&n.key!==e?n.key:null,Hn(Vn.current)},onEnd:()=>{const e=On.current,t=Vn.current;if(Pn.current=null,On.current=null,Vn.current=null,Bn(null),Hn(null),e&&t&&e!==t){const r=kt.map(e=>e.key),a=r.indexOf(e),l=r.indexOf(t);r.splice(l,0,...r.splice(a,1)),n=r,void 0===we&&bt(n),Ce?.(n)}var n}})},Ln=r.useCallback((e,t)=>{const n=hn.current,r=yn.current;if(!n||!r)return;const a=function(e,t){for(let n=0;n<e.rows.length;n+=1)if(e.rows[n].dataset.nebaRow===t)return e.rows[n];return null}(r,e);if(!Sn)return void a?.scrollIntoView({block:"nearest",inline:"nearest"});const l=n.getBoundingClientRect().top+n.clientTop-n.scrollTop,o=(a??r).getBoundingClientRect(),s=o.top-l+(a?0:t*mt),i=s+(a?o.height:mt),c=ie?bn.current?.tHead?.getBoundingClientRect().height??0:0;s<n.scrollTop+c?n.scrollTop=Math.max(0,Math.floor(s-c)):i>n.scrollTop+n.clientHeight&&(n.scrollTop=Math.ceil(i-n.clientHeight))},[Sn,ie,mt]),Xn=(e,t)=>{const n=dn.current.paged,r=Math.min(Math.max(e,0),n.length-1),a=n[r];a&&(t.preventDefault(),cn(a.key),Ln(a.key,r),Ct&&(t.shiftKey&&dn.current.multiple?gn(a.key,!1):t.ctrlKey||t.metaKey||mn(a.key)))},qn=(e,t)=>{const n=hn.current;if(!n||!Sn)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 Gn=r.useCallback(e=>{const t=yn.current,n=dn.current.paged;if(!t||0===n.length)return null;if(Mn){const r=t.querySelectorAll("tr[data-neba-row]");let a=0,l=r.length-1,o=0;for(;a<=l;){const t=a+l>>1;r[t].getBoundingClientRect().top<=e?(o=t,a=t+1):l=t-1}return Math.min(o,n.length-1)}const r=t.getBoundingClientRect().top,a=Math.floor((e-r)/mt);return Math.min(Math.max(a,0),n.length-1)},[mt,Mn]),Un=r.useRef(null),Yn=r.useCallback(e=>{const t=Gn(e),n=null===t?void 0:dn.current.paged[t],r=Un.current;!n||r&&r.key===n.key||(r&&(r.key=n.key),cn(n.key),gn(n.key,!1))},[Gn,gn]),Jn=r.useRef(Yn);Jn.current=Yn;function Qn(e,t){if(Ct){if(!t.target.closest(q))if("touch"!==t.pointerType)if(bn.current?.focus({preventScroll:!0}),cn(e.key),2!==t.button){if(0===t.button)return t.shiftKey&&St?(t.preventDefault(),void gn(e.key,t.ctrlKey||t.metaKey)):void((t.ctrlKey||t.metaKey)&&St?fn(e.key):(mn(e.key),St&&((e,t)=>{const n=bn.current;if(Un.current||!n)return;const r=e.clientY,a=()=>{const e=Un.current,t=hn.current;e&&t&&0!==e.speed?(t.scrollTop+=e.speed,Jn.current(e.y),e.frame=requestAnimationFrame(a)):e&&(e.frame=null)};let l=()=>{};const o=()=>{const e=Un.current;null!=e?.frame&&cancelAnimationFrame(e.frame),Un.current=null,l()};Un.current={y:r,speed:0,frame:null,stop:o,key:t},l=x({target:n,pointerId:e.pointerId,onMove:e=>{const t=Un.current,n=hn.current;if(!t)return;if(t.y=e.clientY,Jn.current(t.y),!n||!Sn)return;const r=n.getBoundingClientRect(),l=r.top+mt-t.y,o=t.y-(r.bottom-mt);t.speed=l>0?-Math.min(l,40):o>0?Math.min(o,40):0,0!==t.speed&&null===t.frame&&(t.frame=requestAnimationFrame(a))},onEnd:o,capture:!1,mark:!1})})(t,e.key)))}else dn.current.selectedKeys.has(e.key)||mn(e.key);else vn.current=e.key}else Kt&&!t.target.closest(q)&&cn(e.key)}r.useEffect(()=>()=>Un.current?.stop(),[]);const Zn=r.useMemo(()=>en.reduce((e,t)=>on.has(t)?e+1:e,0),[en,on]),er=en.length>0&&Zn===en.length,tr=m[Z],nr=e=>Dn[e.key]??e.width,rr=(Mt?tr:0)+kt.reduce((e,t)=>e+(nr(t)??y),0),ar=kt.length>0&&kt.every(e=>void 0!==nr(e)),lr=kt.length+(Mt?1:0)+(ar?1:0),or=r.useMemo(()=>{const e=[];return kt.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},[kt]),sr=r.useMemo(()=>{const e=new Map,t=new Map;let n=Mt?tr:0;for(const t of kt)"start"===t.pinned&&(e.set(t.key,n),n+=nr(t)??f);let r=0;for(let e=kt.length-1;e>=0;e-=1){const n=kt[e];"end"===n.pinned&&(t.set(n.key,r),r+=nr(n)??f)}return{start:e,end:t}},[kt,Dn,Mt,tr]),ir=(e,t,n)=>({position:"sticky",insetInlineStart:"start"===e?`${t}px`:void 0,insetInlineEnd:"end"===e?`${t}px`:void 0,zIndex:n?21:1,backgroundColor:"var(--n-panel-press)",backgroundImage:n?void 0:"linear-gradient(var(--n-row), var(--n-row))"}),cr=(e,t)=>{if(!e.pinned)return{};const n="start"===e.pinned?sr.start.get(e.key):sr.end.get(e.key);return ir(e.pinned,n??0,t)},ur=kt.some(e=>"start"===e.pinned),dr=e=>ur?ir("start",0,e):{},pr={padding:`0 ${gt}`,borderBottom:"1px solid var(--n-line)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},mr={...pr,height:`${ft}px`,backgroundColor:"var(--n-panel-press)",color:"var(--n-cell-ink, var(--neba-muted-fg))"},fr="odd"===oe?0:1,gr=r.useMemo(()=>new Intl.NumberFormat(ot),[ot]),hr=Oe??"pages"===$e,yr=M(ut.range,{start:gr.format(0===Yt?0:("pages"===$e?Jt.start:0)+1),end:gr.format("pages"===$e?Jt.end:Yt),total:gr.format(Yt)}),br=e=>{void 0===Ie&&Ot(e),Pe?.(e)},vr=(n,r)=>{const a=on.has(n.key),l=sn===n.key;return t("tr",{id:`${pt}-${n.key}`,"aria-selected":Ct?a:void 0,"aria-rowindex":Nn?r+xt+1:void 0,"data-neba-row":n.key,className:I(V,a?"[--n-row:var(--n-soft-press)]":!1!==oe&&r%2===fr?"[--n-row:var(--n-stripe)]":"",!a&&se?"hover:[--n-row:var(--n-soft)]":"",l&&Kt?"[box-shadow:inset_0_0_0_1px_var(--n-ring)]":"",Ct||Te?"cursor-default":""),style:{height:`${mt}px`,backgroundColor:"var(--n-row)"},onPointerDown:e=>Qn(n,e),onClick:e=>{vn.current===n.key&&(vn.current=null,bn.current?.focus({preventScroll:!0}),cn(n.key),mn(n.key)),Te?.(n.row,Zt+r,e)},onDoubleClick:()=>De?.(n.row,Zt+r),children:[Mt?jr(n):null,kt.map(t=>{const a=Nr(t,n.row),l=xr?.key===n.key&&xr.column===t.key;return e("td",{role:Kt?"gridcell":void 0,style:{...pr,...cr(t,!1),textAlign:t.align??"start",cursor:a&&!l?"cell":void 0},onDoubleClick:a?e=>{e.stopPropagation(),Mr(n.key,t.key)}:void 0,children:l?Kr(n,t):t.render?t.render(n.row,Zt+r):G(n.row[t.key],ot)},t.key)}),ar?e("td",{"aria-hidden":"true",style:{...pr,padding:0}}):null]},n.key)},kr=(n,r,a)=>{const l=n.sortable??fe,o=n.resizable??ve,s=Se&&!n.pinned,i=(c=n.key,Bt.find(e=>e.key===c));var c;const u=i?Bt.findIndex(e=>e.key===n.key)+1:0,d=n.headerAlign??n.align??"start";return t("th",{ref:e=>{e?In.current.set(n.key,e):In.current.delete(n.key)},scope:"col",rowSpan:a,"aria-sort":i?"asc"===i.direction?"ascending":"descending":void 0,"data-column":n.key,"data-dragging":An===n.key||void 0,className:I("relative font-semibold select-none",ie?"sticky z-20 [backdrop-filter:var(--neba-blur)]":"",s?An===n.key?"cursor-grabbing":"cursor-grab":"",Fn===n.key?"shadow-[inset_2px_0_0_var(--n-accent)]":""),style:{...mr,...cr(n,!0),backgroundImage:An===n.key?"linear-gradient(var(--n-soft), var(--n-soft))":void 0,top:ie?2!==a&&wt?ft:0:void 0,textAlign:d,color:i?"var(--n-cell-ink, var(--n-accent))":mr.color},onPointerDown:s?e=>Wn(n.key,e):void 0,children:[l?t("button",{type:"button",className:I(L,"end"===d?"justify-end":"center"===d?"justify-center":"justify-start"),onClick:e=>((e,t)=>{const n=b(Bt,e,t&&"multiple"===ge);void 0===he&&At(n),be?.(n)})(n.key,e.shiftKey),children:[e("span",{className:"min-w-0 truncate",children:n.label??n.key}),e("span",{"aria-hidden":"true",className:I("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<kt.length-1?e("span",{"aria-hidden":"true",className:X,onPointerDown:e=>((e,t)=>{t.preventDefault(),t.stopPropagation();const n=t.currentTarget,r={...Dn};for(const e of kt){const t=In.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]??f,s=kt.find(t=>t.key===e)?.minWidth??y;En.current=x({target:n,pointerId:t.pointerId,onMove:t=>{const n=(t.clientX-l)*(a?-1:1);$n({...r,[e]:Math.max(s,Math.round(o+n))})},onEnd:()=>{En.current=null}})})(n.key,e),onDoubleClick:()=>(e=>{const t={...Dn};delete t[e],$n(t)})(n.key)}):null]},n.key)},wr=(n,r)=>{const a=Xt.has(n),l=nt,o=r.map(e=>e.row),s=()=>qt(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:I("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?ut.noGroup:n}),e("span",{className:"shrink-0 text-(--neba-muted-fg) tabular-nums",children:gr.format(r.length)})]});return t("tr",{"data-neba-group":n,style:{height:`${mt}px`,backgroundColor:"var(--n-soft)"},children:[Mt?e("td",{style:{...pr,padding:0,...dr(!1)}}):null,kt.map((t,n)=>e("td",{colSpan:1,style:{...pr,...cr(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 ${H} 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)),ar?e("td",{"aria-hidden":"true",style:{...pr,padding:0}}):null]})},[xr,Cr]=r.useState(null),Sr=r.useRef(!1);function Mr(e,t){Sr.current=!1,Cr({key:e,column:t})}const Nr=(e,t)=>void 0!==et&&("function"==typeof e.editable?e.editable(t):Boolean(e.editable)),Kr=(t,n)=>{const r=n.value?n.value(t.row):t.row[n.key],a=e=>{Cr(null);const a="number"===n.editType?Number(e):e;("number"!==n.editType||""!==e.trim()&&!Number.isNaN(a))&&String(a)!==String(r??"")&&et?.(t.row,n,a)};return e("input",{autoFocus:!0,"data-neba-editor":"",type:"number"===n.editType?"number":"text",defaultValue:null==r?"":String(r),"aria-label":"string"==typeof n.label?n.label:n.key,className:"neba-input w-full bg-transparent [font:inherit] text-inherit [outline:none]",style:{textAlign:n.align??"start"},onPointerDown:e=>e.stopPropagation(),onBlur:e=>{Sr.current||a(e.currentTarget.value)},onKeyDown:e=>{"Enter"!==e.key&&"Escape"!==e.key||(e.stopPropagation(),Sr.current=!0,"Enter"===e.key?(e.preventDefault(),a(e.currentTarget.value)):Cr(null),bn.current?.focus({preventScroll:!0}))}})},Rr=t=>e("span",{className:"flex items-center justify-center",children:t}),jr=t=>e("td",{role:Ct?"gridcell":void 0,style:{...pr,padding:0,overflow:"visible",...dr(!1)},children:Rr(e(o,{size:Z,color:ee,checked:on.has(t.key),"aria-label":ut.selectRow,onCheckedChange:()=>{St?fn(t.key):mn(t.key)}}))}),zr=St?Rr(e(o,{size:Z,color:ee,checked:er,indeterminate:Zn>0&&!er,"aria-label":ut.selectAll,onCheckedChange:()=>{if(er){const e=new Set(en);pn([...on].filter(t=>!e.has(t)))}else pn([...new Set([...on,...en])])}})):null,_r=ar?e("th",{"aria-hidden":"true",className:I(ie?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{...mr,padding:0}}):null,Tr=(t,n)=>n>0?e("tr",{"aria-hidden":"true",style:{height:`${n}px`},children:e("td",{colSpan:lr,style:{padding:0,border:0}})},t):null;return t(a,{variant:Q,size:Z,color:ee,density:te,elevation:ne,padded:!1,className:I("flex flex-col overflow-hidden",Kt?"has-[table:focus-visible,[data-neba-editor]:focus-visible]:[outline:2px_solid_var(--n-ring)] has-[table:focus-visible,[data-neba-editor]:focus-visible]:outline-offset-2":"",st),style:{...W,...it},...ct,children:[Xe||Ye||E(Ue)?t("div",{className:"flex items-center gap-2",style:{padding:`${gt} ${gt}`,borderBottom:"1px solid var(--n-line)"},children:[Xe?e(c,{size:Z,color:ee,density:te,variant:"outline",type:"search",className:"w-full max-w-64",startIcon:e(SearchIcon,{}),placeholder:qe??ut.search,"aria-label":qe??ut.search,value:Ve??jt,onChange:e=>{const t=e.target.value;void 0===Ve&&zt(t),br(1),Le?.(t)}}):null,Ye||E(Ue)?t("div",{className:"ms-auto flex items-center gap-2",children:[Ue,Ye?e(l,{size:Z,color:ee,density:te,variant:"outline",onClick:()=>{const e=kt.filter(e=>!1!==e.exportable),t=e.map(e=>"string"==typeof e.label?e.label:e.key),n=Ft.map(t=>e.map(e=>e.exportValue?e.exportValue(t.row):e.value?e.value(t.row):t.row[e.key])),r=D([t,...n],{escapeFormulas:Ze});Qe?Qe(r):T(r,Je,"text/csv;charset=utf-8")},children:ut.exportCsv}):null]}):null]}):null,e("div",{ref:hn,className:"min-h-0 flex-auto overflow-auto overscroll-contain",style:{height:F(re),maxHeight:F(ae)},onScroll:Kn,children:t("table",{ref:bn,role:Kt?"grid":void 0,"aria-label":ue,"aria-multiselectable":St||void 0,"aria-rowcount":Nn?Qt.length+xt:void 0,"aria-activedescendant":zn?`${pt}-${sn}`:void 0,tabIndex:Kt?0:void 0,className:I("w-full text-start [outline:none]",$[Z],"text-(--neba-fg)",Ct?"select-none":""),style:{tableLayout:"fixed",borderCollapse:"separate",borderSpacing:0,minWidth:`${rr}px`},onKeyDown:function(e){if(!Kt||e.target!==e.currentTarget)return;const t=dn.current.paged;if(0===t.length)return;const n=null===sn?-1:dn.current.pagedKeys.indexOf(sn),r=Math.max(1,Math.floor((kn||10*mt)/mt)-1);switch(e.key){case"ArrowDown":Xn(n+1,e);break;case"ArrowUp":Xn(-1===n?0:n-1,e);break;case"Home":qn("start",e);break;case"End":qn("end",e);break;case"PageDown":qn(r*mt,e);break;case"PageUp":qn(-r*mt,e);break;case" ":Ct&&-1!==n&&(e.preventDefault(),(e.ctrlKey||e.metaKey)&&St?fn(t[n].key):mn(t[n].key));break;case"a":case"A":Ct&&(e.ctrlKey||e.metaKey)&&St&&(e.preventDefault(),pn(dn.current.pagedKeys));break;case"Escape":Ct&&(e.preventDefault(),pn([]));break;case"Enter":-1!==n&&De&&(e.preventDefault(),De(t[n].row,Zt+n));break;case"F2":{const r=t[n],a=r?kt.find(e=>Nr(e,r.row)):void 0;r&&a&&(e.preventDefault(),Mr(r.key,a.key));break}}},children:[ce?e("caption",{className:I(P[Z],"text-(--neba-muted-fg)"),style:{padding:`0.5rem ${gt}`,textAlign:"start"},children:ce}):null,t("colgroup",{children:[Mt?e("col",{style:{width:`${tr}px`}}):null,kt.map(t=>{const n=nr(t);return e("col",{style:void 0===n?void 0:{width:`${n}px`}},t.key)}),ar?e("col",{}):null]}),t("thead",{children:[wt?t("tr",{"aria-rowindex":Nn?1:void 0,style:{height:`${ft}px`},children:[Mt?e("th",{scope:"col",rowSpan:2,className:I(ie?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{...mr,padding:0,overflow:"visible",...dr(!0)},children:zr}):null,or.map(t=>void 0===t.label?kr(kt[t.from],t.from,2):e("th",{scope:"colgroup",colSpan:t.span,className:I("font-semibold select-none",ie?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{...mr,textAlign:"center"},children:t.label},`group-${t.from}`)),ar?r.cloneElement(_r,{rowSpan:2}):null]}):null,t("tr",{"aria-rowindex":Nn?xt:void 0,style:{height:`${ft}px`},children:[Mt&&!wt?e("th",{scope:"col",className:I(ie?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{...mr,padding:0,overflow:"visible",...dr(!0)},children:zr}):null,kt.map((e,t)=>wt&&void 0===e.group?null:kr(e,t)),ar&&!wt?_r:null]})]}),e("tbody",{ref:yn,children:0===Qt.length?e("tr",{children:e("td",{colSpan:lr,style:{padding:`2rem ${gt}`,textAlign:"center",color:"var(--n-cell-ink, var(--neba-muted-fg))"},children:de??dt.title})}):t(n,{children:[Tr("before",Rn.before),Gt?Gt.order.map(e=>{const n=Gt.byLabel.get(e)??[],a=n.filter(e=>tn.has(e.key));return 0!==a.length||Xt.has(e)?t(r.Fragment,{children:[wr(e,n),a.map(e=>vr(e,tn.get(e.key)??0))]},e||"\0"):null}):jn.map((e,t)=>vr(e,Rn.start+t)),Tr("after",Rn.after)]})})]})}),hr?t("div",{className:I("flex flex-wrap items-center gap-3",P[Z]),style:{padding:`0.375rem ${gt}`,borderTop:"1px solid var(--n-line)"},children:[e("span",{className:"text-(--neba-muted-fg) tabular-nums",children:yr}),Ct&&on.size>0?e("span",{className:"text-(--n-accent) tabular-nums",children:M(ut.selected,{count:gr.format(on.size)})}):null,t("div",{className:"ms-auto flex items-center gap-2",children:["pages"===$e&&He.length>0?e(n,{children:e(i,{size:Z,color:ee,density:te,variant:"outline",label:ut.rowsPerPage,items:He.map(e=>({value:e})),value:Lt,onValueChange:e=>{const t=Number(e);void 0===Ae&&Wt(t),br(Math.floor(Jt.start/t)+1),Fe?.(t)}})}):null,"pages"===$e?e(s,{size:Z,color:ee,count:Jt.pages,page:Jt.page,siblingCount:0,onPageChange:br}):null]})]}):null,!hr&&Nn?e("span",{className:B,"aria-live":"polite",children:yr}):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 o}from"../button/Button.js";import{Checkbox as l}from"../checkbox/Checkbox.js";import{Pagination as i}from"../pagination/Pagination.js";import{Select as s}from"../select/Select.js";import{TextField as c}from"../text-field/TextField.js";import{compareValues as u,dataHeaderHeights as d,dataRowHeights as p,dataTickWidths as f,defaultColumnWidth as g,isEmptyValue as m,keysBetween as h,minColumnWidth as y,nextSort as b,pageBounds as v,sortRows as k,virtualWindow as w}from"../../internal/data-table.js";import{beginPointerDrag as x,drawnScale as S}from"../../internal/drag.js";import{dateFormatter as C}from"../../internal/format.js";import{emptyMessages as M,fillMessage as N,tableMessages as _,useMessages as R}from"../../internal/i18n.js";import{searchHaystack as K,searchText as A}from"../../internal/search.js";import{ChevronIcon as $}from"../../internal/icons.js";import{observeResize as T}from"../../internal/observe.js";import{downloadText as D,toCsv as z}from"../../internal/csv.js";import{controlTextLeadingClasses as j,cx as I,hasContent as E,insetRingClasses as P,metaTextClasses as B,paddingXValues as F,srOnlyClasses as H,toLength as O,transitionClasses as W}from"../../internal/styles.js";import{useStyleDefaults as L}from"../../internal/defaults.js";const V=["[--n-row:transparent]","[transition:background-color_var(--neba-duration)_var(--neba-ease)]"].join(" "),X={"--n-stripe":"color-mix(in oklab, var(--neba-fg) 4%, transparent)"},q=["group/sort flex w-full min-w-0 cursor-pointer items-center gap-1","text-inherit [outline:none]","[transition:color_var(--neba-duration)_var(--neba-ease)]","hover:text-(--n-accent)","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-1","[&_svg]:pointer-events-none [&_svg]:size-[1.15em] [&_svg]:shrink-0"].join(" "),G="Alt+ArrowLeft Alt+ArrowRight";function U(e){const t=e.currentTarget;t.scrollWidth>t.clientWidth?t.title=t.textContent??"":t.removeAttribute("title")}const Y='button, a, input, select, textarea, label, [role="button"], [role="checkbox"], [role="switch"], [role="radio"]',J={start:"shadow-[inset_2px_0_0_var(--n-accent)] rtl:shadow-[inset_-2px_0_0_var(--n-accent)]",end:"shadow-[inset_-2px_0_0_var(--n-accent)] rtl:shadow-[inset_2px_0_0_var(--n-accent)]"},Q='[data-neba-tick] [role="checkbox"], [data-neba-editor]';function Z(e,t){return"boolean"==typeof e?String(e):e instanceof Date?Number.isNaN(e.getTime())?"":C(t,{dateStyle:"medium"}).format(e):e}function SearchIcon(){return t("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[e("circle",{cx:"7.25",cy:"7.25",r:"4.75",stroke:"currentColor",strokeWidth:"1.5"}),e("path",{d:"m10.75 10.75 2.75 2.75",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}export function DataTable(C){const{headers:ee,items:te,getRowKey:ne,variant:re="outline",size:ae="sm",color:oe="primary",density:le="compact",elevation:ie=0,height:se,maxHeight:ce,rowHeight:ue,striped:de=!1,hoverable:pe=!0,stickyHeader:fe=!0,caption:ge,label:me,empty:he,virtual:ye=!0,overscan:be=8,sortable:ve=!1,sortMode:ke="single",sort:we,defaultSort:xe,onSortChange:Se,resizable:Ce=!1,columnWidths:Me,columnOrder:Ne,defaultColumnOrder:_e,onColumnOrderChange:Re,reorderable:Ke=!1,defaultColumnWidths:Ae,onColumnWidthsChange:$e,selectionMode:Te="none",selected:De,defaultSelected:ze,onSelectedChange:je,checkboxes:Ie=!1,onRowClick:Ee,onRowActivate:Pe,paging:Be="scroll",page:Fe,defaultPage:He=1,onPageChange:Oe,pageSize:We,defaultPageSize:Le=25,onPageSizeChange:Ve,pageSizeOptions:Xe=[10,25,50,100],footer:qe,search:Ge,defaultSearch:Ue,onSearchChange:Ye,searchable:Je=!1,searchPlaceholder:Qe,filter:Ze,toolbar:et,exportable:tt=!1,exportFileName:nt="table.csv",onExport:rt,exportEscapeFormulas:at=!0,onCellEdit:ot,groupBy:lt,collapsibleGroups:it=!0,defaultCollapsedGroups:st,manual:ct=!1,rowCount:ut,locale:dt,className:pt,style:ft,...gt}=L(C,["size","density","variant","locale"]),mt=R(_,dt),ht=R(M,dt),yt=r.useId(),bt=ue??p[le][ae],vt=d[le][ae],kt=F[le][ae],wt=r.useMemo(()=>new Set(!0===ct?["sort","filter","pages"]:ct||[]),[ct]),[xt,St]=r.useState(()=>_e??[]),Ct=Ne??xt,Mt=e=>{void 0===Ne&&St(e),Re?.(e)},Nt=r.useMemo(()=>{const e=ee.filter(e=>!e.hidden),t=Ct.map(t=>e.find(e=>e.key===t)).filter(e=>void 0!==e),n=e.filter(e=>!Ct.includes(e.key)),r=0===Ct.length?e:[...t,...n],a=e=>"start"===e.pinned?0:"end"===e.pinned?2:1;return r.map((e,t)=>({column:e,index:t})).sort((e,t)=>a(e.column)-a(t.column)||e.index-t.index).map(e=>e.column)},[ee,Ct]),_t=Nt.some(e=>void 0!==e.group),Rt=_t?2:1,Kt="none"!==Te,At="multiple"===Te,$t=Kt&&Ie,Tt=void 0!==ot&&Nt.some(e=>void 0!==e.editable),Dt=Kt||void 0!==Pe||Tt,zt=r.useMemo(()=>te.map((e,t)=>{const n=ne?ne(e,t):t;return{row:e,identity:n,key:String(n),origin:t}}),[te,ne]),[jt,It]=r.useState(Ue??""),Et=(Ge??jt).trim(),Pt=r.useMemo(()=>Nt.filter(e=>!1!==e.searchable),[Nt]),Bt=r.useMemo(()=>{let e=null;return()=>e??=zt.map(e=>K(Pt.map(t=>t.value?t.value(e.row):e.row[t.key])))},[zt,Pt]),Ft=r.useMemo(()=>{if(wt.has("filter"))return zt;const e=A(Et);let t=zt;if(""!==e&&Pt.length>0){const n=Bt();t=zt.filter(t=>n[t.origin].includes(e))}return Ze?t.filter(e=>Ze(e.row,e.origin)):t},[zt,Et,Ze,wt,Pt,Bt]),Ht=r.useMemo(()=>new Intl.Collator(dt,{numeric:!0,sensitivity:"base"}),[dt]),[Ot,Wt]=r.useState(xe??[]),Lt=we??Ot,Vt=r.useMemo(()=>wt.has("sort")?Ft:k(Ft,Lt,e=>{const t=Nt.find(t=>t.key===e);if(!t)return null;if(t.compare)return(e,n)=>t.compare(e.row,n.row);const n=t.value?t.value:e=>e[t.key];return{compare:(e,t)=>u(n(e.row),n(t.row),Ht),isEmpty:e=>m(n(e.row))}}),[Ft,Lt,Nt,Ht,wt]),[Xt,qt]=r.useState(He),[Gt,Ut]=r.useState(Le),Yt=We??Gt,[Jt,Qt]=r.useState(()=>new Set(st??[])),Zt=r.useMemo(()=>{if(!lt)return null;const e=[],t=new Map;for(const n of Vt){const r=lt(n.row)??"";t.has(r)||(t.set(r,[]),e.push(r)),t.get(r).push(n)}return{order:[...e].sort((e,t)=>""===e?-1:""===t?1:0),byLabel:t}},[Vt,lt]),en=r.useMemo(()=>Zt?Zt.order.flatMap(e=>Jt.has(e)?[]:Zt.byLabel.get(e)??[]):Vt,[Zt,Jt,Vt]),tn=wt.has("pages")?ut??en.length:en.length,nn=v(tn,Fe??Xt,Yt),rn=r.useMemo(()=>"pages"!==Be||wt.has("pages")?en:en.slice(nn.start,nn.end),[en,Be,wt,nn.start,nn.end]),an="pages"===Be?nn.start:0,on=r.useMemo(()=>rn.map(e=>e.key),[rn]),ln=r.useMemo(()=>new Map(on.map((e,t)=>[e,t])),[on]),sn=r.useMemo(()=>new Map(zt.map(e=>[e.key,e])),[zt]),[cn,un]=r.useState(ze??[]),dn=De??cn,pn=r.useMemo(()=>new Set(dn.map(String)),[dn]),[fn,gn]=r.useState(null),mn=r.useRef(null),hn=r.useRef({paged:rn,pagedKeys:on,byKey:sn,selectedKeys:pn,selectedValues:dn,multiple:At});hn.current={paged:rn,pagedKeys:on,byKey:sn,selectedKeys:pn,selectedValues:dn,multiple:At};const yn=r.useCallback(e=>{const t=[],n=[],r=wt.has("pages")?new Map(hn.current.selectedValues.map(e=>[String(e),e])):null;for(const a of e){const e=hn.current.byKey.get(a);e?(t.push(e.identity),n.push(e.row)):r?.has(a)&&t.push(r.get(a))}void 0===De&&un(t),je?.(t,n)},[De,je,wt]),bn=r.useCallback(e=>{mn.current=e,yn([e])},[yn]),vn=r.useCallback(e=>{const t=hn.current.selectedKeys,n=new Set(t);n.has(e)?n.delete(e):n.add(e),mn.current=e,yn([...n])},[yn]),kn=r.useCallback((e,t)=>{const n=hn.current.pagedKeys,r=mn.current??n[0];if(void 0===r)return;const a=h(n,r,e);0!==a.length?yn(t?[...new Set([...hn.current.selectedKeys,...a])]:a):n.includes(e)&&(mn.current=e,yn(t?[...new Set([...hn.current.selectedKeys,e])]:[e]))},[yn]),wn=r.useRef(null),xn=r.useRef(null),Sn=r.useRef(null),Cn=r.useRef(null),[Mn,Nn]=r.useState(0),[_n,Rn]=r.useState(0),Kn=void 0!==se||void 0!==ce,An=void 0!==lt,$n=ye&&Kn&&rn.length>0&&!lt;r.useLayoutEffect(()=>{const e=wn.current;if(e&&$n)return Nn(e.clientHeight),T(e,e=>Nn(e.contentRect.height))},[$n]);const Tn=r.useCallback(e=>{if(!$n)return;const t=Math.floor(e.currentTarget.scrollTop/bt)*bt;Rn(e=>e===t?e:t)},[$n,bt]),Dn=$n?w(_n,Mn,bt,rn.length,be):{start:0,end:rn.length,before:0,after:0},zn=rn.slice(Dn.start,Dn.end),jn=Dt&&null!==fn&&zn.some(e=>e.key===fn),[In,En]=r.useState(Ae??{}),Pn=Me??In,Bn=r.useCallback(e=>{void 0===Me&&En(e),$e?.(e)},[Me,$e]),Fn=r.useRef(new Map),Hn=r.useRef(null),On=r.useRef(null),[Wn,Ln]=r.useState(null),[Vn,Xn]=r.useState(null),qn=r.useRef(null),Gn=r.useRef(null);r.useEffect(()=>()=>{Hn.current?.(),On.current?.()},[]);const Un=()=>{const e={...Pn};for(const t of Nt){const n=Fn.current.get(t.key);n&&void 0===e[t.key]&&(e[t.key]=n.offsetWidth)}return e},Yn=e=>Nt.find(t=>t.key===e)?.minWidth??y,Jn=r.useRef(null);r.useLayoutEffect(()=>{const e=Jn.current;if(null===e)return;Jn.current=null;const t=Fn.current.get(e),n=t?.querySelector("button")??t;n&&n!==document.activeElement&&n.focus()});const Qn=r.useCallback((e,t)=>{const n=wn.current,r=xn.current;if(!n||!r)return;const a=function(e,t){for(let n=0;n<e.rows.length;n+=1)if(e.rows[n].dataset.nebaRow===t)return e.rows[n];return null}(r,e);if(!Kn)return void a?.scrollIntoView({block:"nearest",inline:"nearest"});const o=n.getBoundingClientRect().top+n.clientTop-n.scrollTop,l=(a??r).getBoundingClientRect(),i=l.top-o+(a?0:t*bt),s=i+(a?l.height:bt),c=fe?Sn.current?.tHead?.getBoundingClientRect().height??0:0;i<n.scrollTop+c?n.scrollTop=Math.max(0,Math.floor(i-c)):s>n.scrollTop+n.clientHeight&&(n.scrollTop=Math.ceil(s-n.clientHeight))},[Kn,fe,bt]),Zn=(e,t,n=!0)=>{const r=hn.current.paged,a=Math.min(Math.max(e,0),r.length-1),o=r[a];o&&(t.preventDefault(),gn(o.key),Qn(o.key,a),Kt&&(t.shiftKey&&hn.current.multiple?kn(o.key,!1):!n||t.ctrlKey||t.metaKey||bn(o.key)))},er=(e,t,n)=>{const r=wn.current;if(!r||!Kn)return;n.preventDefault();const a=Math.max(0,r.scrollHeight-r.clientHeight),o="start"===e?0:"end"===e?a:r.scrollTop+e;r.scrollTop=Math.min(Math.max(o,0),a),Zn(t,n,!1)};const tr=r.useCallback(e=>{const t=xn.current,n=hn.current.paged;if(!t||0===n.length)return null;if(An){const r=t.querySelectorAll("tr[data-neba-row]");let a=0,o=r.length-1,l=0;for(;a<=o;){const t=a+o>>1;r[t].getBoundingClientRect().top<=e?(l=t,a=t+1):o=t-1}return Math.min(l,n.length-1)}const r=t.getBoundingClientRect().top,a=Math.floor((e-r)/bt);return Math.min(Math.max(a,0),n.length-1)},[bt,An]),nr=r.useRef(null),rr=r.useCallback(e=>{const t=tr(e),n=null===t?void 0:hn.current.paged[t],r=nr.current;!n||r&&r.key===n.key||(r&&(r.key=n.key),gn(n.key),kn(n.key,!1))},[tr,kn]),ar=r.useRef(rr);ar.current=rr;function or(e,t){if(Cn.current=null,Kt){if(!t.target.closest(Y))if("touch"!==t.pointerType)if(Sn.current?.focus({preventScroll:!0}),gn(e.key),2!==t.button){if(0===t.button)return t.shiftKey&&At?(t.preventDefault(),void kn(e.key,t.ctrlKey||t.metaKey)):void((t.ctrlKey||t.metaKey)&&At?vn(e.key):(bn(e.key),At&&((e,t)=>{const n=Sn.current;if(nr.current||!n)return;const r=e.clientY,a=()=>{const e=nr.current,t=wn.current;e&&t&&0!==e.speed?(t.scrollTop+=e.speed,ar.current(e.y),e.frame=requestAnimationFrame(a)):e&&(e.frame=null)};let o=()=>{};const l=()=>{const e=nr.current;null!=e?.frame&&cancelAnimationFrame(e.frame),nr.current=null,o()};nr.current={y:r,speed:0,frame:null,stop:l,key:t},o=x({target:n,pointerId:e.pointerId,onMove:e=>{const t=nr.current,n=wn.current;if(!t)return;if(t.y=e.clientY,ar.current(t.y),!n||!Kn)return;const r=n.getBoundingClientRect(),o=r.top+bt-t.y,l=t.y-(r.bottom-bt);t.speed=o>0?-Math.min(o,40):l>0?Math.min(l,40):0,0!==t.speed&&null===t.frame&&(t.frame=requestAnimationFrame(a))},onEnd:l,capture:!1,mark:!1})})(t,e.key)))}else hn.current.selectedKeys.has(e.key)||bn(e.key);else Cn.current=e.key}else Dt&&!t.target.closest(Y)&&gn(e.key)}r.useEffect(()=>()=>nr.current?.stop(),[]);const lr=r.useMemo(()=>on.reduce((e,t)=>pn.has(t)?e+1:e,0),[on,pn]),ir=on.length>0&&lr===on.length,sr=f[ae],cr=e=>Pn[e.key]??e.width,ur=($t?sr:0)+Nt.reduce((e,t)=>e+(cr(t)??y),0),dr=Nt.length>0&&Nt.every(e=>void 0!==cr(e)),pr=Nt.length+($t?1:0)+(dr?1:0),fr=r.useMemo(()=>{const e=[];return Nt.forEach((t,n)=>{const r=e[e.length-1];r&&void 0!==r.label&&r.label===t.group?r.span+=1:e.push({label:t.group,span:1,from:n})}),e},[Nt]),gr=r.useMemo(()=>{const e=new Map,t=new Map;let n=$t?sr:0;for(const t of Nt)"start"===t.pinned&&(e.set(t.key,n),n+=cr(t)??g);let r=0;for(let e=Nt.length-1;e>=0;e-=1){const n=Nt[e];"end"===n.pinned&&(t.set(n.key,r),r+=cr(n)??g)}return{start:e,end:t}},[Nt,Pn,$t,sr]),mr=(e,t,n)=>({position:"sticky",insetInlineStart:"start"===e?`${t}px`:void 0,insetInlineEnd:"end"===e?`${t}px`:void 0,zIndex:n?21:1,backgroundColor:"var(--n-panel-press)",backgroundImage:n?void 0:"linear-gradient(var(--n-row), var(--n-row))"}),hr=(e,t)=>{if(!e.pinned)return{};const n="start"===e.pinned?gr.start.get(e.key):gr.end.get(e.key);return mr(e.pinned,n??0,t)},yr=Nt.some(e=>"start"===e.pinned),br=e=>yr?mr("start",0,e):{},vr={padding:`0 ${kt}`,borderBottom:"1px solid var(--n-line)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},kr={...vr,height:`${vt}px`,backgroundColor:"var(--n-panel-press)",color:"var(--n-cell-ink, var(--neba-muted-fg))"},wr="odd"===de?0:1,xr=r.useMemo(()=>new Intl.NumberFormat(dt),[dt]),Sr=qe??"pages"===Be,Cr=N(mt.range,{start:xr.format(0===tn?0:("pages"===Be?nn.start:0)+1),end:xr.format("pages"===Be?nn.end:tn),total:xr.format(tn)}),Mr=Kt&&pn.size>0?N(mt.selected,{count:xr.format(pn.size)}):"",Nr=e=>{void 0===Fe&&qt(e),Oe?.(e)},_r=(n,r)=>{const a=pn.has(n.key),o=fn===n.key;return t("tr",{id:`${yt}-${n.key}`,"aria-selected":Kt?a:void 0,"aria-rowindex":$n?r+Rt+1:void 0,"data-neba-row":n.key,className:I(V,a?"[--n-row:var(--n-soft-press)]":!1!==de&&r%2===wr?"[--n-row:var(--n-stripe)]":"",!a&&pe?"hover:[--n-row:var(--n-soft)]":"",o&&Dt?"[box-shadow:inset_0_0_0_1px_var(--n-ring)]":"",Kt||Ee?"cursor-default":""),style:{height:`${bt}px`,backgroundColor:"var(--n-row)"},onPointerDown:e=>or(n,e),onClick:e=>{e.target.closest(Q)||(Cn.current===n.key&&(Cn.current=null,Sn.current?.focus({preventScroll:!0}),gn(n.key),bn(n.key)),Ee?.(n.row,an+r,e))},onDoubleClick:e=>{e.target.closest(Q)||Pe?.(n.row,an+r)},children:[$t?Fr(n):null,Nt.map((t,a)=>{const o=jr(t,n.row),l=$r?.key===n.key&&$r.column===t.key;return e("td",{id:$t&&0===a?Br(n):void 0,role:Dt?"gridcell":void 0,style:{...vr,...hr(t,!1),textAlign:t.align??"start",cursor:o&&!l?"cell":void 0},onPointerEnter:t.render||l?void 0:U,onDoubleClick:o?e=>{e.stopPropagation(),zr(n.key,t.key)}:void 0,children:l?Ir(n,t):t.render?t.render(n.row,an+r):Z(n.row[t.key],dt)},t.key)}),dr?e("td",{"aria-hidden":"true",style:{...vr,padding:0}}):null]},n.key)},Rr=e=>{const t=Nt.map(e=>e.key);return null!==Wn&&t.indexOf(Wn)<t.indexOf(e)?"end":"start"},Kr=(r,a,o)=>{const l=r.sortable??ve,i=r.resizable??Ce,s=Ke&&!r.pinned,c=(u=r.key,Lt.find(e=>e.key===u));var u;const d=c?Lt.findIndex(e=>e.key===r.key)+1:0,p=r.headerAlign??r.align??"start",f=i&&a<Nt.length-1,m=f||d>1?`${yt}-head-${a}`:void 0;return t("th",{"aria-labelledby":m,ref:e=>{e?Fn.current.set(r.key,e):Fn.current.delete(r.key)},scope:"col",rowSpan:o,"aria-sort":c&&1===d?"asc"===c.direction?"ascending":"descending":void 0,"data-column":r.key,"data-dragging":Wn===r.key||void 0,className:I("relative font-semibold select-none",fe?"sticky z-20 [backdrop-filter:var(--neba-blur)]":"",s?Wn===r.key?"cursor-grabbing":"cursor-grab":"",s&&!l?P:"",Vn===r.key?J[Rr(r.key)]:""),style:{...kr,...hr(r,!0),backgroundImage:Wn===r.key?"linear-gradient(var(--n-soft), var(--n-soft))":void 0,top:fe?2!==o&&_t?vt:0:void 0,textAlign:p,color:c?"var(--n-cell-ink, var(--n-accent))":kr.color},tabIndex:s&&!l?0:void 0,"aria-keyshortcuts":s&&!l?G:void 0,onPointerDown:s?e=>((e,t)=>{if(0!==t.button)return;const n=t.currentTarget,r=t.clientX;let a=!1;On.current=x({target:n,pointerId:t.pointerId,capture:!1,onMove:t=>{if(!a){if(Math.abs(t.clientX-r)<6)return;a=!0,qn.current=e,Ln(e)}const n=Nt.find(e=>{if(e.pinned)return!1;const n=Fn.current.get(e.key);if(!n)return!1;const r=n.getBoundingClientRect();return t.clientX>=r.left&&t.clientX<=r.right});Gn.current=n&&n.key!==e?n.key:null,Xn(Gn.current)},onEnd:()=>{const e=qn.current,t=Gn.current;if(On.current=null,qn.current=null,Gn.current=null,Ln(null),Xn(null),e&&t&&e!==t){const n=Nt.map(e=>e.key),r=n.indexOf(e),a=n.indexOf(t);n.splice(a,0,...n.splice(r,1)),Mt(n)}}})})(r.key,e):void 0,onKeyDown:s?e=>((e,t)=>{if(!t.altKey||"ArrowLeft"!==t.key&&"ArrowRight"!==t.key)return;t.preventDefault();const n="rtl"===getComputedStyle(t.currentTarget).direction,r="ArrowRight"===t.key!==n?1:-1,a=Nt.map(e=>e.key),o=a.indexOf(e),l=Nt[o+r];l&&!l.pinned&&(a.splice(o+r,0,...a.splice(o,1)),Jn.current=e,Mt(a))})(r.key,e):void 0,children:[l?t("button",{type:"button","aria-keyshortcuts":s?G:void 0,className:I(q,"end"===p?"justify-end":"center"===p?"justify-center":"justify-start"),onClick:e=>((e,t)=>{const n=b(Lt,e,t&&"multiple"===ke);void 0===we&&Wt(n),Se?.(n)})(r.key,e.shiftKey),children:[e("span",{id:m,className:"min-w-0 truncate",children:r.label??r.key}),e("span",{"aria-hidden":"true",className:I("flex items-center","desc"===c?.direction?"rotate-0":"rotate-180",c?"":"text-transparent group-hover/sort:text-inherit group-focus-visible/sort:text-inherit"),children:e($,{})}),d>1?t(n,{children:[e("span",{"aria-hidden":"true",className:"text-[0.85em] tabular-nums",children:d}),t("span",{className:H,children:[" ",N("desc"===c?.direction?mt.sortDescending:mt.sortAscending,{order:xr.format(d)})]})]}):null]}):e("span",{id:m,className:"block truncate",children:r.label??r.key}),f?e("span",{role:"separator","aria-orientation":"vertical","aria-label":N(mt.resizeColumn,{column:"string"==typeof r.label?r.label:r.key}),"aria-valuenow":Pn[r.key]??r.width,"aria-valuemin":Yn(r.key),tabIndex:0,className:"absolute inset-y-0 z-10 w-2 cursor-col-resize select-none end-0 translate-x-1/2 rtl:-translate-x-1/2 after:absolute after:inset-y-1 after:start-1/2 after:w-px after:[background:transparent] after:[transition:background_var(--neba-duration)_var(--neba-ease)] hover:after:[background:var(--n-accent)] data-[dragging]:after:[background:var(--n-accent)] focus-visible:after:[background:var(--n-accent)] [outline:0_solid_transparent] focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-0",onFocus:e=>{const t=Fn.current.get(r.key);t&&!e.currentTarget.hasAttribute("aria-valuenow")&&e.currentTarget.setAttribute("aria-valuenow",String(t.offsetWidth))},onPointerDown:e=>((e,t)=>{t.preventDefault(),t.stopPropagation();const n=t.currentTarget,r=Un(),a=Fn.current.get(e),o=a?S(a).x:1,l="rtl"===getComputedStyle(n).direction,i=t.clientX,s=r[e]??g,c=Yn(e);Hn.current=x({target:n,pointerId:t.pointerId,onMove:t=>{const n=(t.clientX-i)/o*(l?-1:1);Bn({...r,[e]:Math.max(c,Math.round(s+n))})},onEnd:()=>{Hn.current=null}})})(r.key,e),onDoubleClick:()=>(e=>{const t={...Pn};delete t[e],Bn(t)})(r.key),onKeyDown:e=>((e,t)=>{if("ArrowLeft"!==t.key&&"ArrowRight"!==t.key)return;t.preventDefault(),t.stopPropagation();const n="rtl"===getComputedStyle(t.currentTarget).direction,r="ArrowRight"===t.key!==n,a=Un(),o=a[e]??g;Bn({...a,[e]:Math.max(Yn(e),o+(r?16:-16))})})(r.key,e)}):null]},r.key)},Ar=(n,r)=>{const a=Jt.has(n),o=it,l=r.map(e=>e.row),i=()=>Qt(e=>{const t=new Set(e);return t.has(n)?t.delete(n):t.add(n),t}),s=t("span",{className:"flex min-w-0 items-center gap-1.5",children:[o?e("span",{"aria-hidden":"true",className:I("flex items-center text-(--neba-muted-fg)","[transition:rotate_var(--neba-duration)_var(--neba-ease)]",a?"-rotate-90 rtl:rotate-90":""),children:e($,{})}):null,e("span",{className:"truncate font-semibold",children:""===n?mt.noGroup:n}),e("span",{className:"shrink-0 text-(--neba-muted-fg) tabular-nums",children:xr.format(r.length)})]});return t("tr",{"data-neba-group":n,style:{height:`${bt}px`,backgroundColor:"var(--n-soft)"},children:[$t?e("td",{style:{...vr,padding:0,...br(!1)}}):null,Nt.map((t,n)=>e("td",{colSpan:1,style:{...vr,...hr(t,!1),textAlign:0===n?"start":t.align??"start"},children:0===n?o?e("button",{type:"button","aria-expanded":!a,className:`flex w-full min-w-0 items-center text-start ${W} focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:[outline-offset:-2px]`,onClick:i,children:s}):s:t.aggregate?e("span",{className:"tabular-nums",children:t.aggregate(l)}):null},t.key)),dr?e("td",{"aria-hidden":"true",style:{...vr,padding:0}}):null]})},[$r,Tr]=r.useState(null),Dr=r.useRef(!1);function zr(e,t){Dr.current=!1,Tr({key:e,column:t})}const jr=(e,t)=>void 0!==ot&&("function"==typeof e.editable?e.editable(t):Boolean(e.editable)),Ir=(t,n)=>{const r=n.value?n.value(t.row):t.row[n.key],a=e=>{Tr(null);const a="number"===n.editType?Number(e):e;("number"!==n.editType||""!==e.trim()&&!Number.isNaN(a))&&String(a)!==String(r??"")&&ot?.(t.row,n,a)};return e("input",{autoFocus:!0,"data-neba-editor":"",type:"number"===n.editType?"number":"text",defaultValue:null==r?"":String(r),"aria-label":"string"==typeof n.label?n.label:n.key,className:"neba-input w-full bg-transparent [font:inherit] text-inherit [outline:none]",style:{textAlign:n.align??"start"},onPointerDown:e=>e.stopPropagation(),onBlur:e=>{Dr.current||a(e.currentTarget.value)},onKeyDown:e=>{"Enter"!==e.key&&"Escape"!==e.key||(e.stopPropagation(),Dr.current=!0,"Enter"===e.key?(e.preventDefault(),a(e.currentTarget.value)):Tr(null),Sn.current?.focus({preventScroll:!0}))}})},Er=t=>e("span",{className:"flex items-center justify-center",children:t}),Pr=`${yt}-tick`,Br=e=>`${yt}-first-${e.origin}`,Fr=t=>e("td",{"data-neba-tick":"",role:Kt?"gridcell":void 0,style:{...vr,padding:0,overflow:"visible",...br(!1)},children:Er(e(l,{size:ae,color:oe,checked:pn.has(t.key),tabIndex:-1,"aria-labelledby":Nt.length>0?`${Pr} ${Br(t)}`:void 0,"aria-label":Nt.length>0?void 0:mt.selectRow,onCheckedChange:()=>{At?vn(t.key):bn(t.key)}}))}),Hr=At?Er(e(l,{size:ae,color:oe,checked:ir,indeterminate:lr>0&&!ir,"aria-label":mt.selectAll,onCheckedChange:()=>{if(ir){const e=new Set(on);yn([...pn].filter(t=>!e.has(t)))}else yn([...new Set([...pn,...on])])}})):null,Or=dr?e("th",{"aria-hidden":"true",className:I(fe?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{...kr,padding:0}}):null,Wr=(t,n)=>n>0?e("tr",{"aria-hidden":"true",style:{height:`${n}px`},children:e("td",{colSpan:pr,style:{padding:0,border:0}})},t):null;return t(a,{variant:re,size:ae,color:oe,density:le,elevation:ie,padded:!1,className:I("flex flex-col overflow-hidden",Dt?"has-[table:focus-visible,[data-neba-editor]:focus-visible]:[outline:2px_solid_var(--n-ring)] has-[table:focus-visible,[data-neba-editor]:focus-visible]:outline-offset-2":"",pt),style:{...X,...ft},...gt,children:[Je||tt||E(et)?t("div",{className:"flex items-center gap-2",style:{padding:`${kt} ${kt}`,borderBottom:"1px solid var(--n-line)"},children:[Je?e(c,{size:ae,color:oe,density:le,variant:"outline",type:"search",className:"w-full max-w-64",startIcon:e(SearchIcon,{}),placeholder:Qe??mt.search,"aria-label":Qe??mt.search,value:Ge??jt,onChange:e=>{const t=e.target.value;void 0===Ge&&It(t),Nr(1),Ye?.(t)}}):null,tt||E(et)?t("div",{className:"ms-auto flex items-center gap-2",children:[et,tt?e(o,{size:ae,color:oe,density:le,variant:"outline",onClick:()=>{const e=Nt.filter(e=>!1!==e.exportable),t=e.map(e=>"string"==typeof e.label?e.label:e.key),n=Vt.map(t=>e.map(e=>e.exportValue?e.exportValue(t.row):e.value?e.value(t.row):t.row[e.key])),r=z([t,...n],{escapeFormulas:at});rt?rt(r):D(r,nt,"text/csv;charset=utf-8")},children:mt.exportCsv}):null]}):null]}):null,e("div",{ref:wn,className:"min-h-0 flex-auto overflow-auto overscroll-contain",style:{height:O(se),maxHeight:O(ce)},onScroll:Tn,children:t("table",{ref:Sn,role:Dt?"grid":void 0,"aria-label":me,"aria-multiselectable":At||void 0,"aria-rowcount":$n?rn.length+Rt:void 0,"aria-activedescendant":jn?`${yt}-${fn}`:void 0,tabIndex:Dt?0:void 0,className:I("w-full text-start [outline:none]",j[ae],"text-(--neba-fg)",Kt?"select-none":""),style:{tableLayout:"fixed",borderCollapse:"separate",borderSpacing:0,minWidth:`${ur}px`},onKeyDown:function(e){if(!Dt||e.target!==e.currentTarget)return;const t=hn.current.paged;if(0===t.length)return;const n=null===fn?-1:hn.current.pagedKeys.indexOf(fn),r=wn.current,a=fe?Sn.current?.tHead?.getBoundingClientRect().height??0:0,o=r?r.clientHeight-a:0,l=Math.max(1,Math.floor((o>0?o:10*bt)/bt)-1);switch(e.key){case"ArrowDown":Zn(n+1,e);break;case"ArrowUp":Zn(-1===n?0:n-1,e);break;case"Home":er("start",0,e);break;case"End":er("end",t.length-1,e);break;case"PageDown":er(l*bt,Math.max(n,0)+l,e);break;case"PageUp":er(-l*bt,Math.max(n,0)-l,e);break;case" ":Kt&&-1!==n&&(e.preventDefault(),(e.ctrlKey||e.metaKey)&&At?vn(t[n].key):bn(t[n].key));break;case"a":case"A":Kt&&(e.ctrlKey||e.metaKey)&&At&&(e.preventDefault(),yn(hn.current.pagedKeys));break;case"Escape":Kt&&(e.preventDefault(),yn([]));break;case"Enter":-1!==n&&Pe&&(e.preventDefault(),Pe(t[n].row,an+n));break;case"F2":{const r=t[n],a=r?Nt.find(e=>jr(e,r.row)):void 0;r&&a&&(e.preventDefault(),zr(r.key,a.key));break}}},children:[ge?e("caption",{className:I(B[ae],"text-(--neba-muted-fg)"),style:{padding:`0.5rem ${kt}`,textAlign:"start"},children:ge}):null,t("colgroup",{children:[$t?e("col",{style:{width:`${sr}px`}}):null,Nt.map(t=>{const n=cr(t);return e("col",{style:void 0===n?void 0:{width:`${n}px`}},t.key)}),dr?e("col",{}):null]}),t("thead",{children:[_t?t("tr",{"aria-rowindex":$n?1:void 0,style:{height:`${vt}px`},children:[$t?e("th",{scope:"col",rowSpan:2,className:I(fe?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{...kr,padding:0,overflow:"visible",...br(!0)},children:Hr}):null,fr.map(t=>void 0===t.label?Kr(Nt[t.from],t.from,2):e("th",{scope:"colgroup",colSpan:t.span,className:I("font-semibold select-none",fe?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{...kr,textAlign:"center"},children:t.label},`group-${t.from}`)),dr?r.cloneElement(Or,{rowSpan:2}):null]}):null,t("tr",{"aria-rowindex":$n?Rt:void 0,style:{height:`${vt}px`},children:[$t&&!_t?e("th",{scope:"col",className:I(fe?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{...kr,padding:0,overflow:"visible",...br(!0)},children:Hr}):null,Nt.map((e,t)=>_t&&void 0===e.group?null:Kr(e,t)),dr&&!_t?Or:null]})]}),e("tbody",{ref:xn,children:0===rn.length?e("tr",{children:e("td",{colSpan:pr,style:{padding:`2rem ${kt}`,textAlign:"center",color:"var(--n-cell-ink, var(--neba-muted-fg))"},children:he??ht.title})}):e(n,{children:Zt?Zt.order.map(e=>{const n=Zt.byLabel.get(e)??[],a=n.filter(e=>ln.has(e.key));return 0!==a.length||Jt.has(e)?t(r.Fragment,{children:[Ar(e,n),a.map(e=>_r(e,ln.get(e.key)??0))]},e||"\0"):null}):(()=>{const e=$r?rn.findIndex(e=>e.key===$r.key):-1,t=-1!==e&&e<Dn.start,n=-1!==e&&e>=Dn.end;return[...t?[Wr("before",e*bt),_r(rn[e],e),Wr("before-rest",Dn.before-(e+1)*bt)]:[Wr("before",Dn.before)],...zn.map((e,t)=>_r(e,Dn.start+t)),...n?[Wr("after-rest",(e-Dn.end)*bt),_r(rn[e],e),Wr("after",Dn.after-(e-Dn.end+1)*bt)]:[Wr("after",Dn.after)]]})()})})]})}),Sr?t("div",{className:I("flex flex-wrap items-center gap-3",B[ae]),style:{padding:`0.375rem ${kt}`,borderTop:"1px solid var(--n-line)"},children:[t("span",{role:"status",className:"flex flex-wrap items-center gap-3",children:[e("span",{className:"text-(--neba-muted-fg) tabular-nums",children:Cr}),Mr?e("span",{className:"text-(--n-accent) tabular-nums",children:Mr}):null]}),t("div",{className:"ms-auto flex items-center gap-2",children:["pages"===Be&&Xe.length>0?e(n,{children:e(s,{size:ae,color:oe,density:le,variant:"outline",label:mt.rowsPerPage,items:Xe.map(e=>({value:e})),value:Yt,onValueChange:e=>{const t=Number(e);void 0===We&&Ut(t),Nr(Math.floor(nn.start/t)+1),Ve?.(t)}})}):null,"pages"===Be?e(i,{size:ae,color:oe,count:nn.pages,page:nn.page,siblingCount:0,onPageChange:Nr}):null]})]}):null,Sr?null:t("span",{role:"status",className:H,children:[Cr,Mr?` ${Mr}`:null]}),$t?e("span",{id:Pr,hidden:!0,children:mt.selectRow}):null]})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as t from"react";import{Button as l}from"../button/Button.js";import{Calendar as n,usePickerLabels as o}from"../../internal/calendar.js";import{CalendarIcon as r}from"../../internal/icons.js";import{PickerFooter as i,PickerShell as s}from"../../internal/picker.js";import{displaySamples as c,formatDate as
|
|
1
|
+
"use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as t from"react";import{Button as l}from"../button/Button.js";import{Calendar as n,usePickerLabels as o}from"../../internal/calendar.js";import{CalendarIcon as r}from"../../internal/icons.js";import{PickerFooter as i,PickerShell as s}from"../../internal/picker.js";import{displaySamples as c,formatDate as m,isUnitOutside as d,isValidDate as u,localeWeekStart as h,mergeDateAndTime as p,startOfMonth as f,startOfUnit as y,toISODate as b,toISOMonth as g,toISOYear as j,today as v,withPlaceholder as x}from"../../internal/date.js";import{cx as D}from"../../internal/styles.js";import{useStyleDefaults as O}from"../../internal/defaults.js";const S={day:{dateStyle:"medium"},month:{year:"numeric",month:"long"},year:{year:"numeric"}},k={day:b,month:g,year:j};export const DatePicker=/*@__PURE__*/t.forwardRef(function DatePicker(b,g){const{value:j,defaultValue:z,onValueChange:C,open:w,defaultOpen:M,onOpenChange:P,granularity:V="day",defaultMonth:B,minDate:I,maxDate:R,shouldDisableDate:E,locale:F,weekStartsOn:L,format:N,placeholder:T,clearable:Y=!1,showTodayButton:q=!0,closeOnSelect:A=!0,labels:G,name:H,size:J="md",color:K="primary",readOnly:Q=!1,disabled:U=!1,startIcon:W,...X}=O(b,["size","density","variant","locale","labelPlacement"]),Z=o(G,F),$=L??h(F),_=N??S[V],[ee,ae]=t.useState(z??null),te=void 0!==j?j:ee,[le,ne]=t.useState(M??!1),oe=w??le,[re,ie]=t.useState(()=>f(u(te)?te:B??v()));t.useEffect(()=>{oe&&ie(f(u(te)?te:B??v()))},[oe]);const se=e=>{e&&(Q||U)||(void 0===w&&ne(e),P?.(e))},ce=e=>{void 0===j&&ae(e),C?.(e)},me=e=>{const a=y(e,V),t=u(te)?p(a,te):a;ce(t),ie(f(t)),A&&se(!1)},de=v(),ue=y(de,V),he=d(de,V,I,R)||(E?.(ue)??!1),pe="year"===V?Z.thisYear:"month"===V?Z.thisMonth:Z.today,fe=q||Y,ye=t.useMemo(()=>x(c(F,_),T),[F,_,T]);return e(s,{...X,size:J,color:K,readOnly:Q,disabled:U,triggerRef:g,startIcon:W??e(r,{}),display:u(te)?m(te,F,_):T??"",samples:ye,empty:!u(te),clearable:Y,onClear:()=>ce(null),open:oe,onOpenChange:se,clearLabel:Z.clear,hiddenValues:H?[{name:H,value:u(te)?k[V](te):""}]:void 0,children:a("div",{className:D("flex flex-col",fe&&"gap-1.5"),children:[e(n,{size:J,color:K,locale:F,weekStartsOn:$,month:re,onMonthChange:ie,selected:[te],onSelect:me,granularity:V,minDate:I,maxDate:R,shouldDisableDate:E,labels:Z,autoFocus:!0}),fe?a(i,{size:J,children:[Y?e(l,{variant:"text",size:J,color:K,density:"compact",onClick:()=>{ce(null),se(!1)},children:Z.clear}):null,q?e(l,{variant:"text",size:J,color:K,density:"compact",disabled:he,onClick:()=>me(de),children:pe}):null]}):null]})})});
|
|
@@ -59,8 +59,9 @@ export interface DateRangePickerProps extends PickerShellProps {
|
|
|
59
59
|
closeOnSelect?: boolean;
|
|
60
60
|
labels?: Partial<PickerLabels>;
|
|
61
61
|
/**
|
|
62
|
-
* Identifies the field when a form is submitted. Two
|
|
63
|
-
*
|
|
62
|
+
* Identifies the field when a form is submitted. Two inputs of the same name,
|
|
63
|
+
* so the two ends arrive as `FormData.getAll(name)` — and, inside a `Form`,
|
|
64
|
+
* as a two-item array under `name` in what `onSubmit` is handed.
|
|
64
65
|
*/
|
|
65
66
|
name?: string;
|
|
66
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import*as a from"react";import{Button as n}from"../button/Button.js";import{Calendar as t,usePickerLabels as s}from"../../internal/calendar.js";import{ArrowRightIcon as r,CalendarIcon as o}from"../../internal/icons.js";import{PickerFooter as i,PickerShell as c}from"../../internal/picker.js";import{WidthSizer as u}from"../../internal/sizer.js";import{addMonths as m,compareDay as d,displaySamples as h,formatDate as p,isValidDate as f,localeWeekStart as x,startOfDay as v,startOfMonth as
|
|
1
|
+
"use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import*as a from"react";import{Button as n}from"../button/Button.js";import{Calendar as t,usePickerLabels as s}from"../../internal/calendar.js";import{ArrowRightIcon as r,CalendarIcon as o}from"../../internal/icons.js";import{PickerFooter as i,PickerShell as c}from"../../internal/picker.js";import{WidthSizer as u}from"../../internal/sizer.js";import{addMonths as m,compareDay as d,displaySamples as h,formatDate as p,isValidDate as f,localeWeekStart as x,startOfDay as v,startOfMonth as b,toISODate as g,today as y,withPlaceholder as w}from"../../internal/date.js";import{cx as N,gapClasses as j,metaTextClasses as D}from"../../internal/styles.js";import{useStyleDefaults as S}from"../../internal/defaults.js";const C={start:null,end:null};export const DateRangePicker=/*@__PURE__*/a.forwardRef(function DateRangePicker(O,k){const{value:z,defaultValue:P,onValueChange:R,open:B,defaultOpen:M,onOpenChange:V,defaultMonth:E,minDate:I,maxDate:F,shouldDisableDate:L,locale:q,weekStartsOn:A,format:G={dateStyle:"medium"},monthCount:H=2,startPlaceholder:J,endPlaceholder:K,presets:Q,clearable:T=!1,closeOnSelect:U=!0,labels:W,name:X,size:Y="md",color:Z="primary",readOnly:$=!1,disabled:_=!1,startIcon:ee,...le}=S(O,["size","density","variant","locale","labelPlacement"]),ae=s(W,q),ne=A??x(q),[te,se]=a.useState(P??C),re=void 0!==z?z??C:te,oe=f(re.start)?re.start:null,ie=f(re.end)?re.end:null,[ce,ue]=a.useState(M??!1),me=B??ce,[de,he]=a.useState(null),[pe,fe]=a.useState(null),[xe,ve]=a.useState(()=>b(oe??E??y()));a.useEffect(()=>{me?ve(b(oe??E??y())):(he(null),fe(null))},[me]);const be=e=>{e&&($||_)||(void 0===B&&ue(e),V?.(e))},ge=e=>{void 0===z&&se(e),R?.(e)},ye=de??oe,we=null!==de?pe:ie,Ne=(l,a)=>f(l)?p(l,q,G):e("span",{className:"text-(--neba-muted-fg)",children:a??""}),je=m(xe,1),De=2===H,Se=h(q,G),Ce=null!==de?ae.end:null===oe?ae.start:null,Oe={size:Y,color:Z,locale:q,weekStartsOn:ne,selected:[oe,ie,de],rangeStart:ye,rangeEnd:we,onSelect:e=>{const l=v(e);return null===de||d(l,de)<0?(he(l),void fe(l)):(he(null),fe(null),ge({start:de,end:l}),void(U&&be(!1)))},onPreviewChange:e=>{null!==de&&fe(e??de)},minDate:I,maxDate:F,shouldDisableDate:L,showOutsideDays:!1,multiselectable:!0,labels:ae};return e(c,{...le,size:Y,color:Z,readOnly:$,disabled:_,triggerRef:k,startIcon:ee??e(o,{}),display:l("span",{className:"flex min-w-0 items-center gap-1.5",children:[l("span",{className:"flex min-w-0 flex-col",children:[e("span",{className:"truncate",children:Ne(oe,J)}),e(u,{samples:w(Se,J)})]}),e("span",{"aria-hidden":"true",className:"flex shrink-0 items-center text-(--neba-muted-fg) rtl:rotate-180",children:e(r,{})}),l("span",{className:"flex min-w-0 flex-col",children:[e("span",{className:"truncate",children:Ne(ie,K)}),e(u,{samples:w(Se,K)})]})]}),empty:null===oe&&null===ie,clearable:T,onClear:()=>ge(C),open:me,onOpenChange:be,clearLabel:ae.clear,hiddenValues:X?[{name:X,value:oe?g(oe):""},{name:X,value:ie?g(ie):""}]:void 0,repeats:!0,children:l("div",{className:"flex flex-col gap-1.5",children:[l("div",{className:N("flex items-stretch",j[Y]),children:[Q&&Q.length>0?e("div",{className:N("flex max-h-[calc(var(--n-cell,2rem)*8)] flex-col overflow-y-auto border-e pe-1.5","[border-color:var(--n-line)]"),children:Q.map((l,a)=>e(n,{variant:"text",size:Y,color:Z,density:"compact",className:"justify-start whitespace-nowrap",onClick:()=>(e=>{const l="function"==typeof e.value?e.value():e.value;he(null),fe(null),ge(l),f(l.start)&&ve(b(l.start)),U&&be(!1)})(l),children:l.label},a))}):null,e(t,{...Oe,month:xe,onMonthChange:ve,showNextButton:!De,autoFocus:!0}),De?e(t,{...Oe,month:je,onMonthChange:e=>ve(m(e,-1)),showPreviousButton:!1}):null]}),T||null!==Ce?l(i,{size:Y,children:[null!==Ce?e("span",{className:N("me-auto text-(--neba-muted-fg)",D[Y]),children:Ce}):null,T?e(n,{variant:"text",size:Y,color:Z,density:"compact",onClick:()=>{he(null),fe(null),ge(C),be(!1)},children:ae.clear}):null]}):null]})})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as l from"react";import{Button as
|
|
1
|
+
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as l from"react";import{Button as a}from"../button/Button.js";import{Calendar as n,TimeGrid as o,usePickerLabels as s}from"../../internal/calendar.js";import{CalendarIcon as i}from"../../internal/icons.js";import{PickerDivider as r,PickerFooter as c,PickerShell as d}from"../../internal/picker.js";import{clampDate as m,displaySamples as u,formatDate as p,isDayOutside as h,isHour12 as f,isValidDate as S,localeWeekStart as b,mergeDateAndTime as y,startOfDay as D,startOfMonth as g,timeUnitRange as v,toISODateTime as x,today as j,withPlaceholder as C,withTime as k}from"../../internal/date.js";import{cx as w,gapClasses as z}from"../../internal/styles.js";import{useStyleDefaults as O}from"../../internal/defaults.js";export const DateTimePicker=/*@__PURE__*/l.forwardRef(function DateTimePicker(T,N){const{value:P,defaultValue:V,onValueChange:B,open:I,defaultOpen:M,onOpenChange:R,defaultMonth:E,minDate:F,maxDate:L,shouldDisableDate:q,shouldDisableTime:A,locale:G,weekStartsOn:H,format:J={dateStyle:"medium",timeStyle:"short"},hour12:K,showSeconds:Q=!1,hourStep:U=1,minuteStep:W=1,secondStep:X=1,placeholder:Y,clearable:Z=!1,showNowButton:$=!0,closeOnSelect:_=!1,labels:ee,name:te,size:le="md",color:ae="primary",density:ne="default",readOnly:oe=!1,disabled:se=!1,startIcon:ie,...re}=O(T,["size","density","variant","locale","labelPlacement"]),ce=s(ee,G),de=H??b(G),me=K??f(G),[ue,pe]=l.useState(V??null),he=void 0!==P?P:ue,[fe,Se]=l.useState(M??!1),be=I??fe,[ye,De]=l.useState(()=>g(S(he)?he:E??j()));l.useEffect(()=>{be&&De(g(S(he)?he:E??j()))},[be]);const ge=e=>{e&&(oe||se)||(void 0===I&&Se(e),R?.(e))},ve=e=>{const t=null===e?null:m(e,F,L);void 0===P&&pe(t),B?.(t)},xe=l.useCallback((e,t)=>{const[l,a]=v(t,e);return!!(S(F)&&a.getTime()<F.getTime())||(!!(S(L)&&l.getTime()>L.getTime())||(A?.(e,t)??!1))},[F,L,A]),je=new Date,Ce=k(je,{seconds:Q?je.getSeconds():0}),ke=h(Ce,F,L)||(q?.(Ce)??!1)||xe(Ce,"second"),we=C(u(G,J),Y);return e(d,{...re,size:le,color:ae,density:ne,readOnly:oe,disabled:se,triggerRef:N,startIcon:ie??e(i,{}),display:S(he)?p(he,G,J):Y??"",samples:we,empty:!S(he),clearable:Z,onClear:()=>ve(null),open:be,onOpenChange:ge,clearLabel:ce.clear,hiddenValues:te?[{name:te,value:S(he)?x(he,Q):""}]:void 0,children:t("div",{className:"flex flex-col gap-1.5",children:[t("div",{className:w("flex items-stretch",z[le]),children:[e(n,{size:le,color:ae,locale:G,weekStartsOn:de,month:ye,onMonthChange:De,selected:[he],onSelect:e=>{const t=S(he)?y(e,he):D(e);ve(t),De(g(t)),_&&ge(!1)},minDate:F,maxDate:L,shouldDisableDate:q,labels:ce,autoFocus:!0}),e(r,{}),e(o,{size:le,density:ne,locale:G,value:S(he)?he:null,referenceDate:S(he)?he:j(),onChange:ve,hour12:me,showSeconds:Q,hourStep:U,minuteStep:W,secondStep:X,shouldDisableTime:xe,labels:ce})]}),t(c,{size:le,children:[Z?e(a,{variant:"text",size:le,color:ae,density:"compact",onClick:()=>{ve(null),ge(!1)},children:ce.clear}):null,$?e(a,{variant:"text",size:le,color:ae,density:"compact",disabled:ke,onClick:()=>{ve(Ce),De(g(Ce))},children:ce.now}):null,e(a,{variant:"solid",size:le,color:ae,density:"compact",onClick:()=>ge(!1),children:ce.done})]})]})})});
|
|
@@ -1 +1 @@
|
|
|
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
|
|
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 a}from"../box/Box.js";import{actionMessages as s,useMessages as i}from"../../internal/i18n.js";import{CloseIcon as r}from"../../internal/icons.js";import{cx as t,hasContent as c,metaTextClasses as d,popupFadeClasses as m,radiusClasses as p,sheetBodyClasses as f,sheetCloseClasses as x,sheetHeaderGapClasses as u,sheetSectionGapClasses as b,sheetTitleClasses as h,surfaceClasses as g,surfaceSlots as v}from"../../internal/styles.js";import{useStyleDefaults as w}from"../../internal/defaults.js";const y={xs:"max-w-80",sm:"max-w-96",md:"max-w-lg",lg:"max-w-2xl",xl:"max-w-4xl"},j=[g,"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(" "),N=["fixed inset-0 z-(--neba-z-portal) bg-(--neba-scrim)","[backdrop-filter:blur(2px)]",m].join(" "),$="border-t [border-color:var(--n-line)]";export const DialogClose=n.Close;export function Dialog(m){const{size:g="md",color:k="primary",density:z="default",open:C,defaultOpen:D,onOpenChange:O,trigger:P,title:B,description:T,actions:W,dividers:L=!1,showClose:R=!0,locale:S,closeLabel:V,width:q,fullWidth:A=!0,fullScreen:E=!1,modal:F=!0,dismissible:G=!0,className:H,classNames:I,style:J,children:K,...M}=w(m,["size","density","locale"]),Q=i(s,S),U=o[z][g],X=a[z][g],Y=L?`${U} ${X}`:U,Z=c(B)||c(T),_=c(W);return l(n.Root,{open:C,defaultOpen:D,modal:F,disablePointerDismissal:!G,onOpenChange:(e,l)=>{G||e||"escape-key"!==l.reason?O?.(e):l.cancel()},children:[P?e(n.Trigger,{render:P}):null,l(n.Portal,{children:[e(n.Backdrop,{className:t("neba-portal",N,!0===F?"":"pointer-events-none",I?.backdrop)}),e(n.Viewport,{className:t("neba-portal fixed inset-0 z-(--neba-z-portal) flex justify-center",E?"items-stretch":"items-center p-4",!0===F?"":"pointer-events-none",I?.viewport),children:l(n.Popup,{className:t(j,!0===F?"":"pointer-events-auto",f[g],E?"h-full max-w-none rounded-none":`max-h-full ${p[g]} ${void 0===q?y[g]:""}`,E||A?"":"w-auto",L?"":`${X} ${b[g]}`,H??""),style:{...v(k,3),...void 0===q?null:{maxWidth:"number"==typeof q?`${q}px`:q},...J},...M,children:[Z||R?l("div",{className:`flex shrink-0 items-start gap-3 ${Y}`,children:[l("div",{className:`flex min-w-0 flex-1 flex-col ${u[g]}`,children:[c(B)?e(n.Title,{className:t("font-semibold",h[g],"m-0",I?.title),children:B}):null,c(T)?e(n.Description,{className:t("m-0 text-(--neba-muted-fg)",d[g],I?.description),children:T}):null]}),R?e(n.Close,{"aria-label":V??Q.close,className:t(x,I?.close),children:e(r,{})}):null]}):null,c(K)?e("div",{className:t("min-h-0 flex-1 overflow-y-auto overscroll-contain",Y,L&&(Z||R)?$:"",L?"":"py-1 -my-1",I?.body),children:K}):null,_?e("div",{className:t("flex shrink-0 flex-wrap items-center justify-end gap-2",Y,L?$:"",I?.actions),children:W}):null]})})]})]})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as a,Fragment as r}from"react/jsx-runtime";import*as
|
|
1
|
+
"use client";import{jsx as e,jsxs as a,Fragment as r}from"react/jsx-runtime";import*as t from"react";import{Dialog as n}from"@base-ui/react/dialog";import{boxPaddingXClasses as l,boxPaddingYClasses as s}from"../box/Box.js";import{actionMessages as o,useMessages as d}from"../../internal/i18n.js";import{CloseIcon as i}from"../../internal/icons.js";import{cx as b,hasContent as m,headingTitleClasses as u,metaTextClasses as c,popupFadeClasses as f,sheetBodyClasses as p,sheetCloseClasses as x,sheetHeaderGapClasses as g,sheetSectionGapClasses as h,surfaceClasses as v,surfaceSlots as y}from"../../internal/styles.js";import{useStyleDefaults as w}from"../../internal/defaults.js";const j={xs:"w-56",sm:"w-64",md:"w-80",lg:"w-96",xl:"w-[28rem]"},N={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"},_={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%]"},C={left:"flex-row justify-start",right:"flex-row justify-end",top:"flex-col justify-start",bottom:"flex-col justify-end"},k=[v,"relative flex flex-col overflow-hidden","text-(--neba-fg) bg-(--n-panel-press)","[border-color:var(--n-line)]","[outline:none]"].join(" "),z=["fixed inset-0 z-(--neba-z-portal) bg-(--neba-scrim)","[backdrop-filter:blur(2px)]",f].join(" "),B="env(safe-area-inset-top) solid transparent",D="env(safe-area-inset-bottom) solid transparent",T="env(safe-area-inset-left) solid transparent",L="env(safe-area-inset-right) solid transparent",O={top:{borderTop:B,borderLeft:T,borderRight:L},bottom:{borderBottom:D,borderLeft:T,borderRight:L},left:{borderTop:B,borderBottom:D,borderLeft:T},right:{borderTop:B,borderBottom:D,borderRight:L}},R="border-t [border-color:var(--n-line)]";export const DrawerClose=n.Close;export function Drawer(f){const{side:v="left",mode:B="overlay",size:D="md",color:T="primary",density:L="default",open:P,defaultOpen:A,onOpenChange:F,trigger:S,title:V,description:q,actions:E,dividers:G=!1,showClose:H,locale:I,closeLabel:J,extent:K,rounded:M=!0,modal:Q=!0,dismissible:U=!0,safeArea:W=!0,className:X,style:Y,children:Z,...ee}=w(f,["size","density","locale"]),ae=d(o,I),re="overlay"===B,te="left"===v||"right"===v,ne=H??re,[le,se]=t.useState(A??!0),oe=l[L][D],de=s[L][D],ie=G?`${oe} ${de}`:oe,be=m(V)||m(q),me=m(E),ue=void 0===K?null:{[te?"width":"height"]:"number"==typeof K?`${K}px`:K},ce=b(k,p[D],$[v],M?N[v][D]:"",re?"[box-shadow:var(--neba-shadow-3),var(--neba-plate-glass)]":"[box-shadow:var(--neba-plate-glass)]",re?`[transition:translate_var(--neba-duration)_var(--neba-ease)] ${_[v]}`:"",te?`h-full max-w-full ${void 0===K?j[D]:""}`:"w-full "+(void 0===K?"max-h-[85%]":""),G?"":`${de} ${h[D]}`,X??""),fe=re?n.Title:"h2",pe=re?n.Description:"p",xe=a(r,{children:[be||ne?a("div",{className:`flex shrink-0 items-start gap-3 ${ie}`,children:[a("div",{className:`flex min-w-0 flex-1 flex-col ${g[D]}`,children:[m(V)?e(fe,{className:b("neba-heading","[&.neba-heading]:m-0 [&.neba-heading]:font-semibold [&.neba-heading]:text-inherit",u[D]),children:V}):null,m(q)?e(pe,{className:`m-0 text-(--neba-muted-fg) ${c[D]}`,children:q}):null]}),ne?re?e(n.Close,{"aria-label":J??ae.close,className:x,children:e(i,{})}):e("button",{type:"button","aria-label":J??ae.close,className:x,onClick:()=>{void 0===P&&se(!1),F?.(!1)},children:e(i,{})}):null]}):null,m(Z)?e("div",{className:b("min-h-0 flex-1 overflow-y-auto overscroll-contain",ie,G&&(be||ne)?R:"",G?"":"py-1 -my-1"),children:Z}):null,me?e("div",{className:b("flex shrink-0 flex-wrap items-center justify-end gap-2",ie,G?R:""),children:E}):null]});return re?a(n.Root,{open:P,defaultOpen:A,modal:Q,disablePointerDismissal:!U,onOpenChange:(e,a)=>{U||e||"escape-key"!==a.reason?F?.(e):a.cancel()},children:[S?e(n.Trigger,{render:S}):null,a(n.Portal,{children:[e(n.Backdrop,{className:b("neba-portal",z,!0===Q?"":"pointer-events-none")}),e(n.Viewport,{className:b("neba-portal fixed inset-0 z-(--neba-z-portal) flex",C[v],!0===Q?"":"pointer-events-none"),children:e(n.Popup,{className:b(ce,!0===Q?"":"pointer-events-auto"),style:{...y(T,3),...ue,...W?O[v]:null,...Y},...ee,children:xe})})]})]}):P??le?e("div",{className:ce,style:{...y(T,0),...ue,...Y},...ee,children:xe}):null}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as i}from"react/jsx-runtime";import*as s from"react";import{Fieldset as l}from"@base-ui/react/fieldset";import{cx as r,hasContent as d,metaTextClasses as a,sheetHeaderGapClasses as t,sheetSectionGapClasses as n,sheetTitleClasses as o}from"../../internal/styles.js";import{useStyleDefaults as m}from"../../internal/defaults.js";import{FieldsetDisabledContext as c}from"../../internal/fieldset.js";export const Fieldset=/*@__PURE__*/s.forwardRef(function Fieldset(
|
|
1
|
+
"use client";import{jsx as e,jsxs as i}from"react/jsx-runtime";import*as s from"react";import{Fieldset as l}from"@base-ui/react/fieldset";import{cx as r,hasContent as d,metaTextClasses as a,sheetHeaderGapClasses as t,sheetSectionGapClasses as n,sheetTitleClasses as o}from"../../internal/styles.js";import{useStyleDefaults as m}from"../../internal/defaults.js";import{FieldsetDisabledContext as c,useFieldsetDisabled as f}from"../../internal/fieldset.js";export const Fieldset=/*@__PURE__*/s.forwardRef(function Fieldset(u,p){const{legend:b,description:x,disabled:j,size:h="md",className:v,children:N,"aria-describedby":g,...w}=m(u,["size"]),y=f(j),F=s.useId(),$=d(b),z=d(x);return e(c.Provider,{value:y,children:i(l.Root,{ref:p,disabled:y,className:r("m-0 flex min-w-0 flex-col border-0 p-0",n[h],v??""),"aria-describedby":[g,z?F:void 0].filter(Boolean).join(" ")||void 0,...w,children:[$||z?i("div",{className:`flex min-w-0 flex-col ${t[h]}`,children:[$?e(l.Legend,{className:`p-0 font-semibold ${o[h]}`,children:b}):null,z?e("span",{id:F,className:`text-(--neba-muted-fg) ${a[h]}`,children:x}):null]}):null,N]})})});
|
|
@@ -76,6 +76,10 @@ export interface FilePickerProps extends NebaStyleProps, Omit<React.ComponentPro
|
|
|
76
76
|
required?: boolean;
|
|
77
77
|
/** Identifies the field when a form is submitted. */
|
|
78
78
|
name?: string;
|
|
79
|
+
/**
|
|
80
|
+
* The id of the zone's button rather than of the root, so a `<label>` written
|
|
81
|
+
* elsewhere can point at the control. Generated when left out.
|
|
82
|
+
*/
|
|
79
83
|
id?: string;
|
|
80
84
|
}
|
|
81
85
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as n}from"react/jsx-runtime";import*as t from"react";import{useDropZone as r}from"../../internal/drop.js";import{glowClasses as l,spotlightSlot as a,trackPointer as o}from"../../internal/glow.js";import{CloseIcon as i}from"../../internal/icons.js";import{fileMessages as s,fillMessage as c,useMessages as d}from"../../internal/i18n.js";import{controlTextLeadingClasses as u,cx as f,disabledClasses as m,gapClasses as p,hasContent as h,
|
|
1
|
+
"use client";import{jsx as e,jsxs as n}from"react/jsx-runtime";import*as t from"react";import{useDropZone as r}from"../../internal/drop.js";import{glowClasses as l,spotlightSlot as a,trackPointer as o}from"../../internal/glow.js";import{CloseIcon as i}from"../../internal/icons.js";import{fileMessages as s,fillMessage as c,useMessages as d}from"../../internal/i18n.js";import{controlTextLeadingClasses as u,cx as f,disabledClasses as m,gapClasses as p,hasContent as h,hitAreaClasses as b,iconClasses as v,metaTextClasses as x,radiusClasses as g,readOnlyFilterClasses as y,sheetTitleClasses as j,stackGapClasses as k,surfaceClasses as $,surfaceSlots as N,transitionClasses as w}from"../../internal/styles.js";import{useStyleDefaults as z}from"../../internal/defaults.js";import{useFieldsetDisabled as C}from"../../internal/fieldset.js";const I={default:{xs:"p-4",sm:"p-5",md:"p-6",lg:"p-8",xl:"p-10"},compact:{xs:"p-2",sm:"p-3",md:"p-4",lg:"p-5",xl:"p-6"}},L={solid:[$,"border-2 border-dashed text-(--neba-fg) bg-(--n-panel-hover)","[border-color:var(--n-line)]","[box-shadow:var(--n-elev),var(--neba-plate-glass)]"].join(" "),outline:[$,"border-2 border-dashed text-(--neba-fg) bg-(--n-panel)","[border-color:var(--n-line)]","[box-shadow:var(--n-elev),var(--neba-plate-glass)]"].join(" "),text:"border-2 border-dashed text-(--neba-fg) bg-transparent [border-color:var(--n-line)]"},_={solid:"hover:bg-(--n-panel-press) hover:[border-color:var(--n-line-hover)]",outline:"hover:bg-(--n-panel-hover) hover:[border-color:var(--n-line-hover)]",text:"hover:bg-(--n-soft) hover:[border-color:var(--n-line-hover)]"};function UploadIcon(){return n("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[e("path",{d:"M8 10.5V2.75m0 0L5.25 5.5M8 2.75 10.75 5.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}),e("path",{d:"M2.75 9.75v1.75a1.75 1.75 0 0 0 1.75 1.75h7a1.75 1.75 0 0 0 1.75-1.75V9.75",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}export function formatFileSize(e){if(e<1e3)return`${e} B`;const n=["kB","MB","GB","TB"];let t=e/1e3,r=0;for(;t>=1e3&&r<n.length-1;)t/=1e3,r+=1;return`${t<10?t.toFixed(1):Math.round(t)} ${n[r]}`}function M(e,n){const t=e.name.toLowerCase(),r=e.type.toLowerCase();return n.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean).some(e=>e.startsWith(".")?t.endsWith(e):e.endsWith("/*")?r.startsWith(`${e.slice(0,-1)}`):r===e)}export const FilePicker=/*@__PURE__*/t.forwardRef(function FilePicker($,F){const{variant:B="outline",size:E="md",color:W="primary",density:R="default",elevation:S=0,accept:T,multiple:P=!1,maxSize:V,maxFiles:q,value:A,defaultValue:D,onFilesChange:O,onReject:U,label:G,description:H,error:Y,invalid:J,title:K,hint:Q,icon:X,showList:Z=!0,removeLabel:ee,fullWidth:ne=!0,disabled:te,readOnly:re=!1,required:le=!1,name:ae,id:oe,locale:ie,className:se,style:ce,...de}=z($,["size","density","variant","locale"]),ue=C(te),fe=d(s,ie),me=ee??(e=>c(fe.remove,{name:e})),pe=t.useRef(null);t.useImperativeHandle(F,()=>pe.current);const[he,be]=t.useState(()=>[...D??[]]),ve=t.useMemo(()=>A?[...A]:he,[A,he]),xe=h(Y),ge=J??xe,ye=ge?"danger":W,je=ue||re,ke=t.useId(),$e=t.useId(),Ne=t.useId(),we=oe??Ne,ze=t.useCallback(e=>{A||be(e),O?.(e)},[O,A]),Ce=t.useCallback(e=>{const n=[],t=[],r=P?q??Number.POSITIVE_INFINITY:1,l=P?ve.length:0;for(const a of e)T&&!M(a,T)?t.push({file:a,reason:"type"}):void 0!==V&&a.size>V?t.push({file:a,reason:"size"}):l+n.length>=r?t.push({file:a,reason:"count"}):n.push(a);return{kept:n,rejections:t}},[T,ve.length,q,V,P]),Ie=t.useCallback(e=>{const{kept:n,rejections:t}=Ce(e);t.length>0&&U?.(t),n.length>0&&ze(P?[...ve,...n]:n)},[Ce,ze,ve,P,U]),{over:Le,handlers:_e}=r(je?void 0:Ie),Me=t.useRef(null),Fe=t.useRef(null),Be=t.useRef(null);t.useLayoutEffect(()=>{const e=Be.current;if(null===e)return;Be.current=null;const n=Fe.current?.querySelectorAll("li button")??[],t=n[Math.min(e,n.length-1)]??Me.current;t?.focus()},[ve]);const Ee=t.useCallback(()=>{const e=pe.current;if(e&&"undefined"!=typeof DataTransfer)try{const n=new DataTransfer;ve.forEach(e=>n.items.add(e)),e.files=n.files}catch{}},[ve]);t.useEffect(()=>{Ee();const e=pe.current;return e?.addEventListener("cancel",Ee),()=>e?.removeEventListener("cancel",Ee)},[Ee]);const We=f("flex w-full flex-col items-center justify-center text-center","cursor-pointer select-none",I[R][E],g[E],p[E],w,v,"focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2",ue?`${m[B]} border-2 border-dashed`:re?`${L[B]} ${y} cursor-default`:L[B],je?"":`${_[B]} ${l}`,Le&&!je?"bg-(--n-soft-press) [border-color:var(--n-ring)]":"");return n("div",{className:f("flex-col align-top",k[E],ne?"flex w-full":"inline-flex",se??""),style:{...N(ye,S),...je?void 0:a,...ce},...de,children:[h(G)?e("span",{id:$e,className:[x[E],"font-medium",ue?"text-(--neba-disabled-fg)":"text-(--neba-fg)"].join(" "),children:G}):null,n("div",{className:"flex w-full flex-col",..._e,children:[n("button",{ref:Me,onPointerMove:o(void 0,!je),type:"button",id:we,disabled:ue,"aria-labelledby":h(G)?`${$e} ${we}`:void 0,"aria-describedby":h(H)||xe?ke:void 0,"aria-invalid":ge||void 0,className:We,onClick:()=>{je||pe.current&&(pe.current.value="",pe.current.click())},children:[void 0===X?e("span",{className:"flex items-center text-(--n-accent) [&_svg]:size-[1.8em]",children:e(UploadIcon,{})}):h(X)?e("span",{className:"flex items-center text-(--n-accent) [&_svg]:size-[1.8em]",children:X}):null,e("span",{className:`font-medium ${j[E]}`,children:K??fe.title}),h(Q)?e("span",{className:`text-(--neba-muted-fg) ${x[E]}`,children:Q}):null]}),e("input",{ref:pe,type:"file",name:ae,accept:T,multiple:P,required:le&&0===ve.length,disabled:ue,tabIndex:-1,"aria-hidden":"true",className:"absolute size-px overflow-hidden opacity-0 [clip-path:inset(50%)]",onChange:e=>Ie(Array.from(e.target.files??[]))})]}),Z&&ve.length>0?e("ul",{ref:Fe,role:"list",className:`flex w-full flex-col ${k[E]} m-0 list-none p-0`,children:ve.map((t,r)=>n("li",{className:["flex w-full items-center gap-2 px-2 py-1.5",g.xs,u[E],"bg-(--n-soft) text-(--neba-fg)"].join(" "),children:[e("span",{className:"min-w-0 flex-1 truncate",children:t.name}),e("span",{className:`shrink-0 text-(--neba-muted-fg) tabular-nums ${x[E]}`,children:formatFileSize(t.size)}),je?null:e("button",{type:"button","aria-label":me(t.name),className:["relative inline-flex shrink-0 cursor-pointer items-center justify-center rounded-full",b,"size-[1.3em] text-(--neba-muted-fg) opacity-70","[transition:opacity_var(--neba-duration)_var(--neba-ease),color_var(--neba-duration)_var(--neba-ease)]","[&_svg]:size-[0.9em]","hover:text-(--neba-fg) hover:opacity-100 focus-visible:opacity-100","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-1"].join(" "),onClick:e=>{Be.current=e.currentTarget===document.activeElement?r:null,ze(ve.filter((e,n)=>n!==r))},children:e(i,{})})]},`${t.name}-${t.size}-${t.lastModified}-${r}`))}):null,h(H)&&!xe?e("span",{id:ke,className:`${x[E]} text-(--neba-muted-fg)`,children:H}):null,xe?e("span",{id:ke,className:`${x[E]} text-(--n-accent)`,children:Y}):null]})});
|
|
@@ -54,8 +54,10 @@ export interface FooterProps extends Omit<React.ComponentPropsWithoutRef<'footer
|
|
|
54
54
|
/** The gutter and the air above and below. @default true */
|
|
55
55
|
padded?: boolean;
|
|
56
56
|
/**
|
|
57
|
-
* The name the
|
|
58
|
-
* one
|
|
57
|
+
* The name the `contentinfo` landmark is announced by. Only a footer that is
|
|
58
|
+
* a landmark has one to take: inside an `<article>`, `<aside>`, `<main>`,
|
|
59
|
+
* `<nav>` or `<section>` a `<footer>` is not a landmark, and a label there
|
|
60
|
+
* names nothing.
|
|
59
61
|
*/
|
|
60
62
|
label?: string;
|
|
61
63
|
/**
|
|
@@ -43,18 +43,4 @@ export interface FormProps extends Omit<React.ComponentPropsWithoutRef<'form'>,
|
|
|
43
43
|
size?: NebaSize;
|
|
44
44
|
children?: React.ReactNode;
|
|
45
45
|
}
|
|
46
|
-
/**
|
|
47
|
-
* A `<form>` that knows which of its fields is wrong.
|
|
48
|
-
*
|
|
49
|
-
* On its own, a page of [TextField](./text-field)s validates one field at a
|
|
50
|
-
* time and a failed submit leaves the reader to find the red one. What this
|
|
51
|
-
* adds is the part that has to be owned above the fields: a submit collects
|
|
52
|
-
* every field's validity at once, focuses the first one that failed, and
|
|
53
|
-
* `errors` puts a server's answer back on the field it belongs to rather than
|
|
54
|
-
* in a banner at the top.
|
|
55
|
-
*
|
|
56
|
-
* It is not a form *library*. There is no schema, no resolver and no field
|
|
57
|
-
* array here — a project that wants those keeps them and hands the result to
|
|
58
|
-
* `errors`, which is the seam this is built around.
|
|
59
|
-
*/
|
|
60
46
|
export declare const Form: React.ForwardRefExoticComponent<FormProps & React.RefAttributes<HTMLFormElement>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as
|
|
1
|
+
"use client";import{jsx as e}from"react/jsx-runtime";import*as r from"react";import{Form as t}from"@base-ui/react/form";import{cx as o,sheetSectionGapClasses as n}from"../../internal/styles.js";import{useStyleDefaults as a}from"../../internal/defaults.js";export const Form=/*@__PURE__*/r.forwardRef(function Form(r,i){const{validationMode:m="onSubmit",errors:s,onSubmit:l,size:f="md",className:c,children:u,...d}=a(r,["size"]);return e(t,{ref:i,validationMode:m,errors:s,onFormSubmit:l?(e,r)=>l(function(e,r){if(!(r instanceof HTMLFormElement))return e;const t=r.querySelectorAll("input[data-neba-repeats][name]:not(:disabled)");if(0===t.length)return e;const o=new FormData(r),n={...e};for(const e of t)n[e.name]=o.getAll(e.name);return n}(e,r.event.target)):void 0,className:o("flex flex-col",n[f],c??""),...d,children:u})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t,Fragment as i}from"react/jsx-runtime";import*as r from"react";import{Image as o}from"../image/Image.js";import{responsiveSlots as
|
|
1
|
+
"use client";import{jsx as e,jsxs as t,Fragment as i}from"react/jsx-runtime";import*as r from"react";import{Image as o}from"../image/Image.js";import{responsiveSlots as a,withBaseline as l}from"../../internal/responsive.js";import{useBreakpointValue as s}from"../../hooks/useMediaQuery.js";import{fillMessage as n,galleryMessages as u,useMessages as d}from"../../internal/i18n.js";import{cx as m,hasContent as c,metaTextClasses as p,radiusClasses as f,sheetTitleClasses as h,toLength as g,transitionClasses as x}from"../../internal/styles.js";import{useStyleDefaults as b}from"../../internal/defaults.js";const v=r.lazy(()=>import("./GalleryViewer.js").then(e=>({default:e.GalleryViewer}))),w={xs:2,sm:3,lg:4},y={xs:"0.25rem",sm:"0.375rem",md:"0.5rem",lg:"0.75rem",xl:"1rem"};function N(e,t){if(void 0===e)return t;if("number"==typeof e)return e>0?e:t;const[i,r]=e.split("/"),o=void 0===r?Number(i):Number(i)/Number(r);return Number.isFinite(o)&&o>0?o:t}export function isSideways(e){return Math.abs(Math.round((e.rotate??0)/90))%2==1}export function shownRatioOf(e,t){const i=N(e.ratio,t);return void 0!==e.ratio&&isSideways(e)?1/i:i}const j={none:"",lift:"group-hover/tile:[box-shadow:var(--neba-shadow-2)] group-has-[:focus-visible]/tile:[box-shadow:var(--neba-shadow-2)] supports-[not_selector(:has(*))]:group-focus-within/tile:[box-shadow:var(--neba-shadow-2)]",dim:"",zoom:""},$={none:"",lift:"",dim:"group-hover/tile:[filter:brightness(0.82)] group-has-[:focus-visible]/tile:[filter:brightness(0.82)] supports-[not_selector(:has(*))]:group-focus-within/tile:[filter:brightness(0.82)]",zoom:"group-hover/tile:[transform:scale(1.06)] group-has-[:focus-visible]/tile:[transform:scale(1.06)] supports-[not_selector(:has(*))]:group-focus-within/tile:[transform:scale(1.06)]"};export const Gallery=/*@__PURE__*/r.forwardRef(function Gallery(_,k){const{items:M,layout:S="grid",columns:z,gap:R="md",ratio:q=1,rowHeight:G=220,rounded:A="md",fit:C="cover",letterbox:I,loading:O="lazy",caption:F="none",hover:V="lift",preview:B=!1,onItemSelect:E,filter:H,frame:Q,watermark:T,protect:W=!1,label:D,locale:J,empty:K,className:L,classNames:P,style:U,...X}=b(_,["locale"]),Y=d(u,J),Z=r.useId(),[ee,te]=r.useState(null),ie=l(z??w,2),re=Math.max(1,s(ie)??2),oe="string"==typeof R&&R in y?y[R]:g(R)??y.md,ae=!1===A?"":f[!0===A?"md":A],le=N(q,1),se=(r,a,l)=>{const s=c(r.title)||c(r.description),u="none"!==F&&s,d="overlay"===F||"hover"===F,f=`${Z}-${a}-title`,g=`${Z}-${a}-description`,b=`${Z}-${a}-position`,v=n(Y.item,{index:String(a+1),total:String(M.length)}),w=e(o,{src:r.src,alt:r.alt,ratio:"grid"===S?q:"quilted"===S?"auto":void 0!==r.ratio&&isSideways(r)?shownRatioOf(r,le):r.ratio??q,fit:C,position:r.position,letterbox:I,rotate:r.rotate,flip:r.flip,placeholder:r.placeholder,loading:O,rounded:!1,filter:H,frame:Q,watermark:T,protect:W,className:m("size-full",P?.image),classNames:{image:m("motion-reduce:[transition-duration:0ms]",$[V])}}),y=u?t("span",{className:m("min-w-0",d?m("pointer-events-none absolute inset-x-0 bottom-0 flex flex-col gap-0.5 p-2.5 text-white","[background:linear-gradient(to_top,color-mix(in_oklab,#000_72%,transparent),transparent)]","hover"===F?"opacity-0 group-hover/tile:opacity-100 group-has-[:focus-visible]/tile:opacity-100 supports-[not_selector(:has(*))]:group-focus-within/tile:opacity-100 [@media(hover:none)]:opacity-100 [transition:opacity_var(--neba-duration-fill)_var(--neba-ease)]":""):"flex flex-col gap-0.5 pt-1.5",P?.caption),children:[c(r.title)?e("span",{id:f,className:m("truncate font-medium",h.sm,d?"":"text-(--neba-fg)",P?.title),children:r.title}):null,c(r.description)?e("span",{id:g,className:m("truncate",p.md,d?"text-white/80":"text-(--neba-muted-fg)",P?.description),children:r.description}):null]}):null,N=t("span",{className:m("relative block overflow-hidden",ae,"quilted"===S||"justified"===S?"size-full":"","[transition:box-shadow_var(--neba-duration)_var(--neba-ease)]",j[V]),children:[w,d?y:null]}),_=d||!u?N:t(i,{children:[N,y]});return e("li",{className:m("group/tile relative m-0 min-w-0 list-none","justified"===S?"flex flex-col":"",P?.item),style:l,children:B||E?t("button",{type:"button","aria-label":u?void 0:`${r.alt} — ${v}`,"aria-labelledby":u?`${c(r.title)?f:g} ${b}`:void 0,"aria-haspopup":B?"dialog":void 0,"aria-describedby":u&&c(r.title)&&c(r.description)?g:void 0,className:m("block w-full text-start",B?"cursor-zoom-in":"cursor-pointer",x,"focus-visible:[outline:2px_solid_var(--n-ring,var(--neba-primary-ring))] focus-visible:[outline-offset:2px]",ae,"justified"===S?"flex-1":""),onClick:()=>(e=>{E?.(M[e],e),B&&te(e)})(a),children:[_,u?e("span",{id:b,hidden:!0,children:v}):null]}):_},r.id??r.src)},ne=m("neba-gallery m-0 list-none p-0","justified"===S?"neba-gallery-justified flex flex-wrap":"","masonry"===S?"flex items-start":"","grid"===S||"quilted"===S?"grid":"",L??""),ue={gap:oe,...a("cols",ie,e=>String(Math.max(1,Math.round(e)))),..."grid"===S||"quilted"===S?{gridTemplateColumns:"repeat(var(--n-cols), minmax(0, 1fr))"}:null,..."quilted"===S?{gridAutoRows:`${G}px`,gridAutoFlow:"dense"}:null,...U};let de;if("masonry"===S){de=function(e,t){const i=Array.from({length:t},()=>[]),r=new Array(t).fill(0);return e.forEach((e,o)=>{let a=0;for(let e=1;e<t;e+=1)r[e]<r[a]&&(a=e);i[a].push(o),r[a]+=1/e}),i}(M.map(e=>shownRatioOf(e,le)),re).map((t,i)=>e("li",{className:"m-0 flex min-w-0 flex-1 list-none flex-col",style:{gap:oe},children:e("ul",{className:"m-0 flex list-none flex-col p-0",style:{gap:oe},children:t.map(e=>se(M[e],e,{}))})},i))}else de="justified"===S?M.map((e,t)=>{const i=shownRatioOf(e,le);return se(e,t,{flexGrow:i,flexBasis:i*G+"px",maxWidth:"100%"})}):M.map((e,t)=>se(e,t,"quilted"===S?{gridColumn:`span ${Math.max(1,Math.round(e.cols??1))}`,gridRow:`span ${Math.max(1,Math.round(e.rows??1))}`}:{}));return 0===M.length&&c(K)?e(i,{children:K}):t(i,{children:[e("ul",{ref:k,role:"list","aria-label":D??Y.label,className:ne,style:ue,...X,children:de}),B?e(r.Suspense,{fallback:null,children:e(v,{items:M,index:ee,onIndexChange:te,locale:J,watermark:T,protect:W,messages:Y})}):null]})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import{Dialog as l}from"../dialog/Dialog.js";import{IconButton as n}from"../icon-button/IconButton.js";import{Image as
|
|
1
|
+
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import{Dialog as l}from"../dialog/Dialog.js";import{IconButton as n}from"../icon-button/IconButton.js";import{Image as a}from"../image/Image.js";import{ChevronIcon as i}from"../../internal/icons.js";import{fillMessage as r}from"../../internal/i18n.js";import{cx as o,hasContent as s,metaTextClasses as c,srOnlyClasses as m}from"../../internal/styles.js";import{isSideways as d,shownRatioOf as u}from"./Gallery.js";export function GalleryViewer({items:p,index:f,onIndexChange:h,locale:v,watermark:x,protect:g,messages:b}){const j=null!==f,y=null===f?void 0:p[f],N=null===f||f<=0,w=null===f||f>=p.length-1,k=y?.title??y?.alt,D=void 0!==y&&d(y),C=D&&void 0!==y.ratio?u(y,1):null,K=e=>{e>=0&&e<p.length&&h(e)};return e(l,{open:j,onOpenChange:e=>{e||h(null)},size:"xl",locale:v,title:y?.title??y?.alt??"",description:y?.description,onKeyDown:e=>{if(null===f||e.metaKey||e.ctrlKey||e.altKey)return;const t="rtl"===getComputedStyle(e.currentTarget).direction?-1:1;"ArrowRight"===e.key?(e.preventDefault(),K(f+t)):"ArrowLeft"===e.key&&(e.preventDefault(),K(f-t))},children:t("div",{className:"flex flex-col gap-3",children:[t("div",{className:"relative flex items-center justify-center",children:[y?e(a,{src:y.full??y.src,alt:y.alt,ratio:C??"auto",fit:"contain",rounded:"md",rotate:y.rotate,flip:y.flip,watermark:x,protect:g,className:D?null===C?"max-h-[70vh]":void 0:"max-h-[70vh] w-auto",classNames:D?void 0:{image:"max-h-[70vh] w-auto object-contain"},style:D?{width:null===C?"100%":`min(100%, calc(70vh * ${C}))`}:void 0},y.id??y.src):null,p.length>1?t("div",{className:"pointer-events-none absolute inset-x-0 flex items-center justify-between px-1",children:[e(n,{variant:"solid",elevation:1,label:b.previous,disabled:N,focusableWhenDisabled:!0,className:"pointer-events-auto",icon:e("span",{className:"flex items-center rotate-90 rtl:-rotate-90",children:e(i,{})}),onClick:()=>K((f??0)-1)}),e(n,{variant:"solid",elevation:1,label:b.next,disabled:w,focusableWhenDisabled:!0,className:"pointer-events-auto",icon:e("span",{className:"flex items-center -rotate-90 rtl:rotate-90",children:e(i,{})}),onClick:()=>K((f??0)+1)})]}):null]}),p.length>1?t("p",{className:o("m-0 text-center text-(--neba-muted-fg)",c.md),"aria-live":"polite","aria-atomic":"true",children:[s(k)?t("span",{className:m,children:[k,", "]}):null,e("span",{children:r(b.item,{index:String((f??0)+1),total:String(p.length)})})]}):null]})})}
|
|
@@ -80,9 +80,10 @@ export interface HeaderProps extends Omit<React.ComponentPropsWithoutRef<'header
|
|
|
80
80
|
/** The gutter down each side of the row. @default true */
|
|
81
81
|
padded?: boolean;
|
|
82
82
|
/**
|
|
83
|
-
* The name the
|
|
84
|
-
* one
|
|
85
|
-
*
|
|
83
|
+
* The name the `banner` landmark is announced by. Only a header that is a
|
|
84
|
+
* landmark has one to take: inside an `<article>`, `<aside>`, `<main>`,
|
|
85
|
+
* `<nav>` or `<section>` a `<header>` is not a landmark, and a label there
|
|
86
|
+
* names nothing.
|
|
86
87
|
*/
|
|
87
88
|
label?: string;
|
|
88
89
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as l from"react";import{ChartExport as n,ChartScaleLegend as a,ChartStatus as r,ChartSummary as i,ChartSurface as o,ChartTooltipPanel as d,markTransitionClasses as h,summarise as s,useMeasuredWidth as m,useReleaseOutside as c,chartHeight as u,useMeasuredHeight as x}from"../../internal/chart-frame.js";import{categoryAt as f,chartFontSizes as p,compactNumber as g,formatCategory as w,markGap as v,rampFill as b,rampInk as y,rampStep as M,rampSteps as k,squarify as A,textWidth as $,toValues as z,truncate as N,turnedAxis as j}from"../../internal/chart.js";import{numberFormatter as E}from"../../internal/format.js";import{cx as S,metaTextClasses as B,srOnlyClasses as C}from"../../internal/styles.js";import{chartMessages as D,emptyMessages as I,useMessages as F}from"../../internal/i18n.js";import{useStyleDefaults as L}from"../../internal/defaults.js";export function HeatmapChart(P){const{series:R,categories:U,shape:_="grid",scale:q="sequential",midpoint:H=0,min:K,max:T,valueLabels:G="none",xAxis:J,yAxis:O,height:Q,format:V,locale:X,label:Y,legend:Z,tooltip:ee,empty:te,exportable:le=!1,exportFileName:ne="chart.csv",onExport:ae,size:re="md",variant:ie="text",padded:oe=!1,className:de,...he}=L(P,["size","variant","locale"]),se=l.useRef(null),me=m(se),ce=F(I,X),ue=F(D,X),xe=l.useId(),[fe,pe]=l.useState(null);c(se,null!==fe,()=>pe(null));const ge=l.useId(),we=l.useCallback(e=>V?E(X,V).format(e):g(e,X),[V,X]),ve=l.useMemo(()=>z(R),[R]),be=ve.reduce((e,t)=>Math.max(e,t.length),0),ye=l.useMemo(()=>Array.from({length:be},(e,t)=>f(t,U,ve)),[be,U,ve]),Me=l.useMemo(()=>R.map((e,t)=>e.name??`${t+1}`),[R]),ke=l.useMemo(()=>{let e=1/0,t=-1/0,l=!1;for(const n of ve)for(const a of n)null!==a.value&&(l=!0,e=Math.min(e,a.value),t=Math.max(t,a.value));return l?{min:e,max:t}:null},[ve]),Ae=K??ke?.min??0,$e=T??ke?.max??1,ze=l.useCallback(e=>M(e,Ae,$e,q,H),[Ae,$e,q,H]),Ne=x(se,"string"==typeof Q),je=u(Q,re,Ne),Ee=p[re],Se=!0===Z||void 0===Z||!1===Z?{}:Z,Be=!1!==Z,Ce=Se.side??"bottom",De=!1===ee?{mode:"none"}:!0===ee||void 0===ee?{}:ee,Ie="none"===De.mode,Fe=null===ke||0===be||0===R.length,Le=O?.tickFormat,We="treemap"===_||O?.hidden,Pe=l.useMemo(()=>{if(We||me<=0)return{texts:[],band:0};const e=Math.min(150,.25*me),t=Me.map((t,l)=>N(Le?String(Le(t,l)):t,e,Ee));return{texts:t,band:t.reduce((e,t)=>Math.max(e,$(t,Ee)),0)+10}},[We,Me,Le,me,Ee]),Re="treemap"===_?0:J?.tickAngle,Ue=l.useMemo(()=>j(Re,Ee),[Re,Ee]),_e=J?.tickFormat,qe=l.useMemo(()=>ye.map((e,t)=>_e?String(_e(e,t)):w(e,X)),[ye,_e,X]),He=Math.min(140,.4*je),Ke=l.useMemo(()=>0===Ue.angle?qe:qe.map(e=>N(e,Ue.cut(He),Ee)),[qe,Ue,He,Ee]),Te=Ke.reduce((e,t)=>Math.max(e,$(t,Ee)),0),Ge=Ee+6,Je="treemap"===_||J?.hidden?0:Ue.depth(Te)+8+(J?.label?Ge:0),Oe=Boolean(O?.label)&&!We,Qe=(Oe?Ge+2:0)+(le?20:0),Ve={left:O?.thickness??Pe.band,top:Qe,width:Math.max(0,me-(O?.thickness??Pe.band)),height:Math.max(0,je-(J?.thickness??Je)-Qe)},Xe=l.useMemo(()=>{if(Ve.width<=0||Ve.height<=0)return[];if("treemap"===_){const e=[];return ve.forEach((t,l)=>t.forEach((t,n)=>{null!==t.value&&e.push({row:l,index:n,cell:t})})),A(e.map(e=>Math.max(0,e.cell.value??0)),Ve.width,Ve.height).map(t=>({row:e[t.index].row,index:e[t.index].index,cell:e[t.index].cell,x:Ve.left+t.x,y:Ve.top+t.y,width:t.width,height:t.height}))}const e=Ve.height/Math.max(1,R.length),t=Ve.width/Math.max(1,be),l=[];return ve.forEach((n,a)=>n.forEach((n,r)=>{null!==n.value&&l.push({row:a,index:r,cell:n,x:Ve.left+r*t,y:Ve.top+a*e,width:t,height:e})})),l},[_,ve,R.length,be,Ve.left,Ve.top,Ve.width,Ve.height]),Ye=l.useCallback(e=>w(e.cell.x??U?.[e.index]??ye[e.index]??e.index,X),[U,ye,X]),Ze=l.useMemo(()=>{if("treemap"!==_)return{heads:ye.map(e=>w(e,X)),rows:ve.map(e=>ye.map((t,l)=>e[l]))};const e=[],t=new Map,l=ve.map(l=>{const n=[];return l.forEach((l,a)=>{const r=w(l.x??U?.[a]??ye[a]??a,X);let i=t.get(r);void 0===i&&(i=e.length,t.set(r,i),e.push(r)),n[i]=l}),n});return{heads:e,rows:l}},[_,ye,ve,U,X]),et=null===fe?null:Xe.find(e=>e.row===fe.row&&e.index===fe.index)??null,tt=null===et?[]:[{seriesIndex:et.row,color:et.cell.color??b(ze(et.cell.value??0),q),value:et.cell.value,formatted:we(et.cell.value??0),label:et.cell.label}],lt=Array.from({length:k},(e,t)=>b(t,q));return t(o,{...he,size:re,variant:ie,padded:oe,className:de,legendSide:Ce,legend:Be&&!Fe?e(a,{steps:lt,from:we("diverging"===q?-W(Ae,$e,H)+H:Ae),to:we("diverging"===q?W(Ae,$e,H)+H:$e),middle:"diverging"===q?we(H):void 0,align:Se.align??"center",vertical:"left"===Ce||"right"===Ce,size:re}):null,table:Fe?null:t("table",{id:xe,className:C,children:[Y?e("caption",{children:Y}):null,e("thead",{children:t("tr",{children:[e("th",{scope:"col"}),Ze.heads.map((t,l)=>e("th",{scope:"col",children:t},l))]})}),e("tbody",{children:Ze.rows.map((l,n)=>t("tr",{children:[e("th",{scope:"row",children:Me[n]}),Ze.heads.map((t,n)=>{const a=l[n];return e("td",{children:void 0!==a?.label?a.label:null==a?.value?"":we(a.value)},n)})]},n))})]}),children:[le&&!Fe?e(n,{rows:()=>[["",...Ze.heads],...Ze.rows.map((e,t)=>[Me[t],...
|
|
1
|
+
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as l from"react";import{ChartExport as n,ChartScaleLegend as a,ChartStatus as r,ChartSummary as i,ChartSurface as o,ChartTooltipPanel as d,markTransitionClasses as h,summarise as s,useMeasuredWidth as m,useReleaseOutside as c,chartHeight as u,useMeasuredHeight as x}from"../../internal/chart-frame.js";import{categoryAt as f,chartFontSizes as p,compactNumber as g,formatCategory as w,markGap as v,rampFill as b,rampInk as y,rampStep as M,rampSteps as k,squarify as A,textWidth as $,toValues as z,truncate as N,turnedAxis as j}from"../../internal/chart.js";import{numberFormatter as E}from"../../internal/format.js";import{cx as S,metaTextClasses as B,srOnlyClasses as C}from"../../internal/styles.js";import{chartMessages as D,emptyMessages as I,useMessages as F}from"../../internal/i18n.js";import{useStyleDefaults as L}from"../../internal/defaults.js";export function HeatmapChart(P){const{series:R,categories:U,shape:_="grid",scale:q="sequential",midpoint:H=0,min:K,max:T,valueLabels:G="none",xAxis:J,yAxis:O,height:Q,format:V,locale:X,label:Y,legend:Z,tooltip:ee,empty:te,exportable:le=!1,exportFileName:ne="chart.csv",onExport:ae,size:re="md",variant:ie="text",padded:oe=!1,className:de,...he}=L(P,["size","variant","locale"]),se=l.useRef(null),me=m(se),ce=F(I,X),ue=F(D,X),xe=l.useId(),[fe,pe]=l.useState(null);c(se,null!==fe,()=>pe(null));const ge=l.useId(),we=l.useCallback(e=>V?E(X,V).format(e):g(e,X),[V,X]),ve=l.useMemo(()=>z(R),[R]),be=ve.reduce((e,t)=>Math.max(e,t.length),0),ye=l.useMemo(()=>Array.from({length:be},(e,t)=>f(t,U,ve)),[be,U,ve]),Me=l.useMemo(()=>R.map((e,t)=>e.name??`${t+1}`),[R]),ke=l.useMemo(()=>{let e=1/0,t=-1/0,l=!1;for(const n of ve)for(const a of n)null!==a.value&&(l=!0,e=Math.min(e,a.value),t=Math.max(t,a.value));return l?{min:e,max:t}:null},[ve]),Ae=K??ke?.min??0,$e=T??ke?.max??1,ze=l.useCallback(e=>M(e,Ae,$e,q,H),[Ae,$e,q,H]),Ne=x(se,"string"==typeof Q),je=u(Q,re,Ne),Ee=p[re],Se=!0===Z||void 0===Z||!1===Z?{}:Z,Be=!1!==Z,Ce=Se.side??"bottom",De=!1===ee?{mode:"none"}:!0===ee||void 0===ee?{}:ee,Ie="none"===De.mode,Fe=null===ke||0===be||0===R.length,Le=O?.tickFormat,We="treemap"===_||O?.hidden,Pe=l.useMemo(()=>{if(We||me<=0)return{texts:[],band:0};const e=Math.min(150,.25*me),t=Me.map((t,l)=>N(Le?String(Le(t,l)):t,e,Ee));return{texts:t,band:t.reduce((e,t)=>Math.max(e,$(t,Ee)),0)+10}},[We,Me,Le,me,Ee]),Re="treemap"===_?0:J?.tickAngle,Ue=l.useMemo(()=>j(Re,Ee),[Re,Ee]),_e=J?.tickFormat,qe=l.useMemo(()=>ye.map((e,t)=>_e?String(_e(e,t)):w(e,X)),[ye,_e,X]),He=Math.min(140,.4*je),Ke=l.useMemo(()=>0===Ue.angle?qe:qe.map(e=>N(e,Ue.cut(He),Ee)),[qe,Ue,He,Ee]),Te=Ke.reduce((e,t)=>Math.max(e,$(t,Ee)),0),Ge=Ee+6,Je="treemap"===_||J?.hidden?0:Ue.depth(Te)+8+(J?.label?Ge:0),Oe=Boolean(O?.label)&&!We,Qe=(Oe?Ge+2:0)+(le?20:0),Ve={left:O?.thickness??Pe.band,top:Qe,width:Math.max(0,me-(O?.thickness??Pe.band)),height:Math.max(0,je-(J?.thickness??Je)-Qe)},Xe=l.useMemo(()=>{if(Ve.width<=0||Ve.height<=0)return[];if("treemap"===_){const e=[];return ve.forEach((t,l)=>t.forEach((t,n)=>{null!==t.value&&e.push({row:l,index:n,cell:t})})),A(e.map(e=>Math.max(0,e.cell.value??0)),Ve.width,Ve.height).map(t=>({row:e[t.index].row,index:e[t.index].index,cell:e[t.index].cell,x:Ve.left+t.x,y:Ve.top+t.y,width:t.width,height:t.height}))}const e=Ve.height/Math.max(1,R.length),t=Ve.width/Math.max(1,be),l=[];return ve.forEach((n,a)=>n.forEach((n,r)=>{null!==n.value&&l.push({row:a,index:r,cell:n,x:Ve.left+r*t,y:Ve.top+a*e,width:t,height:e})})),l},[_,ve,R.length,be,Ve.left,Ve.top,Ve.width,Ve.height]),Ye=l.useCallback(e=>w(e.cell.x??U?.[e.index]??ye[e.index]??e.index,X),[U,ye,X]),Ze=l.useMemo(()=>{if("treemap"!==_)return{heads:ye.map(e=>w(e,X)),rows:ve.map(e=>ye.map((t,l)=>e[l]))};const e=[],t=new Map,l=ve.map(l=>{const n=[];return l.forEach((l,a)=>{const r=w(l.x??U?.[a]??ye[a]??a,X);let i=t.get(r);void 0===i&&(i=e.length,t.set(r,i),e.push(r)),n[i]=l}),n});return{heads:e,rows:l}},[_,ye,ve,U,X]),et=null===fe?null:Xe.find(e=>e.row===fe.row&&e.index===fe.index)??null,tt=null===et?[]:[{seriesIndex:et.row,color:et.cell.color??b(ze(et.cell.value??0),q),value:et.cell.value,formatted:we(et.cell.value??0),label:et.cell.label}],lt=Array.from({length:k},(e,t)=>b(t,q));return t(o,{...he,size:re,variant:ie,padded:oe,className:de,legendSide:Ce,legend:Be&&!Fe?e(a,{steps:lt,from:we("diverging"===q?-W(Ae,$e,H)+H:Ae),to:we("diverging"===q?W(Ae,$e,H)+H:$e),middle:"diverging"===q?we(H):void 0,align:Se.align??"center",vertical:"left"===Ce||"right"===Ce,size:re}):null,table:Fe?null:t("table",{id:xe,className:C,children:[Y?e("caption",{children:Y}):null,e("thead",{children:t("tr",{children:[e("th",{scope:"col"}),Ze.heads.map((t,l)=>e("th",{scope:"col",children:t},l))]})}),e("tbody",{children:Ze.rows.map((l,n)=>t("tr",{children:[e("th",{scope:"row",children:Me[n]}),Ze.heads.map((t,n)=>{const a=l[n];return e("td",{children:void 0!==a?.label?a.label:null==a?.value?"":we(a.value)},n)})]},n))})]}),children:[le&&!Fe?e(n,{rows:()=>[["",...Ze.heads],...Ze.rows.map((e,t)=>[Me[t],...Ze.heads.map((t,l)=>e[l]?.value??null)])],fileName:ne,onExport:ae,label:ue.exportCsv}):null,t("div",{ref:se,role:"img",tabIndex:Fe?void 0:0,"aria-label":Y??ue.label,"aria-describedby":Fe?void 0:ge,onPointerLeave:e=>{"touch"!==e.pointerType&&pe(null)},onBlur:()=>pe(null),onKeyDown:e=>{if(Ie||0===Xe.length)return;const t=null===fe?-1:Xe.findIndex(e=>e.row===fe.row&&e.index===fe.index),l="treemap"!==_&&-1!==t,n="ArrowRight"===e.key||"ArrowDown"===e.key;if(!l||"ArrowDown"!==e.key&&"ArrowUp"!==e.key)if(n||"ArrowLeft"===e.key||"ArrowUp"===e.key){const e=n?Xe[Math.min(Xe.length-1,t+1)]:Xe[Math.max(0,(-1===t?Xe.length:t)-1)];pe({row:e.row,index:e.index})}else{if("Escape"!==e.key)return;pe(null)}else{const l=Xe[t],n="ArrowDown"===e.key,a=Xe.filter(e=>e.index===l.index&&(n?e.row>l.row:e.row<l.row)).sort((e,t)=>n?e.row-t.row:t.row-e.row)[0];a&&pe({row:a.row,index:a.index})}e.preventDefault()},className:S("relative w-full rounded-(--neba-radius-xs)","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2"),style:{height:"string"==typeof Q?Q:je},children:[Fe?e("div",{className:S("flex h-full items-center justify-center text-(--neba-muted-fg)",B[re]),children:te??ce.title}):me>0?t("svg",{width:me,height:je,viewBox:`0 0 ${me} ${je}`,"aria-hidden":"true",className:"block",children:[Xe.map(l=>{const n=ze(l.cell.value??0),a=fe?.row===l.row&&fe?.index===l.index,r=Math.max(0,l.width-v),i=Math.max(0,l.height-v);if(r<=0||i<=0)return null;const o=we(l.cell.value??0),d="treemap"===_?"all"===G?[Ye(l),o]:[Ye(l)]:"all"===G?[o]:[],s=d.filter(e=>function(e,t,l,n){return l>=1.8*n&&t>=Math.min($(e,n),2.5*n)+8}(e,r,i/d.length,Ee)),m=l.cell.color?"var(--neba-surface)":y(n,q);return t("g",{children:[e("rect",{x:l.x+v/2,y:l.y+v/2,width:r,height:i,rx:Math.min(3,r/2,i/2),fill:l.cell.color??b(n,q),opacity:a?1:.94,onPointerEnter:Ie?void 0:()=>pe({row:l.row,index:l.index}),className:h}),s.map((t,n)=>e("text",{x:l.x+l.width/2,y:l.y+l.height/2+(n-(s.length-1)/2)*(Ee+2),textAnchor:"middle",dominantBaseline:"central",fontSize:Ee,fontWeight:0===n?500:400,fill:m,opacity:0===n?1:.85,pointerEvents:"none",className:0===n&&"treemap"===_?void 0:"tabular-nums",children:N(t,l.width-8,Ee)},n))]},`${l.row}-${l.index}`)}),"grid"!==_||O?.hidden?null:Pe.texts.map((t,l)=>e("text",{x:Ve.left-8,y:Ve.top+(l+.5)*Ve.height/Math.max(1,R.length),textAnchor:"end",dominantBaseline:"central",fontSize:Ee,fill:"var(--neba-muted-fg)",children:t},`row-${l}`)),"grid"!==_||J?.hidden?null:Ke.map((t,l)=>{const n=Ve.width/Math.max(1,be);if(l%Math.max(1,Math.ceil(Ue.room(Te)/Math.max(1,n)))!==0)return null;const a=Ve.left+(l+.5)*n,r=Ve.top+Ve.height+Ue.offset-6;return e("text",{x:a,y:r,textAnchor:Ue.anchor,transform:0===Ue.angle?void 0:`rotate(${Ue.angle} ${a} ${r})`,dominantBaseline:0===Ue.angle?void 0:"central",fontSize:Ee,fill:"var(--neba-muted-fg)",children:t},`col-${l}`)}),Oe?e("text",{x:Ve.left,y:Ee+2,textAnchor:"start",fontSize:Ee,fill:"var(--neba-muted-fg)",fontWeight:500,children:O?.label}):null,"grid"===_&&J?.label&&!J.hidden?e("text",{x:Ve.left+Ve.width,y:Ve.top+Ve.height+Ue.depth(Te)+Ee+8,textAnchor:"end",fontSize:Ee,fill:"var(--neba-muted-fg)",fontWeight:500,children:J.label}):null]}):null,et&&!Ie?De.render?e("div",{className:"pointer-events-none absolute z-10",style:{left:et.x+et.width/2,top:et.y},children:De.render({index:et.index,category:et.cell.x??ye[et.index]??et.index,items:tt})}):e(d,{heading:`${Me[et.row]} · ${Ye(et)}`,items:tt,x:et.x+et.width/2,y:et.y,flip:et.x+et.width/2>.6*me,size:re}):null]}),Fe?null:e(i,{id:ge,template:ue.summary,locale:X,...s(ve,we)}),Ie?null:e(r,{heading:et?`${Me[et.row]} · ${Ye(et)}`:void 0,items:tt})]})}function W(e,t,l){return Math.max(Math.abs(t-l),Math.abs(l-e))}
|
|
@@ -16,7 +16,7 @@ export interface HoverCardProps extends Pick<NebaStyleProps, 'size' | 'color' |
|
|
|
16
16
|
* about without leaving the sentence they are in.
|
|
17
17
|
*/
|
|
18
18
|
trigger: React.ReactElement;
|
|
19
|
-
/**
|
|
19
|
+
/** A heading line at the top of the card. It is drawn, not announced as a name. */
|
|
20
20
|
title?: React.ReactNode;
|
|
21
21
|
/** A line under the title. */
|
|
22
22
|
description?: React.ReactNode;
|
|
@@ -36,7 +36,8 @@ export interface HowToStepsProps extends Omit<React.ComponentPropsWithoutRef<'di
|
|
|
36
36
|
title?: React.ReactNode;
|
|
37
37
|
/**
|
|
38
38
|
* Which heading level `title` is written at, and the step's title one below
|
|
39
|
-
* it.
|
|
39
|
+
* it. Without a `title` the step's title takes this level itself, so a guide
|
|
40
|
+
* with no heading of its own does not skip one in the page's outline.
|
|
40
41
|
*
|
|
41
42
|
* A heading level is a claim about the *page*, not about the component: a
|
|
42
43
|
* guide under an `<h1>` is an `<h2>` and the same guide inside a section is an
|