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.
Files changed (200) hide show
  1. package/dist/a2ui/adapter-catalog.json +1 -1
  2. package/dist/a2ui/catalog.json +2 -2
  3. package/dist/components/accordion/Accordion.js +1 -1
  4. package/dist/components/agent-steps/AgentSteps.js +1 -1
  5. package/dist/components/alert/Alert.js +1 -1
  6. package/dist/components/anchor/Anchor.js +1 -1
  7. package/dist/components/animate-counter/AnimateCounter.js +1 -1
  8. package/dist/components/animate-headline/AnimateHeadline.js +1 -1
  9. package/dist/components/animate-lighting/AnimateLighting.js +1 -1
  10. package/dist/components/animate-marquee/AnimateMarquee.js +1 -1
  11. package/dist/components/animate-scramble/AnimateScramble.js +1 -1
  12. package/dist/components/animate-typing/AnimateTyping.js +1 -1
  13. package/dist/components/app-logo/AppLogo.js +1 -1
  14. package/dist/components/approval/Approval.js +1 -1
  15. package/dist/components/aspect-ratio/AspectRatio.js +1 -1
  16. package/dist/components/avatar/Avatar.js +1 -1
  17. package/dist/components/badge/Badge.js +1 -1
  18. package/dist/components/bar-chart/BarChart.js +1 -1
  19. package/dist/components/blockquote/Blockquote.js +1 -1
  20. package/dist/components/bottom-navigation/BottomNavigation.js +1 -1
  21. package/dist/components/breadcrumb/Breadcrumb.js +1 -1
  22. package/dist/components/button/Button.js +1 -1
  23. package/dist/components/button-group/ButtonGroup.js +1 -1
  24. package/dist/components/calendar/Calendar.js +1 -1
  25. package/dist/components/carousel/Carousel.js +1 -1
  26. package/dist/components/chat-bubble/ChatBubble.js +1 -1
  27. package/dist/components/checkbox/Checkbox.js +1 -1
  28. package/dist/components/checkbox/index.d.ts +1 -1
  29. package/dist/components/checkbox-group/CheckboxGroup.d.ts +84 -0
  30. package/dist/components/checkbox-group/CheckboxGroup.js +1 -0
  31. package/dist/components/checkbox-group/index.d.ts +2 -0
  32. package/dist/components/checkbox-group/index.js +1 -0
  33. package/dist/components/chip/Chip.d.ts +32 -3
  34. package/dist/components/chip/Chip.js +1 -1
  35. package/dist/components/code-block/CodeBlock.js +1 -1
  36. package/dist/components/collapsible/Collapsible.js +1 -1
  37. package/dist/components/color-picker/ColorPicker.js +1 -1
  38. package/dist/components/combobox/Combobox.d.ts +11 -0
  39. package/dist/components/combobox/Combobox.js +1 -1
  40. package/dist/components/combobox/index.d.ts +1 -1
  41. package/dist/components/command-palette/CommandPalette.d.ts +21 -5
  42. package/dist/components/command-palette/CommandPalette.js +1 -1
  43. package/dist/components/command-palette/CommandPaletteSheet.d.ts +27 -0
  44. package/dist/components/command-palette/CommandPaletteSheet.js +1 -0
  45. package/dist/components/command-palette/index.d.ts +1 -1
  46. package/dist/components/confirm/Confirm.d.ts +7 -5
  47. package/dist/components/confirm/Confirm.js +1 -1
  48. package/dist/components/data-list/DataList.js +1 -1
  49. package/dist/components/data-table/DataTable.js +1 -1
  50. package/dist/components/data-table/RowsPerPage.d.ts +43 -0
  51. package/dist/components/data-table/RowsPerPage.js +1 -0
  52. package/dist/components/date-picker/DatePicker.js +1 -1
  53. package/dist/components/date-range-picker/DateRangePicker.js +1 -1
  54. package/dist/components/date-time-picker/DateTimePicker.js +1 -1
  55. package/dist/components/dialog/Dialog.js +1 -1
  56. package/dist/components/dialog/index.d.ts +1 -1
  57. package/dist/components/drawer/Drawer.d.ts +1 -1
  58. package/dist/components/drawer/Drawer.js +1 -1
  59. package/dist/components/empty/Empty.js +1 -1
  60. package/dist/components/fieldset/Fieldset.d.ts +12 -1
  61. package/dist/components/fieldset/Fieldset.js +1 -1
  62. package/dist/components/file-picker/FilePicker.js +1 -1
  63. package/dist/components/floating-action-button/FloatingActionButton.js +1 -1
  64. package/dist/components/floating-action-button/index.d.ts +1 -0
  65. package/dist/components/floating-bottom-navigation/FloatingBottomNavigation.js +1 -1
  66. package/dist/components/footer/Footer.js +1 -1
  67. package/dist/components/form/Form.d.ts +8 -2
  68. package/dist/components/form/Form.js +1 -1
  69. package/dist/components/gallery/Gallery.js +1 -1
  70. package/dist/components/gauge-chart/GaugeChart.js +1 -1
  71. package/dist/components/header/Header.js +1 -1
  72. package/dist/components/heatmap-chart/HeatmapChart.js +1 -1
  73. package/dist/components/highlight/Highlight.js +1 -1
  74. package/dist/components/hover-card/HoverCard.js +1 -1
  75. package/dist/components/how-to-steps/HowToSteps.d.ts +3 -0
  76. package/dist/components/how-to-steps/HowToSteps.js +1 -1
  77. package/dist/components/image/Image.js +1 -1
  78. package/dist/components/inline-citation/InlineCitation.d.ts +24 -0
  79. package/dist/components/inline-citation/InlineCitation.js +1 -1
  80. package/dist/components/list/List.d.ts +9 -0
  81. package/dist/components/list/List.js +1 -1
  82. package/dist/components/menu/Menu.js +1 -1
  83. package/dist/components/menubar/Menubar.js +1 -1
  84. package/dist/components/meter/Meter.js +1 -1
  85. package/dist/components/mockup/Mockup.js +1 -1
  86. package/dist/components/navigation-menu/NavigationMenu.d.ts +2 -1
  87. package/dist/components/navigation-menu/NavigationMenu.js +1 -1
  88. package/dist/components/number-field/NumberField.js +1 -1
  89. package/dist/components/number-field/index.d.ts +1 -1
  90. package/dist/components/overlay/Overlay.js +1 -1
  91. package/dist/components/page-layout/PageLayout.js +1 -1
  92. package/dist/components/pagination/Pagination.js +1 -1
  93. package/dist/components/panes/Panes.js +1 -1
  94. package/dist/components/pie-chart/PieChart.js +1 -1
  95. package/dist/components/pill/Pill.js +1 -1
  96. package/dist/components/popover/Popover.js +1 -1
  97. package/dist/components/progress-box/ProgressBox.js +1 -1
  98. package/dist/components/progress-circular/ProgressCircular.js +1 -1
  99. package/dist/components/progress-linear/ProgressLinear.js +1 -1
  100. package/dist/components/prompt-input/PromptInput.js +1 -1
  101. package/dist/components/provider/NebaProvider.d.ts +3 -2
  102. package/dist/components/provider/NebaProvider.js +1 -1
  103. package/dist/components/radio-group/RadioGroup.d.ts +13 -0
  104. package/dist/components/radio-group/RadioGroup.js +1 -1
  105. package/dist/components/radio-group/index.d.ts +1 -1
  106. package/dist/components/rating/Rating.js +1 -1
  107. package/dist/components/reasoning/Reasoning.js +1 -1
  108. package/dist/components/scatter-chart/ScatterChart.js +1 -1
  109. package/dist/components/scroll-area/ScrollArea.js +1 -1
  110. package/dist/components/scroll-zone/ScrollZone.js +1 -1
  111. package/dist/components/segmented-button/SegmentedButton.js +1 -1
  112. package/dist/components/select/Select.d.ts +12 -0
  113. package/dist/components/select/Select.js +1 -1
  114. package/dist/components/select/index.d.ts +1 -1
  115. package/dist/components/shortcut/Shortcut.js +1 -1
  116. package/dist/components/sidebar/Sidebar.js +1 -1
  117. package/dist/components/sidebar/SidebarTrigger.js +1 -1
  118. package/dist/components/skeleton/Skeleton.js +1 -1
  119. package/dist/components/slider/Slider.js +1 -1
  120. package/dist/components/slider/index.d.ts +1 -1
  121. package/dist/components/sources/Sources.js +1 -1
  122. package/dist/components/sparkline/Sparkline.d.ts +7 -0
  123. package/dist/components/sparkline/Sparkline.js +1 -1
  124. package/dist/components/spoiler/Spoiler.js +1 -1
  125. package/dist/components/statistic/Statistic.js +1 -1
  126. package/dist/components/streaming-text/StreamingText.d.ts +10 -6
  127. package/dist/components/streaming-text/StreamingText.js +1 -1
  128. package/dist/components/switch/Switch.js +1 -1
  129. package/dist/components/switch/index.d.ts +1 -1
  130. package/dist/components/table/Table.js +1 -1
  131. package/dist/components/table/index.d.ts +1 -1
  132. package/dist/components/tabs/Tabs.js +1 -1
  133. package/dist/components/text-field/TextField.js +1 -1
  134. package/dist/components/text-field/index.d.ts +1 -1
  135. package/dist/components/text-link/TextLink.js +1 -1
  136. package/dist/components/time-picker/TimePicker.js +1 -1
  137. package/dist/components/timeline-chart/TimelineChart.js +1 -1
  138. package/dist/components/toast/Toast.d.ts +38 -5
  139. package/dist/components/toast/Toast.js +1 -1
  140. package/dist/components/toast/index.d.ts +2 -2
  141. package/dist/components/toast/index.js +1 -1
  142. package/dist/components/toggle/Toggle.js +1 -1
  143. package/dist/components/toggle-group/ToggleGroup.js +1 -1
  144. package/dist/components/tool-call/ToolCall.js +1 -1
  145. package/dist/components/toolbar/Toolbar.js +1 -1
  146. package/dist/components/tooltip/Tooltip.js +1 -1
  147. package/dist/components/tour/Tour.js +1 -1
  148. package/dist/components/tour/index.d.ts +1 -1
  149. package/dist/components/transfer/Transfer.d.ts +7 -0
  150. package/dist/components/transfer/Transfer.js +1 -1
  151. package/dist/components/tree-select/TreeSelect.js +1 -1
  152. package/dist/components/tree-view/TreeView.js +1 -1
  153. package/dist/components/window-pane/WindowPane.js +1 -1
  154. package/dist/index.d.ts +1 -0
  155. package/dist/index.js +1 -1
  156. package/dist/internal/animate.d.ts +34 -2
  157. package/dist/internal/animate.js +1 -1
  158. package/dist/internal/cache.d.ts +7 -1
  159. package/dist/internal/cache.js +1 -1
  160. package/dist/internal/calendar.d.ts +40 -1
  161. package/dist/internal/calendar.js +1 -1
  162. package/dist/internal/chart-frame.d.ts +86 -8
  163. package/dist/internal/chart-frame.js +1 -1
  164. package/dist/internal/chart-line.js +1 -1
  165. package/dist/internal/chart.d.ts +13 -0
  166. package/dist/internal/chart.js +1 -1
  167. package/dist/internal/checkbox-group.d.ts +29 -0
  168. package/dist/internal/checkbox-group.js +1 -0
  169. package/dist/internal/data-table.d.ts +7 -1
  170. package/dist/internal/data-table.js +1 -1
  171. package/dist/internal/date.d.ts +10 -0
  172. package/dist/internal/date.js +1 -1
  173. package/dist/internal/defaults.d.ts +14 -2
  174. package/dist/internal/idle.d.ts +10 -0
  175. package/dist/internal/idle.js +1 -0
  176. package/dist/internal/link.d.ts +4 -3
  177. package/dist/internal/media.js +1 -1
  178. package/dist/internal/observe.d.ts +4 -0
  179. package/dist/internal/observe.js +1 -1
  180. package/dist/internal/page-layout.d.ts +30 -2
  181. package/dist/internal/page-layout.js +1 -1
  182. package/dist/internal/picker.js +1 -1
  183. package/dist/internal/progress.d.ts +17 -0
  184. package/dist/internal/progress.js +1 -1
  185. package/dist/internal/refs.d.ts +18 -0
  186. package/dist/internal/refs.js +1 -0
  187. package/dist/internal/run.d.ts +34 -19
  188. package/dist/internal/run.js +1 -1
  189. package/dist/internal/sizer.d.ts +9 -4
  190. package/dist/internal/sizer.js +1 -1
  191. package/dist/internal/styles.d.ts +27 -1
  192. package/dist/internal/styles.js +1 -1
  193. package/dist/internal/tile.d.ts +34 -0
  194. package/dist/internal/tile.js +1 -0
  195. package/dist/internal/wheel.d.ts +24 -1
  196. package/dist/internal/wheel.js +1 -1
  197. package/dist/styles.css +1 -1
  198. package/dist/tailwind.css +369 -62
  199. package/dist/types.d.ts +4 -2
  200. 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 i}from"../../internal/layout-effect.js";import{Toast as s}from"@base-ui/react/toast";import{boxPaddingClasses as n}from"../box/Box.js";import{actionMessages as a,toastMessages as r,useMessages as l}from"../../internal/i18n.js";import{CloseIcon as c,severityIcon as d}from"../../internal/icons.js";import{controlSlots as m,cx as u,focusRingClasses as f,hasContent as p,hitAreaClasses as b,iconClasses as v,metaTextClasses as x,popupFadeClasses as h,radiusClasses as w,sheetBodyClasses as g,sheetHeaderGapClasses as j,sheetSectionGapClasses as y,sheetTitleClasses as N,sheetTitleHeadingClasses as T,surfaceClasses as z}from"../../internal/styles.js";import{useStyleDefaults as L}from"../../internal/defaults.js";const k={"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"},_={solid:[z,"text-(--n-on-solid) bg-(--n-fill)","[box-shadow:var(--neba-shadow-3),var(--neba-plate-solid)]"].join(" "),outline:[z,"border text-(--neba-fg) bg-(--n-panel-press)","[border-color:var(--n-line)]","[box-shadow:var(--neba-shadow-3),var(--neba-plate-glass)]"].join(" "),text:[z,"text-(--neba-fg) bg-(--n-panel-press)","[box-shadow:var(--neba-shadow-3),var(--neba-plate-glass)]"].join(" ")},M={solid:"",outline:"text-(--n-on-tint)",text:"text-(--n-on-tint)"};function O(e){const{color:t,variant:o,icon:i,actionLabel:s,onAction:n,...a}=e;return{...a,data:{color:t,variant:o,icon:i},actionProps:void 0===s?void 0:{children:s,onClick:n}}}export function useToast(){const e=s.useToastManager(),t=o.useRef(e);i(()=>{t.current=e});const n=o.useMemo(()=>({add:e=>t.current.add(O(e)),close:e=>t.current.close(e),update:(e,o)=>t.current.update(e,e=>function(e,t){const{color:o,variant:i,icon:s,actionLabel:n,onAction:a,...r}=e,l=Object.fromEntries(Object.entries(r).filter(([,e])=>void 0!==e)),c=Object.fromEntries(Object.entries({color:o,variant:i,icon:s}).filter(([,e])=>void 0!==e));return{...l,...0===Object.keys(c).length?null:{data:{...t.data,...c}},...void 0===n?null:{actionProps:{children:n,onClick:a}}}}(o,e)),promise:(e,o)=>t.current.promise(e,{loading:O(o.loading),success:e=>O("function"==typeof o.success?o.success(e):o.success),error:e=>O("function"==typeof o.error?o.error(e):o.error)})}),[]);return o.useMemo(()=>({...n,toasts:e.toasts}),[n,e.toasts])}function ToastItem({toast:o,variant:i,color:a,size:r,density:l,closeLabel:z,swipeDirection:L,classNames:k}){const O=o.data?.variant??i??"outline",P=o.data?.color??a,D=void 0===o.data?.icon?d(P):o.data.icon,A=M[O],C=p(o.title);return t(s.Root,{toast:o,swipeDirection:L,className:u("pointer-events-auto flex w-full items-start",n[l??"default"][r],w[r],y[r],g[r],_[O],v,h,"data-[limited]:hidden",f,k?.toast),style:m(P,3,O),children:[p(D)?e("span",{className:`flex h-[1lh] shrink-0 items-center ${A}`,children:D}):null,t("div",{className:`flex min-w-0 flex-1 flex-col ${j[r]}`,children:[e(s.Title,{className:u(T,"font-semibold",N[r],A,k?.title)}),e(s.Description,{className:u(C&&"solid"!==O?"text-(--neba-muted-fg)":"",k?.description)})]}),e(s.Action,{className:u("flex h-[1lh] shrink-0 cursor-pointer items-center rounded-full px-2","font-medium underline-offset-2",A||"text-(--n-on-solid)","hover:underline","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2",x[r],k?.action)}),e("span",{className:"flex h-[1lh] shrink-0 items-center",children:e(s.Close,{"aria-label":z,className:u("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",k?.close),children:e(c,{})})})]})}function ToastViewport(t){const{toasts:i}=s.useToastManager(),{position:n,width:a,classNames:r,regionLabel:l,...c}=t,d=o.useMemo(()=>[n.startsWith("top")?"up":"down","left","right"],[n]);return e(s.Portal,{children:e(s.Viewport,{"aria-label":l,className:u("neba-portal pointer-events-none fixed inset-x-0 z-(--neba-z-portal) flex flex-col gap-2 p-4",k[n],r?.viewport),children:i.map(t=>e("div",{className:"w-full",style:{maxWidth:"number"==typeof a?`${a}px`:a},children:e(ToastItem,{toast:t,swipeDirection:d,classNames:r,...c})},t.id))})})}export function ToastProvider(o){const{variant:i="outline",size:n="md",color:c="primary",density:d="default",position:m="bottom-end",timeout:u=5e3,limit:f=3,width:p=380,locale:b,closeLabel:v,label:x,classNames:h,children:w}=L(o,["size","density","variant","locale"]),g=l(a,b),j=l(r,b);return t(s.Provider,{timeout:u,limit:f,children:[w,e(ToastViewport,{position:m,variant:i,size:n,color:c,density:d,width:p,closeLabel:v??g.close,regionLabel:x??j.label,classNames:h})]})}
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 n from"react";import{Toggle as o}from"@base-ui/react/toggle";import{ButtonGroupContext as t}from"../../internal/button-group.js";import{trackPointer as r}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}`},j={xs:`${l.xs} px-0`,sm:`${l.sm} px-0`,md:`${l.md} px-0`,lg:`${l.lg} px-0`,xl:`${l.xl} px-0`},w=["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].join(" "),y={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)"].join(" "),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)"].join(" "),text:["text-(--neba-muted-fg) bg-transparent","hover:bg-(--n-soft) hover:text-(--neba-fg)","active:bg-(--n-soft-hover)"].join(" ")},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)"].join(" "),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)]"].join(" "),text:["text-(--n-on-tint) bg-(--n-soft-hover)","hover:bg-(--n-soft-press)","active:bg-(--n-soft-press)"].join(" ")};export const Toggle=/*@__PURE__*/n.forwardRef(function Toggle(a,l){const i=n.useContext(t),{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(o,{ref:l,value:C,pressed:f,defaultPressed:h,onPressedChange:e=>z?.(e),disabled:H,className:e=>d(w,$[D],J?j[D]:m[F][D],H?b[B]:e.pressed?P[B]:y[B],H?"":"neba-glow cursor-pointer",I?"w-full":"",N??""),style:{...s(E,G,B),...R},onPointerMove:r(q,!H),...A,children:[T,W,k]})});
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 i}from"../../internal/button-group.js";import{cx as t}from"../../internal/styles.js";import{useStyleDefaults as n}from"../../internal/defaults.js";const r={horizontal:"[&>*:not(:first-child)]:rounded-s-none [&>*:not(:last-child)]:rounded-e-none",vertical:"[&>*:not(:first-child)]:rounded-t-none [&>*:not(:last-child)]:rounded-b-none"},a={horizontal:"[&>*:not(:first-child)]:-ms-px",vertical:"[&>*:not(:first-child)]:-mt-px"},s=["align-middle","[&>*]:relative [&>*:hover]:z-10 [&>*:focus-visible]:z-10","[&>*]:shrink-0"].join(" ");export const ToggleGroup=/*@__PURE__*/o.forwardRef(function ToggleGroup(u,d){const{variant:c,size:f,color:m,density:p,elevation:h,value:v,defaultValue:g,onValueChange:x,multiple:z=!1,orientation:b="horizontal",disabled:j,loopFocus:y=!0,fullWidth:V=!1,className:w,children:G,...T}=n(u,["size","density","variant"]),C=o.useMemo(()=>({variant:c,size:f,color:m,density:p,elevation:h,disabled:j}),[c,f,m,p,h,j]);return e(i.Provider,{value:C,children:e(l,{ref:d,value:v,defaultValue:g,onValueChange:e=>x?.(e),multiple:z,orientation:b,disabled:j,loopFocus:y,className:t(s,"vertical"===b?"flex-col":"flex-row",r[b],"outline"===(c??"outline")?a[b]:"",V?"flex w-full [&>*]:flex-1":"inline-flex",w??""),...T,children:G})})});
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{formatDuration as i,runColor as c,runIcon as m,useElapsed 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 j,radiusClasses as w,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)]"].join(" "),outline:[C,"border text-(--neba-fg) bg-(--n-panel)","[border-color:var(--n-line)]","[box-shadow:var(--n-elev),var(--neba-plate-glass)]"].join(" "),text:"text-(--neba-fg) bg-transparent"},_=k;export const ToolCall=/*@__PURE__*/l.forwardRef(function ToolCall(j,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(j,["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"}),null===de?null:e("span",{className:x("shrink-0 tabular-nums text-(--neba-muted-fg)",N[E]),children:i(de,W)})]}),ve=x("flex flex-col overflow-hidden",w[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(j,"max-h-64",t?"text-(--n-accent)":""),children:s}):e("div",{className:t?"text-(--n-accent)":void 0,children:s})]})}
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 n}from"@base-ui/react/use-render";import{boxPaddingXClasses as a,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)]"].join(" "),outline:[p,"border text-(--neba-fg) bg-(--n-panel)","[border-color:var(--n-line)]","[box-shadow:var(--n-elev),var(--neba-plate-glass)]"].join(" "),text:"text-(--neba-fg) bg-transparent"},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:j="primary",density:w="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",a[w][y],i[w][y],c[y],"static"===k?m[y]:"",v[h],B?g[N]:"",u[k][N],f,R??"");return n({render:F,ref:p,props:{className:E,style:{...b(j,z),...T&&"static"!==k?{["bottom"===N?"paddingBottom":"paddingTop"]:`calc(${s[w][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
+ "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 o from"react";import{Tooltip as a}from"@base-ui/react/tooltip";import{controlSlots as i,cx as s,metaTextClasses as l,paddingXClasses as n,popupFadeClasses as r,radiusClasses as d,surfaceClasses as p}from"../../internal/styles.js";import{useStyleDefaults as c}from"../../internal/defaults.js";export const TooltipProvider=a.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]",r,"data-[instant]:[transition-duration:0ms]"].join(" "),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(r){const{content:p,children:u,size:x="sm",color:y="secondary",density:b="default",side:g="top",align:v="center",sideOffset:j=6,delay:w,closeDelay:O,arrow:z=!0,open:N,defaultOpen:P,onOpenChange:T,disabled:C=!1,className:D,style:k,id:A,...B}=c(r,["size","density"]),I=h[x],L=o.useId(),M=A??L,[R,S]=o.useState(P??!1),q=N??R;return t(a.Root,{open:N,defaultOpen:P,onOpenChange:e=>{void 0===N&&S(e),T?.(e)},children:[e(a.Trigger,{render:u,delay:w,closeDelay:O,disabled:C,"aria-describedby":q?M:void 0}),e(a.Portal,{children:e(a.Positioner,{className:"neba-portal z-(--neba-z-portal) [outline:none]",side:g,align:v,sideOffset:j,children:t(a.Popup,{id:M,role:"tooltip",className:s(m,d[x],n[b][x],f[x],l[x],D??""),style:{...i(y,3,"solid"),...k},...B,children:[z?e(a.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"].join(" "),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
+ "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 i}from"../../internal/layout-effect.js";import{Popover as s}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 j,sheetSectionGapClasses as y,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].join(" "),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:i}){return e("div",null===t?{"aria-hidden":"true",className:g("pointer-events-none fixed inset-0 z-40 bg-(--neba-scrim)",i)}:{"aria-hidden":"true",className:g("pointer-events-none fixed z-40 [box-shadow:0_0_0_9999px_var(--neba-scrim)]",i),style:{top:t.top,left:t.left,width:t.width,height:t.height,borderRadius:n}})}export function Tour(v){const{steps:L,open:B,defaultOpen:F=!1,onOpenChange:R,step:T,defaultStep:q=0,onStepChange:A,onFinish:I,mask:V=!0,skippable:$=!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),ie=m(r,G),[se,oe]=n.useState(F),[le,ae]=n.useState(q),re=B??se,ce=Math.min(T??le,Math.max(0,L.length-1)),de=L[ce],[me,pe]=n.useState(null),ue=e=>{void 0===B&&oe(e),R?.(e)},he=e=>{void 0===T&&ae(e),A?.(e)},[fe,ge]=n.useState(null);if(i(()=>{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 i=0;const s=()=>{i=0;const s=t.getBoundingClientRect(),o={top:s.top-n,left:s.left-n,width:s.width+2*n,height:s.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===i&&(i=requestAnimationFrame(s))};s();const l=f(t,o);return window.addEventListener("scroll",o,{passive:!0,capture:!0}),window.addEventListener("resize",o,{passive:!0}),()=>{0!==i&&cancelAnimationFrame(i),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],je=x(de?.title)||x(de?.content);return e(s.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(s.Portal,{children:[re&&V?e(Mask,{spot:xe,radius:xe?8:0,className:te?.mask}):null,e(s.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(s.Popup,{className:g(M,w[X],N[X],y[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)})}),je?t("div",{className:"flex items-start gap-3",children:[t("div",{className:`flex min-w-0 flex-1 flex-col ${j[X]}`,children:[x(de?.title)?e(s.Title,{className:g("m-0 font-semibold",S[X],te?.title),children:de?.title}):null,x(de?.content)?e(s.Description,{className:g("m-0 min-w-0",te?.description),children:de?.content}):null]}),D?e("button",{type:"button","aria-label":W??ie.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:[$&&!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?(I?.(),void ue(!1)):he(ce+1),children:ve?Q??ne.done:K??ne.next})]})]})]})})]})})}
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 S}from"../../internal/defaults.js";const k={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"};function Panel({title:s,rows:i,arrived:o,ticked:c,onTick:d,onTickAll:u,search:f,onSearch:g,searchable:y,disabled:S,height:N,emptyMessage:j,searchLabel:T,selectAllLabel:z,style:M}){const{size:$,variant:A="outline",color:C="primary",density:L="default"}=M,_=i.filter(e=>!e.disabled),P=_.filter(e=>c.has(e.value)),W=_.length>0&&P.length===_.length,D=P.length>0&&!W,I=p[L][$],R=l.useId();return a("div",{role:"group","aria-labelledby":R,className:["flex min-w-0 flex-col overflow-hidden",h[A],v[$]].join(" "),style:x(C,0),children:[a("div",{className:`flex items-center gap-2 border-b [border-color:var(--neba-border)] ${I} ${k[$]}`,children:[e(t,{size:$,color:C,checked:W,indeterminate:D,disabled:S||0===_.length,"aria-label":z,onCheckedChange:e=>u(!0===e)}),e("span",{id:R,className:`min-w-0 flex-1 truncate font-medium ${b[$]}`,children:s}),a("span",{className:`shrink-0 tabular-nums text-(--neba-muted-fg) ${b[$]}`,children:[P.length,"/",i.length]})]}),y?e("div",{className:`${I} ${k[$]}`,children:e(n,{size:$,color:C,density:L,fullWidth:!0,variant:"text",disabled:S,placeholder:T,"aria-label":T,value:f,onChange:e=>g(e.target.value)})}):null,e(r,{size:$,color:C,height:N,fade:!0,children:e("div",{className:`flex flex-col ${I} ${k[$]}`,children:0===i.length?e("span",{className:`text-(--neba-muted-fg) ${b[$]} ${w[$]}`,children:j}):i.map(a=>e(t,{size:$,color:C,className:m(w[$],o.has(a.value)?"[animation:neba-anim-fade_var(--neba-duration-fill)_var(--neba-ease)_both]":""),label:a.label,checked:c.has(a.value),disabled:S||a.disabled,onCheckedChange:e=>d(a.value,!0===e)},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:k=!1,height:w=220,disabled:j=!1,locale:T,variant:z="outline",size:M="md",color:$="primary",density:A="default",className:C,...L}=S(t,["size","density","variant","locale"]),_=c(o,T),[P,W]=l.useState(b??[]),D=h??P,[I,R]=l.useState(()=>new Set),[V,B]=l.useState(()=>new Set),[E,F]=l.useState(""),[q,G]=l.useState(""),[H,J]=l.useState(""),K=l.useRef(void 0);l.useEffect(()=>()=>clearTimeout(K.current),[]);const O=l.useMemo(()=>new Set(D),[D]),Q=l.useMemo(()=>n.filter(e=>!O.has(e.value)),[n,O]),U=l.useMemo(()=>n.filter(e=>O.has(e.value)),[n,O]),X=(e,a)=>{R(l=>{const t=new Set(l);return a?t.add(e):t.delete(e),t})},Y=(e,a)=>{R(l=>{const t=new Set(l);for(const l of e)l.disabled||(a?t.add(l.value):t.delete(l.value));return t})},Z=(e,a)=>{const l=e.filter(e=>!e.disabled&&I.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=D.filter(e=>!s.has(e)),o=a?[...n.filter(e=>O.has(e.value)||t.has(e.value)).map(e=>e.value),...r]:D.filter(e=>!t.has(e));R(e=>new Set([...e].filter(e=>!t.has(e)))),B(t),(e=>{void 0===h&&W(e),p?.(e)})(o);const c=a?x:v,d=i(_.moved,{count:String(l.length),list:"string"==typeof c&&c.trim()?c:a?_.target:_.source});clearTimeout(K.current),J(""),K.current=setTimeout(()=>J(d),100)},ee=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]),ae=l.useMemo(()=>N(Q,E,ee),[Q,E,ee]),le=l.useMemo(()=>N(U,q,ee),[U,q,ee]),te=ae.some(e=>!e.disabled&&I.has(e.value)),se=le.some(e=>!e.disabled&&I.has(e.value)),re=y(w),ne={variant:z,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)]",C??""),...L,children:[e(Panel,{title:f(v)?v:_.source,rows:ae,arrived:V,ticked:I,onTick:X,onTickAll:e=>Y(ae,e),search:E,onSearch:F,searchable:k,disabled:j,height:re,emptyMessage:_.empty,searchLabel:_.search,selectAllLabel:_.selectAll,style:ne}),a("div",{className:"flex flex-col gap-2",children:[e(s,{size:M,color:$,variant:"text"===z?"text":"outline",label:_.toTarget,disabled:j||!te,focusableWhenDisabled:!j,onClick:()=>Z(ae,!0),icon:e("span",{className:"flex rtl:rotate-180",children:e(d,{})})}),e(s,{size:M,color:$,variant:"text"===z?"text":"outline",label:_.toSource,disabled:j||!se,focusableWhenDisabled:!j,onClick:()=>Z(le,!1),icon:e("span",{className:"flex rotate-180 rtl:rotate-0",children:e(d,{})})})]}),e(Panel,{title:f(x)?x:_.target,rows:le,arrived:V,ticked:I,onTick:X,onTickAll:e=>Y(le,e),search:q,onSearch:G,searchable:k,disabled:j,height:re,emptyMessage:_.empty,searchLabel:_.search,selectAllLabel:_.selectAll,style:ne}),e("span",{role:"status",className:g,children:H})]})});
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 g(e,l=[]){for(const a of e)a.children&&a.children.length>0&&(l.push(a.value),g(a.children,l));return l}export const TreeSelect=/*@__PURE__*/a.forwardRef(function TreeSelect(i,b){const{items:v=[],value:x,defaultValue:y,onValueChange:S,multiple:w=!1,selectableBranches:C=!1,defaultExpanded:j,expanded:N,onExpandedChange:M,open:O,defaultOpen:z,onOpenChange:T,placeholder:V,clearable:E=!1,clearLabel:L,closeOnSelect:k,searchable:A=!1,searchPlaceholder:I,locale:P,format:R,name:B,size:F="md",color:$="primary",readOnly:q=!1,disabled:D=!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(z??!1),ee=O??Z,[le,ae]=a.useState(""),ne=a.useMemo(()=>h(v),[v]),re=a.useMemo(()=>m(v),[v]),te=o(le),ie=a.useMemo(()=>f(v,te,re),[v,te,re]),oe=a.useMemo(()=>""===te?void 0:g(ie),[te,ie]),[se,ce]=a.useState(()=>j??[]),de=oe??N??se,ue=e=>{e&&(q||D)||(void 0===O&&_(e),e||ae(""),T?.(e))},pe=e=>{void 0===x&&X(e),S?.(e)},he=e=>e.selectable??(!(e.children&&e.children.length>0)||C),me=Y.map(e=>ne.get(e)).filter(e=>void 0!==e),fe=0===me.length?V??"":R?R(me):me.map(e=>e.label).reduce((e,l,a)=>0===a?[l]:[...e,", ",l],[]),ge=l=>l.map(l=>e(n,{value:l.value,label:l.label,startIcon:l.startIcon,disabled:l.disabled,selectable:he(l),className:G?.item,children:l.children?ge(l.children):null},l.value));return e(t,{...H,size:F,color:$,readOnly:q,disabled:D,triggerRef:b,display:fe,empty:0===me.length,clearable:E,onClear:()=>pe([]),open:ee,onOpenChange:ue,clearLabel:L??Q.clear,popupClassName:G?.popup,initialFocus:!0,hiddenValues:B?Y.map(e=>({name:B,value:String(e)})):void 0,repeats:w,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===ie.length?e("p",{className:`px-1 py-2 text-(--neba-muted-fg) ${G?.empty??""}`,children:J.empty}):e(r,{size:F,color:$,multiple:w,selected:Y,onSelectedChange:e=>{const l=e.filter(e=>{const l=ne.get(e);return void 0!==l&&he(l)&&!l.disabled});pe(w?l:l.slice(-1)),(k??!w)&&ue(!1)},expanded:de,onExpandedChange:oe?()=>{}:e=>{void 0===N&&ce(e),M?.(e)},className:G?.tree,children:ge(ie)})})]})})});
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 n}from"react/jsx-runtime";import*as r from"react";import{inertValue as a}from"../../internal/inert.js";import{safeHref as l}from"../../internal/link.js";import{searchText as s}from"../../internal/search.js";import{ChevronIcon as o}from"../../internal/icons.js";import{controlTextClasses as i,cx as d,gapClasses as c,hasContent as u,iconClasses as m,radiusClasses as p,surfaceClasses as f,surfaceSlots as g,transitionClasses as x}from"../../internal/styles.js";import{useStyleDefaults as b}from"../../internal/defaults.js";const h=/*@__PURE__*/r.createContext({size:"md",density:"default",disabled:!1,multiple:!1,keepMounted:!1,expandedKeys:new Set,selectedKeys:new Set,activeKey:null,toggle:()=>{},select:()=>{},activate:()=>{},register:()=>()=>{}}),v=/*@__PURE__*/r.createContext(!1),y={solid:[f,"text-(--neba-fg) bg-(--n-panel-hover)","[box-shadow:var(--n-elev),var(--neba-plate-solid)]"].join(" "),outline:[f,"border text-(--neba-fg) bg-(--n-panel)","[border-color:var(--n-line)]","[box-shadow:var(--n-elev),var(--neba-plate-glass)]"].join(" "),text:"text-(--neba-fg) bg-transparent"},w={xs:"0.875rem",sm:"1rem",md:"1.25rem",lg:"1.5rem",xl:"1.75rem"},k={xs:"1.375rem",sm:"1.625rem",md:"2rem",lg:"2.5rem",xl:"3rem"},C={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"}},S={xs:"rounded-[0.3125rem]",sm:"rounded-[0.375rem]",md:"rounded-[0.5rem]",lg:"rounded-[0.625rem]",xl:"rounded-[0.75rem]"},E={none:"",simple:"neba-tree-simple",folder:"neba-tree-folder"};function N(e){return Array.from(e.querySelectorAll('[role="treeitem"]')).filter(e=>null===e.closest("[data-closing]"))}const j=e=>String(e);export const TreeView=/*@__PURE__*/r.forwardRef(function TreeView(t,n){const{variant:a="outline",size:l="md",color:o="primary",density:i="default",elevation:c=0,lines:u="simple",expanded:m,defaultExpanded:f,onExpandedChange:v,selected:C,defaultSelected:S,onSelectedChange:K,multiple:A=!1,disabled:V=!1,label:D,keepMounted:R=!1,className:M,style:I,children:P,onKeyDown:T,..._}=b(t,["size","density","variant"]),[z,q]=r.useState(f??[]),[F,L]=r.useState(S??[]),[H,O]=r.useState(null),U=m??z,W=C??F,B=r.useRef(null),G=r.useCallback(e=>{B.current=e,"function"==typeof n?n(e):n&&(n.current=e)},[n]),J=r.useRef({expandedValues:U,selectedValues:W,controlledExpanded:void 0!==m,controlledSelected:void 0!==C,multiple:A,onExpandedChange:v,onSelectedChange:K});J.current={expandedValues:U,selectedValues:W,controlledExpanded:void 0!==m,controlledSelected:void 0!==C,multiple:A,onExpandedChange:v,onSelectedChange:K};const Q=r.useCallback(e=>{const{expandedValues:t,controlledExpanded:n,onExpandedChange:r}=J.current,a=j(e),l=t.some(e=>j(e)===a)?t.filter(e=>j(e)!==a):[...t,e];n||q(l),r?.(l)},[]),X=r.useCallback(e=>{const{selectedValues:t,controlledSelected:n,multiple:r,onSelectedChange:a}=J.current,l=j(e),s=t.some(e=>j(e)===l),o=r?s?t.filter(e=>j(e)!==l):[...t,e]:[e];n||L(o),a?.(o)},[]),Y=r.useRef(new Map),Z=r.useCallback((e,t)=>(Y.current.set(e,t),()=>{Y.current.delete(e)}),[]),$=r.useMemo(()=>U.map(j).join("\0"),[U]),ee=r.useMemo(()=>W.map(j).join("\0"),[W]),te=r.useMemo(()=>({size:l,density:i,disabled:V,multiple:A,keepMounted:R,expandedKeys:new Set(U.map(j)),selectedKeys:new Set(W.map(j)),activeKey:H,toggle:Q,select:X,activate:O,register:Z}),[l,i,V,A,R,$,ee,H,Q,X,Z]);r.useEffect(()=>{if(null!==H&&Y.current.has(H))return;const e=B.current;if(!e)return;const t=N(e);if(0===t.length)return;const n=t.find(e=>"true"===e.getAttribute("aria-selected"))??t[0];O(n.dataset.nebaValue??null)});const ne=d("flex list-none flex-col p-1",p[l],y[a],x,E[u],M);return e(h.Provider,{value:te,children:e("ul",{ref:G,role:"tree","aria-label":D,"aria-multiselectable":A||void 0,className:ne,style:{...g(o,c),"--n-tree-indent":w[l],"--n-tree-row":k[l],...I},onKeyDown:function(e){if(T?.(e),e.defaultPrevented)return;const t=B.current,n=e.target?.closest?.('[role="treeitem"]');if(!t||!n||!t.contains(n))return;if(e.target!==n)return;const r=N(t),a=r.indexOf(n);if(-1===a)return;const l=t=>{t&&(e.preventDefault(),O(t.dataset.nebaValue??null),t.focus())},o=e=>{const t=e.dataset.nebaValue;t&&Y.current.get(t)?.toggle()},i="rtl"===getComputedStyle(t).direction,d=i?"ArrowLeft":"ArrowRight",c=i?"ArrowRight":"ArrowLeft",u=n.getAttribute("aria-expanded");switch(e.key){case"ArrowDown":l(r[a+1]);break;case"ArrowUp":l(r[a-1]);break;case"Home":l(r[0]);break;case"End":l(r[r.length-1]);break;case d:"false"===u?(e.preventDefault(),o(n)):"true"===u&&l(r[a+1]);break;case c:"true"===u?(e.preventDefault(),o(n)):l(n.parentElement?.closest('[role="treeitem"]'));break;case"Enter":case" ":e.preventDefault();(("Enter"===e.key?n.querySelector(":scope > div > a[href]"):null)??n).click();break;default:if(1===[...e.key].length&&" "!==e.key&&!e.ctrlKey&&!e.metaKey&&!e.altKey){const t=s(e.key);l([...r.slice(a+1),...r.slice(0,a)].find(e=>s(e.querySelector("[data-neba-label]")?.textContent??"").startsWith(t)))}}},..._,children:P})})});export const TreeItem=/*@__PURE__*/r.forwardRef(function TreeItem({value:s,label:p,startIcon:f,endIcon:g,action:b,href:y,expandable:w,disabled:k=!1,selectable:E=!0,className:N,children:K,onClick:A,...V},D){const{size:R,density:M,disabled:I,expandedKeys:P,selectedKeys:T,activeKey:_,toggle:z,select:q,activate:F,register:L,multiple:H,keepMounted:O}=r.useContext(h),U=r.useId(),W=s??U,B=j(W),G=r.useRef(null),J=r.useCallback(e=>{G.current=e,"function"==typeof D?D(e):D&&(D.current=e)},[D]),Q=r.Children.toArray(K),X=w??Q.length>0,Y=X&&P.has(B),Z=T.has(B),$=k||I,ee=r.useRef({toggle:()=>{}});ee.current.toggle=()=>{!$&&X&&z(W)};const te=r.useContext(v);r.useEffect(()=>te?void 0:L(B,ee.current),[te,B,L]);const[ne,re]=r.useState(Y),[ae,le]=r.useState(Y),se=r.useRef(null);r.useEffect(()=>{if(Y){re(!0);const e=requestAnimationFrame(()=>le(!0));return()=>cancelAnimationFrame(e)}le(!1);const e=se.current;(null===e||getComputedStyle(e).transitionDuration.split(",").every(e=>0===parseFloat(e)))&&re(!1)},[Y]);const oe=d("flex min-w-0 flex-1 cursor-pointer items-center text-start","h-(--n-tree-row)",C[M][R],S[R],c[R],i[R],x,m,"group-focus-visible/tree-item:[outline:2px_solid_var(--n-ring)]","group-focus-visible/tree-item:outline-offset-[-2px]",$?"cursor-not-allowed text-(--neba-disabled-fg)":Z?"bg-(--n-soft-press) font-medium text-(--n-on-tint) hover:bg-(--n-soft-press)":"hover:bg-(--n-soft)"),ie=n(t,{children:[e("span",{"aria-hidden":"true",onClick:e=>{!$&&X&&(e.stopPropagation(),e.preventDefault(),G.current?.focus(),F(B),z(W))},className:d("flex h-[1lh] w-[1.15em] shrink-0 items-center justify-center","[transition:rotate_var(--neba-duration)_var(--neba-ease)]",X?"text-(--neba-muted-fg)":"",Y?"rotate-0":"-rotate-90 rtl:rotate-90"),children:X?e(o,{}):null}),u(f)?e("span",{className:"flex h-[1lh] shrink-0 items-center text-(--neba-muted-fg)",children:f}):null,e("span",{"data-neba-label":"",className:"min-w-0 flex-1 truncate",children:p}),u(g)?e("span",{className:"flex h-[1lh] shrink-0 items-center text-(--neba-muted-fg)",children:g}):null]});return n("li",{ref:J,role:"treeitem","aria-expanded":X?Y:void 0,"aria-selected":!!Z||(!H||!E)&&void 0,"aria-disabled":$||void 0,"data-neba-value":B,tabIndex:_===B?0:-1,className:d("group/tree-item relative block [outline:none]",N),onClick:function(e){e.stopPropagation(),$?e.preventDefault():(G.current?.focus(),F(B),A?.(e),e.defaultPrevented||(X&&z(W),E&&q(W)))},...V,children:[n("div",{className:"flex w-full items-center",children:[void 0===l(y)||$?e("div",{className:oe,children:ie}):e("a",{href:l(y),tabIndex:-1,className:oe,"aria-current":Z?"page":void 0,children:ie}),u(b)?e("span",{className:d("flex shrink-0 items-center",C[M][R]),onClick:e=>e.stopPropagation(),children:b}):null]}),X&&(ne||O)&&Q.length>0?e("div",{ref:se,"data-closing":Y?void 0:"",inert:a(!Y),className:d("grid [transition:grid-template-rows_var(--neba-duration)_var(--neba-ease)]",ae?"[grid-template-rows:1fr]":"[grid-template-rows:0fr] pointer-events-none"),onTransitionEnd:e=>{e.target!==e.currentTarget||"grid-template-rows"!==e.propertyName||Y||re(!1)},children:e("ul",{role:"group",className:"min-h-0 list-none overflow-hidden ps-(--n-tree-indent)",children:e(v.Provider,{value:te||!Y,children:K})})}):null]})});
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{useLayoutEffectOnClient as o}from"../../internal/layout-effect.js";import{useRender as r}from"@base-ui/react/use-render";import{beginPointerDrag as s,drawnScale as a}from"../../internal/drag.js";import{actionMessages as l,useMessages as d,windowMessages as c}from"../../internal/i18n.js";import{cx as u,hasContent as h,iconClasses as m,surfaceClasses as f}from"../../internal/styles.js";import{WindowControls as g,orderControls as w,windowChrome as p,windowMetrics as b,windowSlots as x}from"../../internal/window.js";import{inertValue as v}from"../../internal/inert.js";import{useStyleDefaults as y}from"../../internal/defaults.js";function z(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 M=[{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"}],E=[];export const WindowPane=/*@__PURE__*/i.forwardRef(function WindowPane(N,S){const{os:H="macos",title:k,icon:C,actions:L,controls:j=!0,size:W="md",color:I="primary",accent:P=!1,transparency:D=0,active:T,elevation:A=2,position:O="static",draggable:R=!1,resizable:B=!1,width:X,height:$,minWidth:F=180,minHeight:Y,offset:_,defaultOffset:q,onOffsetChange:K,onResize:U,open:G,defaultOpen:J=!0,onOpenChange:Q,minimized:V,defaultMinimized:Z=!1,onMinimizedChange:ee,maximized:te,defaultMaximized:ne=!1,onMaximizedChange:ie,scroll:oe=!0,locale:re,minimizeLabel:se,maximizeLabel:ae,restoreLabel:le,closeLabel:de,resizeLabel:ce,render:ue,className:he,style:me,children:fe,...ge}=y(N,["size","locale"]),we=d(c,re),pe=i.useId(),be=d(l,re),xe=p(H),ve=b(H,W),ye=i.useId(),[ze,Me]=z(G,J,Q),[Ee,Ne]=z(V,Z,ee),[Se,He]=z(te,ne,ie),[ke,Ce]=z(_,q??{x:0,y:0},K),[Le,je]=i.useState(null),[We,Ie]=i.useState({width:X,height:$});We.width===X&&We.height===$||(Ie({width:X,height:$}),je(null));const[Pe,De]=i.useState(!0),Te=T??Pe,[Ae,Oe]=i.useState(null),[Re,Be]=i.useState(null),[Xe,$e]=i.useState(!1),[Fe,Ye]=i.useState(!1),[_e,qe]=i.useState(ze);_e!==ze&&(qe(ze),Ye(!ze)),i.useEffect(()=>{if(!Fe)return;const e=window.setTimeout(()=>Ye(!1),260);return()=>window.clearTimeout(e)},[Fe]);const Ke=i.useRef(null),Ue=i.useCallback(e=>{Ke.current=e,"function"==typeof S?S(e):S&&(S.current=e)},[S]);i.useEffect(()=>{if(void 0!==T||!ze)return;const e=Ke.current;if(!e)return;const t=e=>De(e);E.push(t);const n=n=>{const i=n.target;if(!(i instanceof Node))return;if(e.contains(i))return E.splice(E.indexOf(t),1),E.push(t),void De(!0);const o=i instanceof Element?i:i.parentElement;o?.closest(".neba-window")&&De(!1)};return document.addEventListener("pointerdown",n,!0),document.addEventListener("focusin",n,!0),()=>{document.removeEventListener("pointerdown",n,!0),document.removeEventListener("focusin",n,!0);const e=E.indexOf(t),i=e===E.length-1;E.splice(e,1),i&&E[E.length-1]?.(!0)}},[T,ze]);const Ge=i.useRef(null);function Je(e,t){if(0!==e.button)return;Ge.current?.();const n=e.currentTarget,i=e.clientX,o=e.clientY,r=Ke.current,l=r?a(r):{x:1,y:1};$e(!0);const d=()=>{Ge.current=null,$e(!1)},c=s({target:n,pointerId:e.pointerId,onMove:e=>t((e.clientX-i)/l.x,(e.clientY-o)/l.y),onEnd:d});Ge.current=()=>{c(),d()}}i.useEffect(()=>()=>Ge.current?.(),[]);const Qe={width:Math.max(0,F),height:Math.max(ve.bar,Y??ve.bar)};function Ve(e){je(e),U?.(e)}const Ze=w(H,!0===j?["minimize","maximize","close"]:!1===j?[]:j),et=Ze.includes("maximize");o(()=>{if(!Ee||null!==Ae)return;const e=Ke.current,t=e?.firstElementChild;e&&t instanceof HTMLElement&&Oe(t.offsetHeight+(e.offsetHeight-e.clientHeight))},[Ee,Ae]),i.useEffect(()=>{if(Ee||null===Re)return;const e=window.setTimeout(()=>Be(null),400);return()=>window.clearTimeout(e)},[Ee,Re]);const tt={minimize:se??we.minimize,maximize:ae??we.maximize,restore:le??we.restore,close:de??be.close},nt=e(g,{os:H,metrics:ve,controls:Ze,maximized:Se,active:Te,labels:tt,onCommand:function(e){"close"===e?Me(!1):"minimize"===e?function(e){const t=Ke.current,n=t?.firstElementChild;if(t&&n instanceof HTMLElement&&Oe(n.offsetHeight+(t.offsetHeight-t.clientHeight)),e&&void 0===(Le?.height??$)&&t)return Be(t.offsetHeight),void requestAnimationFrame(()=>Ne(!0));Ne(e)}(!Ee):He(!Se)}}),it=h(k)?e("span",{id:ye,className:"min-w-0 truncate",children:k}):null,ot=h(C)?e("span",{className:"flex shrink-0 items-center",children:C}):null,rt=t("div",{className:u("relative flex shrink-0 items-center select-none",m,R&&!Se?"cursor-grab touch-none active:cursor-grabbing":""),style:{height:ve.bar,textShadow:"var(--n-window-bar-shadow)",fontWeight:ve.weight,paddingInlineStart:ve.padX,paddingInlineEnd:ve.padEnd,gap:Math.round(.7*ve.title),fontSize:ve.title,backgroundColor:"var(--n-window-bar)",backgroundImage:"var(--n-window-bar-image)",color:"var(--n-window-bar-fg)",borderBlockEnd:xe.rule?"1px solid var(--n-window-line)":void 0},onPointerDown:function(e){if(!R||Se)return;const t={...ke},n=Ke.current,i="fixed"===O?{width:document.documentElement.clientWidth,height:document.documentElement.clientHeight}:"absolute"===O&&n?.offsetParent instanceof HTMLElement?{width:n.offsetParent.clientWidth,height:n.offsetParent.clientHeight}:null,o=n?.offsetWidth??0,r=Math.min(o,48);Je(e,(e,n)=>{const s=t.x+e,a=t.y+n;Ce(i?{x:Math.min(Math.max(s,r-o),i.width-r),y:Math.min(Math.max(a,0),Math.max(0,i.height-ve.bar))}:{x:s,y:a})})},onDoubleClick:et?()=>He(!Se):void 0,children:["start"===xe.controlsSide?nt:null,"center"===xe.titleAlign?e("span",{"aria-hidden":"true",className:"pointer-events-none absolute inset-x-0 flex items-center justify-center",style:{paddingInline:ve.controlsWidth(Ze.length)+2*ve.padX},children:t("span",{className:"flex min-w-0 items-center",style:{gap:Math.round(.5*ve.title)},children:[ot,it]})}):t(n,{children:[ot,it]}),e("span",{className:"flex-1"}),h(L)?e("span",{className:"flex shrink-0 items-center",style:{gap:Math.round(.5*ve.title)},onPointerDown:e=>e.stopPropagation(),onDoubleClick:e=>e.stopPropagation(),children:L}):null,"end"===xe.controlsSide?nt:null]}),st=Se?{left:0,top:0,width:"100%",height:"100%"}:{left:ke.x,top:ke.y,width:Le?.width??X,height:Ee?Ae??ve.bar:Le?.height??$??Re??void 0},at=r({render:ue,ref:Ue,props:{role:"group","aria-labelledby":it?ye:void 0,className:u("neba-window relative flex min-w-0 flex-col overflow-hidden",D>0?f:"",xe.glass&&0===D?"[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]",he),"data-gesture":Xe?"":void 0,inert:v(!ze),style:{opacity:ze?void 0:0,...x({os:H,color:I,accent:P,transparency:D,active:Te,elevation:A}),position:"static"===O?"relative":O,...st,borderRadius:Se?0:`${ve.radius}px ${ve.radius}px ${ve.radiusBottom}px ${ve.radiusBottom}px`,borderStyle:"solid",borderWidth:ve.frame,borderColor:"var(--n-window-line)",backgroundColor:"var(--n-window-band)",boxShadow:"var(--n-window-shadow), var(--neba-plate-glass)",...me},children:t(n,{children:[rt,e("div",{className:u("min-h-0 flex-1",oe?"overflow-auto":"overflow-hidden"),style:{backgroundColor:"var(--n-window-body)",marginInline:ve.band.side,marginBottom:ve.band.bottom,boxShadow:ve.band.side>0?"inset 0 0 0 1px rgb(0 0 0 / 0.12)":void 0},inert:v(Ee),children:fe}),!B||Se||Ee?null:e("span",{id:pe,hidden:!0,children:we.resizeHint}),!B||Se||Ee?null:M.map(t=>{const n="se"===t.edge;return e("div",{role:n?"button":void 0,tabIndex:n?0:void 0,"aria-label":n?ce??we.resize:void 0,"aria-describedby":n?pe:void 0,"aria-hidden":n?void 0:"true",className:u("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=Ke.current;if(!n||Se)return;const i={width:n.offsetWidth,height:n.offsetHeight,x:ke.x,y:ke.y},o=e.includes("e"),r=e.includes("w"),s=e.includes("n"),a=e.includes("s");Je(t,(e,t)=>{let{width:n,height:l}=i,{x:d,y:c}=i;o&&(n=Math.max(Qe.width,i.width+e)),a&&(l=Math.max(Qe.height,i.height+t)),r&&(n=Math.max(Qe.width,i.width-e),d=i.x+(i.width-n)),s&&(l=Math.max(Qe.height,i.height-t),c=i.y+(i.height-l)),Ve({width:n,height:l}),(r||s)&&Ce({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=Ke.current;n&&Ve({width:Math.max(Qe.width,n.offsetWidth+e),height:Math.max(Qe.height,n.offsetHeight+t)})}(t[0],t[1]))}:void 0},t.edge)})]}),...ge}});return ze||Fe?at:null});
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 a pseudo-element rather than on its root.
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