haze-ui 1.20.0 → 1.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -0
- package/dist/hooks/useTitle.js +12 -0
- package/dist/index.js +4 -3
- package/dist/types/hooks/index.d.ts +1 -0
- package/dist/types/hooks/useTitle.d.ts +1 -0
- package/dist/types/index.d.ts +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -106,6 +106,26 @@ import { AsyncSection } from 'haze-ui';
|
|
|
106
106
|
</AsyncSection>
|
|
107
107
|
```
|
|
108
108
|
|
|
109
|
+
## useTitle: view-level document.title
|
|
110
|
+
|
|
111
|
+
`useTitle(title)` sets `document.title` while the view is mounted and
|
|
112
|
+
restores the pre-entry title (the static `<title>` from the host page) on
|
|
113
|
+
unmount. Two timing pitfalls are baked into the implementation: the write
|
|
114
|
+
and the restore are two separate effects (a single `[title]` effect would
|
|
115
|
+
restore the *previous round's* title, not the entry default, on every prop
|
|
116
|
+
change), and the entry snapshot is taken at effect time, not render time —
|
|
117
|
+
a route swap is one commit, so at render time the old view's cleanup has
|
|
118
|
+
not run yet and `document.title` still holds the previous page.
|
|
119
|
+
|
|
120
|
+
```jsx
|
|
121
|
+
import { useTitle } from 'haze-ui';
|
|
122
|
+
|
|
123
|
+
function SettingsView() {
|
|
124
|
+
useTitle('Settings');
|
|
125
|
+
// ...
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
109
129
|
## react-f0rm Integration
|
|
110
130
|
|
|
111
131
|
react-f0rm owns form field state, and its headless `useField` hook is
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { useEffect as e, useRef as t } from "react";
|
|
2
|
+
//#region src/lib/hooks/useTitle.ts
|
|
3
|
+
function n(n) {
|
|
4
|
+
let r = t(null);
|
|
5
|
+
e(() => {
|
|
6
|
+
r.current === null && (r.current = document.title), document.title = n;
|
|
7
|
+
}, [n]), e(() => () => {
|
|
8
|
+
r.current !== null && (document.title = r.current);
|
|
9
|
+
}, []);
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { n as useTitle };
|
package/dist/index.js
CHANGED
|
@@ -142,6 +142,7 @@ import Kt from "./components/ConversationList/ConversationItem.js";
|
|
|
142
142
|
import qt from "./components/DiffViewer/DiffViewer.js";
|
|
143
143
|
import Jt from "./components/LogViewer/LogViewer.js";
|
|
144
144
|
import Yt from "./components/AsyncSection/AsyncSection.js";
|
|
145
|
-
import Xt from "./
|
|
146
|
-
import
|
|
147
|
-
|
|
145
|
+
import { useTitle as Xt } from "./hooks/useTitle.js";
|
|
146
|
+
import Zt from "./form/FormItem.js";
|
|
147
|
+
import { useControl as Qt } from "react-use-control";
|
|
148
|
+
export { N as Accordion, P as AccordionItem, St as Affix, F as Alert, Ht as ApprovalCard, Dt as AspectRatio, Yt as AsyncSection, I as Avatar, xt as BackToTop, _ as Badge, wt as Banner, jt as BottomSheet, H as Breadcrumb, U as BreadcrumbItem, o as Button, s as ButtonLink, i as COMPONENT_TOKENS, x as Card, ce as Carousel, le as CarouselSlide, Pt as ChatContainer, Ft as ChatInput, Nt as ChatMessage, m as Checkbox, p as CheckboxCore, Xe as Chip, Et as CodeBlock, Ae as Collapsible, je as CollapsibleContent, Me as CollapsibleTrigger, Re as ColorPicker, Le as ColorPickerCore, ne as Combobox, Ce as Command, we as CommandInput, Te as CommandItem, Ee as CommandList, Tt as ConfirmDialog, Ct as Container, mt as ContextMenu, gt as ContextMenuContent, _t as ContextMenuItem, vt as ContextMenuSeparator, ht as ContextMenuTrigger, Kt as ConversationItem, Gt as ConversationList, tt as DateRangePicker, et as DateRangePickerCore, de as Datepicker, ue as DatepickerCore, v as Dialog, qt as DiffViewer, W as Disclosure, pe as Divider, be as Drawer, lt as DropdownMenu, dt as DropdownMenuContent, ft as DropdownMenuItem, pt as DropdownMenuSeparator, ut as DropdownMenuTrigger, he as Empty, X as FileInput, V as Flex, Zt as FormItem, ve as Grid, ye as GridItem, z as Icon, B as Image, ct as InlineEdit, l as Input, c as InputCore, ee as List, te as ListItem, Jt as LogViewer, Lt as MarkdownRenderer, G as Menu, q as MenuDivider, K as MenuItem, Wt as ModelPicker, bt as NavLink, yt as NavigationBar, Y as NumberInput, J as NumberInputCore, rt as OTPInput, nt as OTPInputCore, f as Option, _e as Pagination, Ue as Paragraph, at as PasswordInput, it as PasswordInputCore, b as Popover, ge as Progress, S as Radio, w as RadioGroup, C as RadioGroupCore, Be as Rating, ze as RatingCore, De as ResizableGroup, Oe as ResizableHandle, ke as ResizablePanel, Ze as ScrollArea, Ye as Segmented, Je as SegmentedCore, d as Select, u as SelectCore, R as Skeleton, O as Slider, D as SliderCore, me as Spinner, Ke as Stat, qe as StatGroup, Se as Step, Bt as StepTimeline, Vt as StepTimelineItem, xe as Stepper, It as StreamingText, Mt as SwipeAction, g as Switch, h as SwitchCore, a as TOKEN_REGISTRY, j as Tab, A as TabList, M as TabPanel, re as Table, ae as TableBody, se as TableCell, ie as TableHead, oe as TableRow, k as Tabs, L as Tag, kt as TagGroup, At as TagGroupItem, st as TagInput, ot as TagInputCore, We as Text, E as Textarea, T as TextareaCore, zt as ThinkingIndicator, $e as TimePicker, Qe as TimePickerCore, Ve as Timeline, He as TimelineItem, Ge as Title, Z as Toast, Q as ToastContainer, Ut as TokenCounter, Rt as ToolCallCard, y as Tooltip, Pe as Transfer, Ne as TransferCore, fe as Tree, Ie as Upload, Fe as UploadCore, Ot as VirtualList, e as darkTheme, t as lightTheme, n as spacing, r as typography, Qt as useControl, Xt as useTitle, $ as useToast };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useTitle } from './useTitle';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function useTitle(title: string): void;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -183,6 +183,7 @@ export { LogViewer } from './components/LogViewer';
|
|
|
183
183
|
export type { LogViewerProps, LogEntry, LogLevel } from './components/LogViewer';
|
|
184
184
|
export { AsyncSection } from './components/AsyncSection';
|
|
185
185
|
export type { AsyncSectionProps } from './components/AsyncSection';
|
|
186
|
+
export { useTitle } from './hooks';
|
|
186
187
|
export { FormItem } from './form';
|
|
187
188
|
export type { FieldValidator, FormItemAsProps, FormItemBinding, FormItemOwnProps, FormItemProps, FormItemRawElement, FormItemRawElementBinding, FormInstance, PathValueOf, } from './form';
|
|
188
189
|
export { useControl } from 'react-use-control';
|