neba 1.18.0 → 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/CheckboxGroup.d.ts +84 -0
- package/dist/components/checkbox-group/CheckboxGroup.js +1 -0
- package/dist/components/checkbox-group/index.d.ts +2 -0
- package/dist/components/checkbox-group/index.js +1 -0
- 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/fieldset/Fieldset.d.ts +12 -1
- package/dist/components/fieldset/Fieldset.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/form/Form.d.ts +8 -2
- package/dist/components/form/Form.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.d.ts +9 -0
- 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.d.ts +3 -2
- package/dist/components/provider/NebaProvider.js +1 -1
- package/dist/components/radio-group/RadioGroup.d.ts +13 -0
- 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/index.d.ts +1 -0
- package/dist/index.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/checkbox-group.d.ts +29 -0
- package/dist/internal/checkbox-group.js +1 -0
- 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/defaults.d.ts +14 -2
- 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 +27 -1
- 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 +369 -62
- package/dist/types.d.ts +4 -2
- package/package.json +2 -2
|
@@ -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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as l from"react";import{Checkbox as t}from"../checkbox/Checkbox.js";import{IconButton as s}from"../icon-button/IconButton.js";import{ScrollArea as r}from"../scroll-area/ScrollArea.js";import{TextField as n}from"../text-field/TextField.js";import{fillMessage as i,transferMessages as o,useMessages as c}from"../../internal/i18n.js";import{ArrowRightIcon as d}from"../../internal/icons.js";import{searchText as u}from"../../internal/search.js";import{cx as m,fieldRestClasses as h,hasContent as f,metaTextClasses as b,paddingXClasses as p,radiusClasses as v,srOnlyClasses as g,surfaceSlots as x,toLength as y}from"../../internal/styles.js";import{useStyleDefaults as
|
|
1
|
+
"use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as l from"react";import{Checkbox as t}from"../checkbox/Checkbox.js";import{IconButton as s}from"../icon-button/IconButton.js";import{ScrollArea as r}from"../scroll-area/ScrollArea.js";import{TextField as n}from"../text-field/TextField.js";import{fillMessage as i,transferMessages as o,useMessages as c}from"../../internal/i18n.js";import{ArrowRightIcon as d}from"../../internal/icons.js";import{searchText as u}from"../../internal/search.js";import{cx as m,fieldRestClasses as h,hasContent as f,metaTextClasses as b,paddingXClasses as p,radiusClasses as v,srOnlyClasses as g,surfaceSlots as x,toLength as y}from"../../internal/styles.js";import{useStyleDefaults as k}from"../../internal/defaults.js";const S={xs:"py-1",sm:"py-1.5",md:"py-2",lg:"py-2.5",xl:"py-3"},w={xs:"py-0.5",sm:"py-1",md:"py-1",lg:"py-1.5",xl:"py-2"},T=/*@__PURE__*/l.memo(function TransferRow({value:a,label:l,checked:s,disabled:r,arrived:n,size:i,color:o,onTick:c}){return e(t,{size:i,color:o,className:m(w[i],n?"[animation:neba-anim-fade_var(--neba-duration-fill)_var(--neba-ease)_both]":""),label:l,checked:s,disabled:r,onCheckedChange:e=>c(a,!0===e)})});function Panel({title:s,rows:i,arrived:o,ticked:c,onTick:d,onTickAll:u,search:m,onSearch:f,searchable:g,disabled:y,height:k,emptyMessage:N,searchLabel:j,selectAllLabel:z,style:C}){const{size:M,variant:$="outline",color:A="primary",density:L="default"}=C,_=i.filter(e=>!e.disabled),D=_.filter(e=>c.has(e.value)),V=_.length>0&&D.length===_.length,P=D.length>0&&!V,R=p[L][M],W=l.useId();return a("div",{role:"group","aria-labelledby":W,className:"flex min-w-0 flex-col overflow-hidden "+h[$]+" "+v[M],style:x(A,0),children:[a("div",{className:`flex items-center gap-2 border-b [border-color:var(--neba-border)] ${R} ${S[M]}`,children:[e(t,{size:M,color:A,checked:V,indeterminate:P,disabled:y||0===_.length,"aria-label":z,onCheckedChange:e=>u(!0===e)}),e("span",{id:W,className:`min-w-0 flex-1 truncate font-medium ${b[M]}`,children:s}),a("span",{className:`shrink-0 tabular-nums text-(--neba-muted-fg) ${b[M]}`,children:[D.length,"/",i.length]})]}),g?e("div",{className:`${R} ${S[M]}`,children:e(n,{size:M,color:A,density:L,fullWidth:!0,variant:"text",disabled:y,placeholder:j,"aria-label":j,value:m,onChange:e=>f(e.target.value)})}):null,e(r,{size:M,color:A,height:k,fade:!0,children:e("div",{className:`flex flex-col ${R} ${S[M]}`,children:0===i.length?e("span",{className:`text-(--neba-muted-fg) ${b[M]} ${w[M]}`,children:N}):i.map(a=>e(T,{value:a.value,label:a.label,checked:c.has(a.value),disabled:y||!0===a.disabled,arrived:o.has(a.value),size:M,color:A,onTick:d},a.value))})})]})}function N(e,a,l){const t=u(a);return""===t?e:e.filter(e=>{const a=l.get(e.value);return void 0===a||a.includes(t)})}export const Transfer=/*@__PURE__*/l.forwardRef(function Transfer(t,r){const{items:n,value:h,defaultValue:b,onValueChange:p,sourceLabel:v,targetLabel:x,searchable:S=!1,height:w=220,disabled:T=!1,name:j,locale:z,variant:C="outline",size:M="md",color:$="primary",density:A="default",className:L,..._}=k(t,["size","density","variant","locale"]),D=c(o,z),[V,P]=l.useState(b??[]),R=h??V,[W,I]=l.useState(()=>new Set),[B,E]=l.useState(()=>new Set),[F,q]=l.useState(""),[G,H]=l.useState(""),[J,K]=l.useState(""),O=l.useRef(void 0);l.useEffect(()=>()=>clearTimeout(O.current),[]);const Q=l.useMemo(()=>new Set(R),[R]),U=l.useMemo(()=>n.filter(e=>!Q.has(e.value)),[n,Q]),X=l.useMemo(()=>n.filter(e=>Q.has(e.value)),[n,Q]),Y=l.useCallback((e,a)=>{I(l=>{const t=new Set(l);return a?t.add(e):t.delete(e),t})},[]),Z=(e,a)=>{I(l=>{const t=new Set(l);for(const l of e)l.disabled||(a?t.add(l.value):t.delete(l.value));return t})},ee=(e,a)=>{const l=e.filter(e=>!e.disabled&&W.has(e.value));if(0===l.length)return;const t=new Set(l.map(e=>e.value)),s=new Set(n.map(e=>e.value)),r=R.filter(e=>!s.has(e)),o=a?[...n.filter(e=>Q.has(e.value)||t.has(e.value)).map(e=>e.value),...r]:R.filter(e=>!t.has(e));I(e=>new Set([...e].filter(e=>!t.has(e)))),E(t),(e=>{void 0===h&&P(e),p?.(e)})(o);const c=a?x:v,d=i(D.moved,{count:String(l.length),list:"string"==typeof c&&c.trim()?c:a?D.target:D.source});clearTimeout(O.current),K(""),O.current=setTimeout(()=>K(d),100)},ae=l.useMemo(()=>function(e){const a=new Map;for(const l of e)"string"==typeof l.label&&a.set(l.value,u(l.label));return a}(n),[n]),le=l.useDeferredValue(F),te=l.useDeferredValue(G),se=l.useMemo(()=>N(U,le,ae),[U,le,ae]),re=l.useMemo(()=>N(X,te,ae),[X,te,ae]),ne=se.some(e=>!e.disabled&&W.has(e.value)),ie=re.some(e=>!e.disabled&&W.has(e.value)),oe=y(w),ce={variant:C,size:M,color:$,density:A};return a("div",{ref:r,className:m("grid w-full items-center gap-3","[grid-template-columns:minmax(0,1fr)_auto_minmax(0,1fr)]",L??""),..._,children:[e(Panel,{title:f(v)?v:D.source,rows:se,arrived:B,ticked:W,onTick:Y,onTickAll:e=>Z(se,e),search:F,onSearch:q,searchable:S,disabled:T,height:oe,emptyMessage:D.empty,searchLabel:D.search,selectAllLabel:D.selectAll,style:ce}),a("div",{className:"flex flex-col gap-2",children:[e(s,{size:M,color:$,variant:"text"===C?"text":"outline",label:D.toTarget,disabled:T||!ne,focusableWhenDisabled:!T,onClick:()=>ee(se,!0),icon:e("span",{className:"flex rtl:rotate-180",children:e(d,{})})}),e(s,{size:M,color:$,variant:"text"===C?"text":"outline",label:D.toSource,disabled:T||!ie,focusableWhenDisabled:!T,onClick:()=>ee(re,!1),icon:e("span",{className:"flex rotate-180 rtl:rotate-0",children:e(d,{})})})]}),e(Panel,{title:f(x)?x:D.target,rows:re,arrived:B,ticked:W,onTick:Y,onTickAll:e=>Z(re,e),search:G,onSearch:H,searchable:S,disabled:T,height:oe,emptyMessage:D.empty,searchLabel:D.search,selectAllLabel:D.selectAll,style:ce}),e("span",{role:"status",className:g,children:J}),void 0===j?null:R.map(a=>e("input",{type:"hidden",name:j,value:a,disabled:T,"data-neba-repeats":""},a))]})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import*as a from"react";import{TreeItem as n,TreeView as r}from"../tree-view/TreeView.js";import{PickerShell as t}from"../../internal/picker.js";import{searchHaystack as i,searchText as o}from"../../internal/search.js";import{actionMessages as s,commandMessages as c,comboboxMessages as d,useMessages as u}from"../../internal/i18n.js";import{useStyleDefaults as p}from"../../internal/defaults.js";function h(e,l=new Map){for(const a of e)l.set(a.value,a),a.children&&h(a.children,l);return l}function m(e,l=new Map){for(const a of e)l.set(a,i([a.searchLabel??("string"==typeof a.label?a.label:String(a.value))])),a.children&&m(a.children,l);return l}function f(e,l,a){if(""===l)return e;const n=[];for(const r of e){const e=r.children?f(r.children,l,a):void 0,t=(a.get(r)??"").includes(l);(t||e&&e.length>0)&&n.push({...r,children:t?r.children:e})}return n}function
|
|
1
|
+
"use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import*as a from"react";import{TreeItem as n,TreeView as r}from"../tree-view/TreeView.js";import{PickerShell as t}from"../../internal/picker.js";import{searchHaystack as i,searchText as o}from"../../internal/search.js";import{actionMessages as s,commandMessages as c,comboboxMessages as d,useMessages as u}from"../../internal/i18n.js";import{useStyleDefaults as p}from"../../internal/defaults.js";function h(e,l=new Map){for(const a of e)l.set(a.value,a),a.children&&h(a.children,l);return l}function m(e,l=new Map){for(const a of e)l.set(a,i([a.searchLabel??("string"==typeof a.label?a.label:String(a.value))])),a.children&&m(a.children,l);return l}function f(e,l,a){if(""===l)return e;const n=[];for(const r of e){const e=r.children?f(r.children,l,a):void 0,t=(a.get(r)??"").includes(l);(t||e&&e.length>0)&&n.push({...r,children:t?r.children:e})}return n}function b(e,l=[]){for(const a of e)a.children&&a.children.length>0&&(l.push(a.value),b(a.children,l));return l}export const TreeSelect=/*@__PURE__*/a.forwardRef(function TreeSelect(i,g){const{items:v=[],value:x,defaultValue:y,onValueChange:C,multiple:S=!1,selectableBranches:w=!1,defaultExpanded:j,expanded:N,onExpandedChange:M,open:O,defaultOpen:V,onOpenChange:z,placeholder:T,clearable:k=!1,clearLabel:E,closeOnSelect:L,searchable:A=!1,searchPlaceholder:I,locale:P,format:R,name:B,size:D="md",color:F="primary",readOnly:$=!1,disabled:q=!1,classNames:G,...H}=p(i,["size","density","variant","locale","labelPlacement"]),J=u(d,P),K=u(c,P),Q=u(s,P),U=e=>null==e?[]:Array.isArray(e)?e:[e],[W,X]=a.useState(()=>U(y)),Y=void 0!==x?U(x):W,[Z,_]=a.useState(V??!1),ee=O??Z,[le,ae]=a.useState(""),ne=a.useMemo(()=>h(v),[v]),re=a.useMemo(()=>m(v),[v]),te=a.useDeferredValue(le),ie=o(te),oe=a.useMemo(()=>f(v,ie,re),[v,ie,re]),se=a.useMemo(()=>""===ie?void 0:b(oe),[ie,oe]),[ce,de]=a.useState(()=>j??[]),ue=se??N??ce,pe=e=>{e&&($||q)||(void 0===O&&_(e),e||ae(""),z?.(e))},he=e=>{void 0===x&&X(e),C?.(e)},me=a.useCallback(e=>e.selectable??(!(e.children&&e.children.length>0)||w),[w]),fe=Y.map(e=>ne.get(e)).filter(e=>void 0!==e),be=0===fe.length?T??"":R?R(fe):fe.map(e=>e.label).reduce((e,l,a)=>0===a?[l]:[...e,", ",l],[]),ge=G?.item,ve=a.useMemo(()=>{const l=a=>a.map(a=>e(n,{value:a.value,label:a.label,startIcon:a.startIcon,disabled:a.disabled,selectable:me(a),className:ge,children:a.children?l(a.children):null},a.value));return l(oe)},[oe,me,ge]);return e(t,{...H,size:D,color:F,readOnly:$,disabled:q,triggerRef:g,display:be,empty:0===fe.length,clearable:k,onClear:()=>he([]),open:ee,onOpenChange:pe,clearLabel:E??Q.clear,popupClassName:G?.popup,initialFocus:!0,hiddenValues:B?Y.map(e=>({name:B,value:String(e)})):void 0,repeats:S,children:l("div",{className:"flex max-h-80 w-64 flex-col gap-2 overflow-hidden",children:[A?e("input",{type:"text",value:le,placeholder:I??K.search,"aria-label":I??K.search,onChange:e=>ae(e.currentTarget.value),className:"neba-input w-full shrink-0 bg-transparent px-1 py-1 [font:inherit] text-(--neba-fg) [outline:none] placeholder:text-(--neba-muted-fg)"}):null,e("div",{className:"min-h-0 flex-1 overflow-auto",children:0===oe.length?e("p",{className:`px-1 py-2 text-(--neba-muted-fg) ${G?.empty??""}`,children:J.empty}):e(r,{size:D,color:F,multiple:S,selected:Y,onSelectedChange:e=>{const l=e.filter(e=>{const l=ne.get(e);return void 0!==l&&me(l)&&!l.disabled});he(S?l:l.slice(-1)),(L??!S)&&pe(!1)},expanded:ue,onExpandedChange:se?()=>{}:e=>{void 0===N&&de(e),M?.(e)},className:G?.tree,children:ve})})]})})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,Fragment as t,jsxs as
|
|
1
|
+
"use client";import{jsx as e,Fragment as t,jsxs as r}from"react/jsx-runtime";import*as n from"react";import{useMergedRef as l}from"../../internal/refs.js";import{inertValue as a}from"../../internal/inert.js";import{safeHref as s}from"../../internal/link.js";import{searchText as o}from"../../internal/search.js";import{ChevronIcon as i}from"../../internal/icons.js";import{controlTextClasses as d,cx as c,gapClasses as u,hasContent as m,iconClasses as p,radiusClasses as f,surfaceClasses as x,surfaceSlots as g,transitionClasses as h}from"../../internal/styles.js";import{useStyleDefaults as v}from"../../internal/defaults.js";const b=/*@__PURE__*/n.createContext({size:"md",density:"default",disabled:!1,multiple:!1,keepMounted:!1,expandedKeys:new Set,selectedKeys:new Set,activeKey:null,toggle:()=>{},select:()=>{},activate:()=>{},register:()=>()=>{}}),y=/*@__PURE__*/n.createContext(!1),w=/*@__PURE__*/n.createContext(!1),k={solid:x+" text-(--neba-fg) bg-(--n-panel-hover) [box-shadow:var(--n-elev),var(--neba-plate-solid)]",outline:x+" 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"},C={xs:"0.875rem",sm:"1rem",md:"1.25rem",lg:"1.5rem",xl:"1.75rem"},S={xs:"1.375rem",sm:"1.625rem",md:"2rem",lg:"2.5rem",xl:"3rem"},E={default:{xs:"px-1.5",sm:"px-2",md:"px-2.5",lg:"px-3",xl:"px-3.5"},compact:{xs:"px-1",sm:"px-1",md:"px-1.5",lg:"px-2",xl:"px-2.5"}},N={xs:"rounded-[0.3125rem]",sm:"rounded-[0.375rem]",md:"rounded-[0.5rem]",lg:"rounded-[0.625rem]",xl:"rounded-[0.75rem]"},A={none:"",simple:"neba-tree-simple",folder:"neba-tree-folder"};function K(e){return Array.from(e.querySelectorAll('[role="treeitem"]')).filter(e=>null===e.closest("[data-closing]"))}const j=e=>String(e);export const TreeView=/*@__PURE__*/n.forwardRef(function TreeView(t,r){const{variant:a="outline",size:s="md",color:i="primary",density:d="default",elevation:u=0,lines:m="simple",expanded:p,defaultExpanded:x,onExpandedChange:y,selected:E,defaultSelected:N,onSelectedChange:V,multiple:R=!1,disabled:D=!1,label:P,keepMounted:M=!1,className:z,style:I,children:T,onKeyDown:_,...q}=v(t,["size","density","variant"]),[F,L]=n.useState(x??[]),[H,O]=n.useState(N??[]),[U,W]=n.useState(null),B=p??F,G=E??H,J=n.useRef(null),Q=l(J,r),X=n.useRef({expandedValues:B,selectedValues:G,controlledExpanded:void 0!==p,controlledSelected:void 0!==E,multiple:R,onExpandedChange:y,onSelectedChange:V});X.current={expandedValues:B,selectedValues:G,controlledExpanded:void 0!==p,controlledSelected:void 0!==E,multiple:R,onExpandedChange:y,onSelectedChange:V};const Y=n.useCallback(e=>{const{expandedValues:t,controlledExpanded:r,onExpandedChange:n}=X.current,l=j(e),a=t.some(e=>j(e)===l)?t.filter(e=>j(e)!==l):[...t,e];r||L(a),n?.(a)},[]),Z=n.useCallback(e=>{const{selectedValues:t,controlledSelected:r,multiple:n,onSelectedChange:l}=X.current,a=j(e),s=t.some(e=>j(e)===a),o=n?s?t.filter(e=>j(e)!==a):[...t,e]:[e];r||O(o),l?.(o)},[]),$=n.useRef(new Map),ee=n.useRef(new Set),te=n.useCallback((e,t,r)=>($.current.set(e,t),r&&ee.current.add(e),()=>{$.current.delete(e),ee.current.delete(e)}),[]),re=n.useMemo(()=>B.map(j).join("\0"),[B]),ne=n.useMemo(()=>G.map(j).join("\0"),[G]),le=n.useMemo(()=>({size:s,density:d,disabled:D,multiple:R,keepMounted:M,expandedKeys:new Set(B.map(j)),selectedKeys:new Set(G.map(j)),activeKey:U,toggle:Y,select:Z,activate:W,register:te}),[s,d,D,R,M,re,ne,U,Y,Z,te]);n.useEffect(()=>{if(null!==U&&$.current.has(U))return;if(null===U&&0===G.length&&1===ee.current.size)return;const e=J.current;if(!e)return;const t=K(e);if(0===t.length)return;const r=t.find(e=>"true"===e.getAttribute("aria-selected"))??t[0];W(r.dataset.nebaValue??null)});const ae=c("flex list-none flex-col p-1",f[s],k[a],h,A[m],z);return e(b.Provider,{value:le,children:e("ul",{ref:Q,role:"tree","aria-label":P,"aria-multiselectable":R||void 0,className:ae,style:{...g(i,u),"--n-tree-indent":C[s],"--n-tree-row":S[s],...I},onKeyDown:function(e){if(_?.(e),e.defaultPrevented)return;const t=J.current,r=e.target?.closest?.('[role="treeitem"]');if(!t||!r||!t.contains(r))return;if(e.target!==r)return;const n=K(t),l=n.indexOf(r);if(-1===l)return;const a=t=>{t&&(e.preventDefault(),W(t.dataset.nebaValue??null),t.focus())},s=e=>{const t=e.dataset.nebaValue;t&&$.current.get(t)?.toggle()},i="rtl"===getComputedStyle(t).direction,d=i?"ArrowLeft":"ArrowRight",c=i?"ArrowRight":"ArrowLeft",u=r.getAttribute("aria-expanded");switch(e.key){case"ArrowDown":a(n[l+1]);break;case"ArrowUp":a(n[l-1]);break;case"Home":a(n[0]);break;case"End":a(n[n.length-1]);break;case d:"false"===u?(e.preventDefault(),s(r)):"true"===u&&a(n[l+1]);break;case c:"true"===u?(e.preventDefault(),s(r)):a(r.parentElement?.closest('[role="treeitem"]'));break;case"Enter":case" ":e.preventDefault();(("Enter"===e.key?r.querySelector(":scope > div > a[href]"):null)??r).click();break;default:if(1===[...e.key].length&&" "!==e.key&&!e.ctrlKey&&!e.metaKey&&!e.altKey){const t=o(e.key);a([...n.slice(l+1),...n.slice(0,l)].find(e=>o(e.querySelector("[data-neba-label]")?.textContent??"").startsWith(t)))}}},...q,children:n.Children.toArray(T).map((t,r)=>e(w.Provider,{value:0===r,children:t},n.isValidElement(t)&&null!==t.key?t.key:r))})})});export const TreeItem=/*@__PURE__*/n.forwardRef(function TreeItem({value:o,label:f,startIcon:x,endIcon:g,action:v,href:k,expandable:C,disabled:S=!1,selectable:A=!0,className:K,children:V,onClick:R,...D},P){const{size:M,density:z,disabled:I,expandedKeys:T,selectedKeys:_,activeKey:q,toggle:F,select:L,activate:H,register:O,multiple:U,keepMounted:W}=n.useContext(b),B=n.useId(),G=o??B,J=j(G),Q=n.useRef(null),X=l(Q,P),Y=n.Children.toArray(V),Z=C??Y.length>0,$=Z&&T.has(J),ee=_.has(J),te=S||I,re=n.useRef({toggle:()=>{}});re.current.toggle=()=>{!te&&Z&&F(G)};const ne=n.useContext(y),le=n.useContext(w)&&null===q&&0===_.size;n.useEffect(()=>ne?void 0:O(J,re.current,le),[ne,J,O,le]);const[ae,se]=n.useState($),[oe,ie]=n.useState($),de=n.useRef(null);n.useEffect(()=>{if($){se(!0);const e=requestAnimationFrame(()=>ie(!0));return()=>cancelAnimationFrame(e)}ie(!1);const e=de.current;(null===e||getComputedStyle(e).transitionDuration.split(",").every(e=>0===parseFloat(e)))&&se(!1)},[$]);const ce=c("flex min-w-0 flex-1 cursor-pointer items-center text-start no-underline","h-(--n-tree-row)",E[z][M],N[M],u[M],d[M],h,p,"group-focus-visible/tree-item:[outline:2px_solid_var(--n-ring)]","group-focus-visible/tree-item:outline-offset-[-2px]",te?"cursor-not-allowed text-(--neba-disabled-fg)":ee?"bg-(--n-soft-press) font-medium text-(--n-on-tint) hover:bg-(--n-soft-press)":"text-inherit hover:bg-(--n-soft)"),ue=r(t,{children:[e("span",{"aria-hidden":"true",onClick:e=>{!te&&Z&&(e.stopPropagation(),e.preventDefault(),Q.current?.focus(),H(J),F(G))},className:c("flex h-[1lh] w-[1.15em] shrink-0 items-center justify-center","[transition:rotate_var(--neba-duration)_var(--neba-ease)]",Z?"text-(--neba-muted-fg)":"",$?"rotate-0":"-rotate-90 rtl:rotate-90"),children:Z?e(i,{}):null}),m(x)?e("span",{className:"flex h-[1lh] shrink-0 items-center text-(--neba-muted-fg)",children:x}):null,e("span",{"data-neba-label":"",className:"min-w-0 flex-1 truncate",children:f}),m(g)?e("span",{className:"flex h-[1lh] shrink-0 items-center text-(--neba-muted-fg)",children:g}):null]});return r("li",{ref:X,role:"treeitem","aria-expanded":Z?$:void 0,"aria-selected":!!ee||(!U||!A)&&void 0,"aria-disabled":te||void 0,"data-neba-value":J,tabIndex:q===J||le?0:-1,className:c("group/tree-item relative block [outline:none]",K),onClick:function(e){e.stopPropagation(),te?e.preventDefault():(Q.current?.focus(),H(J),R?.(e),e.defaultPrevented||(Z&&F(G),A&&L(G)))},...D,children:[r("div",{className:"flex w-full items-center",children:[void 0===s(k)||te?e("div",{className:ce,children:ue}):e("a",{href:s(k),tabIndex:-1,className:ce,"aria-current":ee?"page":void 0,children:ue}),m(v)?e("span",{className:c("flex shrink-0 items-center",E[z][M]),onClick:e=>e.stopPropagation(),children:v}):null]}),Z&&(ae||W)&&Y.length>0?e("div",{ref:de,"data-closing":$?void 0:"",inert:a(!$),className:c("grid [transition:grid-template-rows_var(--neba-duration)_var(--neba-ease)]",oe?"[grid-template-rows:1fr]":"[grid-template-rows:0fr] pointer-events-none"),onTransitionEnd:e=>{e.target!==e.currentTarget||"grid-template-rows"!==e.propertyName||$||se(!1)},children:e("ul",{role:"group",className:"min-h-0 list-none overflow-hidden ps-(--n-tree-indent)",children:e(y.Provider,{value:ne||!$,children:e(w.Provider,{value:!1,children:V})})})}):null]})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t,Fragment as n}from"react/jsx-runtime";import*as i from"react";import{
|
|
1
|
+
"use client";import{jsx as e,jsxs as t,Fragment as n}from"react/jsx-runtime";import*as i from"react";import{useMergedRef as o}from"../../internal/refs.js";import{useLayoutEffectOnClient as r}from"../../internal/layout-effect.js";import{useRender as s}from"@base-ui/react/use-render";import{beginPointerDrag as a,drawnScale as l}from"../../internal/drag.js";import{actionMessages as d,useMessages as c,windowMessages as u}from"../../internal/i18n.js";import{cx as h,hasContent as m,iconClasses as f,surfaceClasses as g}from"../../internal/styles.js";import{WindowControls as w,orderControls as p,windowChrome as b,windowMetrics as x,windowSlots as v}from"../../internal/window.js";import{inertValue as z}from"../../internal/inert.js";import{useStyleDefaults as y}from"../../internal/defaults.js";function M(e,t,n){const[o,r]=i.useState(t),s=void 0!==e;return[s?e:o,i.useCallback(e=>{s||r(e),n?.(e)},[s,n])]}const E=[{edge:"n",className:"inset-x-3 top-0 h-1.5 cursor-ns-resize"},{edge:"s",className:"inset-x-3 bottom-0 h-1.5 cursor-ns-resize"},{edge:"w",className:"inset-y-3 left-0 w-1.5 cursor-ew-resize"},{edge:"e",className:"inset-y-3 right-0 w-1.5 cursor-ew-resize"},{edge:"nw",className:"top-0 left-0 size-3 cursor-nwse-resize"},{edge:"ne",className:"top-0 right-0 size-3 cursor-nesw-resize"},{edge:"sw",className:"bottom-0 left-0 size-3 cursor-nesw-resize"},{edge:"se",className:"right-0 bottom-0 size-3 cursor-nwse-resize"}],N=[];export const WindowPane=/*@__PURE__*/i.forwardRef(function WindowPane(S,H){const{os:k="macos",title:C,icon:L,actions:j,controls:W=!0,size:I="md",color:P="primary",accent:D=!1,transparency:T=0,active:A,elevation:O=2,position:R="static",draggable:B=!1,resizable:X=!1,width:$,height:F,minWidth:Y=180,minHeight:_,offset:q,defaultOffset:K,onOffsetChange:U,onResize:G,open:J,defaultOpen:Q=!0,onOpenChange:V,minimized:Z,defaultMinimized:ee=!1,onMinimizedChange:te,maximized:ne,defaultMaximized:ie=!1,onMaximizedChange:oe,scroll:re=!0,locale:se,minimizeLabel:ae,maximizeLabel:le,restoreLabel:de,closeLabel:ce,resizeLabel:ue,render:he,className:me,style:fe,children:ge,...we}=y(S,["size","locale"]),pe=c(u,se),be=i.useId(),xe=c(d,se),ve=b(k),ze=x(k,I),ye=i.useId(),[Me,Ee]=M(J,Q,V),[Ne,Se]=M(Z,ee,te),[He,ke]=M(ne,ie,oe),[Ce,Le]=M(q,K??{x:0,y:0},U),[je,We]=i.useState(null),[Ie,Pe]=i.useState({width:$,height:F});Ie.width===$&&Ie.height===F||(Pe({width:$,height:F}),We(null));const[De,Te]=i.useState(!0),Ae=A??De,[Oe,Re]=i.useState(null),[Be,Xe]=i.useState(null),[$e,Fe]=i.useState(!1),[Ye,_e]=i.useState(!1),[qe,Ke]=i.useState(Me);qe!==Me&&(Ke(Me),_e(!Me)),i.useEffect(()=>{if(!Ye)return;const e=window.setTimeout(()=>_e(!1),260);return()=>window.clearTimeout(e)},[Ye]);const Ue=i.useRef(null),Ge=o(Ue,H);i.useEffect(()=>{if(void 0!==A||!Me)return;const e=Ue.current;if(!e)return;const t=e=>Te(e);N.push(t);const n=n=>{const i=n.target;if(!(i instanceof Node))return;if(e.contains(i))return N.splice(N.indexOf(t),1),N.push(t),void Te(!0);const o=i instanceof Element?i:i.parentElement;o?.closest(".neba-window")&&Te(!1)};return document.addEventListener("pointerdown",n,!0),document.addEventListener("focusin",n,!0),()=>{document.removeEventListener("pointerdown",n,!0),document.removeEventListener("focusin",n,!0);const e=N.indexOf(t),i=e===N.length-1;N.splice(e,1),i&&N[N.length-1]?.(!0)}},[A,Me]);const Je=i.useRef(null);function Qe(e,t){if(0!==e.button)return;Je.current?.();const n=e.currentTarget,i=e.clientX,o=e.clientY,r=Ue.current,s=r?l(r):{x:1,y:1};Fe(!0);const d=()=>{Je.current=null,Fe(!1)},c=a({target:n,pointerId:e.pointerId,onMove:e=>t((e.clientX-i)/s.x,(e.clientY-o)/s.y),onEnd:d});Je.current=()=>{c(),d()}}i.useEffect(()=>()=>Je.current?.(),[]);const Ve={width:Math.max(0,Y),height:Math.max(ze.bar,_??ze.bar)};function Ze(e){We(e),G?.(e)}const et=p(k,!0===W?["minimize","maximize","close"]:!1===W?[]:W),tt=et.includes("maximize");r(()=>{if(!Ne||null!==Oe)return;const e=Ue.current,t=e?.firstElementChild;e&&t instanceof HTMLElement&&Re(t.offsetHeight+(e.offsetHeight-e.clientHeight))},[Ne,Oe]),i.useEffect(()=>{if(Ne||null===Be)return;const e=window.setTimeout(()=>Xe(null),400);return()=>window.clearTimeout(e)},[Ne,Be]);const nt={minimize:ae??pe.minimize,maximize:le??pe.maximize,restore:de??pe.restore,close:ce??xe.close},it=e(w,{os:k,metrics:ze,controls:et,maximized:He,active:Ae,labels:nt,onCommand:function(e){"close"===e?Ee(!1):"minimize"===e?function(e){const t=Ue.current,n=t?.firstElementChild;if(t&&n instanceof HTMLElement&&Re(n.offsetHeight+(t.offsetHeight-t.clientHeight)),e&&void 0===(je?.height??F)&&t)return Xe(t.offsetHeight),void requestAnimationFrame(()=>Se(!0));Se(e)}(!Ne):ke(!He)}}),ot=m(C)?e("span",{id:ye,className:"min-w-0 truncate",children:C}):null,rt=m(L)?e("span",{className:"flex shrink-0 items-center",children:L}):null,st=t("div",{className:h("relative flex shrink-0 items-center select-none",f,B&&!He?"cursor-grab touch-none active:cursor-grabbing":""),style:{height:ze.bar,textShadow:"var(--n-window-bar-shadow)",fontWeight:ze.weight,paddingInlineStart:ze.padX,paddingInlineEnd:ze.padEnd,gap:Math.round(.7*ze.title),fontSize:ze.title,backgroundColor:"var(--n-window-bar)",backgroundImage:"var(--n-window-bar-image)",color:"var(--n-window-bar-fg)",borderBlockEnd:ve.rule?"1px solid var(--n-window-line)":void 0},onPointerDown:function(e){if(!B||He)return;const t={...Ce},n=Ue.current,i="fixed"===R?{width:document.documentElement.clientWidth,height:document.documentElement.clientHeight}:"absolute"===R&&n?.offsetParent instanceof HTMLElement?{width:n.offsetParent.clientWidth,height:n.offsetParent.clientHeight}:null,o=n?.offsetWidth??0,r=Math.min(o,48);Qe(e,(e,n)=>{const s=t.x+e,a=t.y+n;Le(i?{x:Math.min(Math.max(s,r-o),i.width-r),y:Math.min(Math.max(a,0),Math.max(0,i.height-ze.bar))}:{x:s,y:a})})},onDoubleClick:tt?()=>ke(!He):void 0,children:["start"===ve.controlsSide?it:null,"center"===ve.titleAlign?e("span",{"aria-hidden":"true",className:"pointer-events-none absolute inset-x-0 flex items-center justify-center",style:{paddingInline:ze.controlsWidth(et.length)+2*ze.padX},children:t("span",{className:"flex min-w-0 items-center",style:{gap:Math.round(.5*ze.title)},children:[rt,ot]})}):t(n,{children:[rt,ot]}),e("span",{className:"flex-1"}),m(j)?e("span",{className:"flex shrink-0 items-center",style:{gap:Math.round(.5*ze.title)},onPointerDown:e=>e.stopPropagation(),onDoubleClick:e=>e.stopPropagation(),children:j}):null,"end"===ve.controlsSide?it:null]}),at=He?{left:0,top:0,width:"100%",height:"100%"}:{left:Ce.x,top:Ce.y,width:je?.width??$,height:Ne?Oe??ze.bar:je?.height??F??Be??void 0},lt=s({render:he,ref:Ge,props:{role:"group","aria-labelledby":ot?ye:void 0,className:h("neba-window relative flex min-w-0 flex-col overflow-hidden",T>0?g:"",ve.glass&&0===T?"[backdrop-filter:var(--neba-blur)]":"","[transition-property:left,top,width,height,opacity,box-shadow,background-color,border-color,border-radius]","[transition-duration:var(--neba-duration-window)]","[transition-timing-function:var(--neba-ease)]","motion-reduce:[transition-duration:0ms]","data-[gesture]:[transition-property:none]",me),"data-gesture":$e?"":void 0,inert:z(!Me),style:{opacity:Me?void 0:0,...v({os:k,color:P,accent:D,transparency:T,active:Ae,elevation:O}),position:"static"===R?"relative":R,...at,borderRadius:He?0:`${ze.radius}px ${ze.radius}px ${ze.radiusBottom}px ${ze.radiusBottom}px`,borderStyle:"solid",borderWidth:ze.frame,borderColor:"var(--n-window-line)",backgroundColor:"var(--n-window-band)",boxShadow:"var(--n-window-shadow), var(--neba-plate-glass)",...fe},children:t(n,{children:[st,e("div",{className:h("min-h-0 flex-1",re?"overflow-auto":"overflow-hidden"),style:{backgroundColor:"var(--n-window-body)",marginInline:ze.band.side,marginBottom:ze.band.bottom,boxShadow:ze.band.side>0?"inset 0 0 0 1px rgb(0 0 0 / 0.12)":void 0},inert:z(Ne),children:ge}),!X||He||Ne?null:e("span",{id:be,hidden:!0,children:pe.resizeHint}),!X||He||Ne?null:E.map(t=>{const n="se"===t.edge;return e("div",{role:n?"button":void 0,tabIndex:n?0:void 0,"aria-label":n?ue??pe.resize:void 0,"aria-describedby":n?be:void 0,"aria-hidden":n?void 0:"true",className:h("absolute z-10 touch-none",t.className,n?"neba-hit":"",n?"focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:[outline-offset:-2px]":""),onPointerDown:e=>function(e,t){const n=Ue.current;if(!n||He)return;const i={width:n.offsetWidth,height:n.offsetHeight,x:Ce.x,y:Ce.y},o=e.includes("e"),r=e.includes("w"),s=e.includes("n"),a=e.includes("s");Qe(t,(e,t)=>{let{width:n,height:l}=i,{x:d,y:c}=i;o&&(n=Math.max(Ve.width,i.width+e)),a&&(l=Math.max(Ve.height,i.height+t)),r&&(n=Math.max(Ve.width,i.width-e),d=i.x+(i.width-n)),s&&(l=Math.max(Ve.height,i.height-t),c=i.y+(i.height-l)),Ze({width:n,height:l}),(r||s)&&Le({x:d,y:c})})}(t.edge,e),onKeyDown:n?e=>{const t={ArrowRight:[16,0],ArrowLeft:[-16,0],ArrowDown:[0,16],ArrowUp:[0,-16]}[e.key];t&&(e.preventDefault(),function(e,t){const n=Ue.current;n&&Ze({width:Math.max(Ve.width,n.offsetWidth+e),height:Math.max(Ve.height,n.offsetHeight+t)})}(t[0],t[1]))}:void 0},t.edge)})]}),...we}});return Me||Ye?lt:null});
|
package/dist/index.d.ts
CHANGED
|
@@ -39,6 +39,7 @@ export * from './components/card/index.js';
|
|
|
39
39
|
export * from './components/carousel/index.js';
|
|
40
40
|
export * from './components/chat-bubble/index.js';
|
|
41
41
|
export * from './components/checkbox/index.js';
|
|
42
|
+
export * from './components/checkbox-group/index.js';
|
|
42
43
|
export * from './components/chip/index.js';
|
|
43
44
|
export * from './components/code-block/index.js';
|
|
44
45
|
export * from './components/collapsible/index.js';
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export*from"./types.js";export*from"./hooks/index.js";export*from"./components/accordion/index.js";export*from"./components/agent-steps/index.js";export*from"./components/alert/index.js";export*from"./components/anchor/index.js";export*from"./components/animate-appear/index.js";export*from"./components/app-logo/index.js";export*from"./components/approval/index.js";export*from"./components/animate-blink/index.js";export*from"./components/animate-counter/index.js";export*from"./components/animate-fade/index.js";export*from"./components/animate-float/index.js";export*from"./components/animate-grow/index.js";export*from"./components/animate-headline/index.js";export*from"./components/animate-lighting/index.js";export*from"./components/animate-marquee/index.js";export*from"./components/animate-reveal/index.js";export*from"./components/animate-rotate/index.js";export*from"./components/animate-scramble/index.js";export*from"./components/animate-shake/index.js";export*from"./components/animate-split/index.js";export*from"./components/animate-slide/index.js";export*from"./components/animate-typing/index.js";export*from"./components/animate-zoom/index.js";export*from"./components/area-chart/index.js";export*from"./components/aspect-ratio/index.js";export*from"./components/avatar/index.js";export*from"./components/badge/index.js";export*from"./components/bar-chart/index.js";export*from"./components/blockquote/index.js";export*from"./components/bottom-navigation/index.js";export*from"./components/box/index.js";export*from"./components/breadcrumb/index.js";export*from"./components/button/index.js";export*from"./components/button-group/index.js";export*from"./components/calendar/index.js";export*from"./components/card/index.js";export*from"./components/carousel/index.js";export*from"./components/chat-bubble/index.js";export*from"./components/checkbox/index.js";export*from"./components/chip/index.js";export*from"./components/code-block/index.js";export*from"./components/collapsible/index.js";export*from"./components/color-picker/index.js";export*from"./components/combobox/index.js";export*from"./components/command-palette/index.js";export*from"./components/confirm/index.js";export*from"./components/container/index.js";export*from"./components/context-window/index.js";export*from"./components/data-list/index.js";export*from"./components/data-table/index.js";export*from"./components/date-picker/index.js";export*from"./components/date-range-picker/index.js";export*from"./components/date-time-picker/index.js";export*from"./components/dialog/index.js";export*from"./components/divider/index.js";export*from"./components/drawer/index.js";export*from"./components/empty/index.js";export*from"./components/fieldset/index.js";export*from"./components/file-picker/index.js";export*from"./components/flex/index.js";export*from"./components/form/index.js";export*from"./components/gallery/index.js";export*from"./components/gauge-chart/index.js";export*from"./components/grid/index.js";export*from"./components/floating-action-button/index.js";export*from"./components/floating-bottom-navigation/index.js";export*from"./components/footer/index.js";export*from"./components/grid-container/index.js";export*from"./components/header/index.js";export*from"./components/heatmap-chart/index.js";export*from"./components/highlight/index.js";export*from"./components/hover-card/index.js";export*from"./components/how-to-steps/index.js";export*from"./components/icon/index.js";export*from"./components/icon-button/index.js";export*from"./components/image/index.js";export*from"./components/inline-citation/index.js";export*from"./components/line-chart/index.js";export*from"./components/list/index.js";export*from"./components/menu/index.js";export*from"./components/menubar/index.js";export*from"./components/meter/index.js";export*from"./components/mockup/index.js";export*from"./components/navigation-menu/index.js";export*from"./components/number-field/index.js";export*from"./components/otp-field/index.js";export*from"./components/overlay/index.js";export*from"./components/page-layout/index.js";export*from"./components/pagination/index.js";export*from"./components/panes/index.js";export*from"./components/pie-chart/index.js";export*from"./components/pill/index.js";export*from"./components/popconfirm/index.js";export*from"./components/popover/index.js";export*from"./components/portal/index.js";export*from"./components/progress-box/index.js";export*from"./components/progress-circular/index.js";export*from"./components/progress-linear/index.js";export*from"./components/prompt-input/index.js";export*from"./components/provider/index.js";export*from"./components/radio-group/index.js";export*from"./components/reasoning/index.js";export*from"./components/rating/index.js";export*from"./components/scatter-chart/index.js";export*from"./components/scroll-area/index.js";export*from"./components/scroll-zone/index.js";export*from"./components/segmented-button/index.js";export*from"./components/select/index.js";export*from"./components/shortcut/index.js";export*from"./components/show/index.js";export*from"./components/sidebar/index.js";export*from"./components/skeleton/index.js";export*from"./components/slider/index.js";export*from"./components/sparkline/index.js";export*from"./components/spoiler/index.js";export*from"./components/sources/index.js";export*from"./components/stack/index.js";export*from"./components/statistic/index.js";export*from"./components/streaming-text/index.js";export*from"./components/switch/index.js";export*from"./components/table/index.js";export*from"./components/tabs/index.js";export*from"./components/text-field/index.js";export*from"./components/text-link/index.js";export*from"./components/time-picker/index.js";export*from"./components/timeline/index.js";export*from"./components/timeline-chart/index.js";export*from"./components/toast/index.js";export*from"./components/toggle/index.js";export*from"./components/toggle-group/index.js";export*from"./components/toolbar/index.js";export*from"./components/tool-call/index.js";export*from"./components/tooltip/index.js";export*from"./components/tour/index.js";export*from"./components/transfer/index.js";export*from"./components/tree-select/index.js";export*from"./components/tree-view/index.js";export*from"./components/typography/index.js";export*from"./components/visually-hidden/index.js";export*from"./components/window-pane/index.js";
|
|
1
|
+
export*from"./types.js";export*from"./hooks/index.js";export*from"./components/accordion/index.js";export*from"./components/agent-steps/index.js";export*from"./components/alert/index.js";export*from"./components/anchor/index.js";export*from"./components/animate-appear/index.js";export*from"./components/app-logo/index.js";export*from"./components/approval/index.js";export*from"./components/animate-blink/index.js";export*from"./components/animate-counter/index.js";export*from"./components/animate-fade/index.js";export*from"./components/animate-float/index.js";export*from"./components/animate-grow/index.js";export*from"./components/animate-headline/index.js";export*from"./components/animate-lighting/index.js";export*from"./components/animate-marquee/index.js";export*from"./components/animate-reveal/index.js";export*from"./components/animate-rotate/index.js";export*from"./components/animate-scramble/index.js";export*from"./components/animate-shake/index.js";export*from"./components/animate-split/index.js";export*from"./components/animate-slide/index.js";export*from"./components/animate-typing/index.js";export*from"./components/animate-zoom/index.js";export*from"./components/area-chart/index.js";export*from"./components/aspect-ratio/index.js";export*from"./components/avatar/index.js";export*from"./components/badge/index.js";export*from"./components/bar-chart/index.js";export*from"./components/blockquote/index.js";export*from"./components/bottom-navigation/index.js";export*from"./components/box/index.js";export*from"./components/breadcrumb/index.js";export*from"./components/button/index.js";export*from"./components/button-group/index.js";export*from"./components/calendar/index.js";export*from"./components/card/index.js";export*from"./components/carousel/index.js";export*from"./components/chat-bubble/index.js";export*from"./components/checkbox/index.js";export*from"./components/checkbox-group/index.js";export*from"./components/chip/index.js";export*from"./components/code-block/index.js";export*from"./components/collapsible/index.js";export*from"./components/color-picker/index.js";export*from"./components/combobox/index.js";export*from"./components/command-palette/index.js";export*from"./components/confirm/index.js";export*from"./components/container/index.js";export*from"./components/context-window/index.js";export*from"./components/data-list/index.js";export*from"./components/data-table/index.js";export*from"./components/date-picker/index.js";export*from"./components/date-range-picker/index.js";export*from"./components/date-time-picker/index.js";export*from"./components/dialog/index.js";export*from"./components/divider/index.js";export*from"./components/drawer/index.js";export*from"./components/empty/index.js";export*from"./components/fieldset/index.js";export*from"./components/file-picker/index.js";export*from"./components/flex/index.js";export*from"./components/form/index.js";export*from"./components/gallery/index.js";export*from"./components/gauge-chart/index.js";export*from"./components/grid/index.js";export*from"./components/floating-action-button/index.js";export*from"./components/floating-bottom-navigation/index.js";export*from"./components/footer/index.js";export*from"./components/grid-container/index.js";export*from"./components/header/index.js";export*from"./components/heatmap-chart/index.js";export*from"./components/highlight/index.js";export*from"./components/hover-card/index.js";export*from"./components/how-to-steps/index.js";export*from"./components/icon/index.js";export*from"./components/icon-button/index.js";export*from"./components/image/index.js";export*from"./components/inline-citation/index.js";export*from"./components/line-chart/index.js";export*from"./components/list/index.js";export*from"./components/menu/index.js";export*from"./components/menubar/index.js";export*from"./components/meter/index.js";export*from"./components/mockup/index.js";export*from"./components/navigation-menu/index.js";export*from"./components/number-field/index.js";export*from"./components/otp-field/index.js";export*from"./components/overlay/index.js";export*from"./components/page-layout/index.js";export*from"./components/pagination/index.js";export*from"./components/panes/index.js";export*from"./components/pie-chart/index.js";export*from"./components/pill/index.js";export*from"./components/popconfirm/index.js";export*from"./components/popover/index.js";export*from"./components/portal/index.js";export*from"./components/progress-box/index.js";export*from"./components/progress-circular/index.js";export*from"./components/progress-linear/index.js";export*from"./components/prompt-input/index.js";export*from"./components/provider/index.js";export*from"./components/radio-group/index.js";export*from"./components/reasoning/index.js";export*from"./components/rating/index.js";export*from"./components/scatter-chart/index.js";export*from"./components/scroll-area/index.js";export*from"./components/scroll-zone/index.js";export*from"./components/segmented-button/index.js";export*from"./components/select/index.js";export*from"./components/shortcut/index.js";export*from"./components/show/index.js";export*from"./components/sidebar/index.js";export*from"./components/skeleton/index.js";export*from"./components/slider/index.js";export*from"./components/sparkline/index.js";export*from"./components/spoiler/index.js";export*from"./components/sources/index.js";export*from"./components/stack/index.js";export*from"./components/statistic/index.js";export*from"./components/streaming-text/index.js";export*from"./components/switch/index.js";export*from"./components/table/index.js";export*from"./components/tabs/index.js";export*from"./components/text-field/index.js";export*from"./components/text-link/index.js";export*from"./components/time-picker/index.js";export*from"./components/timeline/index.js";export*from"./components/timeline-chart/index.js";export*from"./components/toast/index.js";export*from"./components/toggle/index.js";export*from"./components/toggle-group/index.js";export*from"./components/toolbar/index.js";export*from"./components/tool-call/index.js";export*from"./components/tooltip/index.js";export*from"./components/tour/index.js";export*from"./components/transfer/index.js";export*from"./components/tree-select/index.js";export*from"./components/tree-view/index.js";export*from"./components/typography/index.js";export*from"./components/visually-hidden/index.js";export*from"./components/window-pane/index.js";
|
|
@@ -193,6 +193,29 @@ export interface AnimationRunOptions {
|
|
|
193
193
|
*/
|
|
194
194
|
caller?: TriggerHandlers;
|
|
195
195
|
}
|
|
196
|
+
/**
|
|
197
|
+
* The threshold a `visible` trigger watches with, settled once when the watch
|
|
198
|
+
* starts.
|
|
199
|
+
*
|
|
200
|
+
* An `IntersectionObserver` measures the element as it is drawn, and two things
|
|
201
|
+
* about an entrance that is waiting made the answer one that could never come.
|
|
202
|
+
*
|
|
203
|
+
* **An element larger than the screen.** A threshold is a share of the
|
|
204
|
+
* element, so `0.2` of something six screens tall is more than a screen of it,
|
|
205
|
+
* which no screen can show, and it stayed on its first frame for good. The share is
|
|
206
|
+
* scaled down by how much of the element a screen can hold at most, which keeps
|
|
207
|
+
* the meaning the same for a tall element as for a short one: a fifth of the
|
|
208
|
+
* screen filled by it. Rounded down to a hundredth, so a page of tall elements
|
|
209
|
+
* shares a few observers rather than one each.
|
|
210
|
+
*
|
|
211
|
+
* **A first frame somewhere else.** A slide waits on its first frame, a full
|
|
212
|
+
* width away for the default distance, and a full-width element moved a full
|
|
213
|
+
* width sideways is never on the screen at all, nor is one moved out of a box
|
|
214
|
+
* with `overflow: hidden`. So an entrance that moves is drawn where it belongs,
|
|
215
|
+
* unseen, while it waits — see `data-waiting` in `useAnimateElement` — and
|
|
216
|
+
* needs nothing here.
|
|
217
|
+
*/
|
|
218
|
+
export declare function visibilityWatch(element: HTMLElement, threshold: number): number;
|
|
196
219
|
/** The events a `hover` trigger listens to. */
|
|
197
220
|
type TriggerHandlers = Pick<React.HTMLAttributes<HTMLElement>, 'onPointerEnter' | 'onPointerLeave' | 'onFocus' | 'onBlur'>;
|
|
198
221
|
export interface AnimationRun {
|
|
@@ -239,7 +262,16 @@ export interface AnimationRun {
|
|
|
239
262
|
* would restart the animation by unmounting the children, taking their state
|
|
240
263
|
* with it. Clearing `animation-name`, reading a layout property to force the
|
|
241
264
|
* style to settle, and putting it back is the one move that rewinds the element
|
|
242
|
-
* and leaves everything inside it alone.
|
|
265
|
+
* and leaves everything inside it alone. It is made only for a replay: an
|
|
266
|
+
* animation that has been paused since it was drawn is still on its first
|
|
267
|
+
* frame, letting it go is the whole of starting it, and so the first start of
|
|
268
|
+
* a `visible`, `hover` or `manual` effect forces no layout at all.
|
|
269
|
+
*
|
|
270
|
+
* The rewind stays a reflow rather than a seek through `getAnimations()`.
|
|
271
|
+
* Setting `currentTime` back to `0` on an animation that has finished moves it
|
|
272
|
+
* from its last phase to its first, which Chromium and WebKit report as an
|
|
273
|
+
* `animationstart` and an `animationend` at once when there is a `delay` — and
|
|
274
|
+
* a pattern that unmounts on `animationend` would take that for the end.
|
|
243
275
|
*/
|
|
244
276
|
export declare function useAnimationRun({ trigger, play, once, threshold, paused, infinite, caller, parts }: AnimationRunOptions): AnimationRun;
|
|
245
277
|
export interface AnimateElementParams extends AnimationSlotOptions, AnimationRunOptions {
|
|
@@ -281,7 +313,7 @@ export interface AnimateElement {
|
|
|
281
313
|
* Marquee, Headline, Appear, Split, Scramble and Counter — call
|
|
282
314
|
* `useAnimationRun` directly and put the classes where their own structure
|
|
283
315
|
* needs them. `effect` may be `null` for the one effect component, Lighting,
|
|
284
|
-
* whose keyframe runs on
|
|
316
|
+
* whose keyframe runs on the light it draws inside the root rather than on the root.
|
|
285
317
|
*
|
|
286
318
|
* `data-neba-animation` and `data-state` are here rather than in each component
|
|
287
319
|
* because they are the same two facts every time, and because a test that has
|