neba 1.18.1 → 1.19.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/dist/a2ui/adapter-catalog.json +1 -1
- package/dist/a2ui/catalog.json +2 -2
- package/dist/components/accordion/Accordion.js +1 -1
- package/dist/components/agent-steps/AgentSteps.js +1 -1
- package/dist/components/alert/Alert.js +1 -1
- package/dist/components/anchor/Anchor.js +1 -1
- package/dist/components/animate-counter/AnimateCounter.js +1 -1
- package/dist/components/animate-headline/AnimateHeadline.js +1 -1
- package/dist/components/animate-lighting/AnimateLighting.js +1 -1
- package/dist/components/animate-marquee/AnimateMarquee.js +1 -1
- package/dist/components/animate-scramble/AnimateScramble.js +1 -1
- package/dist/components/animate-typing/AnimateTyping.js +1 -1
- package/dist/components/app-logo/AppLogo.js +1 -1
- package/dist/components/approval/Approval.js +1 -1
- package/dist/components/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.js +1 -1
- package/dist/components/blockquote/Blockquote.js +1 -1
- package/dist/components/bottom-navigation/BottomNavigation.js +1 -1
- package/dist/components/breadcrumb/Breadcrumb.js +1 -1
- 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/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/checkbox/index.d.ts +1 -1
- package/dist/components/checkbox-group/index.d.ts +1 -1
- package/dist/components/chip/Chip.d.ts +32 -3
- package/dist/components/chip/Chip.js +1 -1
- package/dist/components/code-block/CodeBlock.js +1 -1
- package/dist/components/collapsible/Collapsible.js +1 -1
- package/dist/components/color-picker/ColorPicker.js +1 -1
- package/dist/components/combobox/Combobox.d.ts +11 -0
- package/dist/components/combobox/Combobox.js +1 -1
- package/dist/components/combobox/index.d.ts +1 -1
- package/dist/components/command-palette/CommandPalette.d.ts +21 -5
- package/dist/components/command-palette/CommandPalette.js +1 -1
- package/dist/components/command-palette/CommandPaletteSheet.d.ts +27 -0
- package/dist/components/command-palette/CommandPaletteSheet.js +1 -0
- package/dist/components/command-palette/index.d.ts +1 -1
- package/dist/components/confirm/Confirm.d.ts +7 -5
- package/dist/components/confirm/Confirm.js +1 -1
- package/dist/components/data-list/DataList.js +1 -1
- package/dist/components/data-table/DataTable.js +1 -1
- package/dist/components/data-table/RowsPerPage.d.ts +43 -0
- package/dist/components/data-table/RowsPerPage.js +1 -0
- 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.js +1 -1
- package/dist/components/dialog/index.d.ts +1 -1
- package/dist/components/drawer/Drawer.d.ts +1 -1
- package/dist/components/drawer/Drawer.js +1 -1
- package/dist/components/empty/Empty.js +1 -1
- package/dist/components/file-picker/FilePicker.js +1 -1
- package/dist/components/floating-action-button/FloatingActionButton.js +1 -1
- package/dist/components/floating-action-button/index.d.ts +1 -0
- package/dist/components/floating-bottom-navigation/FloatingBottomNavigation.js +1 -1
- package/dist/components/footer/Footer.js +1 -1
- package/dist/components/gallery/Gallery.js +1 -1
- package/dist/components/gauge-chart/GaugeChart.js +1 -1
- package/dist/components/header/Header.js +1 -1
- package/dist/components/heatmap-chart/HeatmapChart.js +1 -1
- package/dist/components/highlight/Highlight.js +1 -1
- package/dist/components/hover-card/HoverCard.js +1 -1
- package/dist/components/how-to-steps/HowToSteps.d.ts +3 -0
- package/dist/components/how-to-steps/HowToSteps.js +1 -1
- package/dist/components/image/Image.js +1 -1
- package/dist/components/inline-citation/InlineCitation.d.ts +24 -0
- package/dist/components/inline-citation/InlineCitation.js +1 -1
- package/dist/components/list/List.js +1 -1
- package/dist/components/menu/Menu.js +1 -1
- package/dist/components/menubar/Menubar.js +1 -1
- package/dist/components/meter/Meter.js +1 -1
- package/dist/components/mockup/Mockup.js +1 -1
- package/dist/components/navigation-menu/NavigationMenu.d.ts +2 -1
- package/dist/components/navigation-menu/NavigationMenu.js +1 -1
- package/dist/components/number-field/NumberField.js +1 -1
- package/dist/components/number-field/index.d.ts +1 -1
- package/dist/components/overlay/Overlay.js +1 -1
- package/dist/components/page-layout/PageLayout.js +1 -1
- package/dist/components/pagination/Pagination.js +1 -1
- package/dist/components/panes/Panes.js +1 -1
- package/dist/components/pie-chart/PieChart.js +1 -1
- package/dist/components/pill/Pill.js +1 -1
- package/dist/components/popover/Popover.js +1 -1
- package/dist/components/progress-box/ProgressBox.js +1 -1
- package/dist/components/progress-circular/ProgressCircular.js +1 -1
- package/dist/components/progress-linear/ProgressLinear.js +1 -1
- package/dist/components/prompt-input/PromptInput.js +1 -1
- package/dist/components/provider/NebaProvider.js +1 -1
- package/dist/components/radio-group/RadioGroup.js +1 -1
- package/dist/components/radio-group/index.d.ts +1 -1
- package/dist/components/rating/Rating.js +1 -1
- package/dist/components/reasoning/Reasoning.js +1 -1
- package/dist/components/scatter-chart/ScatterChart.js +1 -1
- package/dist/components/scroll-area/ScrollArea.js +1 -1
- package/dist/components/scroll-zone/ScrollZone.js +1 -1
- package/dist/components/segmented-button/SegmentedButton.js +1 -1
- package/dist/components/select/Select.d.ts +12 -0
- package/dist/components/select/Select.js +1 -1
- package/dist/components/select/index.d.ts +1 -1
- package/dist/components/shortcut/Shortcut.js +1 -1
- package/dist/components/sidebar/Sidebar.js +1 -1
- package/dist/components/sidebar/SidebarTrigger.js +1 -1
- package/dist/components/skeleton/Skeleton.js +1 -1
- package/dist/components/slider/Slider.js +1 -1
- package/dist/components/slider/index.d.ts +1 -1
- package/dist/components/sources/Sources.js +1 -1
- package/dist/components/sparkline/Sparkline.d.ts +7 -0
- package/dist/components/sparkline/Sparkline.js +1 -1
- package/dist/components/spoiler/Spoiler.js +1 -1
- package/dist/components/statistic/Statistic.js +1 -1
- package/dist/components/streaming-text/StreamingText.d.ts +10 -6
- package/dist/components/streaming-text/StreamingText.js +1 -1
- package/dist/components/switch/Switch.js +1 -1
- package/dist/components/switch/index.d.ts +1 -1
- package/dist/components/table/Table.js +1 -1
- package/dist/components/table/index.d.ts +1 -1
- package/dist/components/tabs/Tabs.js +1 -1
- package/dist/components/text-field/TextField.js +1 -1
- package/dist/components/text-field/index.d.ts +1 -1
- package/dist/components/text-link/TextLink.js +1 -1
- package/dist/components/time-picker/TimePicker.js +1 -1
- package/dist/components/timeline-chart/TimelineChart.js +1 -1
- package/dist/components/toast/Toast.d.ts +38 -5
- package/dist/components/toast/Toast.js +1 -1
- package/dist/components/toast/index.d.ts +2 -2
- package/dist/components/toast/index.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.js +1 -1
- package/dist/components/toolbar/Toolbar.js +1 -1
- package/dist/components/tooltip/Tooltip.js +1 -1
- package/dist/components/tour/Tour.js +1 -1
- package/dist/components/tour/index.d.ts +1 -1
- package/dist/components/transfer/Transfer.d.ts +7 -0
- package/dist/components/transfer/Transfer.js +1 -1
- package/dist/components/tree-select/TreeSelect.js +1 -1
- package/dist/components/tree-view/TreeView.js +1 -1
- package/dist/components/window-pane/WindowPane.js +1 -1
- package/dist/internal/animate.d.ts +34 -2
- package/dist/internal/animate.js +1 -1
- package/dist/internal/cache.d.ts +7 -1
- package/dist/internal/cache.js +1 -1
- package/dist/internal/calendar.d.ts +40 -1
- package/dist/internal/calendar.js +1 -1
- package/dist/internal/chart-frame.d.ts +86 -8
- package/dist/internal/chart-frame.js +1 -1
- package/dist/internal/chart-line.js +1 -1
- package/dist/internal/chart.d.ts +13 -0
- package/dist/internal/chart.js +1 -1
- package/dist/internal/data-table.d.ts +7 -1
- package/dist/internal/data-table.js +1 -1
- package/dist/internal/date.d.ts +10 -0
- package/dist/internal/date.js +1 -1
- package/dist/internal/idle.d.ts +10 -0
- package/dist/internal/idle.js +1 -0
- package/dist/internal/link.d.ts +4 -3
- package/dist/internal/media.js +1 -1
- package/dist/internal/observe.d.ts +4 -0
- package/dist/internal/observe.js +1 -1
- package/dist/internal/page-layout.d.ts +30 -2
- package/dist/internal/page-layout.js +1 -1
- package/dist/internal/picker.js +1 -1
- package/dist/internal/progress.d.ts +17 -0
- package/dist/internal/progress.js +1 -1
- package/dist/internal/refs.d.ts +18 -0
- package/dist/internal/refs.js +1 -0
- package/dist/internal/run.d.ts +34 -19
- package/dist/internal/run.js +1 -1
- package/dist/internal/sizer.d.ts +9 -4
- package/dist/internal/sizer.js +1 -1
- package/dist/internal/styles.d.ts +14 -0
- package/dist/internal/styles.js +1 -1
- package/dist/internal/tile.d.ts +34 -0
- package/dist/internal/tile.js +1 -0
- package/dist/internal/wheel.d.ts +24 -1
- package/dist/internal/wheel.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/tailwind.css +366 -61
- package/dist/types.d.ts +4 -2
- package/package.json +1 -1
|
@@ -26,11 +26,13 @@ export interface StreamingTextProps extends Omit<React.ComponentPropsWithoutRef<
|
|
|
26
26
|
*
|
|
27
27
|
* On. A word that arrives during a stream costs one element, which is the
|
|
28
28
|
* price of the effect: a transition on the block as a whole would fade the
|
|
29
|
-
* *whole answer* every time a token landed.
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
29
|
+
* *whole answer* every time a token landed. The elements last as long as the
|
|
30
|
+
* stream: once `streaming` is off and the last word has faded in, the answer
|
|
31
|
+
* is drawn as plain text again. Text that did not arrive that way costs
|
|
32
|
+
* nothing — what the block was first drawn with while not streaming, what the
|
|
33
|
+
* server rendered, what was already there when a stream started, and what
|
|
34
|
+
* replaces it while nothing streams are drawn as plain text. Turn it off for
|
|
35
|
+
* a very long answer.
|
|
34
36
|
* @default true
|
|
35
37
|
*/
|
|
36
38
|
fade?: boolean;
|
|
@@ -75,7 +77,9 @@ export interface StreamingTextProps extends Omit<React.ComponentPropsWithoutRef<
|
|
|
75
77
|
* streams — a message loaded from history, a page rendered on the server — is
|
|
76
78
|
* one run of plain text, because none of it is arriving: fifty such messages
|
|
77
79
|
* drawn a word to an element were fifteen thousand elements, each with an
|
|
78
|
-
* animation to start.
|
|
80
|
+
* animation to start. A stream that has ended goes back to plain text too, once
|
|
81
|
+
* its last word has faded in, for the same reason: a long session's answers
|
|
82
|
+
* each kept an element per word they had streamed in, for good.
|
|
79
83
|
*
|
|
80
84
|
* It is deliberately **not** a live region. An answer that announced itself
|
|
81
85
|
* token by token would be unusable, and one that announced itself whole on
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as t,Fragment as e,jsxs as r}from"react/jsx-runtime";import*as n from"react";import{useRender as s}from"@base-ui/react/use-render";import{segmenter as a}from"../../internal/format.js";import{useLayoutEffectOnClient as i}from"../../internal/layout-effect.js";import{useHydrated as l}from"../../internal/media.js";import{cx as
|
|
1
|
+
"use client";import{jsx as t,Fragment as e,jsxs as r}from"react/jsx-runtime";import*as n from"react";import{useRender as s}from"@base-ui/react/use-render";import{segmenter as a}from"../../internal/format.js";import{useLayoutEffectOnClient as i}from"../../internal/layout-effect.js";import{useHydrated as l}from"../../internal/media.js";import{cx as o,hasContent as c}from"../../internal/styles.js";const u=/[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Thai}\p{Script=Lao}\p{Script=Khmer}\p{Script=Myanmar}]/u;function m(t){const e=t.split(/(\s+)/).filter(t=>""!==t),r=u.test(t)?a(void 0,"word"):null;return r?e.flatMap(t=>u.test(t)?[...r.segment(t)].map(t=>t.segment):[t]):e}const f=/\s/;const p=/*@__PURE__*/n.memo(function StreamBlock({text:r,joined:s}){return t(e,{children:m(r).map((e,r)=>f.test(e)||s&&0===r?t(n.Fragment,{children:e},r):t("span",{className:"neba-stream-word",children:e},r))})});function d(t,e){if(e.startsWith(t))return t;let r=0;for(;r<t.length&&t[r]===e[r];)r+=1;for(;r>0&&!f.test(e[r-1]);)r-=1;return e.slice(0,r)}export const StreamingText=/*@__PURE__*/n.forwardRef(function StreamingText({children:a,streaming:h=!1,cursor:g=!0,fade:x=!0,lines:S=1,color:y="primary",render:b,className:j,style:v,...N},w){const T="string"==typeof a?a:null,R=T??"",W=l(),F=n.useRef(null),[M,k]=n.useState(()=>h?W?"":R:null),A=n.useRef(R),C=n.useRef({closed:"",texts:[]}),H=x?function(t,e,r,n){return null===t?r?d(n,e):null:e.startsWith(n)?t:r?d(t,e):null}(M,R,h,A.current):M;H!==M&&k(H),i(()=>{A.current=R}),n.useEffect(()=>{const t=F.current;if(h||null===M||!t)return;let e=!1;const r=setTimeout(()=>{const r=(t.getAnimations?.({subtree:!0})??[]).filter(t=>t instanceof CSSAnimation&&"neba-stream-word-in"===t.animationName);Promise.all(r.map(t=>t.finished.catch(()=>null))).then(()=>{e||k(null)})},function(t){const e=getComputedStyle(t).getPropertyValue("--neba-duration").trim(),r=parseFloat(e);return Number.isNaN(r)?160:e.endsWith("ms")?r:1e3*r}(t));return()=>{e=!0,clearTimeout(r)}},[h,M]);let K=a;if(null!==T&&x&&null!==H){const e=T.slice(H.length),r=function(t,e){let{closed:r,texts:n}=e.startsWith(t.closed)?t:{closed:"",texts:[]};const s=e.slice(r.length);let a=0,i=0,l=0;for(const t of m(s)){if(!f.test(t)){if(64===a){const t=s.slice(i,l);n=[...n,t],r+=t,i=l,a=0}a+=1}l+=t.length}return{closed:r,texts:n,tail:s.slice(i)}}(C.current,e),n=H.at(-1),s=e.at(0),a=void 0!==n&&void 0!==s&&!f.test(n)&&!f.test(s)&&!u.test(n+s);C.current=r,K=[H,...[...r.texts,r.tail].map((e,r)=>""===e?null:t(p,{text:e,joined:a&&0===r},r))]}const P=h&&!1!==g?!0===g?t("span",{"aria-hidden":"true",className:"neba-stream-caret"}):g:null;return s({render:b??t("div",{}),ref:[w,F],props:{"aria-busy":h||void 0,"data-streaming":h||void 0,className:o("min-h-(--n-reserve) whitespace-pre-wrap",j),style:{"--n-reserve":`calc(${Math.max(S,0)} * 1lh)`,"--n-accent":`var(--neba-${y}-accent)`,...v},children:r(e,{children:[K,c(P)?P:null]}),...N}})});
|
|
@@ -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
|
|
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 t}from"@base-ui/react/switch";import{Field as l}from"@base-ui/react/field";import{controlTextClasses as c,cx as o,hitAreaClasses as i,metaTextClasses as s,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 u={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"},v={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)]"},g={xs:"",sm:"",md:"py-[calc((1.25rem-1lh)/2)]",lg:"py-[calc((1.5rem-1lh)/2)]",xl:"py-[calc((1.75rem-1lh)/2)]"},f="relative inline-flex shrink-0 border "+i+" [-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",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) [@media(prefers-reduced-transparency:reduce)]:not-data-checked:bg-(--neba-backing) [@media(prefers-reduced-transparency:reduce)]:not-data-checked:hover:bg-(--neba-backing) [@media(prefers-reduced-transparency:reduce)]:not-data-checked:[background-blend-mode:overlay,normal,normal] [@media(prefers-reduced-transparency:reduce)]:not-data-checked:[background-image:var(--neba-grain),var(--neba-sheen),linear-gradient(var(--neba-groove),var(--neba-groove))] [@media(prefers-reduced-transparency:reduce)]:not-data-checked:hover:[background-image:var(--neba-grain),var(--neba-sheen),linear-gradient(var(--neba-groove-hover),var(--neba-groove-hover))]",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]";export const Switch=/*@__PURE__*/n.forwardRef(function Switch(n,i){const{size:d="md",color:k="primary",label:w,description:y,error:N,invalid:j,labelSide:$,labelPlacement:S,disabled:_,readOnly:R=!1,className:z,classNames:O,style:q,...D}=h(n,["size"]),E=m(_),F=$??S??"end",L=null!=N&&!1!==N&&""!==N,P=j??L,T=P?"danger":k,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(t.Root,{ref:i,className:o("neba-switch",f,u[d],E?"cursor-not-allowed bg-transparent [border-color:var(--neba-disabled-border)] shadow-none data-[checked]:bg-(--neba-disabled-bg)":R?x:p,O?.control),disabled:E,readOnly:R,...D,children:e(t.Thumb,{className:o("neba-switch-thumb","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)]",v[d],O?.thumb)})})}),C=w||y?a("span",{className:o("flex min-w-0 flex-col gap-0.5","start"===F?"flex-1":""),children:[w?e(l.Label,{className:o("leading-[1.4]",E?"text-(--neba-disabled-fg)":"cursor-pointer text-(--neba-fg)",O?.label),children:w}):null,y?e(l.Description,{className:o(s[d],"text-(--neba-muted-fg)",O?.description),children:y}):null]}):null;return a(l.Root,{disabled:E,invalid:P,className:o("inline-flex flex-col gap-1 align-top",z??""),style:{...A,...q},children:[e("div",{className:o("flex items-start gap-2.5",c[d],b,g[d]),children:a(r,"start"===F?{children:[C,B]}:{children:[B,C]})}),e(l.Error,L?{match:!0,className:o(s[d],"text-(--n-accent)",O?.error),children:N}:{className:o(s[d],"text-(--n-accent)",O?.error)})]})});
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { Switch } from './Switch.js';
|
|
2
|
-
export type { SwitchLabelPlacement, SwitchLabelSide, SwitchProps } from './Switch.js';
|
|
2
|
+
export type { SwitchLabelPlacement, SwitchLabelSide, SwitchProps, SwitchSlot } from './Switch.js';
|
|
@@ -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,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=
|
|
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)]",y={borderTop:"1px solid var(--n-line)",backgroundColor:"var(--n-row)"};export function Table(b){const{headers:h,items:u,getRowKey:g,caption:x,locale:f,empty:v,striped:k=!1,hoverable:w=!1,stickyHeader:N=!1,maxHeight:j,onRowClick:C,size:_="md",density:z="default",className:A,classNames:$,style:H,...T}=c(b,["size","density","locale"]),B=l(a,f),D=i[z][_],K=m[z][_],R=Boolean(C),E=w||R,I={padding:`${K} ${D}`},S={...I,backgroundColor:"var(--n-panel-press)",color:"var(--n-cell-ink, var(--neba-muted-fg))"};return e(r,{size:_,density:z,padded:!1,className:o("overflow-x-auto",A??""),style:void 0===j?H:{maxHeight:d(j),...H},...T,children:t("table",{className:o("w-full text-start",n[_],"text-(--neba-fg)",$?.table),style:{borderCollapse:"collapse"},children:[x?e("caption",{className:o(s[_],"text-(--neba-muted-fg)",$?.caption),style:{...I,textAlign:"start"},children:x}):null,e("colgroup",{children:h.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:$?.head,children:e("tr",{children:h.map(t=>e("th",{scope:"col",className:o("font-semibold whitespace-nowrap",N?"sticky top-0 z-10 [backdrop-filter:var(--neba-blur)]":"",$?.headCell),style:{...S,textAlign:t.align??"start"},children:t.label??t.key},t.key))})}),e("tbody",{className:$?.body,children:0===u.length?e("tr",{className:o(p,$?.row),style:y,children:e("td",{colSpan:h.length,className:$?.empty,style:{padding:`2rem ${D}`,textAlign:"center",color:"var(--n-cell-ink, var(--neba-muted-fg))"},children:v??B.empty})}):u.map((t,r)=>e("tr",{className:o(p,k&&r%2==1?"[--n-row:color-mix(in_oklab,var(--neba-fg)_4%,transparent)]":"",E?"hover:[--n-row:var(--n-soft)]":"",R?"cursor-pointer [outline:none] focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:[outline-offset:-2px]":"",$?.row),style:y,tabIndex:R?0:void 0,onClick:C?()=>C(t,r):void 0,onKeyDown:C?e=>{e.target===e.currentTarget&&("Enter"!==e.key&&" "!==e.key||(e.preventDefault(),C(t,r)))}:void 0,children:h.map(a=>e("td",{className:$?.cell,style:{...I,textAlign:a.align??"start"},children:a.render?a.render(t,r):t[a.key]},a.key))},g?g(t,r):r))})]})})}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { Table } from './Table.js';
|
|
2
|
-
export type { TableAlign, TableColumn, TableProps } from './Table.js';
|
|
2
|
+
export type { TableAlign, TableColumn, TableProps, TableSlot } from './Table.js';
|
|
@@ -1 +1 @@
|
|
|
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
|
|
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 u,hasContent as f,iconClasses as b,paddingXClasses as h,radiusClasses as v,surfaceClasses as p,surfaceSlots as m,transitionClasses as x}from"../../internal/styles.js";import{observeResize as g}from"../../internal/observe.js";import{useMergedRef as w}from"../../internal/refs.js";import{bindAxisWheelWhileOverflowing as y}from"../../internal/wheel.js";import{useStyleDefaults as z}from"../../internal/defaults.js";const j=/*@__PURE__*/a.createContext({variant:"outline",size:"md",density:"default",orientation:"horizontal",fullWidth:!1,align:"center",keepMounted:!1}),k={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"}},M={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"}},N={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"},T={solid:`${p} bg-(--n-panel-press) [box-shadow:var(--neba-shadow-1),var(--neba-plate-glass)]`,outline:"bg-(--n-accent)",text:"bg-(--n-accent)"},$={start:"justify-start",center:"justify-center",end:"justify-end"},E={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:z,...k},M){const{variant:N,size:T,density:P,fullWidth:R,align:C}=a.useContext(j);return t(i.Tab,{ref:M,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",$[C],"[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]",r[T],c[T],u[T],h[P][T],"solid"===N?v[T]:"",x,b,E[N],"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,R?"flex-1":"",w??""),...k,onPointerMove:l(k.onPointerMove,!g),children:[f(p)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:p}):null,z,f(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,className:n,children:l,...r},s){const{size:c,keepMounted:d}=a.useContext(j);return e(i.Panel,{ref:s,value:t,keepMounted:o??d,className:["min-w-0 flex-1 text-(--neba-fg)","[&[hidden]]:hidden","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)]",v[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:u="default",value:f,defaultValue:b,onValueChange:h,orientation:p="horizontal",activateOnFocus:x=!1,loopFocus:$=!0,overflow:E="scroll",lines:P,wheel:R=!0,fullWidth:C=!1,align:V="center",keepMounted:W=!1,className:_,style:F,children:A,...L}=z(o,["size","density","variant"]),H="horizontal"===p,I="wrap"===E,O=a.useRef(null),B=w(O,n),q=a.useRef(null),D=a.useRef(null),G=a.useMemo(()=>({variant:l,size:r,density:u,orientation:p,fullWidth:C,align:V,keepMounted:W}),[l,r,u,p,C,V,W]),J=[],K=[],Q=e=>a.Children.forEach(e,e=>{a.isValidElement(e)&&e.type===a.Fragment?Q(e.props.children):a.isValidElement(e)&&e.type===TabPanel?K.push(e):null!=e&&!1!==e&&J.push(e)});Q(A);const S=J.length;return a.useEffect(()=>{const e=q.current,t=O.current;if(!e||!t)return;const a=()=>{D.current?.check();const a=Math.abs(H?e.scrollLeft:e.scrollTop),o=H?e.clientWidth:e.clientHeight,n=H?e.scrollWidth:e.scrollHeight,l=H?"x":"y",i=H?"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()}},[H,S]),a.useEffect(()=>{const e=q.current;if(!e||!R)return;const t=y(e);return D.current=t,()=>{t.stop(),D.current=null}},[R]),e(j.Provider,{value:G,children:t(i.Root,{ref:B,value:f,defaultValue:b,onValueChange:e=>h?.(e),orientation:p,className:d("flex min-w-0","vertical"===p?"flex-row gap-4":"flex-col gap-4",_??""),style:{...m(c,0),...F},...L,children:[t(i.List,{ref:q,activateOnFocus:x,loopFocus:$,"data-indicator":"solid"===l?"tile":I?"underline":"bar",className:d("neba-tabs-list relative shrink-0",k[l][p],"solid"===l?v[r]:"",C&&"horizontal"===p?"w-full":"",I?"flex-wrap":H?"overflow-x-auto":"overflow-y-auto",I&&void 0!==P?H?"overflow-y-auto":"overflow-x-auto":"",!I&&H?"overflow-y-hidden":"","overscroll-contain","[scrollbar-width:none] [&::-webkit-scrollbar]:hidden","neba-scroll-fade"),style:{"--n-fade":"2rem",maxHeight:I&&void 0!==P?`calc(${s[r]} * ${Math.max(1,Math.round(P))}${"solid"===l?" + 0.5rem":"outline"===l&&H?" + 1px":""})`:void 0},children:[J,e(i.Indicator,{className:"neba-tabs-indicator pointer-events-none "+(I&&"solid"!==l?N[p]:M[l][p])+" "+T[l]+" "+("solid"===l?v[r]:"rounded-full")+" [transition-property:left,top,width,height] [transition-duration:var(--neba-duration)] [transition-timing-function:var(--neba-ease)]"})]}),K]})})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as l from"react";import{
|
|
1
|
+
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as l from"react";import{useMergedRef as n}from"../../internal/refs.js";import{Field as r}from"@base-ui/react/field";import{Input as a}from"@base-ui/react/input";import{fieldLight as s,fieldSpotlightSlot as i,glowClasses as o}from"../../internal/glow.js";import{SpinnerIcon as c}from"../../internal/icons.js";import{controlTextLeadingClasses as m,cx as d,disabledClasses as p,fieldFocusTransitionClasses as x,fieldHeightClasses as f,fieldReadOnlyClasses as u,fieldRestClasses as h,fieldRingClasses as b,fieldSheetClasses as g,fieldSheetDisabledClasses as y,fieldSheetReadOnlyClasses as $,gapClasses as v,hasContent as N,iconClasses as w,metaTextClasses as j,paddingXClasses as z,radiusClasses as D,readOnlyFilterClasses as k,stackGapClasses as O,surfaceSlots as P,transitionClasses as R}from"../../internal/styles.js";import{keyHandler as T}from"../../internal/keys.js";import{FieldNotch as C,NotchFrame as E,restEndOf as F}from"../../internal/notch.js";import{useStyleDefaults as I}from"../../internal/defaults.js";import{useFieldsetDisabled as K}from"../../internal/fieldset.js";const L={xs:`${v.xs} ${D.xs} ${m.xs}`,sm:`${v.sm} ${D.sm} ${m.sm}`,md:`${v.md} ${D.md} ${m.md}`,lg:`${v.lg} ${D.lg} ${m.lg}`,xl:`${v.xl} ${D.xl} ${m.xl}`},W={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]"},q={xs:"3px",sm:"4px",md:"5px",lg:"8px",xl:"10px"},A={none:"resize-none",vertical:"resize-y",horizontal:"resize-x",both:"resize"},B="group relative flex w-full [-webkit-tap-highlight-color:transparent] "+R+" "+x+" "+w,G=h,H=u;export const TextField=/*@__PURE__*/l.forwardRef(function TextField(m,x){const{variant:u="outline",size:h="md",color:v="primary",density:w="default",elevation:D=0,multiline:R=!1,rows:J=3,resize:M="vertical",label:Q,labelPlacement:S="top",description:U,error:V,invalid:X,startIcon:Y,endIcon:Z,loading:_=!1,fullWidth:ee=!1,classNames:te,shortcuts:le,onKeyDown:ne,readOnly:re=!1,disabled:ae,type:se="text",placeholder:ie,className:oe,style:ce,...me}=I(m,["size","density","variant","labelPlacement"]),de=K(ae),pe=!de&&!re,xe=null!=V&&!1!==V&&""!==V,fe=X??xe,ue=fe?"danger":v,he="top"!==S&&N(Q),be=he&&"float"===S&&!N(Y),ge=l.useRef(null),ye=n(ge,x),$e=d(B,L[h],R?`${W[h]} items-start`:`${f[h]} items-center`,z[w][h],he?"":b,de?(he?y:p)[u]:re?he?`${$[u]} ${k}`:H[u]:`${(he?g:G)[u]} ${o}`,de?"":"cursor-text",te?.shell),ve=d("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",R?`block ${A[M]}`:"self-stretch",be?"neba-float-control":"",te?.control),Ne="inline-flex h-[1lh] shrink-0 items-center text-(--neba-muted-fg) transition-[color] duration-(--neba-duration) group-focus-within:text-(--n-accent)",we=t("span",{className:$e,...s(pe),onPointerDown:e=>{e.target!==e.currentTarget||de||(e.preventDefault(),ge.current?.focus())},children:[Y?e("span",{className:Ne,children:Y}):null,e(a,{ref:ye,className:ve,disabled:de,readOnly:re,"aria-busy":_||void 0,"data-loading":_||void 0,placeholder:be?ie||" ":ie,...R?{render:e("textarea",{rows:J})}:{type:se},...me,onKeyDown:T(le,ne)}),_?e("span",{className:Ne,children:e(c,{})}):Z?e("span",{className:Ne,children:Z}):null,he?e(C,{label:Q,variant:u,disabled:de,readOnly:re,rests:be,labelClassName:te?.label}):null]});return t(r.Root,{disabled:de,invalid:fe,className:d("flex-col align-top",O[h],ee?"flex w-full":"inline-flex",oe??""),style:{...P(ue,D),...pe?i:void 0,...ce},children:[Q&&!he?e(r.Label,{className:d(j[h],"font-medium",de?"text-(--neba-disabled-fg)":"text-(--neba-fg)",te?.label),children:Q}):null,he?e(E,{label:Q,size:h,density:w,variant:u,firstLine:R?q[h]:void 0,rests:be,restEnd:F(h,_||Z?[1.2]:[]),labelClassName:te?.label,children:we}):we,U?e(r.Description,{className:d(j[h],"text-(--neba-muted-fg)",te?.description),children:U}):null,e(r.Error,xe?{match:!0,className:d(j[h],"text-(--n-accent)",te?.error),children:V}:{className:d(j[h],"text-(--n-accent)",te?.error)})]})});
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { TextField } from './TextField.js';
|
|
2
|
-
export type { TextFieldProps, TextFieldResize } from './TextField.js';
|
|
2
|
+
export type { TextFieldProps, TextFieldResize, TextFieldSlot } from './TextField.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as n,Fragment as r}from"react/jsx-runtime";import*as i from"react";import{useRender as t}from"@base-ui/react/use-render";import{linkMessages as o,useMessages as a}from"../../internal/i18n.js";import{ExternalLinkIcon as l,LinkIcon as s}from"../../internal/icons.js";import{opensElsewhere as c,safeHref as d,safeRel as m}from"../../internal/link.js";import{COLOR as u,FONT_WEIGHT as h,overriddenBy as f,TEXT_DECORATION_COLOR as p,TEXT_DECORATION_LINE as b,TEXT_DECORATION_THICKNESS as k,TEXT_UNDERLINE_OFFSET as x,TEXT_UNDERLINE_POSITION as v}from"../../internal/overrides.js";import{controlTextLeadingClasses as w,cx as g,focusRingClasses as j,srOnlyClasses as y}from"../../internal/styles.js";import{useStyleDefaults as _}from"../../internal/defaults.js";const N={always:["[&.neba-link]:underline","[:where(&)]:underline"],hover:["[&.neba-link]:no-underline [&.neba-link]:hover:underline","[:where(&)]:no-underline hover:[:where(&)]:underline"],none:["[&.neba-link]:no-underline","[:where(&)]:no-underline"]},T=[[h,"[&.neba-link]:[font-weight:inherit]","[:where(&)]:[font-weight:inherit]"],[k,"[&.neba-link]:[text-decoration-thickness:max(1px,0.055em)]","[:where(&)]:[text-decoration-thickness:max(1px,0.055em)]"],[x,"[&.neba-link]:underline-offset-[0.2em]","[:where(&)]:underline-offset-[0.2em]"],[v,"[&.neba-link]:[text-underline-position:from-font]","[:where(&)]:[text-underline-position:from-font]"],[p,"[&.neba-link]:decoration-(--n-underline) [&.neba-link:hover]:decoration-(--n-underline-hover)","[:where(&)]:decoration-(--n-underline) [:where(&:hover)]:decoration-(--n-underline-hover)"]],z=
|
|
1
|
+
"use client";import{jsx as e,jsxs as n,Fragment as r}from"react/jsx-runtime";import*as i from"react";import{useRender as t}from"@base-ui/react/use-render";import{linkMessages as o,useMessages as a}from"../../internal/i18n.js";import{ExternalLinkIcon as l,LinkIcon as s}from"../../internal/icons.js";import{opensElsewhere as c,safeHref as d,safeRel as m}from"../../internal/link.js";import{COLOR as u,FONT_WEIGHT as h,overriddenBy as f,TEXT_DECORATION_COLOR as p,TEXT_DECORATION_LINE as b,TEXT_DECORATION_THICKNESS as k,TEXT_UNDERLINE_OFFSET as x,TEXT_UNDERLINE_POSITION as v}from"../../internal/overrides.js";import{controlTextLeadingClasses as w,cx as g,focusRingClasses as j,srOnlyClasses as y}from"../../internal/styles.js";import{useStyleDefaults as _}from"../../internal/defaults.js";const N={always:["[&.neba-link]:underline","[:where(&)]:underline"],hover:["[&.neba-link]:no-underline [&.neba-link]:hover:underline","[:where(&)]:no-underline hover:[:where(&)]:underline"],none:["[&.neba-link]:no-underline","[:where(&)]:no-underline"]},T=[[h,"[&.neba-link]:[font-weight:inherit]","[:where(&)]:[font-weight:inherit]"],[k,"[&.neba-link]:[text-decoration-thickness:max(1px,0.055em)]","[:where(&)]:[text-decoration-thickness:max(1px,0.055em)]"],[x,"[&.neba-link]:underline-offset-[0.2em]","[:where(&)]:underline-offset-[0.2em]"],[v,"[&.neba-link]:[text-underline-position:from-font]","[:where(&)]:[text-underline-position:from-font]"],[p,"[&.neba-link]:decoration-(--n-underline) [&.neba-link:hover]:decoration-(--n-underline-hover)","[:where(&)]:decoration-(--n-underline) [:where(&:hover)]:decoration-(--n-underline-hover)"]],z="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)] "+j+" focus-visible:rounded-[0.25rem]";export const TextLink=/*@__PURE__*/i.forwardRef(function TextLink(h,p){const{href:k,underline:x="always",color:v,size:j,newTab:C=!1,icon:L,locale:$,render:F,className:M,style:R,children:q,...A}=_(h,["locale"]),B=a(o,$),D=L??C,E=!0===D?e(C?l:s,{}):D,G=i.useMemo(()=>f(M),[M]),H=g(z,j?w[j]:"",N[x][G&b?1:0],...T.map(([e,n,r])=>G&e?r:n),v?G&u?"[:where(&)]:text-(--n-accent)":"[&.neba-link]:text-(--n-accent)":G&u?"[:where(&)]:text-inherit":"[&.neba-link]:text-inherit",M??""),I={"--n-underline":"color-mix(in oklab, currentColor 45%, transparent)","--n-underline-hover":"currentColor","--n-ring":`var(--neba-${v??"primary"}-ring)`,...v?{"--n-accent":`var(--neba-${v}-accent)`}:null},{rel:J,target:K,...O}=A,P=C?"_blank":K,Q=m(P,J),S=c(P);return t({render:F??e("a",{}),ref:p,props:{href:d(k),target:P,className:H,style:{...I,...R},children:n(r,{children:[q,E?e("span",{className:"ms-[0.25em]",children:E}):null,S?n("span",{className:y,children:[" ",B.newTab]}):null]}),...O,rel:Q}})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as n}from"react/jsx-runtime";import*as l from"react";import{Button as t}from"../button/Button.js";import{TimeGrid as o,usePickerLabels as a}from"../../internal/calendar.js";import{ClockIcon as
|
|
1
|
+
"use client";import{jsx as e,jsxs as n}from"react/jsx-runtime";import*as l from"react";import{Button as t}from"../button/Button.js";import{TimeGrid as o,usePickerLabels as a,usePickerSamples as s}from"../../internal/calendar.js";import{ClockIcon as i}from"../../internal/icons.js";import{PickerFooter as r,PickerShell as c}from"../../internal/picker.js";import{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 b,withTime as y}from"../../internal/date.js";import{cx as v}from"../../internal/styles.js";import{useStyleDefaults as j}from"../../internal/defaults.js";import{useIntlLocale as x}from"../../internal/media.js";export const TimePicker=/*@__PURE__*/l.forwardRef(function TimePicker(C,w){const{value:z,defaultValue:k,onValueChange:D,open:O,defaultOpen:T,onOpenChange:M,referenceDate:P,minTime:V,maxTime:B,shouldDisableTime:H,hour12:I,showSeconds:N=!1,hourStep:R=1,minuteStep:F=1,secondStep:L=1,locale:q,format:A,placeholder:E,clearable:G=!1,showNowButton:J=!0,closeOnSelect:K=!1,labels:Q,name:U,size:W="md",color:X="primary",density:Y="default",readOnly:Z=!1,disabled:$=!1,startIcon:_,...ee}=j(C,["size","density","variant","locale","labelPlacement"]),ne=a(Q,q),le=x(q),te=I??m(le),[oe,ae]=l.useState(k??null),se=void 0!==z?z:oe,[ie,re]=l.useState(T??!1),ce=O??ie,[ue]=l.useState(()=>P??f(new Date)),de=e=>{e&&(Z||$)||(void 0===O&&re(e),M?.(e))},me=(e,n)=>p(n)?y(e,{hours:n.getHours(),minutes:n.getMinutes(),seconds:n.getSeconds()}):null,pe=e=>{const n=null===e?null:d(e,me(e,V),me(e,B));void 0===z&&ae(n),D?.(n)},he=l.useCallback((e,n)=>{const[l,t]=g(n,e);return!!(p(V)&&t<h(V))||(!!(p(B)&&l>h(B))||(H?.(e,n)??!1))},[V,B,H]),fe=l.useMemo(()=>A??{hour:"numeric",minute:"2-digit",...N?{second:"2-digit"}:{}},[A,N]),ge=new Date,Se=y(P??ue,{hours:ge.getHours(),minutes:ge.getMinutes(),seconds:N?ge.getSeconds():0}),be=J||G||!K,ye=s(q,fe),ve=l.useMemo(()=>b(ye,E),[ye,E]);return e(c,{...ee,size:W,color:X,density:Y,readOnly:Z,disabled:$,triggerRef:w,startIcon:_??e(i,{}),display:p(se)?u(se,le,fe):E??"",samples:ve,empty:!p(se),clearable:G,onClear:()=>pe(null),open:ce,onOpenChange:de,clearLabel:ne.clear,hiddenValues:U?[{name:U,value:p(se)?S(se,N):""}]:void 0,children:n("div",{className:v("flex flex-col",be&&"gap-1.5"),children:[e(o,{size:W,density:Y,locale:q,value:p(se)?se:null,referenceDate:P??ue,onChange:e=>{pe(e),K&&de(!1)},hour12:te,showSeconds:N,hourStep:R,minuteStep:F,secondStep:L,shouldDisableTime:he,labels:ne,autoFocus:!0}),be?n(r,{size:W,children:[G?e(t,{variant:"text",size:W,color:X,density:"compact",onClick:()=>{pe(null),de(!1)},children:ne.clear}):null,J?e(t,{variant:"text",size:W,color:X,density:"compact",disabled:he(Se,"second"),onClick:()=>{pe(Se),de(!1)},children:ne.now}):null,K?null:e(t,{variant:"solid",size:W,color:X,density:"compact",onClick:()=>de(!1),children:ne.done})]}):null]})})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as
|
|
1
|
+
"use client";import{jsx as e,Fragment as t,jsxs as n}from"react/jsx-runtime";import*as o from"react";import{CartesianChart as a,chartTableClasses as r,markTransitionClasses as s,tableRuns as l,useDeferredRows as i}from"../../internal/chart-frame.js";import{barBandRatio as c,barMaxThickness as m,barRadius as u,formatTimeTicks as d,formatTimeValue as h,markGap as f,resolveColor as x,seriesColor as p,timeScale as M,toNumber as y}from"../../internal/chart.js";import{chartMessages as b,useMessages as g}from"../../internal/i18n.js";import{useStyleDefaults as k}from"../../internal/defaults.js";import{useIntlLocale as v}from"../../internal/media.js";export function TimelineChart(t){const{series:n,min:r,max:s,barSize:l,rounded:i=!0,size:u="md",density:x="default",xAxis:$,yAxis:j,locale:D,references:S,...E}=k(t,["size","density","locale"]),F=v(D),P=o.useMemo(()=>n.map(w),[n]),R=o.useMemo(()=>P.map(e=>e.spans),[P]),B=o.useMemo(()=>{let e=1/0,t=-1/0,n=!1;for(const o of R)for(const a of o)a&&(n=!0,e=Math.min(e,a.from),t=Math.max(t,a.to));for(const o of S??[])if("value"===(o.axis??"value"))for(const a of void 0===o.to?[o.value]:[o.value,o.to])n=!0,e=Math.min(e,a),t=Math.max(t,a);return n?{min:e,max:t}:null},[R,S]),I=o.useMemo(()=>M(B,{min:y(r)??void 0,max:y(s)??void 0,tickCount:j?.tickCount}),[B,r,s,j?.tickCount]),N=o.useMemo(()=>d(I.ticks,I.unit,F),[I,F]),q=o.useMemo(()=>n.map((e,t)=>p(e,t)),[n]),Y=o.useMemo(()=>[{data:R.map(e=>e.some(Boolean)?1:null)}],[R]),G=o.useMemo(()=>{const e=T(I.unit);return("day"===e||"week"===e)&&R.some(e=>e.some(e=>null!==e&&(C(e.from)||C(e.to))))},[R,I.unit]),H=o.useMemo(()=>{let e=0,t=1/0,n=-1/0;for(const o of R)for(const a of o)a&&(e+=1,t=Math.min(t,a.from),n=Math.max(n,a.to));return 0===e?{count:e,min:"",max:""}:{count:e,min:h(t,T(I.unit),F,G),max:h(n,T(I.unit),F,G)}},[R,I.unit,F,G]),J=o.useMemo(()=>n.map((e,t)=>e.name??`${t+1}`),[n]),K=l??m[u],L=g(b,D),O=o.useCallback(e=>{const t=[];return P.forEach((n,o)=>{const a=Math.min(K,Math.max(1,(e.band.band-f*(n.lanes-1))/n.lanes)),r=a*n.lanes+f*(n.lanes-1),s=e.plot.top+e.categoryPx(o)-r/2+a/2;n.spans.forEach((n,r)=>{if(!n||n.to<e.scale.min||n.from>e.scale.max)return;const l=e.valuePx(n.from),i=e.valuePx(n.to);t.push({series:o,index:r,x:(l+i)/2,y:s+n.lane*(a+f),r:a/2,rx:Math.max(0,(i-l)/2),ry:a/2})})}),t},[P,K]),Q=o.useCallback(e=>{const t=R[e.series]?.[e.index];if(!t)return null;const n=[{seriesIndex:e.series,name:J[e.series],color:t.color??q[e.series],value:t.to-t.from,formatted:`${h(t.from,T(I.unit),F,G)} – ${h(t.to,T(I.unit),F,G)}`}];return{heading:t.span.label??J[e.series],items:n}},[R,J,q,I.unit,F,G]);return e(a,{...E,series:Y,categories:J,size:u,density:x,locale:D,horizontal:!0,scale:I,references:S,brush:void 0,secondaryAxis:void 0,xAxis:$,yAxis:{tickFormat:(e,t)=>N[t]??"",...j},legend:!1,bandRatio:c[x],marks:O,markTooltip:Q,summary:H,exportRows:()=>function(e,t,n,o,a){const r=t.some(e=>e.data.some(e=>void 0!==e.label));return[["string"==typeof o?o:"",...r?[a.title]:[],a.start,a.end],...n.flatMap((n,o)=>n.map((n,a)=>[e[o],...r?[z(t[o].data[a]?.label)]:[],n?new Date(n.from):null,n?new Date(n.to):null]))]}(J,n,R,$?.label,L),table:t=>e(A,{id:t,names:J,series:n,spans:R,unit:T(I.unit),clock:G,label:E.label,corner:$?.label,locale:D}),children:t=>e(Spans,{context:t,spans:R,colors:q,rounded:i})})}function w(e){const t=e.data.map(e=>{const t=y(e.start),n=y(e.end);return null===t||null===n?null:{from:Math.min(t,n),to:Math.max(t,n),lane:0,color:e.color?x(e.color):void 0,span:e}}),n=[];return t.map((e,t)=>({one:e,index:t})).filter(e=>Boolean(e.one)).sort((e,t)=>e.one.from-t.one.from).forEach(({one:e})=>{const t=n.findIndex(t=>t<=e.from),o=-1===t?n.length:t;n[o]=e.to,e.lane=o}),{spans:t,lanes:Math.max(1,n.length)}}const $=64;function Spans({context:t,spans:n,colors:a,rounded:r}){const{marks:s,activeMark:l,plot:i}=t,c=r?u:0,m=o.useMemo(()=>{const e=[];for(const t of s){const o=n[t.series]?.[t.index];if(!o)continue;const r=t.rx??t.r,s=2*(t.ry??t.r),l=Math.max(i.left,t.x-r),m=Math.min(i.left+i.width,t.x+r);if(m<i.left||l>i.left+i.width)continue;const u=Math.max(1,m-l);e.push({key:`${t.series}-${t.index}`,series:t.series,index:t.index,x:l,y:t.y-s/2,width:u,height:s,rx:Math.min(c,u/2,s/2),fill:o.color??a[t.series]})}const t=[];for(let n=0;n<e.length;n+=$)t.push(e.slice(n,n+$));return t},[s,n,a,i,c]),d=l?`${l.series}-${l.index}`:null;return e("g",{children:m.map((t,n)=>e(j,{spans:t,active:null!==d&&t.some(e=>e.key===d)?d:null},n))})}const j=/*@__PURE__*/o.memo(function SpanRun({spans:n,active:o}){return e(t,{children:n.map(t=>e("rect",{x:t.x,y:t.y,width:t.width,height:t.height,rx:t.rx,fill:t.fill,opacity:t.key===o?1:.92,className:s},t.key))})});function C(e){const t=new Date(e);return t.getTime()!==new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()}function T(e){return"month"===e||"quarter"===e||"year"===e?"day":e}const z=e=>"string"==typeof e||"number"==typeof e?e:null;const A=/*@__PURE__*/o.memo(function TimelineTable({id:t,names:a,series:s,spans:c,unit:m,clock:u,label:d,corner:f,locale:x}){const p=g(b,x),M=v(x),y=s.some(e=>e.data.some(e=>void 0!==e.label)),k=c.reduce((e,t)=>e+t.length,0),{shown:w,run:$}=i({rows:k,points:k,columns:y?4:3}),j=o.useCallback((t,o)=>{let r=0;return c.flatMap((l,i)=>{const c=Math.max(0,t-r),d=Math.min(l.length,o-r);return r+=l.length,l.slice(c,Math.max(c,d)).map((t,o)=>{const r=c+o;return n("tr",{children:[e("th",{scope:"row",children:a[i]}),y?e("td",{children:s[i].data[r]?.label??""}):null,e("td",{children:t?h(t.from,m,M,u):""}),e("td",{children:t?h(t.to,m,M,u):""})]},`${i}-${r}`)})})},[c,a,s,y,m,M,u]);return n("table",{id:t,className:r,"aria-busy":w<k||void 0,children:[d?e("caption",{children:d}):null,e("thead",{children:n("tr",{children:[e("th",{scope:"col",children:f??""}),y?e("th",{scope:"col",children:p.title}):null,e("th",{scope:"col",children:p.start}),e("th",{scope:"col",children:p.end})]})}),e("tbody",{children:l(w,$,j)})]})});
|
|
@@ -102,6 +102,27 @@ export interface ToastProviderProps extends Pick<NebaStyleProps, 'variant' | 'si
|
|
|
102
102
|
classNames?: NebaSlots<ToastSlot>;
|
|
103
103
|
children?: React.ReactNode;
|
|
104
104
|
}
|
|
105
|
+
/** What a toast that follows a promise says while it runs, and once it settles. */
|
|
106
|
+
interface ToastPromiseMessages<Value> {
|
|
107
|
+
loading: ToastOptions;
|
|
108
|
+
success: ToastOptions | ((value: Value) => ToastOptions);
|
|
109
|
+
error: ToastOptions | ((error: unknown) => ToastOptions);
|
|
110
|
+
}
|
|
111
|
+
/** The four methods `useToast` returns beside `toasts`, and all `useToastActions` does. */
|
|
112
|
+
export interface ToastActions {
|
|
113
|
+
/** Raises a toast and returns its id. */
|
|
114
|
+
add: (options: ToastOptions) => string;
|
|
115
|
+
/** Closes one toast, or every toast when called with nothing. */
|
|
116
|
+
close: (id?: string) => void;
|
|
117
|
+
/** Changes a toast already on screen. */
|
|
118
|
+
update: (id: string, options: ToastOptions) => void;
|
|
119
|
+
/**
|
|
120
|
+
* One toast that follows a promise: the loading message while it runs,
|
|
121
|
+
* then the success or the error. `timeout: 0` is applied to the loading
|
|
122
|
+
* state by Base UI, so a slow request cannot dismiss its own toast.
|
|
123
|
+
*/
|
|
124
|
+
promise: <Value>(promise: Promise<Value>, options: ToastPromiseMessages<Value>) => Promise<Value>;
|
|
125
|
+
}
|
|
105
126
|
/**
|
|
106
127
|
* Raises toasts from anywhere under a `ToastProvider`.
|
|
107
128
|
*
|
|
@@ -109,6 +130,10 @@ export interface ToastProviderProps extends Pick<NebaStyleProps, 'variant' | 'si
|
|
|
109
130
|
* a toast is warranted is a click handler, not a place in the tree — and a
|
|
110
131
|
* `<Toast open={…}/>` they would have to keep mounted, with a piece of state per
|
|
111
132
|
* message, is the shape this component exists to avoid.
|
|
133
|
+
*
|
|
134
|
+
* It also returns `toasts`, which is a subscription: a component that calls it
|
|
135
|
+
* renders again every time a toast is added, updated or closed anywhere on the
|
|
136
|
+
* page. `useToastActions` is the same four methods without it.
|
|
112
137
|
*/
|
|
113
138
|
export declare function useToast(): {
|
|
114
139
|
/** Every toast currently in the stack, newest first. */
|
|
@@ -124,12 +149,19 @@ export declare function useToast(): {
|
|
|
124
149
|
* then the success or the error. `timeout: 0` is applied to the loading
|
|
125
150
|
* state by Base UI, so a slow request cannot dismiss its own toast.
|
|
126
151
|
*/
|
|
127
|
-
promise: <Value>(promise: Promise<Value>, options:
|
|
128
|
-
loading: ToastOptions;
|
|
129
|
-
success: ToastOptions | ((value: Value) => ToastOptions);
|
|
130
|
-
error: ToastOptions | ((error: unknown) => ToastOptions);
|
|
131
|
-
}) => Promise<Value>;
|
|
152
|
+
promise: <Value>(promise: Promise<Value>, options: ToastPromiseMessages<Value>) => Promise<Value>;
|
|
132
153
|
};
|
|
154
|
+
/**
|
|
155
|
+
* The four methods `useToast` returns, without the list of toasts.
|
|
156
|
+
*
|
|
157
|
+
* A component that only raises toasts — a form that reports its submit, a hook
|
|
158
|
+
* that reports a failed request — has no use for the list, and reading it
|
|
159
|
+
* through `useToast` drew that component again for every toast anywhere on
|
|
160
|
+
* the page. This reads a ref the `ToastProvider` never replaces, so a
|
|
161
|
+
* component that calls it renders only for reasons of its own, and the four
|
|
162
|
+
* methods keep one identity for the life of the component.
|
|
163
|
+
*/
|
|
164
|
+
export declare function useToastActions(): ToastActions;
|
|
133
165
|
/**
|
|
134
166
|
* Puts the toast stack on the page and lets anything under it raise a message.
|
|
135
167
|
*
|
|
@@ -143,3 +175,4 @@ export declare function useToast(): {
|
|
|
143
175
|
* message that appeared out of nowhere reach a screen reader at all.
|
|
144
176
|
*/
|
|
145
177
|
export declare function ToastProvider(rawProps: ToastProviderProps): React.JSX.Element;
|
|
178
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as o from"react";import{useLayoutEffectOnClient as
|
|
1
|
+
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as o from"react";import{useLayoutEffectOnClient as n}from"../../internal/layout-effect.js";import{Toast as s}from"@base-ui/react/toast";import{boxPaddingClasses as r}from"../box/Box.js";import{actionMessages as a,toastMessages as i,useMessages as l}from"../../internal/i18n.js";import{CloseIcon as c,severityIcon as d}from"../../internal/icons.js";import{controlSlots as u,cx as m,focusRingClasses as f,hasContent as p,hitAreaClasses as b,iconClasses as v,metaTextClasses as x,popupFadeClasses as h,radiusClasses as g,sheetBodyClasses as w,sheetHeaderGapClasses as y,sheetSectionGapClasses as T,sheetTitleClasses as j,sheetTitleHeadingClasses as N,surfaceClasses as M}from"../../internal/styles.js";import{useStyleDefaults as z}from"../../internal/defaults.js";const P={"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"},L={solid:M+" text-(--n-on-solid) bg-(--n-fill) [box-shadow:var(--neba-shadow-3),var(--neba-plate-solid)]",outline:M+" border text-(--neba-fg) bg-(--n-panel-press) [border-color:var(--n-line)] [box-shadow:var(--neba-shadow-3),var(--neba-plate-glass)]",text:M+" text-(--neba-fg) bg-(--n-panel-press) [box-shadow:var(--neba-shadow-3),var(--neba-plate-glass)]"},k={solid:"",outline:"text-(--n-on-tint)",text:"text-(--n-on-tint)"};function _(e){const{color:t,variant:o,icon:n,actionLabel:s,onAction:r,...a}=e;return{...a,data:{color:t,variant:o,icon:n},actionProps:void 0===s?void 0:{children:s,onClick:r}}}function A(e,t){const{color:o,variant:n,icon:s,actionLabel:r,onAction:a,...i}=e,l=Object.fromEntries(Object.entries(i).filter(([,e])=>void 0!==e)),c=Object.fromEntries(Object.entries({color:o,variant:n,icon:s}).filter(([,e])=>void 0!==e));return{...l,...0===Object.keys(c).length?null:{data:{...t.data,...c}},...void 0===r?null:{actionProps:{children:r,onClick:a}}}}function C(e){return{loading:_(e.loading),success:t=>_("function"==typeof e.success?e.success(t):e.success),error:t=>_("function"==typeof e.error?e.error(t):e.error)}}const O=/*@__PURE__*/o.createContext(null);export function useToast(){const e=s.useToastManager(),t=o.useRef(e);n(()=>{t.current=e});const r=o.useMemo(()=>({add:e=>t.current.add(_(e)),close:e=>t.current.close(e),update:(e,o)=>t.current.update(e,e=>A(o,e)),promise:(e,o)=>t.current.promise(e,C(o))}),[]);return o.useMemo(()=>({...r,toasts:e.toasts}),[r,e.toasts])}export function useToastActions(){const e=o.useContext(O);if(!e)throw new Error("neba: useToastActions() needs a <ToastProvider> above it.");return o.useMemo(()=>{const t=()=>{if(!e.current)throw new Error("neba: a toast was raised before its <ToastProvider> had mounted.");return e.current};return{add:e=>t().add(_(e)),close:e=>t().close(e),update:(e,o)=>t().update(e,e=>A(o,e)),promise:(e,o)=>t().promise(e,C(o))}},[e])}function ToastManagerBridge({managerRef:e}){const t=s.useToastManager();return n(()=>{e.current=t}),null}function ToastItem({toast:o,variant:n,color:a,size:i,density:l,closeLabel:M,swipeDirection:z,classNames:P}){const _=o.data?.variant??n??"outline",A=o.data?.color??a,C=void 0===o.data?.icon?d(A):o.data.icon,O=k[_],R=p(o.title);return t(s.Root,{toast:o,swipeDirection:z,className:m("pointer-events-auto flex w-full items-start",r[l??"default"][i],g[i],T[i],w[i],L[_],v,h,"data-[limited]:hidden",f,P?.toast),style:u(A,3,_),children:[p(C)?e("span",{className:`flex h-[1lh] shrink-0 items-center ${O}`,children:C}):null,t("div",{className:`flex min-w-0 flex-1 flex-col ${y[i]}`,children:[e(s.Title,{className:m(N,"font-semibold",j[i],O,P?.title)}),e(s.Description,{className:m(R&&"solid"!==_?"text-(--neba-muted-fg)":"",P?.description)})]}),e(s.Action,{className:m("flex h-[1lh] shrink-0 cursor-pointer items-center rounded-full px-2","font-medium underline-offset-2",O||"text-(--n-on-solid)","hover:underline","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2",x[i],P?.action)}),e("span",{className:"flex h-[1lh] shrink-0 items-center",children:e(s.Close,{"aria-label":M,className:m("relative inline-flex size-[1.15em] cursor-pointer items-center justify-center rounded-full",b,"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",P?.close),children:e(c,{})})})]})}function ToastViewport(t){const{toasts:n}=s.useToastManager(),{position:r,width:a,classNames:i,regionLabel:l,...c}=t,d=o.useMemo(()=>[r.startsWith("top")?"up":"down","left","right"],[r]);return e(s.Portal,{children:e(s.Viewport,{"aria-label":l,className:m("neba-portal pointer-events-none fixed inset-x-0 flex flex-col gap-2 p-4","z-(--neba-z-toast,calc(var(--neba-z-portal)+1))",P[r],i?.viewport),children:n.map(t=>e("div",{className:"w-full",style:{maxWidth:"number"==typeof a?`${a}px`:a},children:e(ToastItem,{toast:t,swipeDirection:d,classNames:i,...c})},t.id))})})}export function ToastProvider(n){const{variant:r="outline",size:c="md",color:d="primary",density:u="default",position:m="bottom-end",timeout:f=5e3,limit:p=3,width:b=380,locale:v,closeLabel:x,label:h,classNames:g,children:w}=z(n,["size","density","variant","locale"]),y=l(a,v),T=l(i,v),j=o.useRef(null);return t(s.Provider,{timeout:f,limit:p,children:[e(ToastManagerBridge,{managerRef:j}),e(O.Provider,{value:j,children:w}),e(ToastViewport,{position:m,variant:r,size:c,color:d,density:u,width:b,closeLabel:x??y.close,regionLabel:h??T.label,classNames:g})]})}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { ToastProvider, useToast } from './Toast.js';
|
|
2
|
-
export type { ToastData, ToastOptions, ToastPosition, ToastProviderProps } from './Toast.js';
|
|
1
|
+
export { ToastProvider, useToast, useToastActions } from './Toast.js';
|
|
2
|
+
export type { ToastActions, ToastData, ToastOptions, ToastPosition, ToastProviderProps, ToastSlot } from './Toast.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{ToastProvider,useToast}from"./Toast.js";
|
|
1
|
+
export{ToastProvider,useToast,useToastActions}from"./Toast.js";
|
|
@@ -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 t from"react";import{Toggle as n}from"@base-ui/react/toggle";import{ButtonGroupContext as r}from"../../internal/button-group.js";import{trackPointer as o}from"../../internal/glow.js";import{controlHeightClasses as a,controlSlots as s,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 c,surfaceClasses as f,transitionClasses as h}from"../../internal/styles.js";import{useStyleDefaults as u}from"../../internal/defaults.js";const $={xs:`${a.xs} ${v.xs} ${c.xs} ${i.xs}`,sm:`${a.sm} ${v.sm} ${c.sm} ${i.sm}`,md:`${a.md} ${v.md} ${c.md} ${i.md}`,lg:`${a.lg} ${v.lg} ${c.lg} ${i.lg}`,xl:`${a.xl} ${v.xl} ${c.xl} ${i.xl}`},w={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`},y="neba-toggle 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,j={solid:f+" 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)",outline:f+" 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)",text:"text-(--neba-muted-fg) bg-transparent hover:bg-(--n-soft) hover:text-(--neba-fg) active:bg-(--n-soft-hover)"},P={solid:f+" 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)",outline:f+" 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:[border-color:var(--n-accent)] hover:text-(--neba-fg) active:[border-color:var(--n-accent)]",text:"text-(--n-on-tint) bg-(--n-soft-hover) hover:bg-(--n-soft-press) active:bg-(--n-soft-press)"};export const Toggle=/*@__PURE__*/t.forwardRef(function Toggle(a,l){const i=t.useContext(r),{variant:g,size:v,color:p,density:x,elevation:c,pressed:f,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(a,["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=c??i?.elevation??0,H=M??i?.disabled??!1,J=null==W||!1===W;return e(n,{ref:l,value:C,pressed:f,defaultPressed:h,onPressedChange:e=>z?.(e),disabled:H,className:e=>d(y,$[D],J?w[D]:m[F][D],H?b[B]:e.pressed?P[B]:j[B],H?"":"neba-glow cursor-pointer",I?"w-full":"",N??""),style:{...s(E,G,B),...R},onPointerMove:o(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
|
|
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 t}from"../../internal/button-group.js";import{cx as i}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"};export const ToggleGroup=/*@__PURE__*/o.forwardRef(function ToggleGroup(s,u){const{variant:d,size:c,color:f,density:m,elevation:p,value:h,defaultValue:v,onValueChange:g,multiple:x=!1,orientation:z="horizontal",disabled:b,loopFocus:j=!0,fullWidth:y=!1,className:V,children:w,...G}=n(s,["size","density","variant"]),T=o.useMemo(()=>({variant:d,size:c,color:f,density:m,elevation:p,disabled:b}),[d,c,f,m,p,b]);return e(t.Provider,{value:T,children:e(l,{ref:u,value:h,defaultValue:v,onValueChange:e=>g?.(e),multiple:x,orientation:z,disabled:b,loopFocus:j,className:i("align-middle [&>*]:relative [&>*:hover]:z-10 [&>*:focus-visible]:z-10 [&>*]:shrink-0","vertical"===z?"flex-col":"flex-row",r[z],"outline"===(d??"outline")?a[z]:"",y?"flex w-full [&>*]:flex-1":"inline-flex",V??""),...G,children:w})})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,Fragment as a,jsxs as n}from"react/jsx-runtime";import*as l from"react";import{Collapsible as s}from"@base-ui/react/collapsible";import{boxPaddingXClasses as r,boxPaddingYClasses as t}from"../box/Box.js";import{ChevronIcon as o}from"../../internal/icons.js";import{
|
|
1
|
+
"use client";import{jsx as e,Fragment as a,jsxs as n}from"react/jsx-runtime";import*as l from"react";import{Collapsible as s}from"@base-ui/react/collapsible";import{boxPaddingXClasses as r,boxPaddingYClasses as t}from"../box/Box.js";import{ChevronIcon as o}from"../../internal/icons.js";import{RunTime as i,runColor as c,runIcon as m,useRunClock as d}from"../../internal/run.js";import{runMessages as u,toolMessages as f,useMessages as p}from"../../internal/i18n.js";import{collapsiblePanelClasses as h,cx as x,gapClasses as b,hasContent as g,iconClasses as v,metaTextClasses as N,preformattedClasses as w,radiusClasses as j,sheetBodyClasses as y,sheetTitleClasses as k,srOnlyClasses as z,surfaceClasses as C,surfaceSlots as B,transitionClasses as F,disclosureChevronClasses as O,disclosureTriggerClasses as R}from"../../internal/styles.js";import{useStyleDefaults as T}from"../../internal/defaults.js";const U={solid:C+" text-(--neba-fg) bg-(--n-panel-hover) [box-shadow:var(--n-elev),var(--neba-plate-solid)]",outline:C+" border text-(--neba-fg) bg-(--n-panel) [border-color:var(--n-line)] [box-shadow:var(--n-elev),var(--neba-plate-glass)]",text:"text-(--neba-fg) bg-transparent"},_=k;export const ToolCall=/*@__PURE__*/l.forwardRef(function ToolCall(w,k){const{variant:C="outline",size:E="md",color:P="primary",density:S="default",elevation:$=0,name:q,status:A="pending",args:D,result:G,error:H,duration:I,meta:J,icon:K,open:L,defaultOpen:M=!1,onOpenChange:Q,hiddenUntilFound:V=!0,locale:W,labels:X,classNames:Y,className:Z,style:ee,children:ae,...ne}=T(w,["size","density","variant","locale"]),le=p(u,W),se=p(f,W),re={...le,...se,...X},[te,oe]=l.useState(M),ie=void 0!==L,ce=ie?L:te,me=l.useRef(A);l.useEffect(()=>{me.current===A||"error"!==A||ie||oe(!0),me.current=A},[A,ie]);const de=d("running"===A,I),ue=c(A,P),fe=void 0===K?m(A):K,pe=function(e,a,n){return"error"===e&&g(n)?n:a}(A,G,H),he=g(D)||g(pe)||g(ae),xe=r[S][E],be=t[S][E],ge=n(a,{children:[g(fe)?e("span",{className:"flex h-[1lh] shrink-0 items-center text-(--n-accent)",children:fe}):null,e("span",{className:x("min-w-0 truncate font-mono font-semibold",_[E]),children:q}),e("span",{className:z,children:re[A]}),g(J)?e("span",{className:x("min-w-0 truncate text-(--neba-muted-fg)",N[E]),children:J}):null,e("span",{className:"flex-1"}),e(i,{...de,locale:W,className:x("shrink-0 tabular-nums text-(--neba-muted-fg)",N[E])})]}),ve=x("flex flex-col overflow-hidden",j[E],U[C],F,v,Z??""),Ne={...B(ue,$),...ee};return he?n(s.Root,{ref:k,open:ce,onOpenChange:e=>{ie||oe(e),Q?.(e)},"data-status":A,className:ve,style:Ne,...ne,children:[n(s.Trigger,{className:x("flex w-full cursor-pointer items-center text-start",R,xe,be,b[E],F,"hover:bg-(--n-soft)","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:[outline-offset:-2px]",Y?.header??""),children:[ge,e("span",{className:`${O} text-(--neba-muted-fg)`,children:e(o,{})})]}),e(s.Panel,{hiddenUntilFound:V,className:h,children:n("div",{className:x("flex min-w-0 flex-col gap-2 pb-4",xe,y[E],"compact"===S?"pb-2":"",Y?.body??""),children:[g(D)?e(Block,{size:E,label:re.arguments,className:Y?.args,value:D}):null,g(pe)?e(Block,{size:E,label:"error"===A&&g(H)?le.error:re.result,className:Y?.result,value:pe,accent:"error"===A}):null,ae]})})]}):e("div",{ref:k,"data-status":A,className:ve,style:Ne,...ne,children:e("div",{className:x("flex items-center",xe,be,b[E],Y?.header??""),children:ge})})});function Block({size:a,label:l,value:s,className:r,accent:t=!1}){return n("div",{className:x("flex min-w-0 flex-col gap-1",r??""),children:[e("span",{className:x("font-medium tracking-wide text-(--neba-muted-fg) uppercase",N[a]),children:l}),"string"==typeof s?e("pre",{className:x(w,"max-h-64",t?"text-(--n-accent)":""),children:s}):e("div",{className:t?"text-(--n-accent)":void 0,children:s})]})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,Fragment as t,jsxs as r}from"react/jsx-runtime";import*as o from"react";import{useRender as
|
|
1
|
+
"use client";import{jsx as e,Fragment as t,jsxs as r}from"react/jsx-runtime";import*as o from"react";import{useRender as a}from"@base-ui/react/use-render";import{boxPaddingXClasses as n,boxPaddingYClasses as i,boxPaddingYValues as s}from"../box/Box.js";import{cx as l,hasContent as d,radiusClasses as m,sheetSectionGapClasses as c,surfaceClasses as p,surfaceSlots as b,transitionClasses as f}from"../../internal/styles.js";import{useStyleDefaults as x}from"../../internal/defaults.js";const v={solid:p+" text-(--neba-fg) bg-(--n-panel-hover) [box-shadow:var(--n-elev),var(--neba-plate-solid)]",outline:p+" border text-(--neba-fg) bg-(--n-panel) [border-color:var(--n-line)] [box-shadow:var(--n-elev),var(--neba-plate-glass)]",text:"text-(--neba-fg) bg-transparent"},u={static:{top:"",bottom:""},sticky:{top:"sticky top-0 z-20",bottom:"sticky bottom-0 z-20"},fixed:{top:"fixed inset-x-0 top-0 z-30",bottom:"fixed inset-x-0 bottom-0 z-30"}},g={top:"border-b [border-color:var(--n-line)]",bottom:"border-t [border-color:var(--n-line)]"};export const Toolbar=/*@__PURE__*/o.forwardRef(function Toolbar(o,p){const{variant:h="outline",size:y="md",color:w="primary",density:j="default",elevation:z=0,position:k="static",side:N="top",safeArea:T=!0,divider:B=!1,start:$,end:A,render:F,className:R,style:q,children:C,...D}=x(o,["size","density","variant"]),E=l("flex w-full min-w-0 items-center",n[j][y],i[j][y],c[y],"static"===k?m[y]:"",v[h],B?g[N]:"",u[k][N],f,R??"");return a({render:F,ref:p,props:{className:E,style:{...b(w,z),...T&&"static"!==k?{["bottom"===N?"paddingBottom":"paddingTop"]:`calc(${s[j][y]} + env(safe-area-inset-${N}))`}:null,...q},children:r(t,{children:[d($)?e("div",{className:"flex min-w-0 shrink-0 items-center gap-2",children:$}):null,e("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:C}),d(A)?e("div",{className:"flex min-w-0 shrink-0 items-center gap-2",children:A}):null]}),...D}})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as
|
|
1
|
+
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as a from"react";import{Tooltip as o}from"@base-ui/react/tooltip";import{controlSlots as i,cx as s,metaTextClasses as l,paddingXClasses as r,popupFadeClasses as d,radiusClasses as n,surfaceClasses as p}from"../../internal/styles.js";import{useStyleDefaults as c}from"../../internal/defaults.js";export const TooltipProvider=o.Provider;const m=p+" max-w-64 text-(--n-on-solid) bg-(--n-fill) [box-shadow:var(--neba-shadow-3),var(--neba-plate-solid)] [outline:none] "+d+" data-[instant]:[transition-duration:0ms]",f={xs:"py-0.5",sm:"py-0.5",md:"py-1",lg:"py-1.5",xl:"py-2"},h={xs:6,sm:7,md:8,lg:9,xl:10};export function Tooltip(d){const{content:p,children:u,size:x="sm",color:y="secondary",density:b="default",side:g="top",align:v="center",sideOffset:w=6,delay:O,closeDelay:j,arrow:z=!0,open:N,defaultOpen:P,onOpenChange:T,disabled:C=!1,className:D,style:k,id:A,...B}=c(d,["size","density"]),I=h[x],L=a.useId(),M=A??L,[R,S]=a.useState(P??!1),q=N??R;return t(o.Root,{open:N,defaultOpen:P,onOpenChange:e=>{void 0===N&&S(e),T?.(e)},children:[e(o.Trigger,{render:u,delay:O,closeDelay:j,disabled:C,"aria-describedby":q?M:void 0}),e(o.Portal,{children:e(o.Positioner,{className:"neba-portal z-(--neba-z-portal) [outline:none]",side:g,align:v,sideOffset:w,children:t(o.Popup,{id:M,role:"tooltip",className:s(m,n[x],r[b][x],f[x],l[x],D??""),style:{...i(y,3,"solid"),...k},...B,children:[z?e(o.Arrow,{className:"data-[side=top]:bottom-[-1px] data-[side=bottom]:top-[-1px] data-[side=bottom]:rotate-180 data-[side=left]:right-[-1px] data-[side=left]:-rotate-90 data-[side=right]:left-[-1px] data-[side=right]:rotate-90",children:e("svg",{width:I,height:I/2,viewBox:"0 0 10 5","aria-hidden":"true",className:"block",children:e("path",{d:"M0 0h10L5 5z",fill:"var(--n-fill)"})})}):null,p]})})})]})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as n from"react";import{useLayoutEffectOnClient as
|
|
1
|
+
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as n from"react";import{useLayoutEffectOnClient as s}from"../../internal/layout-effect.js";import{Popover as i}from"@base-ui/react/popover";import{Button as o}from"../button/Button.js";import{boxPaddingXClasses as l,boxPaddingYClasses as a}from"../box/Box.js";import{actionMessages as r,fillMessage as c,stepsMessages as d,useMessages as m}from"../../internal/i18n.js";import{CloseIcon as p}from"../../internal/icons.js";import{queryMatches as u,reducedMotionQuery as h}from"../../internal/media.js";import{observeResize as f}from"../../internal/observe.js";import{cx as g,hasContent as x,metaTextClasses as b,popupFadeClasses as v,radiusClasses as w,sheetBodyClasses as N,sheetCloseClasses as k,sheetHeaderGapClasses as y,sheetSectionGapClasses as j,sheetTitleClasses as S,srOnlyClasses as z,surfaceClasses as L,surfaceSlots as C}from"../../internal/styles.js";import{useStyleDefaults as E}from"../../internal/defaults.js";const M=L+" relative flex flex-col 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] "+v,P={xs:"max-w-56",sm:"max-w-64",md:"max-w-80",lg:"max-w-96",xl:"max-w-lg"},O={xs:"xs",sm:"xs",md:"sm",lg:"sm",xl:"md"};function $(e){try{return document.querySelector(e)}catch{return null}}function Mask({spot:t,radius:n,className:s}){return e("div",null===t?{"aria-hidden":"true",className:g("pointer-events-none fixed inset-0 z-40 bg-(--neba-scrim)",s)}:{"aria-hidden":"true",className:g("pointer-events-none fixed top-0 left-0 z-40 [box-shadow:0_0_0_9999px_var(--neba-scrim)]",s),style:{translate:`${t.left}px ${t.top}px`,width:t.width,height:t.height,borderRadius:n}})}export function Tour(v){const{steps:L,open:_,defaultOpen:B=!1,onOpenChange:F,step:R,defaultStep:T=0,onStepChange:q,onFinish:A,mask:I=!0,skippable:V=!0,dismissible:D=!0,scrollIntoView:H=!0,locale:G,previousLabel:J,nextLabel:K,doneLabel:Q,skipLabel:U,closeLabel:W,size:X="md",color:Y="primary",density:Z="default",className:ee,classNames:te}=E(v,["size","density","locale"]),ne=m(d,G),se=m(r,G),[ie,oe]=n.useState(B),[le,ae]=n.useState(T),re=_??ie,ce=Math.min(R??le,Math.max(0,L.length-1)),de=L[ce],[me,pe]=n.useState(null),ue=e=>{void 0===_&&oe(e),F?.(e)},he=e=>{void 0===R&&ae(e),q?.(e)},[fe,ge]=n.useState(null);if(s(()=>{const e=de?.target;ge(re&&e?$(e):null)},[re,de?.target]),n.useEffect(()=>{const e=de?.target;if(!re||!e)return;const t=$(e);if(!(t instanceof HTMLElement))return;H&&t.scrollIntoView({block:"center",inline:"nearest",behavior:u(h)?"auto":"smooth"});const n=de?.padding??6;let s=0;const i=()=>{s=0;const i=t.getBoundingClientRect(),o={top:i.top-n,left:i.left-n,width:i.width+2*n,height:i.height+2*n};pe(t=>t?.selector===e&&t.spot.top===o.top&&t.spot.left===o.left&&t.spot.width===o.width&&t.spot.height===o.height?t:{selector:e,spot:o})},o=()=>{0===s&&(s=requestAnimationFrame(i))};i();const l=f(t,o);return window.addEventListener("scroll",o,{passive:!0,capture:!0}),window.addEventListener("resize",o,{passive:!0}),()=>{0!==s&&cancelAnimationFrame(s),l(),window.removeEventListener("scroll",o,!0),window.removeEventListener("resize",o)}},[re,de?.target,de?.padding,H]),0===L.length)return null;const xe=re&&de?.target&&me?.selector===de.target?me.spot:null,be=0===ce,ve=ce===L.length-1,we=l[Z][X],Ne=a[Z][X],ke=O[X],ye=x(de?.title)||x(de?.content);return e(i.Root,{open:re,onOpenChange:(e,t)=>{(e||D||"escape-key"!==t.reason)&&(e||"outside-press"!==t.reason&&"focus-out"!==t.reason)?ue(e):t.cancel()},children:t(i.Portal,{children:[re&&I?e(Mask,{spot:xe,radius:xe?8:0,className:te?.mask}):null,e(i.Positioner,{className:"neba-portal z-(--neba-z-portal) [outline:none]",side:de?.side??"bottom",align:de?.align??"center",sideOffset:10,collisionPadding:12,anchor:fe,children:t(i.Popup,{className:g(M,w[X],N[X],j[X],P[X],we,Ne,ee),style:C(Y,3),children:[e("span",{className:z,"aria-live":"polite",children:"string"==typeof de?.title?c(ne.step,{index:String(ce+1),title:de.title}):c(ne.position,{index:String(ce+1),total:String(L.length)})}),ye?t("div",{className:"flex items-start gap-3",children:[t("div",{className:`flex min-w-0 flex-1 flex-col ${y[X]}`,children:[x(de?.title)?e(i.Title,{className:g("m-0 font-semibold",S[X],te?.title),children:de?.title}):null,x(de?.content)?e(i.Description,{className:g("m-0 min-w-0",te?.description),children:de?.content}):null]}),D?e("button",{type:"button","aria-label":W??se.close,onClick:()=>ue(!1),className:g(k,te?.close),children:e(p,{})}):null]}):null,t("div",{className:g("flex items-center gap-2",te?.footer),children:[e("span",{className:`shrink-0 tabular-nums text-(--neba-muted-fg) ${b[X]}`,children:c(ne.position,{index:String(ce+1),total:String(L.length)})}),t("div",{className:"ms-auto flex items-center gap-2",children:[V&&!ve?e(o,{size:ke,variant:"text",color:"secondary",onClick:()=>ue(!1),children:U??ne.skip}):null,be?null:e(o,{size:ke,variant:"outline",color:Y,onClick:()=>he(ce-1),children:J??ne.previous}),e(o,{size:ke,color:Y,onClick:()=>ve?(A?.(),void ue(!1)):he(ce+1),children:ve?Q??ne.done:K??ne.next})]})]})]})})]})})}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { Tour } from './Tour.js';
|
|
2
|
-
export type { TourProps, TourStep } from './Tour.js';
|
|
2
|
+
export type { TourProps, TourSlot, TourStep } from './Tour.js';
|
|
@@ -27,6 +27,13 @@ export interface TransferProps extends NebaStyleProps, Omit<React.ComponentProps
|
|
|
27
27
|
height?: number | string;
|
|
28
28
|
/** Nothing can be ticked or moved. */
|
|
29
29
|
disabled?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Identifies the chosen values when a form is submitted. Each value on the
|
|
32
|
+
* right is a hidden input under this name, so `FormData.getAll(name)` reads
|
|
33
|
+
* them in order and a `Form`'s `onSubmit` is handed them as an array. With
|
|
34
|
+
* nothing chosen, nothing is submitted, as with a checkbox left unticked.
|
|
35
|
+
*/
|
|
36
|
+
name?: string;
|
|
30
37
|
/**
|
|
31
38
|
* Which language the headings, the buttons and the filter are written in — a
|
|
32
39
|
* BCP 47 tag such as `ko`, `pt-BR` or `zh-Hant`. Unsupported tags fall back
|