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 t}from"react/jsx-runtime";import*as e from"react";import{animBaseClass as r,animationClasses as a,animationSlots as l,transitionParts as
|
|
1
|
+
"use client";import{jsx as t}from"react/jsx-runtime";import*as e from"react";import{animBaseClass as r,animationClasses as a,animationSlots as l,transitionParts as n}from"../../internal/animate.js";import{cx as i,toLength as s}from"../../internal/styles.js";import{childKey as o}from"../../internal/children.js";import{useStyleDefaults as c}from"../../internal/defaults.js";const m={xs:"0.375rem",sm:"0.5rem",md:"0.625rem",lg:"0.75rem",xl:"0.875rem"};export const Stack=/*@__PURE__*/e.forwardRef(function Stack(d,f){const{direction:p="horizontal",overlap:g,drop:h,size:u="md",max:x,total:y,overflow:v,front:S="first",scaleStep:j=1,opacityStep:$=1,ring:k=!1,transition:z,stagger:w=0,durationStep:M=0,reverse:N=!1,className:b,style:B,children:I,...A}=c(d,["size"]),C=e.Children.toArray(I),R=void 0===x?C:C.slice(0,Math.max(0,x)),q=Math.max(0,(y??C.length)-R.length),D=q>0?v?.(q):null,E=null==D?R:[...R,D],F=s(g??m[u]),G=s(h??g??m[u]),H="vertical"===p,J="diagonal"===p,K=n(z),L=K?`${r} ${a[K.effect]}`:"";return t("span",{ref:f,className:i("isolate inline-flex",H?"flex-col items-start":"items-start",k?"[&>*>*>*]:ring-2 [&>*>*>*]:ring-(--neba-surface)":"",b??""),style:B,...A,children:E.map((e,r)=>{const a=N?E.length-1-r:r,n=K?l({...K.slots,delay:K.slots.delay+a*w,duration:Math.max(0,K.slots.duration+a*M)}):void 0;return t("span",{"data-neba-stack-item":"",className:L||void 0,style:{...n,...0===r?null:H?{marginBlockStart:`calc(${F} * -1)`}:{marginInlineStart:`calc(${F} * -1)`},...J?{marginBlockStart:`calc(${G} * ${r})`}:null,zIndex:"first"===S?E.length-r:r+1},children:t("span",{style:{display:"inline-flex",scale:1===j?void 0:String(j**r),opacity:1===$?void 0:$**r},children:e})},r===R.length?"overflow":o(e,r))})})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as l from"react";import{Box as n}from"../box/Box.js";import{Chip as a}from"../chip/Chip.js";import{MinusIcon as
|
|
1
|
+
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as l from"react";import{Box as n}from"../box/Box.js";import{Chip as a}from"../chip/Chip.js";import{MinusIcon as s,TrendDownIcon as r,TrendUpIcon as i}from"../../internal/icons.js";import{numberFormatter as m}from"../../internal/format.js";import{cx as o,hasContent as u,metaTextClasses as c,sheetSectionGapClasses as d}from"../../internal/styles.js";import{useStyleDefaults as f}from"../../internal/defaults.js";const x={xs:"text-[1.125rem]/[1.375rem]",sm:"text-[1.375rem]/[1.625rem]",md:"text-[1.75rem]/[2rem]",lg:"text-[2.25rem]/[2.5rem]",xl:"text-[2.875rem]/[3.25rem]"},p={xs:"text-[0.75rem]",sm:"text-[0.875rem]",md:"text-[1rem]",lg:"text-[1.25rem]",xl:"text-[1.5rem]"},b={xs:"gap-y-0.5",sm:"gap-y-0.5",md:"gap-y-1",lg:"gap-y-1",xl:"gap-y-1.5"},h={start:"items-start text-start",center:"items-center text-center",end:"items-end text-end"},g={up:e(i,{}),down:e(r,{}),flat:e(s,{})};export const Statistic=/*@__PURE__*/l.forwardRef(function Statistic(l,s){const{size:r="md",color:i="primary",density:N="default",label:w,value:y,format:j,locale:v,prefix:$,unit:M,icon:z,previousValue:F,delta:k="percent",betterWhen:B="up",caption:D,align:S="start",className:C,children:I,...O}=f(l,["size","density","locale"]),R="number"==typeof y?y:null,V=null===R?y:m(v,j).format(R),W=null!==R&&Number.isFinite(R)&&void 0!==F&&Number.isFinite(F)?R-F:null,q=null!==W&&0!==F&&void 0!==F?W/Math.abs(F):null,A=m(v,j),E="absolute"!==k&&null!==q,G=E?3:A.resolvedOptions().maximumFractionDigits??0,H=E?q:W,J=null===H||0===Math.round(Math.abs(H)*10**G)?0:Math.sign(H),K=null===W?null:J>0?"up":J<0?"down":"flat";let L=null;if(null!==W&&null!==K&&"none"!==k){const e="up"===K?"+":"down"===K?"-":"",t=`${e}${A.format(Math.abs(W))}`,l=null===q?null:`${e}${m(v,{style:"percent",maximumFractionDigits:1}).format(Math.abs(q))}`;L="absolute"===k?t:"both"===k?[l,t].filter(Boolean).join(" · "):l??t}const P=null===K||"flat"===K?"secondary":K===B?"success":"danger",Q=null!==L||u(D);return t(n,{ref:s,size:r,color:i,density:N,className:o("flex flex-col",d[r],h[S],C??""),...O,children:[u(w)||u(z)?t("div",{className:["flex min-w-0 items-center gap-1.5 font-medium text-(--neba-muted-fg)",c[r]].join(" "),children:[u(z)?e("span",{className:"flex shrink-0 items-center",children:z}):null,u(w)?e("span",{className:"min-w-0 truncate",children:w}):null]}):null,t("div",{className:["flex min-w-0 flex-wrap items-baseline gap-1 font-semibold text-(--neba-fg) tabular-nums",x[r]].join(" "),children:[u($)?e("span",{className:`font-medium text-(--neba-muted-fg) ${p[r]}`,children:$}):null,e("span",{className:"min-w-0 break-words",children:V}),u(M)?e("span",{className:`font-medium text-(--neba-muted-fg) ${p[r]}`,children:M}):null]}),Q?t("div",{className:`flex min-w-0 flex-wrap items-center gap-x-2 ${b[r]}`,children:[null!==L&&null!==K?e(a,{size:r,variant:"text",color:P,startIcon:g[K],className:"tabular-nums",children:L}):null,u(D)?e("span",{className:`min-w-0 text-(--neba-muted-fg) ${c[r]}`,children:D}):null]}):null,I]})});
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { useRender } from '@base-ui/react/use-render';
|
|
3
|
+
import type { NebaColor } from '../../types.js';
|
|
4
|
+
export interface StreamingTextProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'color'> {
|
|
5
|
+
/**
|
|
6
|
+
* The text so far. A **string** is what this is for: it is cut into words,
|
|
7
|
+
* and each one fades in as it lands. Anything else is rendered untouched,
|
|
8
|
+
* with the caret and the reserved height still around it.
|
|
9
|
+
*/
|
|
10
|
+
children?: React.ReactNode;
|
|
11
|
+
/**
|
|
12
|
+
* Whether more is still coming. It draws the caret and marks the block busy;
|
|
13
|
+
* it does not change what is already there.
|
|
14
|
+
* @default false
|
|
15
|
+
*/
|
|
16
|
+
streaming?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* The block at the end while the stream runs. `false` drops it, and a node
|
|
19
|
+
* replaces it — a spinner, a set of dots, a word.
|
|
20
|
+
* @default true
|
|
21
|
+
*/
|
|
22
|
+
cursor?: React.ReactNode | boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Fades each word in as it arrives.
|
|
25
|
+
*
|
|
26
|
+
* On. It costs one element per word, which is the price of the effect: a
|
|
27
|
+
* transition on the block as a whole would fade the *whole answer* every time
|
|
28
|
+
* a token landed. Turn it off for a very long answer, or where the text is
|
|
29
|
+
* being re-rendered from something other than a stream.
|
|
30
|
+
* @default true
|
|
31
|
+
*/
|
|
32
|
+
fade?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* How many lines of height to hold before anything has arrived, so the page
|
|
35
|
+
* does not jump when the first word lands. Measured in `1lh`, which is the
|
|
36
|
+
* line height this block actually has rather than a guess at one.
|
|
37
|
+
*
|
|
38
|
+
* The reservation is a floor and stays a floor once the text is there: a
|
|
39
|
+
* height that is given up on arrival is the same jump twice.
|
|
40
|
+
* @default 1
|
|
41
|
+
*/
|
|
42
|
+
lines?: number;
|
|
43
|
+
/** The caret's colour family. @default 'primary' */
|
|
44
|
+
color?: NebaColor;
|
|
45
|
+
/** Renders something other than a `<div>` — a `<p>`, most of the time. */
|
|
46
|
+
render?: useRender.RenderProp;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Text arriving from somewhere else.
|
|
50
|
+
*
|
|
51
|
+
* [AnimateTyping](../transitions/animate-typing) types out a string it already
|
|
52
|
+
* has: it knows the ending and is spending time on the way there. This is the
|
|
53
|
+
* opposite direction — the string is being handed over a piece at a time,
|
|
54
|
+
* nobody knows how long it will be, and the component's job is to make that
|
|
55
|
+
* land without the page moving underneath whoever is reading it.
|
|
56
|
+
*
|
|
57
|
+
* Three things do that. The block holds a floor of `lines` before anything has
|
|
58
|
+
* arrived, and keeps holding it afterwards, because a reservation given up on
|
|
59
|
+
* arrival is the same jump twice. A caret says the text is not finished. And
|
|
60
|
+
* each word fades in on its own rather than the block fading as a whole — which
|
|
61
|
+
* is not a flourish: a transition on the block would replay the *entire* answer
|
|
62
|
+
* every time a token landed.
|
|
63
|
+
*
|
|
64
|
+
* The fade needs no bookkeeping at all. Words are keyed by position, so a word
|
|
65
|
+
* already on screen keeps its element and never animates again; only a new one
|
|
66
|
+
* is a new element, and the last word grows a character at a time inside the
|
|
67
|
+
* element it already has.
|
|
68
|
+
*
|
|
69
|
+
* It is deliberately **not** a live region. An answer that announced itself
|
|
70
|
+
* token by token would be unusable, and one that announced itself whole on
|
|
71
|
+
* every token would say the beginning again and again. Announcing a finished
|
|
72
|
+
* answer is the application's decision, because only the application knows
|
|
73
|
+
* whether the reader asked for this one.
|
|
74
|
+
*/
|
|
75
|
+
export declare const StreamingText: React.ForwardRefExoticComponent<StreamingTextProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as e,Fragment as r,jsxs as a}from"react/jsx-runtime";import*as n from"react";import{useRender as s}from"@base-ui/react/use-render";import{cx as t,hasContent as i}from"../../internal/styles.js";export const StreamingText=/*@__PURE__*/n.forwardRef(function StreamingText({children:l,streaming:c=!1,cursor:m=!0,fade:o=!0,lines:d=1,color:u="primary",render:p,className:f,style:h,...g},x){const v="string"==typeof l?l:null,y=n.useMemo(()=>null!==v&&o?function(e){return e.split(/(\s+)/).filter(e=>""!==e)}(v):null,[v,o]),b=c&&!1!==m?!0===m?e("span",{"aria-hidden":"true",className:"neba-stream-caret"}):m:null;return s({render:p??e("div",{}),ref:x,props:{"aria-busy":c||void 0,"data-streaming":c||void 0,className:t("min-h-(--n-reserve) whitespace-pre-wrap",f),style:{"--n-reserve":`calc(${Math.max(d,0)} * 1lh)`,"--n-accent":`var(--neba-${u}-accent)`,...h},children:a(r,{children:[y?y.map((r,a)=>/\s/.test(r)?e(n.Fragment,{children:r},a):e("span",{className:"neba-stream-word",children:r},a)):l,i(b)?b:null]}),...g}})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{StreamingText}from"./StreamingText.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as a,Fragment as r}from"react/jsx-runtime";import*as n from"react";import{Switch as l}from"@base-ui/react/switch";import{Field as t}from"@base-ui/react/field";import{controlTextClasses as o,cx as i,hitAreaClasses as
|
|
1
|
+
"use client";import{jsx as e,jsxs as a,Fragment as r}from"react/jsx-runtime";import*as n from"react";import{Switch as l}from"@base-ui/react/switch";import{Field as t}from"@base-ui/react/field";import{controlTextClasses as o,cx as i,hitAreaClasses as s,metaTextClasses as c,surfaceClasses as d,tickRowLeadingClasses as b}from"../../internal/styles.js";import{useStyleDefaults as h}from"../../internal/defaults.js";import{useFieldsetDisabled as m}from"../../internal/fieldset.js";const f={xs:"h-3.5 w-6",sm:"h-4 w-7",md:"h-5 w-9",lg:"h-6 w-11",xl:"h-7 w-13"},u={xs:"data-[checked]:start-[calc(100%-0.75rem)]",sm:"data-[checked]:start-[calc(100%-0.875rem)]",md:"data-[checked]:start-[calc(100%-1.125rem)]",lg:"data-[checked]:start-[calc(100%-1.375rem)]",xl:"data-[checked]:start-[calc(100%-1.625rem)]"},v={xs:"",sm:"",md:"py-[calc((1.25rem-1lh)/2)]",lg:"py-[calc((1.5rem-1lh)/2)]",xl:"py-[calc((1.75rem-1lh)/2)]"},g=["relative inline-flex shrink-0 border",s,"[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]","rounded-full","[transition-property:background-color,border-color,box-shadow]","[transition-duration:var(--neba-duration-fill),var(--neba-duration),var(--neba-duration)]","[transition-timing-function:var(--neba-ease)]","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2"].join(" "),p=[d,"cursor-pointer bg-(--neba-groove) [border-color:var(--n-line)]","hover:bg-(--neba-groove-hover) hover:[border-color:var(--n-line-hover)]","data-[checked]:bg-(--n-fill) data-[checked]:[border-color:transparent]","data-[checked]:hover:bg-(--n-fill-hover)"].join(" "),x=[d,"cursor-default bg-(--neba-groove) [border-color:var(--n-line)]","[filter:saturate(0.55)]","data-[checked]:bg-(--n-fill) data-[checked]:[border-color:transparent]"].join(" "),w=["cursor-not-allowed bg-transparent [border-color:var(--neba-disabled-border)] shadow-none","data-[checked]:bg-(--neba-disabled-bg)"].join(" "),k=["absolute inset-y-0.5 start-0.5 aspect-square rounded-full bg-(--neba-surface)","[box-shadow:var(--neba-shadow-1)]","[transition:inset-inline-start_var(--neba-duration)_var(--neba-ease)]"].join(" ");export const Switch=/*@__PURE__*/n.forwardRef(function Switch(n,s){const{size:d="md",color:N="primary",label:j,description:y,error:$,invalid:_,labelPlacement:R="end",disabled:S,readOnly:z=!1,className:O,classNames:q,style:D,...E}=h(n,["size"]),F=m(S),L=null!=$&&!1!==$&&""!==$,P=_??L,T=P?"danger":N,A={"--n-fill":`var(--neba-${T}-fill)`,"--n-fill-hover":`var(--neba-${T}-fill-hover)`,"--n-accent":`var(--neba-${T}-accent)`,"--n-line":`var(--neba-${T}-line)`,"--n-line-hover":`var(--neba-${T}-line-hover)`,"--n-ring":`var(--neba-${T}-ring)`},B=e("span",{className:"flex h-[1lh] shrink-0 items-center",children:e(l.Root,{ref:s,className:i("neba-switch",g,f[d],F?w:z?x:p,q?.control),disabled:F,readOnly:z,...E,children:e(l.Thumb,{className:i("neba-switch-thumb",k,u[d],q?.thumb)})})}),C=j||y?a("span",{className:i("flex min-w-0 flex-col gap-0.5","start"===R?"flex-1":""),children:[j?e(t.Label,{className:i("leading-[1.4]",F?"text-(--neba-disabled-fg)":"cursor-pointer text-(--neba-fg)",q?.label),children:j}):null,y?e(t.Description,{className:i(c[d],"text-(--neba-muted-fg)",q?.description),children:y}):null]}):null;return a(t.Root,{disabled:F,invalid:P,className:i("inline-flex flex-col gap-1 align-top",O??""),style:{...A,...D},children:[e("div",{className:i("flex items-start gap-2.5",o[d],b,v[d]),children:a(r,"start"===R?{children:[C,B]}:{children:[B,C]})}),e(t.Error,L?{match:!0,className:i(c[d],"text-(--n-accent)",q?.error),children:$}:{className:i(c[d],"text-(--n-accent)",q?.error)})]})});
|
|
@@ -86,11 +86,17 @@ export interface TableProps<Row> extends Omit<BoxProps, 'padded' | 'children' |
|
|
|
86
86
|
/** Lights the row under the pointer. @default false */
|
|
87
87
|
hoverable?: boolean;
|
|
88
88
|
/**
|
|
89
|
-
* Pins the header while the body scrolls.
|
|
90
|
-
*
|
|
89
|
+
* Pins the header while the body scrolls. The sheet the table draws is what
|
|
90
|
+
* scrolls, so its height is limited with `maxHeight`; a height limited on a
|
|
91
|
+
* box around the table scrolls that box, and the header goes with the rows.
|
|
91
92
|
* @default false
|
|
92
93
|
*/
|
|
93
94
|
stickyHeader?: boolean;
|
|
95
|
+
/**
|
|
96
|
+
* The tallest the sheet gets before its rows scroll inside it: a number of
|
|
97
|
+
* pixels or any CSS length.
|
|
98
|
+
*/
|
|
99
|
+
maxHeight?: number | string;
|
|
94
100
|
/** Makes rows activatable. Also turns on the hover treatment. */
|
|
95
101
|
onRowClick?: (row: Row, index: number) => void;
|
|
96
102
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import{Box as r}from"../box/Box.js";import{tableMessages as a,useMessages as l}from"../../internal/i18n.js";import{controlTextLeadingClasses as n,cx as o,metaTextClasses as s,paddingXValues as i}from"../../internal/styles.js";import{useStyleDefaults as
|
|
1
|
+
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import{Box as r}from"../box/Box.js";import{tableMessages as a,useMessages as l}from"../../internal/i18n.js";import{controlTextLeadingClasses as n,cx as o,metaTextClasses as s,paddingXValues as i,toLength as d}from"../../internal/styles.js";import{useStyleDefaults as c}from"../../internal/defaults.js";const m={default:{xs:"0.25rem",sm:"0.375rem",md:"0.625rem",lg:"0.75rem",xl:"0.875rem"},compact:{xs:"0.125rem",sm:"0.25rem",md:"0.375rem",lg:"0.5rem",xl:"0.625rem"}},p=["[--n-row:transparent]","[transition:background-color_var(--neba-duration)_var(--neba-ease)]"].join(" "),y=["cursor-pointer [outline:none]","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:[outline-offset:-2px]"].join(" "),b={borderTop:"1px solid var(--n-line)",backgroundColor:"var(--n-row)"};export function Table(h){const{headers:u,items:g,getRowKey:x,caption:f,locale:v,empty:k,striped:w=!1,hoverable:N=!1,stickyHeader:j=!1,maxHeight:C,onRowClick:_,size:z="md",density:A="default",className:$,classNames:H,style:T,...B}=c(h,["size","density","locale"]),D=l(a,v),K=i[A][z],R=m[A][z],E=Boolean(_),I=N||E,S={padding:`${R} ${K}`},q={...S,backgroundColor:"var(--n-panel-press)",color:"var(--n-cell-ink, var(--neba-muted-fg))"};return e(r,{size:z,density:A,padded:!1,className:o("overflow-x-auto",$??""),style:void 0===C?T:{maxHeight:d(C),...T},...B,children:t("table",{className:o("w-full text-start",n[z],"text-(--neba-fg)",H?.table),style:{borderCollapse:"collapse"},children:[f?e("caption",{className:o(s[z],"text-(--neba-muted-fg)",H?.caption),style:{...S,textAlign:"start"},children:f}):null,e("colgroup",{children:u.map(t=>e("col",{style:void 0===t.width?void 0:{width:"number"==typeof t.width?`${t.width}px`:t.width}},t.key))}),e("thead",{className:H?.head,children:e("tr",{children:u.map(t=>e("th",{scope:"col",className:o("font-semibold whitespace-nowrap",j?"sticky top-0 z-10 [backdrop-filter:var(--neba-blur)]":"",H?.headCell),style:{...q,textAlign:t.align??"start"},children:t.label??t.key},t.key))})}),e("tbody",{className:H?.body,children:0===g.length?e("tr",{className:o(p,H?.row),style:b,children:e("td",{colSpan:u.length,className:H?.empty,style:{padding:`2rem ${K}`,textAlign:"center",color:"var(--n-cell-ink, var(--neba-muted-fg))"},children:k??D.empty})}):g.map((t,r)=>e("tr",{className:o(p,w&&r%2==1?"[--n-row:color-mix(in_oklab,var(--neba-fg)_4%,transparent)]":"",I?"hover:[--n-row:var(--n-soft)]":"",E?y:"",H?.row),style:b,tabIndex:E?0:void 0,onClick:_?()=>_(t,r):void 0,onKeyDown:_?e=>{e.target===e.currentTarget&&("Enter"!==e.key&&" "!==e.key||(e.preventDefault(),_(t,r)))}:void 0,children:u.map(a=>e("td",{className:H?.cell,style:{...S,textAlign:a.align??"start"},children:a.render?a.render(t,r):t[a.key]},a.key))},x?x(t,r):r))})]})})}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import type { NebaOrientation, NebaStyleProps, NebaVariant } from '../../types.js';
|
|
2
|
+
import type { NebaAlign, NebaOrientation, NebaStyleProps, NebaVariant } from '../../types.js';
|
|
3
3
|
/** A tab's value. The same restraint Select puts on its own — an identifier. */
|
|
4
4
|
export type TabValue = string | number;
|
|
5
5
|
/**
|
|
@@ -89,6 +89,22 @@ export interface TabsProps extends Omit<NebaStyleProps, 'variant'>, Omit<React.C
|
|
|
89
89
|
wheel?: boolean;
|
|
90
90
|
/** The tabs share the bar's full width, each taking an equal share of it. */
|
|
91
91
|
fullWidth?: boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Where a tab's label sits inside the tab, once the tab is wider than the
|
|
94
|
+
* label is.
|
|
95
|
+
*
|
|
96
|
+
* Which is the whole of when this is worth setting: a horizontal bar sizes
|
|
97
|
+
* each tab to its own content, so there is nothing to align until
|
|
98
|
+
* `fullWidth` gives them all an equal share. A **vertical** bar is the case
|
|
99
|
+
* it exists for — the tabs there are a column, every one of them as wide as
|
|
100
|
+
* the longest, and centred labels down a column read as a ragged edge on
|
|
101
|
+
* both sides. `start` is what a sidebar of tabs usually wants.
|
|
102
|
+
*
|
|
103
|
+
* It moves the label and the icons together, and nothing else: the tab keeps
|
|
104
|
+
* its own size, its padding and its indicator.
|
|
105
|
+
* @default 'center'
|
|
106
|
+
*/
|
|
107
|
+
align?: NebaAlign;
|
|
92
108
|
children?: React.ReactNode;
|
|
93
109
|
}
|
|
94
110
|
export interface TabProps extends Omit<React.ComponentPropsWithoutRef<'button'>, 'value' | 'color'> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as a from"react";import{
|
|
1
|
+
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as a from"react";import{glowClasses as o,spotlightSlot as n,trackPointer as l}from"../../internal/glow.js";import{Tabs as i}from"@base-ui/react/tabs";import{controlHeightClasses as r,controlHeightValues as s,controlTextClasses as c,cx as d,gapClasses as f,hasContent as u,iconClasses as b,paddingXClasses as v,radiusClasses as h,surfaceClasses as p,surfaceSlots as m,transitionClasses as x}from"../../internal/styles.js";import{observeResize as g}from"../../internal/observe.js";import{bindAxisWheel as w}from"../../internal/wheel.js";import{useStyleDefaults as y}from"../../internal/defaults.js";const z=/*@__PURE__*/a.createContext({variant:"outline",size:"md",density:"default",orientation:"horizontal",fullWidth:!1,align:"center"}),j={solid:{horizontal:`${p} inline-flex bg-(--n-panel) p-1 [box-shadow:var(--neba-plate-glass)]`,vertical:`${p} inline-flex flex-col bg-(--n-panel) p-1 [box-shadow:var(--neba-plate-glass)]`},outline:{horizontal:"flex border-b [border-color:var(--n-line)]",vertical:"flex flex-col border-e [border-color:var(--n-line)]"},text:{horizontal:"flex",vertical:"flex flex-col"}},N={solid:{horizontal:"absolute left-(--active-tab-left) top-(--active-tab-top) h-(--active-tab-height) w-(--active-tab-width)",vertical:"absolute left-(--active-tab-left) top-(--active-tab-top) h-(--active-tab-height) w-(--active-tab-width)"},outline:{horizontal:"absolute bottom-0 left-(--active-tab-left) h-0.5 w-(--active-tab-width)",vertical:"absolute end-0 top-(--active-tab-top) h-(--active-tab-height) w-0.5"},text:{horizontal:"absolute bottom-0 left-(--active-tab-left) h-0.5 w-(--active-tab-width)",vertical:"absolute end-0 top-(--active-tab-top) h-(--active-tab-height) w-0.5"}},T={horizontal:"absolute left-(--active-tab-left) top-(--active-tab-top) h-(--active-tab-height) w-(--active-tab-width) border-b-2 [border-color:var(--n-accent)] !bg-transparent",vertical:"absolute left-(--active-tab-left) top-(--active-tab-top) h-(--active-tab-height) w-(--active-tab-width) border-e-2 [border-color:var(--n-accent)] !bg-transparent"},$={solid:`${p} bg-(--n-panel-press) [box-shadow:var(--neba-shadow-1),var(--neba-plate-glass)]`,outline:"bg-(--n-accent)",text:"bg-(--n-accent)"},k={start:"justify-start",center:"justify-center",end:"justify-end"},M={solid:"text-(--neba-muted-fg) hover:text-(--neba-fg) data-[active]:text-(--n-accent)",outline:"text-(--neba-muted-fg) hover:text-(--neba-fg) data-[active]:text-(--n-accent)",text:"text-(--neba-muted-fg) hover:text-(--neba-fg) data-[active]:text-(--n-accent)"};export const Tab=/*@__PURE__*/a.forwardRef(function Tab({value:s,startIcon:p,endIcon:m,disabled:g=!1,className:w,style:y,children:j,...N},T){const{variant:$,size:E,density:P,fullWidth:C,align:R}=a.useContext(z);return t(i.Tab,{ref:T,value:s,disabled:g,style:{...g?void 0:n,...y},className:d("relative z-10 inline-flex shrink-0 cursor-pointer items-center select-none","whitespace-nowrap font-medium",k[R],"[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]",r[E],c[E],f[E],v[P][E],"solid"===$?h[E]:"",x,b,M[$],"focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:[outline-offset:-2px]","data-[disabled]:cursor-not-allowed data-[disabled]:text-(--neba-disabled-fg)",g?"":o,C?"flex-1":"",w??""),...N,onPointerMove:l(N.onPointerMove,!g),children:[u(p)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:p}):null,j,u(m)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:m}):null]})});export const TabPanel=/*@__PURE__*/a.forwardRef(function TabPanel({value:t,keepMounted:o=!1,className:n,children:l,...r},s){const{size:c}=a.useContext(z);return e(i.Panel,{ref:s,value:t,keepMounted:o,className:["min-w-0 flex-1 text-(--neba-fg)","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2","data-[starting-style]:opacity-0","[transition:opacity_var(--neba-duration)_var(--neba-ease)]",h[c],n??""].filter(Boolean).join(" "),...r,children:l})});export const Tabs=/*@__PURE__*/a.forwardRef(function Tabs(o,n){const{variant:l="outline",size:r="md",color:c="primary",density:f="default",value:u,defaultValue:b,onValueChange:v,orientation:p="horizontal",activateOnFocus:x=!1,loopFocus:k=!0,overflow:M="scroll",lines:E,wheel:P=!0,fullWidth:C=!1,align:R="center",className:V,style:W,children:_,...F}=y(o,["size","density","variant"]),A="horizontal"===p,L="wrap"===M,H=a.useRef(null),I=a.useRef(null),O=a.useMemo(()=>({variant:l,size:r,density:f,orientation:p,fullWidth:C,align:R}),[l,r,f,p,C,R]),B=[],q=[],D=e=>a.Children.forEach(e,e=>{a.isValidElement(e)&&e.type===a.Fragment?D(e.props.children):a.isValidElement(e)&&e.type===TabPanel?q.push(e):null!=e&&!1!==e&&B.push(e)});D(_);const G=B.length;return a.useEffect(()=>{const e=I.current,t=H.current;if(!e||!t)return;const a=()=>{const a=Math.abs(A?e.scrollLeft:e.scrollTop),o=A?e.clientWidth:e.clientHeight,n=A?e.scrollWidth:e.scrollHeight,l=A?"x":"y",i=A?"y":"x";t.toggleAttribute(`data-overflow-${l}-start`,a>1),t.toggleAttribute(`data-overflow-${l}-end`,n-o-a>1),t.removeAttribute(`data-overflow-${i}-start`),t.removeAttribute(`data-overflow-${i}-end`)};a(),e.addEventListener("scroll",a,{passive:!0});const o=g(e,a);return()=>{e.removeEventListener("scroll",a),o()}},[A,G]),a.useEffect(()=>{const e=I.current;if(e&&P)return w(e)},[P]),e(z.Provider,{value:O,children:t(i.Root,{ref:e=>{H.current=e,"function"==typeof n?n(e):n&&(n.current=e)},value:u,defaultValue:b,onValueChange:e=>v?.(e),orientation:p,className:d("flex min-w-0","vertical"===p?"flex-row gap-4":"flex-col gap-4",V??""),style:{...m(c,0),...W},...F,children:[t(i.List,{ref:I,activateOnFocus:x,loopFocus:k,className:d("relative shrink-0",j[l][p],"solid"===l?h[r]:"",C&&"horizontal"===p?"w-full":"",L?"flex-wrap":A?"overflow-x-auto":"",L&&void 0!==E?A?"overflow-y-auto":"overflow-x-auto":"",!L&&A?"overflow-y-hidden":"","overscroll-contain","[scrollbar-width:none] [&::-webkit-scrollbar]:hidden","neba-scroll-fade"),style:{"--n-fade":"2rem",maxHeight:L&&void 0!==E?`calc(${s[r]} * ${Math.max(1,Math.round(E))}${"solid"===l?" + 0.5rem":"outline"===l&&A?" + 1px":""})`:void 0},children:[B,e(i.Indicator,{className:["pointer-events-none",L&&"solid"!==l?T[p]:N[l][p],$[l],"solid"===l?h[r]:"rounded-full","[transition-property:left,top,width,height]","[transition-duration:var(--neba-duration)]","[transition-timing-function:var(--neba-ease)]"].join(" ")})]}),q]})})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as n from"react";import{Field as r}from"@base-ui/react/field";import{Input as l}from"@base-ui/react/input";import{
|
|
1
|
+
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as n from"react";import{Field as r}from"@base-ui/react/field";import{Input as l}from"@base-ui/react/input";import{fieldLight as i,fieldSpotlightSlot as s,glowClasses as a}from"../../internal/glow.js";import{SpinnerIcon as o}from"../../internal/icons.js";import{controlTextLeadingClasses as c,cx as m,disabledClasses as d,fieldFocusTransitionClasses as u,fieldHeightClasses as p,fieldReadOnlyClasses as f,fieldRestClasses as x,fieldRingClasses as h,gapClasses as b,iconClasses as g,metaTextClasses as y,paddingXClasses as $,radiusClasses as w,stackGapClasses as v,surfaceSlots as N,transitionClasses as j}from"../../internal/styles.js";import{keyHandler as z}from"../../internal/keys.js";import{useStyleDefaults as k}from"../../internal/defaults.js";import{useFieldsetDisabled as D}from"../../internal/fieldset.js";const R={xs:`${b.xs} ${w.xs} ${c.xs}`,sm:`${b.sm} ${w.sm} ${c.sm}`,md:`${b.md} ${w.md} ${c.md}`,lg:`${b.lg} ${w.lg} ${c.lg}`,xl:`${b.xl} ${w.xl} ${c.xl}`},T={xs:"min-h-5.5 py-[3px]",sm:"min-h-6.5 py-[4px]",md:"min-h-8 py-[5px]",lg:"min-h-10 py-[8px]",xl:"min-h-12 py-[10px]"},F={none:"resize-none",vertical:"resize-y",horizontal:"resize-x",both:"resize"},I=["group relative flex w-full","[-webkit-tap-highlight-color:transparent]",j,u,h,g].join(" "),K=x,O=f;export const TextField=/*@__PURE__*/n.forwardRef(function TextField(c,u){const{variant:f="outline",size:x="md",color:h="primary",density:b="default",elevation:g=0,multiline:w=!1,rows:j=3,resize:C="vertical",label:E,description:L,error:P,invalid:W,startIcon:q,endIcon:A,loading:B=!1,fullWidth:G=!1,classNames:H,shortcuts:J,onKeyDown:M,readOnly:Q=!1,disabled:S,type:U="text",className:V,style:X,...Y}=k(c,["size","density","variant"]),Z=D(S),_=!Z&&!Q,ee=null!=P&&!1!==P&&""!==P,te=W??ee,ne=te?"danger":h,re=n.useRef(null),le=n.useCallback(e=>{re.current=e,"function"==typeof u?u(e):u&&(u.current=e)},[u]),ie=m(I,R[x],w?`${T[x]} items-start`:`${p[x]} items-center`,$[b][x],Z?d[f]:Q?O[f]:`${K[f]} ${a}`,Z?"":"cursor-text",H?.shell),se=m("neba-input min-w-0 flex-1 bg-transparent [font:inherit] text-inherit","[outline:none]","placeholder:text-(--neba-muted-fg)","caret-(--n-accent) selection:bg-(--n-soft-press)","disabled:cursor-not-allowed",w?`block ${F[C]}`:"self-stretch",H?.control),ae="inline-flex h-[1lh] shrink-0 items-center text-(--neba-muted-fg) transition-[color] duration-(--neba-duration) group-focus-within:text-(--n-accent)";return t(r.Root,{disabled:Z,invalid:te,className:m("flex-col align-top",v[x],G?"flex w-full":"inline-flex",V??""),style:{...N(ne,g),..._?s:void 0,...X},children:[E?e(r.Label,{className:m(y[x],"font-medium",Z?"text-(--neba-disabled-fg)":"text-(--neba-fg)",H?.label),children:E}):null,t("span",{className:ie,...i(_),onPointerDown:e=>{e.target!==e.currentTarget||Z||(e.preventDefault(),re.current?.focus())},children:[q?e("span",{className:ae,children:q}):null,e(l,{ref:le,className:se,disabled:Z,readOnly:Q,"aria-busy":B||void 0,"data-loading":B||void 0,...w?{render:e("textarea",{rows:j})}:{type:U},...Y,onKeyDown:z(J,M)}),B?e("span",{className:ae,children:e(o,{})}):A?e("span",{className:ae,children:A}):null]}),L?e(r.Description,{className:m(y[x],"text-(--neba-muted-fg)",H?.description),children:L}):null,e(r.Error,ee?{match:!0,className:m(y[x],"text-(--n-accent)",H?.error),children:P}:{className:m(y[x],"text-(--n-accent)",H?.error)})]})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as n,Fragment as e,jsxs as r}from"react/jsx-runtime";import*as i from"react";import{useRender as a}from"@base-ui/react/use-render";import{linkMessages as
|
|
1
|
+
"use client";import{jsx as n,Fragment as e,jsxs as r}from"react/jsx-runtime";import*as i from"react";import{useRender as a}from"@base-ui/react/use-render";import{linkMessages as t,useMessages as o}from"../../internal/i18n.js";import{ExternalLinkIcon as l,LinkIcon as s}from"../../internal/icons.js";import{safeHref as c,safeRel as m}from"../../internal/link.js";import{controlTextLeadingClasses as u,cx as d,focusRingClasses as p,srOnlyClasses as f}from"../../internal/styles.js";import{useStyleDefaults as b}from"../../internal/defaults.js";const h={always:"[&.neba-link]:underline",hover:"[&.neba-link]:no-underline [&.neba-link]:hover:underline",none:"[&.neba-link]:no-underline"},v=["neba-link","cursor-pointer","[&_svg]:pointer-events-none [&_svg]:inline [&_svg]:size-[0.95em] [&_svg]:shrink-0",["[transition-property:color,text-decoration-color]","[transition-duration:var(--neba-duration)]","[transition-timing-function:var(--neba-ease)]"].join(" "),p,"focus-visible:rounded-[0.25rem]"].join(" "),k=new Set(["_self","_parent","_top"]);export const TextLink=/*@__PURE__*/i.forwardRef(function TextLink(i,p){const{href:g,underline:j="always",color:x,size:_,newTab:y=!1,icon:w,locale:N,render:T,className:z,style:C,children:L,...$}=b(i,["locale"]),F=o(t,N),R=w??y,S=!0===R?n(y?l:s,{}):R,q=d(v,_?u[_]:"",h[j],x?"[&.neba-link]:text-(--n-accent)":"[&.neba-link]:text-inherit",z??""),A={"--n-underline":"color-mix(in oklab, currentColor 45%, transparent)","--n-underline-hover":"currentColor","--n-ring":`var(--neba-${x??"primary"}-ring)`,...x?{"--n-accent":`var(--neba-${x}-accent)`}:null},{rel:B,target:D,...E}=$,G=y?"_blank":D,H=m(G,B),I=void 0!==G&&!k.has(G);return a({render:T??n("a",{}),ref:p,props:{href:c(g),target:G,className:q,style:{...A,...C},children:r(e,{children:[L,S?n("span",{className:"ms-[0.25em]",children:S}):null,I?r(e,{children:[" ",n("span",{className:f,children:F.newTab})]}):null]}),...E,rel:H}})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as n}from"react/jsx-runtime";import*as o from"react";import{Button as
|
|
1
|
+
"use client";import{jsx as e,jsxs as n}from"react/jsx-runtime";import*as o from"react";import{Button as t}from"../button/Button.js";import{TimeGrid as l,usePickerLabels as s}from"../../internal/calendar.js";import{ClockIcon as a}from"../../internal/icons.js";import{PickerFooter as i,PickerShell as r}from"../../internal/picker.js";import{displaySamples as c,formatDate as u,clampDate as d,isHour12 as m,isValidDate as p,secondsOfDay as h,startOfDay as f,timeUnitSpan as g,toISOTime as S,withPlaceholder as y,withTime as b}from"../../internal/date.js";import{cx as v}from"../../internal/styles.js";import{useStyleDefaults as j}from"../../internal/defaults.js";export const TimePicker=/*@__PURE__*/o.forwardRef(function TimePicker(x,C){const{value:w,defaultValue:z,onValueChange:k,open:D,defaultOpen:O,onOpenChange:T,referenceDate:M,minTime:V,maxTime:B,shouldDisableTime:H,hour12:I,showSeconds:N=!1,hourStep:P=1,minuteStep:R=1,secondStep:F=1,locale:L,format:q,placeholder:A,clearable:E=!1,showNowButton:G=!0,closeOnSelect:J=!1,labels:K,name:Q,size:U="md",color:W="primary",density:X="default",readOnly:Y=!1,disabled:Z=!1,startIcon:$,..._}=j(x,["size","density","variant","locale"]),ee=s(K,L),ne=I??m(L),[oe,te]=o.useState(z??null),le=void 0!==w?w:oe,[se,ae]=o.useState(O??!1),ie=D??se,[re]=o.useState(()=>M??f(new Date)),ce=e=>{e&&(Y||Z)||(void 0===D&&ae(e),T?.(e))},ue=(e,n)=>p(n)?b(e,{hours:n.getHours(),minutes:n.getMinutes(),seconds:n.getSeconds()}):null,de=e=>{const n=null===e?null:d(e,ue(e,V),ue(e,B));void 0===w&&te(n),k?.(n)},me=o.useCallback((e,n)=>{const[o,t]=g(n,e);return!!(p(V)&&t<h(V))||(!!(p(B)&&o>h(B))||(H?.(e,n)??!1))},[V,B,H]),pe=o.useMemo(()=>q??{hour:"numeric",minute:"2-digit",...N?{second:"2-digit"}:{}},[q,N]),he=new Date,fe=b(M??re,{hours:he.getHours(),minutes:he.getMinutes(),seconds:N?he.getSeconds():0}),ge=G||E||!J,Se=o.useMemo(()=>y(c(L,pe),A),[L,pe,A]);return e(r,{..._,size:U,color:W,density:X,readOnly:Y,disabled:Z,triggerRef:C,startIcon:$??e(a,{}),display:p(le)?u(le,L,pe):A??"",samples:Se,empty:!p(le),clearable:E,onClear:()=>de(null),open:ie,onOpenChange:ce,clearLabel:ee.clear,hiddenValues:Q?[{name:Q,value:p(le)?S(le,N):""}]:void 0,children:n("div",{className:v("flex flex-col",ge&&"gap-1.5"),children:[e(l,{size:U,density:X,locale:L,value:p(le)?le:null,referenceDate:M??re,onChange:e=>{de(e),J&&ce(!1)},hour12:ne,showSeconds:N,hourStep:P,minuteStep:R,secondStep:F,shouldDisableTime:me,labels:ee,autoFocus:!0}),ge?n(i,{size:U,children:[E?e(t,{variant:"text",size:U,color:W,density:"compact",onClick:()=>{de(null),ce(!1)},children:ee.clear}):null,G?e(t,{variant:"text",size:U,color:W,density:"compact",disabled:me(fe,"second"),onClick:()=>{de(fe),ce(!1)},children:ee.now}):null,J?null:e(t,{variant:"solid",size:U,color:W,density:"compact",onClick:()=>ce(!1),children:ee.done})]}):null]})})});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { useRender } from '@base-ui/react/use-render';
|
|
3
|
+
import { type TimelineMessages } from '../../internal/i18n.js';
|
|
3
4
|
import type { NebaColor, NebaDensity, NebaOrientation, NebaSize } from '../../types.js';
|
|
4
5
|
/**
|
|
5
6
|
* How far along one item is.
|
|
@@ -37,6 +38,13 @@ export interface TimelineProps extends Omit<React.ComponentPropsWithoutRef<'ol'>
|
|
|
37
38
|
* @default 'vertical'
|
|
38
39
|
*/
|
|
39
40
|
orientation?: NebaOrientation;
|
|
41
|
+
/**
|
|
42
|
+
* Which language a step's status is said in to a screen reader — "Completed"
|
|
43
|
+
* or "Upcoming", which the bullet otherwise says only by its shape.
|
|
44
|
+
*/
|
|
45
|
+
locale?: string;
|
|
46
|
+
/** Those two words, written out. Overrides the `locale`'s. */
|
|
47
|
+
labels?: Partial<TimelineMessages>;
|
|
40
48
|
/** Renders something other than an `<ol>` — Base UI's own escape hatch. */
|
|
41
49
|
render?: useRender.RenderProp;
|
|
42
50
|
children?: React.ReactNode;
|
|
@@ -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 r from"react";import{useRender as t}from"@base-ui/react/use-render";import{childKey as n}from"../../internal/children.js";import{timelineMessages as a,useMessages as o}from"../../internal/i18n.js";import{cx as s,hasContent as i,iconClasses as d,metaTextClasses as c,sheetBodyClasses as m,sheetTitleClasses as p,srOnlyClasses as u,surfaceClasses as b,surfaceSlots as x,transitionClasses as f}from"../../internal/styles.js";import{useStyleDefaults as g}from"../../internal/defaults.js";const v=/*@__PURE__*/r.createContext(null),h=/*@__PURE__*/r.createContext({index:0,last:!1}),y={xs:"0.875rem",sm:"1rem",md:"1.25rem",lg:"1.5rem",xl:"1.875rem"},N={xs:"gap-2",sm:"gap-2.5",md:"gap-3",lg:"gap-3.5",xl:"gap-4"},j={default:{xs:"pb-5",sm:"pb-6",md:"pb-7",lg:"pb-8",xl:"pb-10"},compact:{xs:"pb-3",sm:"pb-3.5",md:"pb-4",lg:"pb-5",xl:"pb-6"}},w={default:{xs:"pe-5",sm:"pe-6",md:"pe-7",lg:"pe-8",xl:"pe-10"},compact:{xs:"pe-3",sm:"pe-3.5",md:"pe-4",lg:"pe-5",xl:"pe-6"}},z={solid:"border-solid",dashed:"border-dashed",dotted:"border-dotted",none:""},_={complete:`${b} bg-(--n-fill) text-(--n-on-solid) [box-shadow:var(--neba-plate-solid)]`,current:`${b} bg-(--n-fill) text-(--n-on-solid) [box-shadow:0_0_0_0.25rem_var(--n-soft),var(--neba-plate-solid)]`,upcoming:`${b} border-2 bg-(--n-panel) text-(--neba-muted-fg) [border-color:var(--n-line)]`},C={complete:"[border-color:var(--n-line-hover)]",current:"[border-color:var(--neba-border)]",upcoming:"[border-color:var(--neba-border)]"},$={complete:"text-(--neba-fg)",current:"text-(--n-accent)",upcoming:"text-(--neba-muted-fg)"};export const TimelineItem=/*@__PURE__*/r.forwardRef(function TimelineItem({title:t,meta:n,bullet:b,status:g,color:T,connector:I="solid",className:M,style:P,children:R,...k},A){const q=r.useContext(v),{index:B,last:D}=r.useContext(h),E=q?.size??"md",F=q?.density??"default",G=q?.orientation??"vertical",H=T??q?.color??"primary",J=q?.active??null,K=o(a),L=q?.labels??K,O=g??(null===J?"upcoming":B<J?"complete":B===J?"current":"upcoming"),Q="horizontal"===G,S="none"!==I&&!D,U=e("span",{"aria-hidden":"true",className:s("relative z-10 flex shrink-0 items-center justify-center rounded-full","size-(--n-bullet) text-[calc(var(--n-bullet)*0.5)] leading-none font-semibold tabular-nums",_[O],f,d),children:b}),V=S?e("span",{"aria-hidden":"true",className:s("pointer-events-none absolute",Q?"top-[calc(var(--n-bullet)/2_-_1px)] start-(--n-bullet) end-0 border-t-2":"start-[calc(var(--n-bullet)/2_-_1px)] top-(--n-bullet) bottom-0 border-s-2",z[I],C[O],f)}):null,W=l("div",{className:s("flex min-w-0 flex-col gap-0.5",Q?"mt-2":""),children:["current"===O?null:e("span",{className:u,children:L[O]}),i(t)||i(n)?l("div",{className:"flex flex-wrap items-baseline gap-x-2",children:[i(t)?e("span",{className:s("font-semibold",p[E],$[O],f),children:t}):null,i(n)?e("span",{className:s("text-(--neba-muted-fg)",c[E]),children:n}):null]}):null,i(R)?e("div",{className:s("text-(--neba-muted-fg)",m[E]),children:R}):null]});return l("li",{ref:A,"aria-current":"current"===O?"step":void 0,"data-status":O,className:s("relative",Q?s("flex min-w-0 flex-1 flex-col",D?"":w[F][E]):s("flex",N[E],D?"":j[F][E]),M),style:{"--n-bullet":y[E],...x(H,0),"--n-fill":`var(--neba-${H}-fill)`,"--n-on-solid":`var(--neba-${H}-on-solid)`,...P},...k,children:[V,U,W]})});export const Timeline=/*@__PURE__*/r.forwardRef(function Timeline(l,i){const{active:d,size:c="md",color:m="primary",density:p="default",orientation:u="vertical",locale:b,labels:f,render:y,className:N,style:j,children:w,...z}=g(l,["size","density","locale"]),_=o(a,b),C=r.useMemo(()=>({..._,...f}),[_,f?.complete,f?.upcoming]),$=r.Children.toArray(w),T=$.length,I=r.useMemo(()=>({size:c,density:p,orientation:u,color:m,active:d??null,labels:C}),[c,p,u,m,d,C]),M=t({render:y??e("ol",{}),ref:i,props:{role:"list",className:s("flex","horizontal"===u?"flex-row":"flex-col",N),style:{...x(m,0),...j},children:$.map((l,r)=>e(h.Provider,{value:{index:r,last:r===T-1},children:l},n(l,r))),...z}});return e(v.Provider,{value:I,children:M})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as n}from"react/jsx-runtime";import*as t from"react";import{CartesianChart as o,markTransitionClasses as r}from"../../internal/chart-frame.js";import{barBandRatio as
|
|
1
|
+
"use client";import{jsx as e,jsxs as n}from"react/jsx-runtime";import*as t from"react";import{CartesianChart as o,markTransitionClasses as r}from"../../internal/chart-frame.js";import{barBandRatio as a,barMaxThickness as s,barRadius as i,formatTimeTicks as l,formatTimeValue as c,markGap as m,resolveColor as u,seriesColor as d,timeScale as h,toNumber as f}from"../../internal/chart.js";import{chartMessages as x,useMessages as p}from"../../internal/i18n.js";import{srOnlyClasses as M}from"../../internal/styles.js";import{useStyleDefaults as y}from"../../internal/defaults.js";export function TimelineChart(n){const{series:r,min:i,max:u,barSize:x,rounded:p=!0,size:M="md",density:v="default",xAxis:w,yAxis:$,locale:C,...T}=y(n,["size","density","locale"]),z=t.useMemo(()=>r.map(b),[r]),A=t.useMemo(()=>z.map(e=>e.spans),[z]),D=t.useMemo(()=>{let e=1/0,n=-1/0,t=!1;for(const o of A)for(const r of o)r&&(t=!0,e=Math.min(e,r.from),n=Math.max(n,r.to));return t?{min:e,max:n}:null},[A]),E=t.useMemo(()=>h(D,{min:f(i)??void 0,max:f(u)??void 0,tickCount:$?.tickCount}),[D,i,u,$?.tickCount]),P=t.useMemo(()=>l(E.ticks,E.unit,C),[E,C]),S=t.useMemo(()=>r.map((e,n)=>d(e,n)),[r]),B=t.useMemo(()=>[{data:A.map(e=>e.some(Boolean)?1:null)}],[A]),F=t.useMemo(()=>{const e=g(E.unit);return("day"===e||"week"===e)&&A.some(e=>e.some(e=>null!==e&&(k(e.from)||k(e.to))))},[A,E.unit]),I=t.useMemo(()=>{let e=0,n=1/0,t=-1/0;for(const o of A)for(const r of o)r&&(e+=1,n=Math.min(n,r.from),t=Math.max(t,r.to));return 0===e?{count:e,min:"",max:""}:{count:e,min:c(n,g(E.unit),C,F),max:c(t,g(E.unit),C,F)}},[A,E.unit,C,F]),N=t.useMemo(()=>r.map((e,n)=>e.name??`${n+1}`),[r]),q=x??s[M],R=t.useCallback(e=>{const n=[];return z.forEach((t,o)=>{const r=Math.min(q,Math.max(1,(e.band.band-m*(t.lanes-1))/t.lanes)),a=r*t.lanes+m*(t.lanes-1),s=e.plot.top+e.categoryPx(o)-a/2+r/2;t.spans.forEach((t,a)=>{if(!t||t.to<e.scale.min||t.from>e.scale.max)return;const i=e.valuePx(t.from),l=e.valuePx(t.to);n.push({series:o,index:a,x:(i+l)/2,y:s+t.lane*(r+m),r:r/2,rx:Math.max(0,(l-i)/2),ry:r/2})})}),n},[z,q]),Y=t.useCallback(e=>{const n=A[e.series]?.[e.index];if(!n)return null;const t=[{seriesIndex:e.series,name:N[e.series],color:n.color??S[e.series],value:n.to-n.from,formatted:`${c(n.from,g(E.unit),C,F)} – ${c(n.to,g(E.unit),C,F)}`}];return{heading:n.span.label??N[e.series],items:t}},[A,N,S,E.unit,C,F]);return e(o,{...T,series:B,categories:N,size:M,density:v,locale:C,horizontal:!0,scale:E,xAxis:w,yAxis:{tickFormat:(e,n)=>P[n]??"",...$},legend:!1,bandRatio:a[v],marks:R,markTooltip:Y,summary:I,table:n=>e(j,{id:n,names:N,series:r,spans:A,unit:g(E.unit),clock:F,label:T.label,corner:w?.label,locale:C}),children:n=>e(Spans,{context:n,spans:A,colors:S,rounded:p})})}function b(e){const n=e.data.map(e=>{const n=f(e.start),t=f(e.end);return null===n||null===t?null:{from:Math.min(n,t),to:Math.max(n,t),lane:0,color:e.color?u(e.color):void 0,span:e}}),t=[];return n.map((e,n)=>({one:e,index:n})).filter(e=>Boolean(e.one)).sort((e,n)=>e.one.from-n.one.from).forEach(({one:e})=>{const n=t.findIndex(n=>n<=e.from),o=-1===n?t.length:n;t[o]=e.to,e.lane=o}),{spans:n,lanes:Math.max(1,t.length)}}function Spans({context:n,spans:t,colors:o,rounded:a}){const{marks:s,activeMark:l,plot:c}=n,m=a?i:0;return e("g",{children:s.map(n=>{const a=t[n.series]?.[n.index];if(!a)return null;const s=l?.series===n.series&&l?.index===n.index,i=n.rx??n.r,u=2*(n.ry??n.r),d=Math.max(c.left,n.x-i),h=Math.min(c.left+c.width,n.x+i);if(h<c.left||d>c.left+c.width)return null;const f=Math.max(1,h-d);return e("rect",{x:d,y:n.y-u/2,width:f,height:u,rx:Math.min(m,f/2,u/2),fill:a.color??o[n.series],opacity:s?1:.92,className:r},`${n.series}-${n.index}`)})})}function k(e){const n=new Date(e);return n.getTime()!==new Date(n.getFullYear(),n.getMonth(),n.getDate()).getTime()}function g(e){return"month"===e||"quarter"===e||"year"===e?"day":e}const j=/*@__PURE__*/t.memo(function TimelineTable({id:t,names:o,series:r,spans:a,unit:s,clock:i,label:l,corner:m,locale:u}){const d=p(x,u),h=r.some(e=>e.data.some(e=>void 0!==e.label));return n("table",{id:t,className:M,children:[l?e("caption",{children:l}):null,e("thead",{children:n("tr",{children:[e("th",{scope:"col",children:m??""}),h?e("th",{scope:"col",children:d.title}):null,e("th",{scope:"col",children:d.start}),e("th",{scope:"col",children:d.end})]})}),e("tbody",{children:a.flatMap((t,a)=>t.map((t,l)=>n("tr",{children:[e("th",{scope:"row",children:o[a]}),h?e("td",{children:r[a].data[l]?.label??""}):null,e("td",{children:t?c(t.from,s,u,i):""}),e("td",{children:t?c(t.to,s,u,i):""})]},`${a}-${l}`)))})]})});
|
|
@@ -73,7 +73,8 @@ export interface ToastProviderProps extends Pick<NebaStyleProps, 'variant' | 'si
|
|
|
73
73
|
timeout?: number;
|
|
74
74
|
/**
|
|
75
75
|
* How many are shown at once. The rest are kept and revealed as the stack
|
|
76
|
-
* drains rather than being thrown away.
|
|
76
|
+
* drains rather than being thrown away. Their timers run while they wait, so
|
|
77
|
+
* a toast that waits longer than its `timeout` closes without being shown.
|
|
77
78
|
* @default 3
|
|
78
79
|
*/
|
|
79
80
|
limit?: number;
|
|
@@ -89,6 +90,11 @@ export interface ToastProviderProps extends Pick<NebaStyleProps, 'variant' | 'si
|
|
|
89
90
|
locale?: string;
|
|
90
91
|
/** Accessible name of every toast's × button. Defaults to the `locale`'s word. */
|
|
91
92
|
closeLabel?: string;
|
|
93
|
+
/**
|
|
94
|
+
* Accessible name of the region the stack lives in, which a screen reader can
|
|
95
|
+
* jump to and F6 moves the focus into. Defaults to the `locale`'s word.
|
|
96
|
+
*/
|
|
97
|
+
label?: string;
|
|
92
98
|
/**
|
|
93
99
|
* Class names for the parts of the stack. There is no `className` here — a
|
|
94
100
|
* provider renders no element of its own to put one on.
|
|
@@ -105,6 +111,8 @@ export interface ToastProviderProps extends Pick<NebaStyleProps, 'variant' | 'si
|
|
|
105
111
|
* message, is the shape this component exists to avoid.
|
|
106
112
|
*/
|
|
107
113
|
export declare function useToast(): {
|
|
114
|
+
/** Every toast currently in the stack, newest first. */
|
|
115
|
+
toasts: import("@base-ui/react").ToastObject<ToastData>[];
|
|
108
116
|
/** Raises a toast and returns its id. */
|
|
109
117
|
add: (options: ToastOptions) => string;
|
|
110
118
|
/** Closes one toast, or every toast when called with nothing. */
|
|
@@ -121,8 +129,6 @@ export declare function useToast(): {
|
|
|
121
129
|
success: ToastOptions | ((value: Value) => ToastOptions);
|
|
122
130
|
error: ToastOptions | ((error: unknown) => ToastOptions);
|
|
123
131
|
}) => Promise<Value>;
|
|
124
|
-
/** Every toast currently in the stack, newest first. */
|
|
125
|
-
toasts: import("@base-ui/react").ToastObject<ToastData>[];
|
|
126
132
|
};
|
|
127
133
|
/**
|
|
128
134
|
* Puts the toast stack on the page and lets anything under it raise a message.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as o from"react";import{Toast as
|
|
1
|
+
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as o from"react";import{Toast as i}from"@base-ui/react/toast";import{boxPaddingClasses as s}from"../box/Box.js";import{actionMessages as n,toastMessages as a,useMessages as r}from"../../internal/i18n.js";import{CloseIcon as l,severityIcon as c}from"../../internal/icons.js";import{controlSlots as d,cx as m,focusRingClasses as u,hasContent as f,hitAreaClasses as p,iconClasses as b,metaTextClasses as v,popupFadeClasses as x,radiusClasses as h,sheetBodyClasses as w,sheetHeaderGapClasses as g,sheetSectionGapClasses as y,sheetTitleClasses as j,surfaceClasses as N}from"../../internal/styles.js";import{useStyleDefaults as T}from"../../internal/defaults.js";const L={"top-start":"top-0 items-start","top-center":"top-0 items-center","top-end":"top-0 items-end","bottom-start":"bottom-0 items-start flex-col-reverse","bottom-center":"bottom-0 items-center flex-col-reverse","bottom-end":"bottom-0 items-end flex-col-reverse"},z={solid:[N,"text-(--n-on-solid) bg-(--n-fill)","[box-shadow:var(--neba-shadow-3),var(--neba-plate-solid)]"].join(" "),outline:[N,"border text-(--neba-fg) bg-(--n-panel-press)","[border-color:var(--n-line)]","[box-shadow:var(--neba-shadow-3),var(--neba-plate-glass)]"].join(" "),text:[N,"text-(--neba-fg) bg-(--n-panel-press)","[box-shadow:var(--neba-shadow-3),var(--neba-plate-glass)]"].join(" ")},k={solid:"",outline:"text-(--n-on-tint)",text:"text-(--n-on-tint)"};function _(e){const{color:t,variant:o,icon:i,actionLabel:s,onAction:n,...a}=e;return{...a,data:{color:t,variant:o,icon:i},actionProps:void 0===s?void 0:{children:s,onClick:n}}}export function useToast(){const e=i.useToastManager(),t=o.useRef(e);o.useLayoutEffect(()=>{t.current=e});const s=o.useMemo(()=>({add:e=>t.current.add(_(e)),close:e=>t.current.close(e),update:(e,o)=>t.current.update(e,e=>function(e,t){const{color:o,variant:i,icon:s,actionLabel:n,onAction:a,...r}=e,l=Object.fromEntries(Object.entries(r).filter(([,e])=>void 0!==e)),c=Object.fromEntries(Object.entries({color:o,variant:i,icon:s}).filter(([,e])=>void 0!==e));return{...l,...0===Object.keys(c).length?null:{data:{...t.data,...c}},...void 0===n?null:{actionProps:{children:n,onClick:a}}}}(o,e)),promise:(e,o)=>t.current.promise(e,{loading:_(o.loading),success:e=>_("function"==typeof o.success?o.success(e):o.success),error:e=>_("function"==typeof o.error?o.error(e):o.error)})}),[]);return o.useMemo(()=>({...s,toasts:e.toasts}),[s,e.toasts])}function ToastItem({toast:o,variant:n,color:a,size:r,density:N,closeLabel:T,swipeDirection:L,classNames:_}){const M=o.data?.variant??n??"outline",O=o.data?.color??a,P=void 0===o.data?.icon?c(O):o.data.icon,D=k[M],A=f(o.title);return t(i.Root,{toast:o,swipeDirection:L,className:m("pointer-events-auto flex w-full items-start",s[N??"default"][r],h[r],y[r],w[r],z[M],b,x,"data-[limited]:hidden",u,_?.toast),style:d(O,3,M),children:[f(P)?e("span",{className:`flex h-[1lh] shrink-0 items-center ${D}`,children:P}):null,t("div",{className:`flex min-w-0 flex-1 flex-col ${g[r]}`,children:[e(i.Title,{className:m("neba-title font-semibold",j[r],D,_?.title)}),e(i.Description,{className:m(A&&"solid"!==M?"text-(--neba-muted-fg)":"",_?.description)})]}),e(i.Action,{className:m("flex h-[1lh] shrink-0 cursor-pointer items-center rounded-full px-2","font-medium underline-offset-2",D||"text-(--n-on-solid)","hover:underline","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2",v[r],_?.action)}),e("span",{className:"flex h-[1lh] shrink-0 items-center",children:e(i.Close,{"aria-label":T,className:m("relative inline-flex size-[1.15em] cursor-pointer items-center justify-center rounded-full",p,"opacity-70 [transition:opacity_var(--neba-duration)_var(--neba-ease)]","hover:opacity-100 focus-visible:opacity-100","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2",_?.close),children:e(l,{})})})]})}function ToastViewport(t){const{toasts:s}=i.useToastManager(),{position:n,width:a,classNames:r,regionLabel:l,...c}=t,d=o.useMemo(()=>[n.startsWith("top")?"up":"down","left","right"],[n]);return e(i.Portal,{children:e(i.Viewport,{"aria-label":l,className:m("neba-portal pointer-events-none fixed inset-x-0 z-(--neba-z-portal) flex flex-col gap-2 p-4",L[n],r?.viewport),children:s.map(t=>e("div",{className:"w-full",style:{maxWidth:"number"==typeof a?`${a}px`:a},children:e(ToastItem,{toast:t,swipeDirection:d,classNames:r,...c})},t.id))})})}export function ToastProvider(o){const{variant:s="outline",size:l="md",color:c="primary",density:d="default",position:m="bottom-end",timeout:u=5e3,limit:f=3,width:p=380,locale:b,closeLabel:v,label:x,classNames:h,children:w}=T(o,["size","density","variant","locale"]),g=r(n,b),y=r(a,b);return t(i.Provider,{timeout:u,limit:f,children:[w,e(ToastViewport,{position:m,variant:s,size:l,color:c,density:d,width:p,closeLabel:v??g.close,regionLabel:x??y.label,classNames:h})]})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsxs as e}from"react/jsx-runtime";import*as
|
|
1
|
+
"use client";import{jsxs as e}from"react/jsx-runtime";import*as n from"react";import{Toggle as t}from"@base-ui/react/toggle";import{ButtonGroupContext as o}from"../../internal/button-group.js";import{trackPointer as r}from"../../internal/glow.js";import{controlHeightClasses as s,controlSlots as a,controlSquareClasses as l,controlTextClasses as i,cx as d,disabledClasses as b,focusRingClasses as g,gapClasses as v,iconClasses as p,paddingXClasses as m,pressTransitionClasses as x,radiusClasses as f,surfaceClasses as c,transitionClasses as h}from"../../internal/styles.js";import{useStyleDefaults as u}from"../../internal/defaults.js";const $={xs:`${s.xs} ${v.xs} ${f.xs} ${i.xs}`,sm:`${s.sm} ${v.sm} ${f.sm} ${i.sm}`,md:`${s.md} ${v.md} ${f.md} ${i.md}`,lg:`${s.lg} ${v.lg} ${f.lg} ${i.lg}`,xl:`${s.xl} ${v.xl} ${f.xl} ${i.xl}`},j={xs:`${l.xs} px-0`,sm:`${l.sm} px-0`,md:`${l.md} px-0`,lg:`${l.lg} px-0`,xl:`${l.xl} px-0`},w=["relative inline-flex shrink-0 select-none items-center justify-center","whitespace-nowrap align-middle font-medium leading-none","[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]",h,x,g,p].join(" "),y={solid:[c,"text-(--neba-muted-fg) bg-(--neba-panel-hover)","[box-shadow:var(--n-elev),var(--neba-plate-solid)]","hover:bg-(--neba-panel-press) hover:text-(--neba-fg)","active:bg-(--neba-panel-press)"].join(" "),outline:[c,"border text-(--neba-muted-fg) bg-(--neba-panel)","[border-color:var(--neba-border)]","[box-shadow:var(--n-elev),var(--neba-plate-glass)]","hover:bg-(--neba-panel-hover) hover:text-(--neba-fg)","active:bg-(--neba-panel-press)"].join(" "),text:["text-(--neba-muted-fg) bg-transparent","hover:bg-(--n-soft) hover:text-(--neba-fg)","active:bg-(--n-soft-hover)"].join(" ")},P={solid:[c,"text-(--n-on-solid) bg-(--n-fill)","[box-shadow:var(--n-elev),var(--neba-plate-solid)]","hover:bg-(--n-fill-hover)","active:bg-(--n-fill-active)"].join(" "),outline:[c,"border text-(--n-on-tint) bg-(--n-panel-press)","[border-color:var(--n-line-hover)]","[box-shadow:var(--n-elev),var(--neba-plate-glass)]","hover:bg-(--n-soft-hover)","active:bg-(--n-soft-press)"].join(" "),text:["text-(--n-on-tint) bg-(--n-soft-hover)","hover:bg-(--n-soft-press)","active:bg-(--n-soft-press)"].join(" ")};export const Toggle=/*@__PURE__*/n.forwardRef(function Toggle(s,l){const i=n.useContext(o),{variant:g,size:v,color:p,density:x,elevation:f,pressed:c,defaultPressed:h,onPressedChange:z,value:C,startIcon:T,endIcon:k,fullWidth:I=!1,disabled:M,className:N,style:R,children:W,onPointerMove:q,...A}=u(s,["size","density","variant"],i),B=g??i?.variant??"outline",D=v??i?.size??"md",E=p??i?.color??"primary",F=x??i?.density??"default",G=f??i?.elevation??0,H=M??i?.disabled??!1,J=null==W||!1===W;return e(t,{ref:l,value:C,pressed:c,defaultPressed:h,onPressedChange:e=>z?.(e),disabled:H,className:e=>d(w,$[D],J?j[D]:m[F][D],H?b[B]:e.pressed?P[B]:y[B],H?"":"neba-glow cursor-pointer",I?"w-full":"",N??""),style:{...a(E,G,B),...R},onPointerMove:r(q,!H),...A,children:[T,W,k]})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e}from"react/jsx-runtime";import*as o from"react";import{ToggleGroup as l}from"@base-ui/react/toggle-group";import{ButtonGroupContext as i}from"../../internal/button-group.js";import{cx as t}from"../../internal/styles.js";import{useStyleDefaults as n}from"../../internal/defaults.js";const r={horizontal:"[&>*:not(:first-child)]:rounded-s-none [&>*:not(:last-child)]:rounded-e-none",vertical:"[&>*:not(:first-child)]:rounded-t-none [&>*:not(:last-child)]:rounded-b-none"},a={horizontal:"[&>*:not(:first-child)]:-ms-px",vertical:"[&>*:not(:first-child)]:-mt-px"},s=["
|
|
1
|
+
"use client";import{jsx as e}from"react/jsx-runtime";import*as o from"react";import{ToggleGroup as l}from"@base-ui/react/toggle-group";import{ButtonGroupContext as i}from"../../internal/button-group.js";import{cx as t}from"../../internal/styles.js";import{useStyleDefaults as n}from"../../internal/defaults.js";const r={horizontal:"[&>*:not(:first-child)]:rounded-s-none [&>*:not(:last-child)]:rounded-e-none",vertical:"[&>*:not(:first-child)]:rounded-t-none [&>*:not(:last-child)]:rounded-b-none"},a={horizontal:"[&>*:not(:first-child)]:-ms-px",vertical:"[&>*:not(:first-child)]:-mt-px"},s=["align-middle","[&>*]:relative [&>*:hover]:z-10 [&>*:focus-visible]:z-10","[&>*]:shrink-0"].join(" ");export const ToggleGroup=/*@__PURE__*/o.forwardRef(function ToggleGroup(u,d){const{variant:c,size:f,color:m,density:p,elevation:h,value:v,defaultValue:g,onValueChange:x,multiple:z=!1,orientation:b="horizontal",disabled:j,loopFocus:y=!0,fullWidth:V=!1,className:w,children:G,...T}=n(u,["size","density","variant"]),C=o.useMemo(()=>({variant:c,size:f,color:m,density:p,elevation:h,disabled:j}),[c,f,m,p,h,j]);return e(i.Provider,{value:C,children:e(l,{ref:d,value:v,defaultValue:g,onValueChange:e=>x?.(e),multiple:z,orientation:b,disabled:j,loopFocus:y,className:t(s,"vertical"===b?"flex-col":"flex-row",r[b],"outline"===(c??"outline")?a[b]:"",V?"flex w-full [&>*]:flex-1":"inline-flex",w??""),...T,children:G})})});
|