neba 1.13.0 → 1.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -30
- package/dist/a2ui/catalog.json +1466 -0
- package/dist/a2ui/components.d.ts +21 -0
- package/dist/a2ui/components.js +1 -0
- package/dist/a2ui/index.d.ts +62 -0
- package/dist/a2ui/index.js +1 -0
- package/dist/a2ui/schema.d.ts +47 -0
- package/dist/a2ui/schema.js +1 -0
- package/dist/components/accordion/Accordion.d.ts +5 -1
- package/dist/components/accordion/Accordion.js +1 -1
- package/dist/components/agent-steps/AgentSteps.d.ts +80 -0
- package/dist/components/agent-steps/AgentSteps.js +1 -0
- package/dist/components/agent-steps/index.d.ts +2 -0
- package/dist/components/agent-steps/index.js +1 -0
- package/dist/components/alert/Alert.js +1 -1
- package/dist/components/anchor/Anchor.d.ts +3 -2
- package/dist/components/anchor/Anchor.js +1 -1
- package/dist/components/animate-appear/AnimateAppear.js +1 -1
- package/dist/components/animate-blink/AnimateBlink.d.ts +3 -0
- package/dist/components/animate-blink/AnimateBlink.js +1 -1
- package/dist/components/animate-counter/AnimateCounter.d.ts +3 -1
- package/dist/components/animate-counter/AnimateCounter.js +1 -1
- package/dist/components/animate-fade/AnimateFade.js +1 -1
- package/dist/components/animate-float/AnimateFloat.js +1 -1
- package/dist/components/animate-grow/AnimateGrow.js +1 -1
- package/dist/components/animate-headline/AnimateHeadline.d.ts +9 -2
- package/dist/components/animate-headline/AnimateHeadline.js +1 -1
- package/dist/components/animate-lighting/AnimateLighting.d.ts +1 -1
- package/dist/components/animate-lighting/AnimateLighting.js +1 -1
- package/dist/components/animate-marquee/AnimateMarquee.d.ts +15 -6
- package/dist/components/animate-marquee/AnimateMarquee.js +1 -1
- package/dist/components/animate-reveal/AnimateReveal.js +1 -1
- package/dist/components/animate-rotate/AnimateRotate.js +1 -1
- package/dist/components/animate-scramble/AnimateScramble.d.ts +5 -3
- package/dist/components/animate-scramble/AnimateScramble.js +1 -1
- package/dist/components/animate-shake/AnimateShake.js +1 -1
- package/dist/components/animate-slide/AnimateSlide.js +1 -1
- package/dist/components/animate-split/AnimateSplit.d.ts +3 -1
- package/dist/components/animate-split/AnimateSplit.js +1 -1
- package/dist/components/animate-typing/AnimateTyping.d.ts +12 -4
- package/dist/components/animate-typing/AnimateTyping.js +1 -1
- package/dist/components/animate-zoom/AnimateZoom.js +1 -1
- package/dist/components/app-logo/AppLogo.js +1 -1
- package/dist/components/approval/Approval.d.ts +115 -0
- package/dist/components/approval/Approval.js +1 -0
- package/dist/components/approval/index.d.ts +2 -0
- package/dist/components/approval/index.js +1 -0
- package/dist/components/area-chart/AreaChart.d.ts +16 -5
- package/dist/components/area-chart/AreaChart.js +1 -1
- package/dist/components/aspect-ratio/AspectRatio.d.ts +6 -4
- package/dist/components/aspect-ratio/AspectRatio.js +1 -1
- package/dist/components/avatar/Avatar.js +1 -1
- package/dist/components/badge/Badge.js +1 -1
- package/dist/components/bar-chart/BarChart.d.ts +1 -1
- package/dist/components/bar-chart/BarChart.js +1 -1
- package/dist/components/blockquote/Blockquote.js +1 -1
- package/dist/components/bottom-navigation/BottomNavigation.d.ts +2 -1
- package/dist/components/bottom-navigation/BottomNavigation.js +1 -1
- package/dist/components/box/Box.d.ts +5 -0
- package/dist/components/box/Box.js +1 -1
- package/dist/components/breadcrumb/Breadcrumb.d.ts +10 -0
- package/dist/components/breadcrumb/Breadcrumb.js +1 -1
- package/dist/components/button/Button.d.ts +11 -0
- package/dist/components/button/Button.js +1 -1
- package/dist/components/button-group/ButtonGroup.js +1 -1
- package/dist/components/calendar/Calendar.js +1 -1
- package/dist/components/card/Card.js +1 -1
- package/dist/components/carousel/Carousel.d.ts +4 -0
- package/dist/components/carousel/Carousel.js +1 -1
- package/dist/components/chat-bubble/ChatBubble.js +1 -1
- package/dist/components/checkbox/Checkbox.js +1 -1
- package/dist/components/chip/Chip.d.ts +3 -1
- package/dist/components/chip/Chip.js +1 -1
- package/dist/components/code-block/CodeBlock.d.ts +6 -3
- package/dist/components/code-block/CodeBlock.js +1 -1
- package/dist/components/collapsible/Collapsible.d.ts +11 -1
- package/dist/components/collapsible/Collapsible.js +1 -1
- package/dist/components/color-picker/ColorPicker.js +1 -1
- package/dist/components/combobox/Combobox.d.ts +11 -1
- 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/container/Container.js +1 -1
- package/dist/components/context-window/ContextWindow.d.ts +103 -0
- package/dist/components/context-window/ContextWindow.js +1 -0
- package/dist/components/context-window/index.d.ts +2 -0
- package/dist/components/context-window/index.js +1 -0
- package/dist/components/data-list/DataList.js +1 -1
- package/dist/components/data-table/DataTable.d.ts +12 -1
- 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.js +1 -1
- package/dist/components/date-time-picker/DateTimePicker.js +1 -1
- package/dist/components/dialog/Dialog.d.ts +12 -0
- package/dist/components/dialog/Dialog.js +1 -1
- package/dist/components/divider/Divider.js +1 -1
- package/dist/components/drawer/Drawer.d.ts +7 -0
- package/dist/components/drawer/Drawer.js +1 -1
- package/dist/components/empty/Empty.js +1 -1
- package/dist/components/fieldset/Fieldset.js +1 -1
- package/dist/components/file-picker/FilePicker.d.ts +12 -4
- package/dist/components/file-picker/FilePicker.js +1 -1
- package/dist/components/flex/Flex.d.ts +8 -2
- package/dist/components/flex/Flex.js +1 -1
- package/dist/components/floating-action-button/FloatingActionButton.d.ts +16 -1
- package/dist/components/floating-action-button/FloatingActionButton.js +1 -1
- package/dist/components/floating-bottom-navigation/FloatingBottomNavigation.js +1 -1
- package/dist/components/footer/Footer.d.ts +8 -0
- package/dist/components/footer/Footer.js +1 -1
- package/dist/components/form/Form.d.ts +4 -2
- package/dist/components/form/Form.js +1 -1
- package/dist/components/gallery/Gallery.d.ts +56 -3
- package/dist/components/gallery/Gallery.js +1 -1
- package/dist/components/gallery/GalleryViewer.js +1 -1
- package/dist/components/gauge-chart/GaugeChart.d.ts +1 -1
- package/dist/components/gauge-chart/GaugeChart.js +1 -1
- package/dist/components/grid/Grid.js +1 -1
- package/dist/components/grid-container/GridContainer.js +1 -1
- package/dist/components/header/Header.js +1 -1
- package/dist/components/heatmap-chart/HeatmapChart.d.ts +20 -1
- package/dist/components/heatmap-chart/HeatmapChart.js +1 -1
- package/dist/components/highlight/Highlight.js +1 -1
- package/dist/components/how-to-steps/HowToSteps.d.ts +26 -1
- package/dist/components/how-to-steps/HowToSteps.js +1 -1
- package/dist/components/icon/Icon.js +1 -1
- package/dist/components/icon-button/IconButton.d.ts +0 -20
- package/dist/components/icon-button/IconButton.js +1 -1
- package/dist/components/image/Image.d.ts +137 -11
- package/dist/components/image/Image.js +1 -1
- package/dist/components/image/index.d.ts +1 -1
- package/dist/components/inline-citation/InlineCitation.d.ts +53 -0
- package/dist/components/inline-citation/InlineCitation.js +1 -0
- package/dist/components/inline-citation/index.d.ts +2 -0
- package/dist/components/inline-citation/index.js +1 -0
- package/dist/components/line-chart/LineChart.d.ts +16 -5
- package/dist/components/line-chart/LineChart.js +1 -1
- package/dist/components/list/List.js +1 -1
- package/dist/components/menu/Menu.d.ts +25 -11
- package/dist/components/menu/Menu.js +1 -1
- package/dist/components/menubar/Menubar.js +1 -1
- package/dist/components/meter/Meter.d.ts +6 -0
- package/dist/components/meter/Meter.js +1 -1
- package/dist/components/mockup/Mockup.js +1 -1
- package/dist/components/navigation-menu/NavigationMenu.d.ts +10 -1
- package/dist/components/navigation-menu/NavigationMenu.js +1 -1
- package/dist/components/number-field/NumberField.d.ts +20 -6
- package/dist/components/number-field/NumberField.js +1 -1
- package/dist/components/otp-field/OtpField.d.ts +7 -0
- package/dist/components/otp-field/OtpField.js +1 -1
- package/dist/components/overlay/Overlay.d.ts +1 -1
- package/dist/components/overlay/Overlay.js +1 -1
- package/dist/components/page-layout/PageLayout.d.ts +11 -0
- package/dist/components/page-layout/PageLayout.js +1 -1
- package/dist/components/pagination/Pagination.js +1 -1
- package/dist/components/panes/Panes.d.ts +11 -0
- package/dist/components/panes/Panes.js +1 -1
- package/dist/components/pie-chart/PieChart.d.ts +34 -3
- package/dist/components/pie-chart/PieChart.js +1 -1
- package/dist/components/pill/Pill.d.ts +8 -0
- package/dist/components/pill/Pill.js +1 -1
- package/dist/components/popconfirm/Popconfirm.d.ts +10 -3
- package/dist/components/popconfirm/Popconfirm.js +1 -1
- package/dist/components/popover/Popover.d.ts +8 -1
- package/dist/components/popover/Popover.js +1 -1
- package/dist/components/portal/Portal.js +1 -1
- package/dist/components/progress-box/ProgressBox.js +1 -1
- package/dist/components/progress-circular/ProgressCircular.js +1 -1
- package/dist/components/progress-linear/ProgressLinear.js +1 -1
- package/dist/components/prompt-input/PromptInput.d.ts +104 -0
- package/dist/components/prompt-input/PromptInput.js +1 -0
- package/dist/components/prompt-input/index.d.ts +2 -0
- package/dist/components/prompt-input/index.js +1 -0
- package/dist/components/provider/NebaProvider.d.ts +3 -3
- package/dist/components/provider/NebaProvider.js +1 -1
- package/dist/components/radio-group/RadioGroup.js +1 -1
- package/dist/components/rating/Rating.d.ts +4 -1
- package/dist/components/rating/Rating.js +1 -1
- package/dist/components/reasoning/Reasoning.d.ts +78 -0
- package/dist/components/reasoning/Reasoning.js +1 -0
- package/dist/components/reasoning/index.d.ts +2 -0
- package/dist/components/reasoning/index.js +1 -0
- package/dist/components/scatter-chart/ScatterChart.js +1 -1
- package/dist/components/scroll-area/ScrollArea.js +1 -1
- package/dist/components/scroll-zone/ScrollZone.d.ts +10 -0
- package/dist/components/scroll-zone/ScrollZone.js +1 -1
- package/dist/components/segmented-button/SegmentedButton.js +1 -1
- package/dist/components/select/Select.js +1 -1
- package/dist/components/shortcut/Shortcut.js +1 -1
- package/dist/components/show/Show.d.ts +6 -5
- package/dist/components/show/Show.js +1 -1
- package/dist/components/sidebar/Sidebar.d.ts +7 -5
- package/dist/components/sidebar/Sidebar.js +1 -1
- package/dist/components/sidebar/SidebarTrigger.js +1 -1
- package/dist/components/skeleton/Skeleton.d.ts +1 -1
- package/dist/components/skeleton/Skeleton.js +1 -1
- package/dist/components/slider/Slider.d.ts +13 -1
- package/dist/components/slider/Slider.js +1 -1
- package/dist/components/sources/Sources.d.ts +78 -0
- package/dist/components/sources/Sources.js +1 -0
- package/dist/components/sources/index.d.ts +2 -0
- package/dist/components/sources/index.js +1 -0
- package/dist/components/sparkline/Sparkline.d.ts +14 -1
- package/dist/components/sparkline/Sparkline.js +1 -1
- package/dist/components/spoiler/Spoiler.js +1 -1
- package/dist/components/stack/Stack.d.ts +2 -2
- package/dist/components/stack/Stack.js +1 -1
- package/dist/components/statistic/Statistic.js +1 -1
- package/dist/components/streaming-text/StreamingText.d.ts +75 -0
- package/dist/components/streaming-text/StreamingText.js +1 -0
- package/dist/components/streaming-text/index.d.ts +2 -0
- package/dist/components/streaming-text/index.js +1 -0
- package/dist/components/switch/Switch.js +1 -1
- package/dist/components/table/Table.d.ts +8 -2
- package/dist/components/table/Table.js +1 -1
- package/dist/components/tabs/Tabs.d.ts +17 -1
- package/dist/components/tabs/Tabs.js +1 -1
- 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/Timeline.d.ts +8 -0
- package/dist/components/timeline/Timeline.js +1 -1
- package/dist/components/timeline-chart/TimelineChart.js +1 -1
- package/dist/components/toast/Toast.d.ts +9 -3
- package/dist/components/toast/Toast.js +1 -1
- package/dist/components/toggle/Toggle.js +1 -1
- package/dist/components/toggle-group/ToggleGroup.js +1 -1
- package/dist/components/tool-call/ToolCall.d.ts +104 -0
- package/dist/components/tool-call/ToolCall.js +1 -0
- package/dist/components/tool-call/index.d.ts +2 -0
- package/dist/components/tool-call/index.js +1 -0
- package/dist/components/toolbar/Toolbar.d.ts +8 -0
- package/dist/components/toolbar/Toolbar.js +1 -1
- package/dist/components/tooltip/Tooltip.js +1 -1
- package/dist/components/tour/Tour.d.ts +2 -0
- 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.d.ts +6 -0
- 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 +9 -7
- package/dist/components/visually-hidden/VisuallyHidden.js +1 -1
- package/dist/components/window-pane/WindowPane.d.ts +2 -2
- package/dist/components/window-pane/WindowPane.js +1 -1
- package/dist/hooks/useElementSize.d.ts +3 -1
- package/dist/hooks/useElementSize.js +1 -1
- package/dist/hooks/useOnScreen.d.ts +3 -0
- package/dist/hooks/useOnScreen.js +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.js +1 -1
- package/dist/internal/animate.d.ts +63 -16
- package/dist/internal/animate.js +1 -1
- package/dist/internal/calendar.d.ts +6 -1
- package/dist/internal/calendar.js +1 -1
- package/dist/internal/chart-brush.d.ts +53 -0
- package/dist/internal/chart-brush.js +1 -0
- package/dist/internal/chart-frame.d.ts +186 -30
- package/dist/internal/chart-frame.js +1 -1
- package/dist/internal/chart-line.js +1 -1
- package/dist/internal/chart.d.ts +133 -6
- package/dist/internal/chart.js +1 -1
- package/dist/internal/children.d.ts +15 -0
- package/dist/internal/children.js +1 -0
- package/dist/internal/color.d.ts +4 -0
- package/dist/internal/color.js +1 -1
- package/dist/internal/csv.d.ts +12 -1
- package/dist/internal/csv.js +1 -1
- package/dist/internal/data-table.d.ts +28 -10
- package/dist/internal/data-table.js +1 -1
- package/dist/internal/date.d.ts +12 -5
- package/dist/internal/date.js +1 -1
- package/dist/internal/defaults.d.ts +6 -1
- package/dist/internal/defaults.js +1 -1
- package/dist/internal/drag.d.ts +13 -1
- package/dist/internal/drag.js +1 -1
- package/dist/internal/drop.d.ts +61 -0
- package/dist/internal/drop.js +1 -0
- package/dist/internal/fieldset.d.ts +13 -0
- package/dist/internal/fieldset.js +1 -0
- package/dist/internal/glow.d.ts +102 -0
- package/dist/internal/glow.js +1 -0
- package/dist/internal/highlight.js +1 -1
- package/dist/internal/i18n.d.ts +232 -11
- package/dist/internal/i18n.js +1 -1
- package/dist/internal/icons.d.ts +13 -2
- package/dist/internal/icons.js +1 -1
- package/dist/internal/inert.d.ts +13 -0
- package/dist/internal/inert.js +1 -0
- package/dist/internal/initials.d.ts +8 -3
- package/dist/internal/initials.js +1 -1
- package/dist/internal/keys.d.ts +13 -0
- package/dist/internal/keys.js +1 -1
- package/dist/internal/link.d.ts +13 -15
- package/dist/internal/link.js +1 -1
- package/dist/internal/media.d.ts +9 -17
- package/dist/internal/media.js +1 -1
- package/dist/internal/menu.d.ts +6 -1
- package/dist/internal/mockup.d.ts +5 -4
- package/dist/internal/mockup.js +1 -1
- package/dist/internal/observe.d.ts +12 -0
- package/dist/internal/observe.js +1 -1
- package/dist/internal/page-layout.d.ts +10 -8
- package/dist/internal/page-layout.js +1 -1
- package/dist/internal/picker.d.ts +1 -1
- package/dist/internal/picker.js +1 -1
- package/dist/internal/progress.d.ts +11 -5
- package/dist/internal/progress.js +1 -1
- package/dist/internal/responsive.d.ts +0 -8
- package/dist/internal/responsive.js +1 -1
- package/dist/internal/run.d.ts +71 -0
- package/dist/internal/run.js +1 -0
- package/dist/internal/screen.d.ts +12 -0
- package/dist/internal/screen.js +1 -0
- package/dist/internal/styles.d.ts +185 -14
- package/dist/internal/styles.js +1 -1
- package/dist/internal/text.d.ts +3 -3
- package/dist/internal/text.js +1 -1
- package/dist/internal/window.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 +516 -53
- package/dist/types.d.ts +167 -7
- package/dist/types.js +0 -8
- package/package.json +43 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as a from"react";import{Autocomplete as l}from"@base-ui/react/autocomplete";import{Dialog as n}from"@base-ui/react/dialog";import{Shortcut as r}from"../shortcut/Shortcut.js";import{matchesShortcut as s}from"../../internal/keys.js";import{commandMessages as o,useMessages as i}from"../../internal/i18n.js";import{searchHaystack as c,searchText as
|
|
1
|
+
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as a from"react";import{Autocomplete as l}from"@base-ui/react/autocomplete";import{Dialog as n}from"@base-ui/react/dialog";import{Shortcut as r}from"../shortcut/Shortcut.js";import{matchesShortcut as s}from"../../internal/keys.js";import{commandMessages as o,useMessages as i}from"../../internal/i18n.js";import{searchHaystack as c,searchText as m}from"../../internal/search.js";import{controlTextLeadingClasses as d,cx as p,hasContent as u,metaTextClasses as h,popupFadeClasses as x,radiusClasses as f,surfaceClasses as b,surfaceSlots as g,toLength as v}from"../../internal/styles.js";import{useStyleDefaults as y}from"../../internal/defaults.js";const w=["fixed inset-0 z-(--neba-z-portal) bg-(--neba-scrim)","[backdrop-filter:blur(2px)]",x].join(" "),k=[b,"relative flex w-full flex-col overflow-hidden","border text-(--neba-fg) bg-(--n-panel-press)","[border-color:var(--n-line)]","[box-shadow:var(--neba-shadow-3),var(--neba-plate-glass)]","[outline:none]",x].join(" "),N={xs:"max-w-sm",sm:"max-w-md",md:"max-w-xl",lg:"max-w-2xl",xl:"max-w-3xl"},j={xs:"h-9",sm:"h-10",md:"h-12",lg:"h-14",xl:"h-16"},z={xs:"py-1",sm:"py-1.5",md:"py-2",lg:"py-2.5",xl:"py-3"},C={xs:"px-2.5",sm:"px-3",md:"px-3.5",lg:"px-4",xl:"px-5"},S=["flex cursor-pointer items-center gap-3 select-none","[transition:background-color_var(--neba-duration)_var(--neba-ease)]","data-[highlighted]:bg-(--n-soft) data-[highlighted]:text-(--n-on-tint)","data-[disabled]:cursor-not-allowed data-[disabled]:text-(--neba-disabled-fg)"].join(" ");function M(e){return c([e.label,e.group,...e.keywords??[]])}export function CommandPalette(c){const{items:x,open:b,defaultOpen:E=!1,onOpenChange:L,onSelect:$,shortcut:O="Mod+K",width:P,maxHeight:V=320,locale:_,placeholder:D,emptyMessage:G,label:H,size:I="md",color:R="primary",density:B="default",className:F,classNames:K}=y(c,["size","density","locale"]),T=i(o,_),[W,q]=a.useState(E),[A,J]=a.useState(""),Q=b??W,[U,X]=a.useState(Q);Q!==U&&(X(Q),Q||J(""));const Y=a.useCallback(e=>{void 0===b&&q(e),L?.(e)},[b,L]);a.useEffect(()=>{if(!1===O)return;const e=e=>{s(e,O)&&(e.preventDefault(),Y(!0))};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[O,Y]);const Z=a.useMemo(()=>x.map(M),[x]),ee=a.useMemo(()=>{const e=m(A);return""===e?x:x.filter((t,a)=>Z[a].includes(e))},[x,Z,A]),{groups:te,order:ae}=a.useMemo(()=>{const e=[],t=new Map;return ee.forEach((a,l)=>{t.set(a,l);const n=e[e.length-1];n&&n.value===a.group?n.items.push(a):e.push({key:`${e.length}:${a.group??""}`,value:a.group,items:[a]})}),{groups:e,order:t}},[ee]),le=v(P),ne=v(V);return e(n.Root,{open:Q,onOpenChange:Y,children:t(n.Portal,{children:[e(n.Backdrop,{className:p("neba-portal",w,K?.backdrop)}),e(n.Viewport,{className:p("neba-portal fixed inset-0 z-(--neba-z-portal) flex justify-center p-4 pt-[12vh]",K?.viewport),children:e(n.Popup,{"aria-label":H??T.label,className:p(k,f[I],d[I],void 0===le?N[I]:"","self-start",F),style:{...g(R,3),...void 0===le?null:{maxWidth:le}},children:t(l.Root,{open:!0,mode:"list",items:te,filter:null,value:A,onValueChange:e=>J(e),itemToStringValue:e=>e.label,children:[e("div",{className:`flex shrink-0 items-center border-b [border-color:var(--n-line)] ${C[I]}`,children:e(l.Input,{autoFocus:!0,placeholder:D??T.search,className:p("neba-input min-w-0 flex-1 bg-transparent [font:inherit] text-inherit [outline:none]","placeholder:text-(--neba-muted-fg) caret-(--n-accent)",j[I],K?.input)})}),e(l.List,{className:p("min-h-0 flex-1 overflow-y-auto overscroll-contain p-1",K?.list),style:{maxHeight:ne},children:a=>t(l.Group,{items:a.items,children:[a.value?e(l.GroupLabel,{className:p(C[I],"pt-2 pb-1 font-medium text-(--neba-muted-fg)",h[I],K?.group),children:a.value}):null,e(l.Collection,{children:a=>t(l.Item,{index:ae.get(a),value:a,disabled:a.disabled,onClick:()=>(e=>{e.disabled||(e.onSelect?.(),$?.(e),Y(!1))})(a),className:p(S,f[I],C[I],z["compact"===B?"xs":I],K?.item),children:[u(a.icon)?e("span",{className:"flex h-[1lh] shrink-0 items-center [&_svg]:size-[1.15em]",children:a.icon}):null,t("span",{className:"flex min-w-0 flex-1 flex-col",children:[e("span",{className:"truncate",children:a.label}),u(a.description)?e("span",{className:`truncate text-(--neba-muted-fg) ${h[I]}`,children:a.description}):null]}),a.shortcut?e(r,{size:"xs",keys:a.shortcut,className:"shrink-0"}):null]},a.value)})]},a.key)}),e(l.Empty,{className:p(C[I],"py-6 text-center text-(--neba-muted-fg)",h[I],K?.empty),children:G??T.empty})]})})})]})})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as
|
|
1
|
+
"use client";import{jsx as e,Fragment as t,jsxs as o}from"react/jsx-runtime";import{DefaultsContext as n}from"../../internal/defaults.js";import*as r from"react";import{Button as i}from"../button/Button.js";import{Dialog as l}from"../dialog/Dialog.js";import{confirmMessages as s,useMessages as c}from"../../internal/i18n.js";const a=/*@__PURE__*/r.createContext(null);export function ConfirmProvider({children:u,defaults:m}){const[d,f]=r.useState([]),p=r.useRef(null),C=r.useRef(null),v=r.useRef(null),[h,x]=r.useState(void 0),b=d[0];b&&b.options!==h&&x(b.options);const g=r.useCallback(e=>new Promise(t=>{p.current||(p.current=document.activeElement instanceof HTMLElement?document.activeElement:null),f(o=>[...o,{options:"string"==typeof e?{title:e}:e,settle:t}])}),[]),j=e=>{b&&(b.settle(e),f(e=>e.slice(1)))},w={...m,...h},y=r.useContext(n),E=c(s,w.locale??y?.locale),P="danger"===w.color&&!w.alert;return o(a.Provider,{value:g,children:[u,e(l,{open:void 0!==b,onOpenChange:e=>{e||j(!0===w.alert)},size:w.size??"sm",color:w.color??"primary",width:w.width,title:w.title,description:w.description,dismissible:w.dismissible??!0,showClose:!1,role:"alertdialog",initialFocus:P?C:v,finalFocus:()=>{const e=p.current;return p.current=null,!e?.isConnected||e},actions:o(t,{children:[w.alert?null:e(i,{ref:C,variant:"text",color:"secondary",onClick:()=>j(!1),children:w.cancelLabel??E.cancel}),e(i,{ref:v,variant:"solid",color:w.color??"primary",onClick:()=>j(!0),children:w.confirmLabel??E.confirm})]})})]})}export function useConfirm(){const e=r.useContext(a);if(!e)throw new Error("neba: useConfirm() needs a <ConfirmProvider> above it.");return e}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import*as e from"react";import{useRender as r}from"@base-ui/react/use-render";import{boxPaddingXClasses as t}from"../box/Box.js";import{responsiveSlots as
|
|
1
|
+
"use client";import*as e from"react";import{useRender as r}from"@base-ui/react/use-render";import{boxPaddingXClasses as t}from"../box/Box.js";import{responsiveSlots as n}from"../../internal/responsive.js";import{cx as s,measureValue as o}from"../../internal/styles.js";import{useStyleDefaults as a}from"../../internal/defaults.js";export const Container=/*@__PURE__*/e.forwardRef(function Container(e,i){const{maxWidth:m,padded:d=!0,size:l="md",density:f="default",centered:c=!0,render:p,className:u,style:x,children:w,...y}=a(e,["size","density"]),b=s("neba-measure block w-full max-w-(--n-max-w)",c?"mx-auto":"",d?t[f][l]:"",u??"");return r({render:p,ref:i,props:{className:b,style:{...n("max-w",m,o),...x},children:w,...y}})});
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type ContextMessages } from '../../internal/i18n.js';
|
|
3
|
+
import type { NebaColor, NebaSize, NebaSlots, NebaThreshold } from '../../types.js';
|
|
4
|
+
/**
|
|
5
|
+
* What a context window is spent on.
|
|
6
|
+
*
|
|
7
|
+
* Four, in the order they are drawn, and the order is the point: it is the
|
|
8
|
+
* order the tokens were *spent* in, so a reader comparing two turns is
|
|
9
|
+
* comparing the same rows in the same places. Every one is optional — a model
|
|
10
|
+
* with no reasoning trace and no cache reports two of them, and the rows it did
|
|
11
|
+
* not report are not drawn.
|
|
12
|
+
*/
|
|
13
|
+
export interface ContextTokens {
|
|
14
|
+
/** Everything sent: the prompt, the history, the tool definitions. */
|
|
15
|
+
input?: number;
|
|
16
|
+
/** Everything the model wrote back. */
|
|
17
|
+
output?: number;
|
|
18
|
+
/** What it spent thinking, where the model bills that separately. */
|
|
19
|
+
reasoning?: number;
|
|
20
|
+
/**
|
|
21
|
+
* The part of the input that was served from a cache.
|
|
22
|
+
*
|
|
23
|
+
* A **portion of `input`** rather than a fifth thing beside it, which is what
|
|
24
|
+
* every model that reports it means by it — so it is drawn as a row and left
|
|
25
|
+
* out of the total. Adding it would report the window as fuller than it is,
|
|
26
|
+
* by exactly the number the cache saved.
|
|
27
|
+
*/
|
|
28
|
+
cached?: number;
|
|
29
|
+
}
|
|
30
|
+
/** The parts a ContextWindow draws behind its root. */
|
|
31
|
+
export type ContextWindowSlot = 'ring' | 'label' | 'breakdown';
|
|
32
|
+
export interface ContextWindowProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'color'> {
|
|
33
|
+
/** How many tokens the window holds. */
|
|
34
|
+
max: number;
|
|
35
|
+
/**
|
|
36
|
+
* How many have gone. Left out, it is `input` plus `output` plus `reasoning`
|
|
37
|
+
* — which is the usual case, since a caller who has the split has the total.
|
|
38
|
+
*
|
|
39
|
+
* `cached` is deliberately not in that sum: it is a portion of `input`, and
|
|
40
|
+
* counting it twice would report the window as fuller than it is.
|
|
41
|
+
*/
|
|
42
|
+
used?: number;
|
|
43
|
+
/**
|
|
44
|
+
* The split. Drawn as a row per part under the ring, in the fixed order
|
|
45
|
+
* above, and only for the parts that were reported.
|
|
46
|
+
*/
|
|
47
|
+
tokens?: ContextTokens;
|
|
48
|
+
/** What the turn cost, in `currency`. Drawn under the split. */
|
|
49
|
+
cost?: number;
|
|
50
|
+
/**
|
|
51
|
+
* The currency `cost` is in, as an ISO 4217 code.
|
|
52
|
+
* @default 'USD'
|
|
53
|
+
*/
|
|
54
|
+
currency?: string;
|
|
55
|
+
/**
|
|
56
|
+
* Where the ring changes colour. Read in the order given, in tokens — so
|
|
57
|
+
* `{ from: 0.8 * max, color: 'warning' }` rather than a percentage.
|
|
58
|
+
*/
|
|
59
|
+
thresholds?: readonly NebaThreshold[];
|
|
60
|
+
/** What the gauge is called. Defaults to the `locale`'s word for it. */
|
|
61
|
+
label?: React.ReactNode;
|
|
62
|
+
/**
|
|
63
|
+
* Draws the split under the ring. Off, the gauge is the ring and the counts
|
|
64
|
+
* beside it, which is what fits in a toolbar.
|
|
65
|
+
* @default true
|
|
66
|
+
*/
|
|
67
|
+
breakdown?: boolean;
|
|
68
|
+
/** @default 'md' */
|
|
69
|
+
size?: NebaSize;
|
|
70
|
+
/** The family the ring carries before any threshold is reached. @default 'primary' */
|
|
71
|
+
color?: NebaColor;
|
|
72
|
+
/**
|
|
73
|
+
* The language the counts and the money are written in, as a BCP 47 tag. It
|
|
74
|
+
* is what decides whether 12,400 tokens read as `12.4K` or `1.2만`.
|
|
75
|
+
*/
|
|
76
|
+
locale?: string;
|
|
77
|
+
/** The gauge's own words, written out. Overrides the `locale`'s. */
|
|
78
|
+
labels?: Partial<ContextMessages>;
|
|
79
|
+
/** Class names for the parts behind the root. */
|
|
80
|
+
classNames?: NebaSlots<ContextWindowSlot>;
|
|
81
|
+
/** Anything to put under the split — a model name, a "clear the thread" link. */
|
|
82
|
+
children?: React.ReactNode;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* How much of the context window has gone, and what went into it.
|
|
86
|
+
*
|
|
87
|
+
* A [Meter](../feedback/meter) draws the same reading as a bar and would do
|
|
88
|
+
* most of this. What it cannot do is the part that makes this a component: the
|
|
89
|
+
* counts are tokens, which are five and six digits long and have to be written
|
|
90
|
+
* compactly *in the reader's own language*; the split into input, output,
|
|
91
|
+
* reasoning and cached is four numbers that only mean something next to each
|
|
92
|
+
* other; and the money underneath is a third unit again.
|
|
93
|
+
*
|
|
94
|
+
* Base UI's Meter owns the semantics — `role="meter"`, the value and the range
|
|
95
|
+
* — so the reading is announced as a reading rather than as a picture.
|
|
96
|
+
*
|
|
97
|
+
* The four parts take the first four chart palette slots rather than four
|
|
98
|
+
* colour families, and that is deliberate: input and output are *entities*,
|
|
99
|
+
* not severities, and nothing about either means success or danger. The slots
|
|
100
|
+
* are handed out in order because it is the adjacent pairs that were checked
|
|
101
|
+
* for colour-vision separation.
|
|
102
|
+
*/
|
|
103
|
+
export declare const ContextWindow: React.ForwardRefExoticComponent<ContextWindowProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as s from"react";import{Meter as r}from"@base-ui/react/meter";import{contextMessages as t,fillMessage as l,useMessages as n}from"../../internal/i18n.js";import{numberFormatter as i}from"../../internal/format.js";import{progressFraction as o,progressSlots as c,thresholdColor as m}from"../../internal/progress.js";import{cx as d,gapClasses as f,hasContent as u,metaTextClasses as x,sheetTitleClasses as h,stackGapClasses as p}from"../../internal/styles.js";import{useStyleDefaults as b}from"../../internal/defaults.js";const k=[{key:"input",slot:1},{key:"output",slot:2},{key:"reasoning",slot:3},{key:"cached",slot:4}],g={xs:26,sm:30,md:36,lg:44,xl:54},y={xs:3,sm:3.5,md:4,lg:5,xl:6},N={xs:"size-1.5",sm:"size-2",md:"size-2",lg:"size-2.5",xl:"size-3"};export const ContextWindow=/*@__PURE__*/s.forwardRef(function ContextWindow(s,v){const{max:w,used:j,tokens:z,cost:$,currency:D="USD",thresholds:W,label:_,breakdown:C=!0,size:L="md",color:M="primary",locale:R,labels:V,classNames:A,className:B,style:F,children:I,...P}=b(s,["size","locale"]),S={...n(t,R),...V},T=k.filter(({key:e})=>"number"==typeof z?.[e]),U=j??T.reduce((e,{key:a})=>"cached"===a?e:e+(z?.[a]??0),0),q=o(U,0,w),E=m(U,M,W),G=i(R,{notation:"compact",maximumFractionDigits:1}),H=i(R,{style:"currency",currency:D}),J=l(S.usage,{used:G.format(U),max:G.format(w)}),K=g[L],O=K/2,Q=y[L],X=O-Q/2,Y=2*Math.PI*X;return a(r.Root,{ref:v,value:U,min:0,max:w,getAriaValueText:()=>J,className:d("flex w-full flex-col",p[L],B??""),style:{...c(E),...F},...P,children:[a("div",{className:d("flex items-center",f[L]),children:[a("svg",{className:d("shrink-0",A?.ring??""),width:K,height:K,viewBox:`0 0 ${K} ${K}`,fill:"none","aria-hidden":"true",children:[e("circle",{cx:O,cy:O,r:X,stroke:"var(--n-soft)",strokeWidth:Q}),e("circle",{cx:O,cy:O,r:X,stroke:"var(--n-fill)",strokeWidth:Q,strokeLinecap:"round",strokeDasharray:Y,strokeDashoffset:Y*(1-(q??0)),transform:`rotate(-90 ${O} ${O})`,className:"[transition:stroke-dashoffset_var(--neba-duration-fill)_var(--neba-ease),stroke_var(--neba-duration)_var(--neba-ease)]"})]}),a("div",{className:d("flex min-w-0 flex-1 flex-col",A?.label??""),children:[e(r.Label,{className:d("min-w-0 truncate font-medium text-(--neba-fg)",x[L]),children:u(_)?_:S.label}),e(r.Value,{className:d("min-w-0 truncate tabular-nums text-(--neba-fg)",h[L]),children:()=>J})]}),"number"==typeof $?a("div",{className:"flex shrink-0 flex-col items-end",children:[e("span",{className:d("text-(--neba-muted-fg)",x[L]),children:S.cost}),e("span",{className:d("tabular-nums text-(--neba-fg)",h[L]),children:H.format($)})]}):null]}),C&&T.length>0?e("ul",{className:d("m-0 flex list-none flex-wrap gap-x-4 gap-y-1 p-0",x[L],A?.breakdown??""),children:T.map(({key:s,slot:r})=>a("li",{className:"flex items-center gap-1.5",children:[e("span",{"aria-hidden":"true",className:d("shrink-0 rounded-[2px]",N[L]),style:{background:`var(--neba-chart-${r})`}}),e("span",{className:"text-(--neba-muted-fg)",children:S[s]}),e("span",{className:"tabular-nums text-(--neba-fg)",children:G.format(z?.[s]??0)})]},s))}):null,I]})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{ContextWindow}from"./ContextWindow.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as t,Fragment as
|
|
1
|
+
"use client";import{jsx as t,Fragment as n,jsxs as e}from"react/jsx-runtime";import*as d from"react";import{controlTextLeadingClasses as p,hasContent as o,metaTextClasses as a,toLength as l}from"../../internal/styles.js";import{useStyleDefaults as r}from"../../internal/defaults.js";const f=/*@__PURE__*/d.createContext({size:"md",density:"default",orientation:"horizontal"}),m={default:{xs:"gap-x-3",sm:"gap-x-4",md:"gap-x-5",lg:"gap-x-6",xl:"gap-x-8"},compact:{xs:"gap-x-2",sm:"gap-x-2.5",md:"gap-x-3",lg:"gap-x-4",xl:"gap-x-5"}},s={default:{xs:"gap-y-2",sm:"gap-y-2.5",md:"gap-y-3",lg:"gap-y-3.5",xl:"gap-y-4"},compact:{xs:"gap-y-1",sm:"gap-y-1.5",md:"gap-y-2",lg:"gap-y-2",xl:"gap-y-2.5"}},y=["[&>dt:nth-of-type(n+2)]:border-t [&>dd:nth-of-type(n+2)]:border-t","[&>dt]:[border-color:var(--neba-border)] [&>dd]:[border-color:var(--neba-border)]"].join(" "),i={default:{xs:"[&>dt:nth-of-type(n+2)]:pt-2 [&>dd:nth-of-type(n+2)]:pt-2",sm:"[&>dt:nth-of-type(n+2)]:pt-2.5 [&>dd:nth-of-type(n+2)]:pt-2.5",md:"[&>dt:nth-of-type(n+2)]:pt-3 [&>dd:nth-of-type(n+2)]:pt-3",lg:"[&>dt:nth-of-type(n+2)]:pt-3.5 [&>dd:nth-of-type(n+2)]:pt-3.5",xl:"[&>dt:nth-of-type(n+2)]:pt-4 [&>dd:nth-of-type(n+2)]:pt-4"},compact:{xs:"[&>dt:nth-of-type(n+2)]:pt-1 [&>dd:nth-of-type(n+2)]:pt-1",sm:"[&>dt:nth-of-type(n+2)]:pt-1.5 [&>dd:nth-of-type(n+2)]:pt-1.5",md:"[&>dt:nth-of-type(n+2)]:pt-2 [&>dd:nth-of-type(n+2)]:pt-2",lg:"[&>dt:nth-of-type(n+2)]:pt-2 [&>dd:nth-of-type(n+2)]:pt-2",xl:"[&>dt:nth-of-type(n+2)]:pt-2.5 [&>dd:nth-of-type(n+2)]:pt-2.5"}},h={default:{xs:"[&>dt:nth-of-type(n+2)]:mt-2",sm:"[&>dt:nth-of-type(n+2)]:mt-2.5",md:"[&>dt:nth-of-type(n+2)]:mt-3",lg:"[&>dt:nth-of-type(n+2)]:mt-3.5",xl:"[&>dt:nth-of-type(n+2)]:mt-4"},compact:{xs:"[&>dt:nth-of-type(n+2)]:mt-1",sm:"[&>dt:nth-of-type(n+2)]:mt-1.5",md:"[&>dt:nth-of-type(n+2)]:mt-2",lg:"[&>dt:nth-of-type(n+2)]:mt-2",xl:"[&>dt:nth-of-type(n+2)]:mt-2.5"}},x={default:{xs:"[&>dt:nth-of-type(n+2)]:pt-2",sm:"[&>dt:nth-of-type(n+2)]:pt-2.5",md:"[&>dt:nth-of-type(n+2)]:pt-3",lg:"[&>dt:nth-of-type(n+2)]:pt-3.5",xl:"[&>dt:nth-of-type(n+2)]:pt-4"},compact:{xs:"[&>dt:nth-of-type(n+2)]:pt-1",sm:"[&>dt:nth-of-type(n+2)]:pt-1.5",md:"[&>dt:nth-of-type(n+2)]:pt-2",lg:"[&>dt:nth-of-type(n+2)]:pt-2",xl:"[&>dt:nth-of-type(n+2)]:pt-2.5"}};export function DataListItem({label:l,children:r}){const{size:m,orientation:s}=d.useContext(f);return e(n,{children:[t("dt",{className:["min-w-0 text-(--neba-muted-fg)",a[m],"vertical"===s?"mb-0.5":"py-px"].join(" "),children:l}),t("dd",{className:`m-0 min-w-0 text-(--neba-fg) ${p[m]}`,children:o(r)?r:null})]})}export const DataList=/*@__PURE__*/d.forwardRef(function DataList(n,e){const{orientation:p="horizontal",labelWidth:o,dividers:a=!1,size:c="md",density:g="default",className:b,style:u,children:v,...j}=r(n,["size","density"]),z=d.useMemo(()=>({size:c,density:g,orientation:p}),[c,g,p]),$=l(o);return t(f.Provider,{value:z,children:t("dl",{ref:e,className:["m-0 min-w-0","vertical"===p?"flex flex-col":"grid [grid-template-columns:var(--n-label)_minmax(0,1fr)] items-baseline","vertical"===p?h[g][c]:`${m[g][c]} ${s[g][c]}`,a?"vertical"===p?`[&>dt:nth-of-type(n+2)]:border-t [&>dt]:[border-color:var(--neba-border)] ${x[g][c]}`:`${y} ${i[g][c]}`:"",b??""].filter(Boolean).join(" "),style:{"--n-label":$??"max-content",...u},...j,children:v})})});
|
|
@@ -282,7 +282,11 @@ export interface DataTableProps<Row> extends NebaStyleProps, Omit<React.Componen
|
|
|
282
282
|
selected?: readonly React.Key[];
|
|
283
283
|
/** Which start chosen, for an uncontrolled table. */
|
|
284
284
|
defaultSelected?: readonly React.Key[];
|
|
285
|
-
/**
|
|
285
|
+
/**
|
|
286
|
+
* The keys, and the rows behind them — including rows on other pages. A table
|
|
287
|
+
* whose caller does the paging keeps a key chosen on another page, and hands
|
|
288
|
+
* over no row for it, because it was never given one.
|
|
289
|
+
*/
|
|
286
290
|
onSelectedChange?: (selected: React.Key[], rows: Row[]) => void;
|
|
287
291
|
/**
|
|
288
292
|
* Adds a column of ticks, and one in the header that chooses every displayed
|
|
@@ -356,6 +360,13 @@ export interface DataTableProps<Row> extends NebaStyleProps, Omit<React.Componen
|
|
|
356
360
|
* in a viewer of your own, or to add a sheet around it.
|
|
357
361
|
*/
|
|
358
362
|
onExport?: (csv: string) => void;
|
|
363
|
+
/**
|
|
364
|
+
* Puts a `'` in front of an exported text cell that starts with `=`, `+`, `-`,
|
|
365
|
+
* `@`, a tab or a carriage return, so a spreadsheet shows it rather than
|
|
366
|
+
* running it as a formula. Turn it off only for a file no spreadsheet opens.
|
|
367
|
+
* @default true
|
|
368
|
+
*/
|
|
369
|
+
exportEscapeFormulas?: boolean;
|
|
359
370
|
/**
|
|
360
371
|
* Called when an edited cell is committed. Without it, nothing is editable.
|
|
361
372
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t,Fragment as n}from"react/jsx-runtime";import*as r from"react";import{Box as a}from"../box/Box.js";import{Button as l}from"../button/Button.js";import{Checkbox as o}from"../checkbox/Checkbox.js";import{Pagination as s}from"../pagination/Pagination.js";import{Select as i}from"../select/Select.js";import{TextField as c}from"../text-field/TextField.js";import{compareValues as u,dataHeaderHeights as d,dataRowHeights as p,dataTickWidths as m,defaultColumnWidth as g,keysBetween as f,minColumnWidth as h,nextSort as y,pageBounds as b,sortRows as v,virtualWindow as k}from"../../internal/data-table.js";import{beginPointerDrag as x}from"../../internal/drag.js";import{emptyMessages as w,fillMessage as C,tableMessages as S,useMessages as M}from"../../internal/i18n.js";import{searchHaystack as N,searchText as K}from"../../internal/search.js";import{ChevronIcon as z}from"../../internal/icons.js";import{observeResize as _}from"../../internal/observe.js";import{downloadText as j,toCsv as $}from"../../internal/csv.js";import{controlTextLeadingClasses as D,cx as P,hasContent as T,metaTextClasses as R,paddingXValues as A,srOnlyClasses as E,toLength as I}from"../../internal/styles.js";import{useStyleDefaults as B}from"../../internal/defaults.js";const H=["[--n-row:transparent]","[transition:background-color_var(--neba-duration)_var(--neba-ease)]"].join(" "),F={"--n-stripe":"color-mix(in oklab, var(--neba-fg) 4%, transparent)"},O=["group/sort flex w-full min-w-0 cursor-pointer items-center gap-1","text-inherit [outline:none]","[transition:color_var(--neba-duration)_var(--neba-ease)]","hover:text-(--n-accent)","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-1","[&_svg]:pointer-events-none [&_svg]:size-[1.15em] [&_svg]:shrink-0"].join(" "),W=["absolute inset-y-0 z-10 w-2 cursor-col-resize select-none","end-0 translate-x-1/2 rtl:-translate-x-1/2","after:absolute after:inset-y-1 after:start-1/2 after:w-px","after:[background:transparent]","after:[transition:background_var(--neba-duration)_var(--neba-ease)]","hover:after:[background:var(--n-accent)] data-[dragging]:after:[background:var(--n-accent)]"].join(" ");function L(){return t("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[e("circle",{cx:"7.25",cy:"7.25",r:"4.75",stroke:"currentColor",strokeWidth:"1.5"}),e("path",{d:"m10.75 10.75 2.75 2.75",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}export function DataTable(X){const{headers:V,items:q,getRowKey:G,variant:U="outline",size:Y="sm",color:J="primary",density:Q="compact",elevation:Z=0,height:ee,maxHeight:te,rowHeight:ne,striped:re=!1,hoverable:ae=!0,stickyHeader:le=!0,caption:oe,label:se,empty:ie,virtual:ce=!0,overscan:ue=8,sortable:de=!1,sortMode:pe="single",sort:me,defaultSort:ge,onSortChange:fe,resizable:he=!1,columnWidths:ye,columnOrder:be,defaultColumnOrder:ve,onColumnOrderChange:ke,reorderable:xe=!1,defaultColumnWidths:we,onColumnWidthsChange:Ce,selectionMode:Se="none",selected:Me,defaultSelected:Ne,onSelectedChange:Ke,checkboxes:ze=!1,onRowClick:_e,onRowActivate:je,paging:$e="scroll",page:De,defaultPage:Pe=1,onPageChange:Te,pageSize:Re,defaultPageSize:Ae=25,onPageSizeChange:Ee,pageSizeOptions:Ie=[10,25,50,100],footer:Be,search:He,defaultSearch:Fe,onSearchChange:Oe,searchable:We=!1,searchPlaceholder:Le,filter:Xe,toolbar:Ve,exportable:qe=!1,exportFileName:Ge="table.csv",onExport:Ue,onCellEdit:Ye,groupBy:Je,collapsibleGroups:Qe=!0,defaultCollapsedGroups:Ze,manual:et=!1,rowCount:tt,locale:nt,className:rt,style:at,...lt}=B(X,["size","density","variant","locale"]),ot=M(S,nt),st=M(w,nt),it=r.useId(),ct=ne??p[Q][Y],ut=d[Q][Y],dt=A[Q][Y],pt=r.useMemo(()=>new Set(!0===et?["sort","filter","pages"]:et||[]),[et]),[mt,gt]=r.useState(()=>ve??[]),ft=be??mt,ht=r.useMemo(()=>{const e=V.filter(e=>!e.hidden),t=ft.map(t=>e.find(e=>e.key===t)).filter(e=>void 0!==e),n=e.filter(e=>!ft.includes(e.key)),r=0===ft.length?e:[...t,...n],a=e=>"start"===e.pinned?0:"end"===e.pinned?2:1;return r.map((e,t)=>({column:e,index:t})).sort((e,t)=>a(e.column)-a(t.column)||e.index-t.index).map(e=>e.column)},[V,ft]),yt=ht.some(e=>void 0!==e.group),bt="none"!==Se,vt="multiple"===Se,kt=bt&&ze,xt=r.useMemo(()=>q.map((e,t)=>{const n=G?G(e,t):t;return{row:e,identity:n,key:String(n),origin:t}}),[q,G]),[wt,Ct]=r.useState(Fe??""),St=(He??wt).trim(),Mt=""!==St&&!pt.has("filter"),Nt=r.useMemo(()=>ht.filter(e=>!1!==e.searchable),[ht]),Kt=r.useMemo(()=>Mt&&0!==Nt.length?xt.map(e=>N(Nt.map(t=>t.value?t.value(e.row):e.row[t.key]))):null,[xt,Nt,Mt]),zt=r.useMemo(()=>{if(pt.has("filter"))return xt;const e=K(St),t=""!==e&&Kt?xt.filter(t=>Kt[t.origin].includes(e)):xt;return Xe?t.filter(e=>Xe(e.row,e.origin)):t},[xt,St,Xe,pt,Kt]),_t=r.useMemo(()=>new Intl.Collator(nt,{numeric:!0,sensitivity:"base"}),[nt]),[jt,$t]=r.useState(ge??[]),Dt=me??jt,Pt=r.useMemo(()=>pt.has("sort")?zt:v(zt,Dt,e=>{const t=ht.find(t=>t.key===e);if(!t)return null;if(t.compare)return(e,n)=>t.compare(e.row,n.row);const n=t.value?t.value:e=>e[t.key];return(e,t)=>u(n(e.row),n(t.row),_t)}),[zt,Dt,ht,_t,pt]),[Tt,Rt]=r.useState(Pe),[At,Et]=r.useState(Ae),It=Re??At,[Bt,Ht]=r.useState(()=>new Set(Ze??[])),Ft=r.useMemo(()=>{if(!Je)return null;const e=[],t=new Map;for(const n of Pt){const r=Je(n.row)??"";t.has(r)||(t.set(r,[]),e.push(r)),t.get(r).push(n)}return{order:[...e].sort((e,t)=>""===e?-1:""===t?1:0),byLabel:t}},[Pt,Je]),Ot=r.useMemo(()=>Ft?Ft.order.flatMap(e=>Bt.has(e)?[]:Ft.byLabel.get(e)??[]):Pt,[Ft,Bt,Pt]),Wt=pt.has("pages")?tt??Ot.length:Ot.length,Lt=b(Wt,De??Tt,It),Xt=r.useMemo(()=>"pages"!==$e||pt.has("pages")?Ot:Ot.slice(Lt.start,Lt.end),[Ot,$e,pt,Lt.start,Lt.end]),Vt="pages"===$e?Lt.start:0,qt=r.useMemo(()=>Xt.map(e=>e.key),[Xt]),Gt=r.useMemo(()=>new Map(xt.map(e=>[e.key,e])),[xt]),[Ut,Yt]=r.useState(Ne??[]),Jt=Me??Ut,Qt=r.useMemo(()=>new Set(Jt.map(String)),[Jt]),[Zt,en]=r.useState(null),tn=r.useRef(null),nn=r.useRef({paged:Xt,pagedKeys:qt,byKey:Gt,selectedKeys:Qt,multiple:vt});nn.current={paged:Xt,pagedKeys:qt,byKey:Gt,selectedKeys:Qt,multiple:vt};const rn=r.useCallback(e=>{const t=[],n=[];for(const r of e){const e=nn.current.byKey.get(r);e&&(t.push(e.identity),n.push(e.row))}void 0===Me&&Yt(t),Ke?.(t,n)},[Me,Ke]),an=r.useCallback(e=>{tn.current=e,rn([e])},[rn]),ln=r.useCallback(e=>{const t=nn.current.selectedKeys,n=new Set(t);n.has(e)?n.delete(e):n.add(e),tn.current=e,rn([...n])},[rn]),on=r.useCallback((e,t)=>{const n=nn.current.pagedKeys,r=tn.current??n[0];if(void 0===r)return;const a=f(n,r,e);0!==a.length&&rn(t?[...new Set([...nn.current.selectedKeys,...a])]:a)},[rn]),sn=r.useRef(null),cn=r.useRef(null),un=r.useRef(null),[dn,pn]=r.useState(0),[mn,gn]=r.useState(0),fn=void 0!==ee||void 0!==te,hn=ce&&fn&&Xt.length>0&&!Je;r.useLayoutEffect(()=>{const e=sn.current;if(e&&hn)return pn(e.clientHeight),_(e,e=>pn(e.contentRect.height))},[hn]);const yn=r.useCallback(e=>{if(!hn)return;const t=Math.floor(e.currentTarget.scrollTop/ct)*ct;gn(e=>e===t?e:t)},[hn,ct]),bn=hn?k(mn,dn,ct,Xt.length,ue):{start:0,end:Xt.length,before:0,after:0},vn=Xt.slice(bn.start,bn.end),kn=bt&&null!==Zt&&vn.some(e=>e.key===Zt),[xn,wn]=r.useState(we??{}),Cn=ye??xn,Sn=r.useCallback(e=>{void 0===ye&&wn(e),Ce?.(e)},[ye,Ce]),Mn=r.useRef(new Map),Nn=r.useRef(null),Kn=r.useRef(null),[zn,_n]=r.useState(null),[jn,$n]=r.useState(null);r.useEffect(()=>()=>{Nn.current?.(),Kn.current?.()},[]);const Dn=(e,t)=>{if(0!==t.button)return;const n=t.currentTarget,r=t.clientX;let a=!1;Kn.current=x({target:n,pointerId:t.pointerId,onMove:t=>{if(!a){if(Math.abs(t.clientX-r)<6)return;a=!0,_n(e)}const n=ht.find(e=>{if(e.pinned)return!1;const n=Mn.current.get(e.key);if(!n)return!1;const r=n.getBoundingClientRect();return t.clientX>=r.left&&t.clientX<=r.right});$n(n&&n.key!==e?n.key:null)},onEnd:()=>{Kn.current=null,_n(e=>($n(t=>{if(e&&t&&e!==t){const r=ht.map(e=>e.key),a=r.indexOf(e),l=r.indexOf(t);r.splice(l,0,...r.splice(a,1)),n=r,void 0===be&>(n),ke?.(n)}var n;return null}),null))}})},Pn=r.useCallback(e=>{const t=sn.current;if(!t||!fn)return;const n=le?ut*(yt?2:1):0,r=e*ct;r<t.scrollTop+n?t.scrollTop=Math.max(0,r-n):r+ct>t.scrollTop+t.clientHeight&&(t.scrollTop=r+ct-t.clientHeight)},[fn,le,ut,yt,ct]),Tn=(e,t)=>{const n=nn.current.paged,r=Math.min(Math.max(e,0),n.length-1),a=n[r];a&&(t.preventDefault(),en(a.key),Pn(r),t.shiftKey&&nn.current.multiple?on(a.key,!1):t.ctrlKey||t.metaKey||an(a.key))},Rn=(e,t)=>{const n=sn.current;if(!n||!fn)return;t.preventDefault();const r=Math.max(0,n.scrollHeight-n.clientHeight),a="start"===e?0:"end"===e?r:n.scrollTop+e;n.scrollTop=Math.min(Math.max(a,0),r)};const An=r.useCallback(e=>{const t=cn.current,n=nn.current.paged;if(!t||0===n.length)return null;const r=t.getBoundingClientRect().top,a=Math.floor((e-r)/ct);return Math.min(Math.max(a,0),n.length-1)},[ct]),En=r.useRef(null),In=r.useCallback(e=>{const t=An(e),n=null===t?void 0:nn.current.paged[t];n&&(en(n.key),on(n.key,!1))},[An,on]),Bn=r.useRef(In);Bn.current=In;function Hn(e,t){if(bt&&!t.target.closest('button, a, input, select, textarea, [role="button"]'))if(un.current?.focus({preventScroll:!0}),en(e.key),2!==t.button){if(0===t.button)return t.shiftKey&&vt?(t.preventDefault(),void on(e.key,t.ctrlKey||t.metaKey)):void((t.ctrlKey||t.metaKey)&&vt?ln(e.key):(an(e.key),vt&&(e=>{const t=un.current;if(En.current||!t)return;const n=e.clientY,r=()=>{const e=En.current,t=sn.current;e&&t&&0!==e.speed?(t.scrollTop+=e.speed,Bn.current(e.y),e.frame=requestAnimationFrame(r)):e&&(e.frame=null)};let a=()=>{};const l=()=>{const e=En.current;null!=e?.frame&&cancelAnimationFrame(e.frame),En.current=null,a()};En.current={y:n,speed:0,frame:null,stop:l},a=x({target:t,pointerId:e.pointerId,onMove:e=>{const t=En.current,n=sn.current;if(!t)return;if(t.y=e.clientY,Bn.current(t.y),!n||!fn)return;const a=n.getBoundingClientRect(),l=a.top+ct-t.y,o=t.y-(a.bottom-ct);t.speed=l>0?-Math.min(l,40):o>0?Math.min(o,40):0,0!==t.speed&&null===t.frame&&(t.frame=requestAnimationFrame(r))},onEnd:l,mark:!1})})(t)))}else nn.current.selectedKeys.has(e.key)||an(e.key)}r.useEffect(()=>()=>En.current?.stop(),[]);const Fn=r.useMemo(()=>qt.reduce((e,t)=>Qt.has(t)?e+1:e,0),[qt,Qt]),On=qt.length>0&&Fn===qt.length,Wn=m[Y],Ln=e=>Cn[e.key]??e.width,Xn=(kt?Wn:0)+ht.reduce((e,t)=>e+(Ln(t)??h),0),Vn=ht.length>0&&ht.every(e=>void 0!==Ln(e)),qn=ht.length+(kt?1:0)+(Vn?1:0),Gn=r.useMemo(()=>{const e=[];return ht.forEach((t,n)=>{const r=e[e.length-1];r&&void 0!==r.label&&r.label===t.group?r.span+=1:e.push({label:t.group,span:1,from:n})}),e},[ht]),Un=r.useMemo(()=>{const e=new Map,t=new Map;let n=kt?Wn:0;for(const t of ht)"start"===t.pinned&&(e.set(t.key,n),n+=Ln(t)??g);let r=0;for(let e=ht.length-1;e>=0;e-=1){const n=ht[e];"end"===n.pinned&&(t.set(n.key,r),r+=Ln(n)??g)}return{start:e,end:t}},[ht,Cn,kt,Wn]),Yn=(e,t)=>{if(!e.pinned)return{};const n="start"===e.pinned?Un.start.get(e.key):Un.end.get(e.key);return{position:"sticky",insetInlineStart:"start"===e.pinned?`${n??0}px`:void 0,insetInlineEnd:"end"===e.pinned?`${n??0}px`:void 0,zIndex:t?3:1,backgroundColor:"var(--n-panel-press)",backgroundImage:t?void 0:"linear-gradient(var(--n-row), var(--n-row))"}},Jn={padding:`0 ${dt}`,borderBottom:"1px solid var(--n-line)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},Qn={...Jn,height:`${ut}px`,backgroundColor:"var(--n-panel-press)"},Zn="odd"===re?0:1,er=r.useMemo(()=>new Intl.NumberFormat(nt),[nt]),tr=Be??"pages"===$e,nr=C(ot.range,{start:er.format(0===Wt?0:("pages"===$e?Lt.start:0)+1),end:er.format("pages"===$e?Lt.end:Wt),total:er.format(Wt)}),rr=e=>{void 0===De&&Rt(e),Te?.(e)},ar=(n,r)=>{const a=Qt.has(n.key),l=Zt===n.key;return t("tr",{id:`${it}-${n.key}`,"aria-selected":bt?a:void 0,"aria-rowindex":hn?r+2:void 0,"data-neba-row":n.key,className:P(H,a?"[--n-row:var(--n-soft-press)]":!1!==re&&r%2===Zn?"[--n-row:var(--n-stripe)]":"",!a&&ae?"hover:[--n-row:var(--n-soft)]":"",l&&bt?"[box-shadow:inset_0_0_0_1px_var(--n-ring)]":"",bt||_e?"cursor-default":""),style:{height:`${ct}px`,backgroundColor:"var(--n-row)"},onPointerDown:e=>Hn(n,e),onClick:e=>_e?.(n.row,Vt+r,e),onDoubleClick:()=>je?.(n.row,Vt+r),children:[kt?pr(n):null,ht.map(t=>{const a=cr(t,n.row),l=sr?.key===n.key&&sr.column===t.key;return e("td",{role:bt?"gridcell":void 0,style:{...Jn,...Yn(t,!1),textAlign:t.align??"start",cursor:a&&!l?"cell":void 0},onDoubleClick:a?e=>{e.stopPropagation(),ir({key:n.key,column:t.key})}:void 0,children:l?ur(n,t):t.render?t.render(n.row,Vt+r):n.row[t.key]},t.key)}),Vn?e("td",{"aria-hidden":"true",style:{...Jn,padding:0}}):null]},n.key)},lr=(n,r,a)=>{const l=n.sortable??de,o=n.resizable??he,s=xe&&!n.pinned,i=(c=n.key,Dt.find(e=>e.key===c));var c;const u=i?Dt.findIndex(e=>e.key===n.key)+1:0,d=n.headerAlign??n.align??"start";return t("th",{ref:e=>{e?Mn.current.set(n.key,e):Mn.current.delete(n.key)},scope:"col",rowSpan:a,"aria-sort":i?"asc"===i.direction?"ascending":"descending":void 0,"data-column":n.key,"data-dragging":zn===n.key||void 0,className:P("relative font-semibold select-none",i?"text-(--n-accent)":"text-(--neba-muted-fg)",le?"sticky z-20 [backdrop-filter:var(--neba-blur)]":"",s?"cursor-grab":"",zn===n.key?"opacity-60":"",jn===n.key?"shadow-[inset_2px_0_0_var(--n-accent)]":""),style:{...Qn,...Yn(n,!0),top:le?2!==a&&yt?ut:0:void 0,textAlign:d},onPointerDown:s?e=>Dn(n.key,e):void 0,children:[l?t("button",{type:"button",className:P(O,"end"===d?"justify-end":"center"===d?"justify-center":"justify-start"),onClick:e=>((e,t)=>{const n=y(Dt,e,t&&"multiple"===pe);void 0===me&&$t(n),fe?.(n)})(n.key,e.shiftKey),children:[e("span",{className:"min-w-0 truncate",children:n.label??n.key}),e("span",{"aria-hidden":"true",className:P("flex items-center","desc"===i?.direction?"rotate-0":"rotate-180",i?"":"text-transparent group-hover/sort:text-inherit group-focus-visible/sort:text-inherit"),children:e(z,{})}),u>1?e("span",{"aria-hidden":"true",className:"text-[0.85em] tabular-nums",children:u}):null]}):e("span",{className:"block truncate",children:n.label??n.key}),o&&r<ht.length-1?e("span",{"aria-hidden":"true",className:W,onPointerDown:e=>((e,t)=>{t.preventDefault(),t.stopPropagation();const n=t.currentTarget,r={...Cn};for(const e of ht){const t=Mn.current.get(e.key);t&&void 0===r[e.key]&&(r[e.key]=Math.round(t.getBoundingClientRect().width))}const a="rtl"===getComputedStyle(n).direction,l=t.clientX,o=r[e]??g,s=ht.find(t=>t.key===e)?.minWidth??h;Nn.current=x({target:n,pointerId:t.pointerId,onMove:t=>{const n=(t.clientX-l)*(a?-1:1);Sn({...r,[e]:Math.max(s,Math.round(o+n))})},onEnd:()=>{Nn.current=null}})})(n.key,e),onDoubleClick:()=>(e=>{const t={...Cn};delete t[e],Sn(t)})(n.key)}):null]},n.key)},or=(n,r)=>{const a=Bt.has(n),l=Qe,o=r.map(e=>e.row),s=()=>Ht(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:P("flex items-center text-(--neba-muted-fg)","[transition:rotate_var(--neba-duration)_var(--neba-ease)]",a?"-rotate-90 rtl:rotate-90":""),children:e(z,{})}):null,e("span",{className:"truncate font-semibold",children:""===n?st.title:n}),e("span",{className:"shrink-0 text-(--neba-muted-fg) tabular-nums",children:er.format(r.length)})]});return t("tr",{"data-neba-group":n,style:{height:`${ct}px`,backgroundColor:"var(--n-soft)"},children:[kt?e("td",{style:{...Jn,padding:0}}):null,ht.map((t,n)=>e("td",{colSpan:1,style:{...Jn,...Yn(t,!1),textAlign:0===n?"start":t.align??"start"},children:0===n?l?e("button",{type:"button","aria-expanded":!a,className:"flex w-full min-w-0 items-center text-start [outline:none] focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:[outline-offset:-2px]",onClick:s,children:i}):i:t.aggregate?e("span",{className:"tabular-nums",children:t.aggregate(o)}):null},t.key)),Vn?e("td",{"aria-hidden":"true",style:{...Jn,padding:0}}):null]})},[sr,ir]=r.useState(null),cr=(e,t)=>void 0!==Ye&&("function"==typeof e.editable?e.editable(t):Boolean(e.editable)),ur=(t,n)=>{const r=n.value?n.value(t.row):t.row[n.key],a=e=>{ir(null);const a="number"===n.editType?Number(e):e;"number"===n.editType&&Number.isNaN(a)||String(a)!==String(r??"")&&Ye?.(t.row,n,a)};return e("input",{autoFocus:!0,type:"number"===n.editType?"number":"text",defaultValue:null==r?"":String(r),"aria-label":"string"==typeof n.label?n.label:n.key,className:"w-full bg-transparent [font:inherit] text-inherit [outline:none]",style:{textAlign:n.align??"start"},onPointerDown:e=>e.stopPropagation(),onBlur:e=>a(e.currentTarget.value),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),e.stopPropagation(),a(e.currentTarget.value)),"Escape"===e.key&&(e.stopPropagation(),ir(null))}})},dr=t=>e("span",{className:"flex items-center justify-center",children:t}),pr=t=>e("td",{role:bt?"gridcell":void 0,style:{...Jn,padding:0,overflow:"visible"},children:dr(e(o,{size:Y,color:J,checked:Qt.has(t.key),"aria-label":ot.selectRow,onCheckedChange:()=>{vt?ln(t.key):an(t.key)}}))}),mr=vt?dr(e(o,{size:Y,color:J,checked:On,indeterminate:Fn>0&&!On,"aria-label":ot.selectAll,onCheckedChange:()=>{if(On){const e=new Set(qt);rn([...Qt].filter(t=>!e.has(t)))}else rn([...new Set([...Qt,...qt])])}})):null,gr=Vn?e("th",{"aria-hidden":"true",className:P(le?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{...Qn,padding:0}}):null,fr=(t,n)=>n>0?e("tr",{"aria-hidden":"true",style:{height:`${n}px`},children:e("td",{colSpan:qn,style:{padding:0,border:0}})},t):null;return t(a,{variant:U,size:Y,color:J,density:Q,elevation:Z,padded:!1,className:P("flex flex-col overflow-hidden",bt?"has-[:focus-visible]:[outline:2px_solid_var(--n-ring)] has-[:focus-visible]:outline-offset-2":"",rt),style:{...F,...at},...lt,children:[We||qe||T(Ve)?t("div",{className:"flex items-center gap-2",style:{padding:`${dt} ${dt}`,borderBottom:"1px solid var(--n-line)"},children:[We?e(c,{size:Y,color:J,density:Q,variant:"outline",type:"search",className:"w-full max-w-64",startIcon:e(L,{}),placeholder:Le??ot.search,"aria-label":Le??ot.search,value:He??wt,onChange:e=>{const t=e.target.value;void 0===He&&Ct(t),rr(1),Oe?.(t)}}):null,qe||T(Ve)?t("div",{className:"ms-auto flex items-center gap-2",children:[Ve,qe?e(l,{size:Y,color:J,density:Q,variant:"outline",onClick:()=>{const e=ht.filter(e=>!1!==e.exportable),t=e.map(e=>"string"==typeof e.label?e.label:e.key),n=Pt.map(t=>e.map(e=>e.exportValue?e.exportValue(t.row):e.value?e.value(t.row):t.row[e.key])),r=$([t,...n]);Ue?Ue(r):j(r,Ge,"text/csv;charset=utf-8")},children:ot.exportCsv}):null]}):null]}):null,e("div",{ref:sn,className:"min-h-0 flex-auto overflow-auto overscroll-contain",style:{height:I(ee),maxHeight:I(te)},onScroll:yn,children:t("table",{ref:un,role:bt?"grid":void 0,"aria-label":se,"aria-multiselectable":vt||void 0,"aria-rowcount":hn?Xt.length+1:void 0,"aria-activedescendant":kn?`${it}-${Zt}`:void 0,tabIndex:bt?0:void 0,className:P("w-full text-start [outline:none]",D[Y],"text-(--neba-fg)",bt?"select-none":""),style:{tableLayout:"fixed",borderCollapse:"separate",borderSpacing:0,minWidth:`${Xn}px`},onKeyDown:function(e){if(!bt||e.target!==e.currentTarget)return;const t=nn.current.paged;if(0===t.length)return;const n=null===Zt?-1:nn.current.pagedKeys.indexOf(Zt),r=Math.max(1,Math.floor((dn||10*ct)/ct)-1);switch(e.key){case"ArrowDown":Tn(n+1,e);break;case"ArrowUp":Tn(-1===n?0:n-1,e);break;case"Home":Rn("start",e);break;case"End":Rn("end",e);break;case"PageDown":Rn(r*ct,e);break;case"PageUp":Rn(-r*ct,e);break;case" ":-1!==n&&(e.preventDefault(),(e.ctrlKey||e.metaKey)&&vt?ln(t[n].key):an(t[n].key));break;case"a":case"A":(e.ctrlKey||e.metaKey)&&vt&&(e.preventDefault(),rn(nn.current.pagedKeys));break;case"Escape":e.preventDefault(),rn([]);break;case"Enter":-1!==n&&je&&(e.preventDefault(),je(t[n].row,Vt+n))}},children:[oe?e("caption",{className:P(R[Y],"text-(--neba-muted-fg)"),style:{padding:`0.5rem ${dt}`,textAlign:"start"},children:oe}):null,t("colgroup",{children:[kt?e("col",{style:{width:`${Wn}px`}}):null,ht.map(t=>{const n=Ln(t);return e("col",{style:void 0===n?void 0:{width:`${n}px`}},t.key)}),Vn?e("col",{}):null]}),t("thead",{children:[yt?t("tr",{style:{height:`${ut}px`},children:[kt?e("th",{scope:"col",rowSpan:2,className:P(le?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{...Qn,padding:0,overflow:"visible"},children:mr}):null,Gn.map(t=>void 0===t.label?lr(ht[t.from],t.from,2):e("th",{scope:"colgroup",colSpan:t.span,className:P("font-semibold text-(--neba-muted-fg) select-none",le?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{...Qn,textAlign:"center"},children:t.label},`group-${t.from}`)),Vn?r.cloneElement(gr,{rowSpan:2}):null]}):null,t("tr",{style:{height:`${ut}px`},children:[kt&&!yt?e("th",{scope:"col",className:P(le?"sticky top-0 z-20 [backdrop-filter:var(--neba-blur)]":""),style:{...Qn,padding:0,overflow:"visible"},children:mr}):null,ht.map((e,t)=>yt&&void 0===e.group?null:lr(e,t)),Vn&&!yt?gr:null]})]}),e("tbody",{ref:cn,children:0===Xt.length?e("tr",{children:e("td",{colSpan:qn,className:"text-(--neba-muted-fg)",style:{padding:`2rem ${dt}`,textAlign:"center"},children:ie??st.title})}):t(n,{children:[fr("before",bn.before),Ft?Ft.order.map(e=>{const n=Ft.byLabel.get(e)??[],a=n.filter(e=>qt.includes(e.key));return t(r.Fragment,{children:[or(e,n),a.map(e=>ar(e,Xt.indexOf(e)))]},e||"\0")}):vn.map((e,t)=>ar(e,bn.start+t)),fr("after",bn.after)]})})]})}),tr?t("div",{className:P("flex flex-wrap items-center gap-3",R[Y]),style:{padding:`0.375rem ${dt}`,borderTop:"1px solid var(--n-line)"},children:[e("span",{className:"text-(--neba-muted-fg) tabular-nums",children:nr}),bt&&Qt.size>0?e("span",{className:"text-(--n-accent) tabular-nums",children:C(ot.selected,{count:er.format(Qt.size)})}):null,t("div",{className:"ms-auto flex items-center gap-2",children:["pages"===$e&&Ie.length>0?e(n,{children:e(i,{size:Y,color:J,density:Q,variant:"outline",label:ot.rowsPerPage,items:Ie.map(e=>({value:e})),value:It,onValueChange:e=>{const t=Number(e);void 0===Re&&Et(t),rr(Math.floor(Lt.start/t)+1),Ee?.(t)}})}):null,"pages"===$e?e(s,{size:Y,color:J,count:Lt.pages,page:Lt.page,siblingCount:0,onPageChange:rr}):null]})]}):null,!tr&&hn?e("span",{className:E,"aria-live":"polite",children:nr}):null]})}
|
|
1
|
+
"use client";import{jsx as e,jsxs as t,Fragment as n}from"react/jsx-runtime";import*as r from"react";import{Box as a}from"../box/Box.js";import{Button as l}from"../button/Button.js";import{Checkbox as o}from"../checkbox/Checkbox.js";import{Pagination as s}from"../pagination/Pagination.js";import{Select as i}from"../select/Select.js";import{TextField as c}from"../text-field/TextField.js";import{compareValues as u,dataHeaderHeights as d,dataRowHeights as p,dataTickWidths as m,defaultColumnWidth as 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 +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
|
|
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 d,isUnitOutside as m,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:V,granularity:B="day",defaultMonth:I,minDate:P,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"]),Z=o(G,F),$=L??h(F),_=N??S[B],[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:I??v()));t.useEffect(()=>{oe&&ie(f(u(te)?te:I??v()))},[oe]);const se=e=>{e&&(Q||U)||(void 0===w&&ne(e),V?.(e))},ce=e=>{void 0===j&&ae(e),C?.(e)},de=e=>{const a=y(e,B),t=u(te)?p(a,te):a;ce(t),ie(f(t)),A&&se(!1)},me=v(),ue=y(me,B),he=m(me,B,P,R)||(E?.(ue)??!1),pe="year"===B?Z.thisYear:"month"===B?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)?d(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[B](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:de,granularity:B,minDate:P,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:()=>de(me),children:pe}):null]}):null]})})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import*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 g,toISODate as b,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"]),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(()=>g(oe??E??y()));a.useEffect(()=>{me?ve(g(oe??E??y())):(he(null),fe(null))},[me]);const ge=e=>{e&&($||_)||(void 0===B&&ue(e),V?.(e))},be=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),be({start:de,end:l}),void(U&&ge(!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:()=>be(C),open:me,onOpenChange:ge,clearLabel:ae.clear,hiddenValues:X?[{name:X,value:oe?b(oe):""},{name:X,value:ie?b(ie):""}]:void 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),be(l),f(l.start)&&ve(g(l.start)),U&&ge(!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),be(C),ge(!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 n}from"../button/Button.js";import{Calendar as a,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:V,defaultValue:B,onValueChange:I,open:M,defaultOpen:P,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:ne="primary",density:ae="default",readOnly:oe=!1,disabled:se=!1,startIcon:ie,...re}=O(T,["size","density","variant","locale"]),ce=s(ee,G),de=H??b(G),me=K??f(G),[ue,pe]=l.useState(B??null),he=void 0!==V?V:ue,[fe,Se]=l.useState(P??!1),be=M??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===M&&Se(e),R?.(e))},ve=e=>{const t=null===e?null:m(e,F,L);void 0===V&&pe(t),I?.(t)},xe=l.useCallback((e,t)=>{const[l,n]=v(t,e);return!!(S(F)&&n.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:ne,density:ae,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(a,{size:le,color:ne,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:ae,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(n,{variant:"text",size:le,color:ne,density:"compact",onClick:()=>{ve(null),ge(!1)},children:ce.clear}):null,$?e(n,{variant:"text",size:le,color:ne,density:"compact",disabled:ke,onClick:()=>{ve(Ce),De(g(Ce))},children:ce.now}):null,e(n,{variant:"solid",size:le,color:ne,density:"compact",onClick:()=>ge(!1),children:ce.done})]})]})})});
|
|
@@ -97,6 +97,18 @@ export interface DialogProps extends Pick<NebaStyleProps, 'size' | 'color' | 'de
|
|
|
97
97
|
* @default true
|
|
98
98
|
*/
|
|
99
99
|
dismissible?: boolean;
|
|
100
|
+
/**
|
|
101
|
+
* What takes the focus when the dialog opens: a ref to an element, `false` to
|
|
102
|
+
* leave it where it is, or a function of how the dialog was opened. Base UI's
|
|
103
|
+
* own option, passed to the popup. By default the first thing that can be
|
|
104
|
+
* focused inside takes it.
|
|
105
|
+
*/
|
|
106
|
+
initialFocus?: React.ComponentPropsWithoutRef<typeof BaseUIDialog.Popup>['initialFocus'];
|
|
107
|
+
/**
|
|
108
|
+
* Where the focus goes when the dialog closes, in the same shapes. By default
|
|
109
|
+
* it returns to the element that held it before the dialog opened.
|
|
110
|
+
*/
|
|
111
|
+
finalFocus?: React.ComponentPropsWithoutRef<typeof BaseUIDialog.Popup>['finalFocus'];
|
|
100
112
|
/**
|
|
101
113
|
* Class names for the parts around the popup. `className` is the popup — the
|
|
102
114
|
* sheet — so the scrim behind it is `classNames.backdrop`.
|
|
@@ -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 r}from"../box/Box.js";import{actionMessages as a,useMessages as s}from"../../internal/i18n.js";import{CloseIcon as i}from"../../internal/icons.js";import{cx as t,hasContent as c,metaTextClasses as d,popupFadeClasses as m,radiusClasses as f,sheetBodyClasses as p,sheetHeaderGapClasses as u,sheetSectionGapClasses as x,sheetTitleClasses as b,surfaceClasses as h,surfaceSlots as v}from"../../internal/styles.js";import{useStyleDefaults as g}from"../../internal/defaults.js";const w={xs:"max-w-80",sm:"max-w-96",md:"max-w-lg",lg:"max-w-2xl",xl:"max-w-4xl"},y=[h,"relative flex w-full flex-col overflow-hidden","border text-(--neba-fg) bg-(--n-panel-press)","[border-color:var(--n-line)]","[box-shadow:var(--neba-shadow-3),var(--neba-plate-glass)]","[outline:none]",m].join(" "),j=["fixed inset-0 z-(--neba-z-portal) bg-(--neba-scrim)","[backdrop-filter:blur(2px)]",m].join(" "),N="border-t [border-color:var(--n-line)]";export const DialogClose=n.Close;export function Dialog(m){const{size:h="md",color:k="primary",density:$="default",open:z,defaultOpen:_,onOpenChange:C,trigger:D,title:O,description:P,actions:B,dividers:T=!1,showClose:W=!0,locale:L,closeLabel:R,width:S,fullWidth:V=!0,fullScreen:q=!1,modal:A=!0,dismissible:E=!0,className:F,classNames:G,style:H,children:I,...J}=g(m,["size","density","locale"]),K=s(a,L),M=o[$][h],Q=r[$][h],U=T?`${M} ${Q}`:M,X=c(O)||c(P),Y=c(B);return l(n.Root,{open:z,defaultOpen:_,modal:A,disablePointerDismissal:!E,onOpenChange:(e,l)=>{E||e||"escape-key"!==l.reason?C?.(e):l.cancel()},children:[D?e(n.Trigger,{render:D}):null,l(n.Portal,{children:[e(n.Backdrop,{className:t("neba-portal",j,!0===A?"":"pointer-events-none",G?.backdrop)}),e(n.Viewport,{className:t("neba-portal fixed inset-0 z-(--neba-z-portal) flex justify-center",q?"items-stretch":"items-center p-4",!0===A?"":"pointer-events-none",G?.viewport),children:l(n.Popup,{className:t(y,!0===A?"":"pointer-events-auto",p[h],q?"h-full max-w-none rounded-none":`max-h-full ${f[h]} ${void 0===S?w[h]:""}`,q||V?"":"w-auto",T?"":`${Q} ${x[h]}`,F??""),style:{...v(k,3),...void 0===S?null:{maxWidth:"number"==typeof S?`${S}px`:S},...H},...J,children:[X||W?l("div",{className:`flex shrink-0 items-start gap-3 ${U}`,children:[l("div",{className:`flex min-w-0 flex-1 flex-col ${u[h]}`,children:[c(O)?e(n.Title,{className:t("font-semibold",b[h],"m-0",G?.title),children:O}):null,c(P)?e(n.Description,{className:t("m-0 text-(--neba-muted-fg)",d[h],G?.description),children:P}):null]}),W?e(n.Close,{"aria-label":R??K.close,className:t("flex size-[1.6em] shrink-0 cursor-pointer items-center justify-center","rounded-full text-(--neba-muted-fg)","[&_svg]:size-[1.1em] [&_svg]:shrink-0","[transition:background-color_var(--neba-duration)_var(--neba-ease),color_var(--neba-duration)_var(--neba-ease)]","hover:bg-(--n-soft) hover:text-(--neba-fg)","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2",G?.close),children:e(i,{})}):null]}):null,c(I)?e("div",{className:t("min-h-0 flex-1 overflow-y-auto overscroll-contain",U,T&&(X||W)?N:"",T?"":"py-1 -my-1",G?.body),children:I}):null,Y?e("div",{className:t("flex shrink-0 flex-wrap items-center justify-end gap-2",U,T?N:"",G?.actions),children:B}):null]})})]})]})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as r}from"react/jsx-runtime";import*as t from"react";import{Separator as l}from"@base-ui/react/separator";import{cx as
|
|
1
|
+
"use client";import{jsx as e,jsxs as r}from"react/jsx-runtime";import*as t from"react";import{Separator as l}from"@base-ui/react/separator";import{cx as i,metaTextClasses as a,toLength as n}from"../../internal/styles.js";import{useStyleDefaults as s}from"../../internal/defaults.js";const o="[border-color:var(--n-line)]",d={horizontal:{start:["w-4 shrink-0","flex-1"],center:["flex-1","flex-1"],end:["flex-1","w-4 shrink-0"]},vertical:{start:["h-4 shrink-0","flex-1"],center:["flex-1","flex-1"],end:["flex-1","h-4 shrink-0"]}},c={xs:"gap-1.5",sm:"gap-2",md:"gap-3",lg:"gap-3.5",xl:"gap-4"};export const Divider=/*@__PURE__*/t.forwardRef(function Divider(t,f){const{orientation:h="horizontal",color:m="primary",size:p="md",length:u,thickness:x,textAlign:w="center",className:v,style:b,children:g,...$}=s(t,["size"]),j="vertical"===h,k=null!=g&&!1!==g&&""!==g,y={"--n-line":`var(--neba-${m}-line)`,"--n-rule":n(x)??"1px"},N=n(u),z={...y,...void 0===N?null:j?{height:N}:{width:N},...b};if(!k)return e(l,{ref:f,orientation:h,className:i(j?"w-0 border-l [border-left-width:var(--n-rule)] "+(void 0===N?"self-stretch":""):"h-0 w-full border-t [border-top-width:var(--n-rule)]",o,v??""),style:z,...$});const[D,A]=d[h][w],B=j?"w-0 border-l [border-left-width:var(--n-rule)]":"h-0 border-t [border-top-width:var(--n-rule)]";return r(l,{ref:f,orientation:h,"aria-label":"string"==typeof g?g:void 0,className:i("flex items-center",j?"w-auto flex-col "+(void 0===N?"self-stretch":""):"w-full",c[p],v??""),style:z,...$,children:[e("span",{"aria-hidden":"true",className:`${B} ${D} ${o}`}),e("span",{className:["shrink-0 whitespace-nowrap text-(--neba-muted-fg)",a[p],j?"[writing-mode:vertical-rl]":""].filter(Boolean).join(" "),children:g}),e("span",{"aria-hidden":"true",className:`${B} ${A} ${o}`})]})});
|
|
@@ -115,6 +115,13 @@ export interface DrawerProps extends Pick<NebaStyleProps, 'size' | 'color' | 'de
|
|
|
115
115
|
* @default true
|
|
116
116
|
*/
|
|
117
117
|
dismissible?: boolean;
|
|
118
|
+
/**
|
|
119
|
+
* Keeps the panel's contents clear of a phone's home indicator and notch, on
|
|
120
|
+
* a page laid out under them with `viewport-fit=cover`. The sheet still runs
|
|
121
|
+
* to the edge of the screen; what moves is what is on it. `overlay` only.
|
|
122
|
+
* @default true
|
|
123
|
+
*/
|
|
124
|
+
safeArea?: boolean;
|
|
118
125
|
/** The body. */
|
|
119
126
|
children?: React.ReactNode;
|
|
120
127
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as a,Fragment as r}from"react/jsx-runtime";import{Dialog as
|
|
1
|
+
"use client";import{jsx as e,jsxs as a,Fragment as r}from"react/jsx-runtime";import*as n from"react";import{Dialog as t}from"@base-ui/react/dialog";import{boxPaddingXClasses as s,boxPaddingYClasses as o}from"../box/Box.js";import{actionMessages as l,useMessages as i}from"../../internal/i18n.js";import{CloseIcon as d}from"../../internal/icons.js";import{cx as u,hasContent as b,headingTitleClasses as m,metaTextClasses as c,popupFadeClasses as f,sheetBodyClasses as p,sheetHeaderGapClasses as x,sheetSectionGapClasses as g,surfaceClasses as h,surfaceSlots as v}from"../../internal/styles.js";import{useStyleDefaults as y}from"../../internal/defaults.js";const w={xs:"w-56",sm:"w-64",md:"w-80",lg:"w-96",xl:"w-[28rem]"},_={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)"}},j={left:"border-r",right:"border-l",top:"border-b",bottom:"border-t"},N={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%]"},$={left:"flex-row justify-start",right:"flex-row justify-end",top:"flex-col justify-start",bottom:"flex-col justify-end"},k=[h,"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(" "),C={top:{borderTop:"env(safe-area-inset-top) solid transparent"},bottom:{borderBottom:"env(safe-area-inset-bottom) solid transparent"},left:{borderTop:"env(safe-area-inset-top) solid transparent",borderBottom:"env(safe-area-inset-bottom) solid transparent"},right:{borderTop:"env(safe-area-inset-top) solid transparent",borderBottom:"env(safe-area-inset-bottom) solid transparent"}},B="border-t [border-color:var(--n-line)]",D=["flex size-[1.6em] shrink-0 cursor-pointer items-center justify-center","rounded-full text-(--neba-muted-fg)","[&_svg]:size-[1.1em] [&_svg]:shrink-0","[transition:background-color_var(--neba-duration)_var(--neba-ease),color_var(--neba-duration)_var(--neba-ease)]","hover:bg-(--n-soft) hover:text-(--neba-fg)","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2"].join(" ");export const DrawerClose=t.Close;export function Drawer(f){const{side:h="left",mode:T="overlay",size:O="md",color:P="primary",density:A="default",open:F,defaultOpen:L,onOpenChange:R,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}=y(f,["size","density","locale"]),ae=i(l,I),re="overlay"===T,ne="left"===h||"right"===h,te=H??re,[se,oe]=n.useState(L??!0),le=s[A][O],ie=o[A][O],de=G?`${le} ${ie}`:le,ue=b(V)||b(q),be=b(E),me=void 0===K?null:{[ne?"width":"height"]:"number"==typeof K?`${K}px`:K},ce=u(k,p[O],j[h],M?_[h][O]:"",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)] ${N[h]}`:"",ne?`h-full max-w-full ${void 0===K?w[O]:""}`:"w-full "+(void 0===K?"max-h-[85%]":""),G?"":`${ie} ${g[O]}`,X??""),fe=re?t.Title:"h2",pe=re?t.Description:"p",xe=a(r,{children:[ue||te?a("div",{className:`flex shrink-0 items-start gap-3 ${de}`,children:[a("div",{className:`flex min-w-0 flex-1 flex-col ${x[O]}`,children:[b(V)?e(fe,{className:u("neba-heading","[&.neba-heading]:m-0 [&.neba-heading]:font-semibold [&.neba-heading]:text-inherit",m[O]),children:V}):null,b(q)?e(pe,{className:`m-0 text-(--neba-muted-fg) ${c[O]}`,children:q}):null]}),te?re?e(t.Close,{"aria-label":J??ae.close,className:D,children:e(d,{})}):e("button",{type:"button","aria-label":J??ae.close,className:D,onClick:()=>{void 0===F&&oe(!1),R?.(!1)},children:e(d,{})}):null]}):null,b(Z)?e("div",{className:u("min-h-0 flex-1 overflow-y-auto overscroll-contain",de,G&&(ue||te)?B:"",G?"":"py-1 -my-1"),children:Z}):null,be?e("div",{className:u("flex shrink-0 flex-wrap items-center justify-end gap-2",de,G?B:""),children:E}):null]});return re?a(t.Root,{open:F,defaultOpen:L,modal:Q,disablePointerDismissal:!U,onOpenChange:(e,a)=>{U||e||"escape-key"!==a.reason?R?.(e):a.cancel()},children:[S?e(t.Trigger,{render:S}):null,a(t.Portal,{children:[e(t.Backdrop,{className:u("neba-portal",z,!0===Q?"":"pointer-events-none")}),e(t.Viewport,{className:u("neba-portal fixed inset-0 z-(--neba-z-portal) flex",$[h],!0===Q?"":"pointer-events-none"),children:e(t.Popup,{className:u(ce,!0===Q?"":"pointer-events-auto"),style:{...v(P,3),...me,...W?C[h]:null,...Y},...ee,children:xe})})]})]}):F??se?e("div",{className:ce,style:{...v(P,0),...me,...Y},...ee,children:xe}):null}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import*as n from"react";import{useRender as l}from"@base-ui/react/use-render";import{boxPaddingXClasses as a}from"../box/Box.js";import{transitionProps as s}from"../../internal/animate.js";import{emptyMessages as o,useMessages as i}from"../../internal/i18n.js";import{cx as m,hasContent as c,iconClasses as d,radiusClasses as
|
|
1
|
+
"use client";import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import*as n from"react";import{useRender as l}from"@base-ui/react/use-render";import{boxPaddingXClasses as a}from"../box/Box.js";import{transitionProps as s}from"../../internal/animate.js";import{emptyMessages as o,useMessages as i}from"../../internal/i18n.js";import{cx as m,hasContent as c,iconClasses as d,radiusClasses as p,sheetBodyClasses as x,sheetHeaderGapClasses as f,sheetSectionGapClasses as u,sheetTitleClasses as y,surfaceClasses as h,surfaceSlots as v,transitionClasses as b}from"../../internal/styles.js";import{useStyleDefaults as g}from"../../internal/defaults.js";const j={default:{xs:"py-5",sm:"py-6",md:"py-8",lg:"py-10",xl:"py-12"},compact:{xs:"py-3",sm:"py-3.5",md:"py-4",lg:"py-5",xl:"py-6"}},N={xs:"text-[1.25rem]",sm:"text-[1.5rem]",md:"text-[1.75rem]",lg:"text-[2.125rem]",xl:"text-[2.5rem]"},k={solid:[h,"text-(--neba-fg) bg-(--n-panel-hover)","[box-shadow:var(--n-elev),var(--neba-plate-solid)]"].join(" "),outline:[h,"border text-(--neba-fg) bg-(--n-panel)","[border-color:var(--n-line)]","[box-shadow:var(--n-elev),var(--neba-plate-glass)]"].join(" "),text:"text-(--neba-fg) bg-transparent"};function TrayIcon(){return t("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[e("path",{d:"M1.75 9.75h3l.9 1.6h4.7l.9-1.6h3",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}),e("path",{d:"m1.75 9.75 2.1-6a1.5 1.5 0 0 1 1.42-1h5.46a1.5 1.5 0 0 1 1.42 1l2.1 6v2a1.5 1.5 0 0 1-1.5 1.5h-9.5a1.5 1.5 0 0 1-1.5-1.5Z",stroke:"currentColor",strokeWidth:"1.5",strokeLinejoin:"round"})]})}export const Empty=/*@__PURE__*/n.forwardRef(function Empty(h,w){const{variant:$="text",size:E="md",color:L="secondary",density:z="default",elevation:B=0,title:C,icon:I,action:T,locale:W,transition:F,render:M,className:R,style:V,children:Z,...q}=g(h,["size","density","variant","locale"]),A=i(o,W),D=void 0===C?A.title:C,G=void 0===I?e(TrayIcon,{}):I,H=s(F),J=c(D),K=n.isValidElement(M)&&("td"===M.type||"th"===M.type),{role:O,...P}=q,Q="role"in q?O:"status",S=m("flex w-full flex-col items-center justify-center text-center",a[z][E],j[z][E],p[E],u[E],b,k[$],H.className),U={...v(L,B),...H.style},X=t(r,{children:[c(G)?e("span",{className:`flex items-center text-(--neba-muted-fg) ${N[E]} ${d}`,children:G}):null,J||c(Z)?t("div",{className:`flex max-w-prose flex-col items-center ${f[E]}`,children:[J?e("div",{className:`neba-title font-semibold ${y[E]}`,children:D}):null,c(Z)?e("div",{className:`${x[E]} ${J?"text-(--neba-muted-fg)":""}`,children:Z}):null]}):null,c(T)?e("div",{className:"flex flex-wrap items-center justify-center gap-2",children:T}):null]});return l({render:M,ref:w,props:K?{className:R,style:V,children:e("div",{role:Q,className:S,style:U,children:X}),...P}:{role:Q,className:m(S,R??""),style:{...U,...V},children:X,...P}})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as
|
|
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(f,u){const{legend:p,description:b,disabled:x=!1,size:j="md",className:h,children:v,"aria-describedby":N,...g}=m(f,["size"]),w=s.useId(),y=d(p),F=d(b);return e(c.Provider,{value:x,children:i(l.Root,{ref:u,disabled:x,className:r("m-0 flex min-w-0 flex-col border-0 p-0",n[j],h??""),"aria-describedby":[N,F?w:void 0].filter(Boolean).join(" ")||void 0,...g,children:[y||F?i("div",{className:`flex min-w-0 flex-col ${t[j]}`,children:[y?e(l.Legend,{className:`p-0 font-semibold ${o[j]}`,children:p}):null,F?e("span",{id:w,className:`text-(--neba-muted-fg) ${a[j]}`,children:b}):null]}):null,v]})})});
|