@dreamtree-org/twreact-ui 1.3.11 → 2.0.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 +40 -6
- package/ai-skills/dreamtree-ui.md +47 -9
- package/codemods/v2.cjs +198 -0
- package/dist/ai-schema.json +609 -33
- package/dist/components/blocks/AppShell.d.ts.map +1 -1
- package/dist/components/blocks/BottomActionBar.d.ts +6 -0
- package/dist/components/blocks/BottomActionBar.d.ts.map +1 -0
- package/dist/components/blocks/ConfirmDialog.d.ts.map +1 -1
- package/dist/components/blocks/PageHeader.d.ts.map +1 -1
- package/dist/components/core/Checkbox.d.ts.map +1 -1
- package/dist/components/core/DatePicker.d.ts.map +1 -1
- package/dist/components/core/DateRangePicker.d.ts.map +1 -1
- package/dist/components/core/Form.d.ts.map +1 -1
- package/dist/components/core/Input.d.ts.map +1 -1
- package/dist/components/core/Popover.d.ts.map +1 -1
- package/dist/components/core/ProgressBar.d.ts.map +1 -1
- package/dist/components/core/Rate.d.ts.map +1 -1
- package/dist/components/core/SearchField.d.ts +9 -0
- package/dist/components/core/SearchField.d.ts.map +1 -0
- package/dist/components/core/SegmentedControl.d.ts +8 -0
- package/dist/components/core/SegmentedControl.d.ts.map +1 -0
- package/dist/components/core/Select.d.ts.map +1 -1
- package/dist/components/core/SwipeableListItem.d.ts +4 -0
- package/dist/components/core/SwipeableListItem.d.ts.map +1 -0
- package/dist/components/core/SwipeableListItemGesture.d.ts +58 -0
- package/dist/components/core/SwipeableListItemGesture.d.ts.map +1 -0
- package/dist/components/core/Switch.d.ts.map +1 -1
- package/dist/components/core/Table/ActionMenu.d.ts +10 -3
- package/dist/components/core/Table/ActionMenu.d.ts.map +1 -1
- package/dist/components/core/Table/MobileCard.d.ts +10 -1
- package/dist/components/core/Table/MobileCard.d.ts.map +1 -1
- package/dist/components/core/Table/MobileFilters.d.ts +8 -2
- package/dist/components/core/Table/MobileFilters.d.ts.map +1 -1
- package/dist/components/core/Table/Table.d.ts.map +1 -1
- package/dist/components/core/Table/TableRow.d.ts +2 -1
- package/dist/components/core/Table/TableRow.d.ts.map +1 -1
- package/dist/components/core/Tabs.d.ts +3 -3
- package/dist/components/core/Tabs.d.ts.map +1 -1
- package/dist/components/core/ThreeDotPopover.d.ts +10 -22
- package/dist/components/core/ThreeDotPopover.d.ts.map +1 -1
- package/dist/components/core/Tooltip.d.ts +2 -1
- package/dist/components/core/Tooltip.d.ts.map +1 -1
- package/dist/components/core/internal/Calendar.d.ts +77 -0
- package/dist/components/core/internal/Calendar.d.ts.map +1 -0
- package/dist/components/core/menu/ActionMenuSurface.d.ts +42 -0
- package/dist/components/core/menu/ActionMenuSurface.d.ts.map +1 -0
- package/dist/components/core/menu/ActionSheetMenu.d.ts +17 -0
- package/dist/components/core/menu/ActionSheetMenu.d.ts.map +1 -0
- package/dist/components/core/menu/MenuPopover.d.ts +21 -0
- package/dist/components/core/menu/MenuPopover.d.ts.map +1 -0
- package/dist/components/core/menu/menuItems.d.ts +21 -0
- package/dist/components/core/menu/menuItems.d.ts.map +1 -0
- package/dist/components/core/menu/menuKeyboard.d.ts +16 -0
- package/dist/components/core/menu/menuKeyboard.d.ts.map +1 -0
- package/dist/components/feedback/ActionSheet.d.ts +4 -0
- package/dist/components/feedback/ActionSheet.d.ts.map +1 -0
- package/dist/components/feedback/Alert.d.ts.map +1 -1
- package/dist/components/feedback/Dialog.d.ts.map +1 -1
- package/dist/components/feedback/Drawer.d.ts.map +1 -1
- package/dist/components/feedback/Sheet.d.ts +4 -0
- package/dist/components/feedback/Sheet.d.ts.map +1 -0
- package/dist/components/feedback/Toast.d.ts +4 -3
- package/dist/components/feedback/Toast.d.ts.map +1 -1
- package/dist/components/feedback/ToastItem.d.ts +47 -0
- package/dist/components/feedback/ToastItem.d.ts.map +1 -0
- package/dist/components/feedback/ToastStack.d.ts +20 -0
- package/dist/components/feedback/ToastStack.d.ts.map +1 -0
- package/dist/components/feedback/ToastSwipe.d.ts +22 -0
- package/dist/components/feedback/ToastSwipe.d.ts.map +1 -0
- package/dist/components/feedback/Tour.d.ts.map +1 -1
- package/dist/components/feedback/sheetCore.d.ts +30 -0
- package/dist/components/feedback/sheetCore.d.ts.map +1 -0
- package/dist/components/navigation/Navbar.d.ts.map +1 -1
- package/dist/components/navigation/Sidebar.d.ts +6 -0
- package/dist/components/navigation/Sidebar.d.ts.map +1 -1
- package/dist/components/rich-text/RichTextEditor.d.ts.map +1 -1
- package/dist/components/rich-text/RichTextToolbar.d.ts +6 -2
- package/dist/components/rich-text/RichTextToolbar.d.ts.map +1 -1
- package/dist/components/utility/PullToRefresh.d.ts +5 -0
- package/dist/components/utility/PullToRefresh.d.ts.map +1 -0
- package/dist/esm/components/blocks/AppShell.js +97 -90
- package/dist/esm/components/blocks/BottomActionBar.js +132 -0
- package/dist/esm/components/blocks/ConfirmDialog.js +40 -4
- package/dist/esm/components/blocks/PageHeader.js +16 -3
- package/dist/esm/components/core/Checkbox.js +13 -24
- package/dist/esm/components/core/DatePicker.js +117 -304
- package/dist/esm/components/core/DateRangePicker.js +260 -308
- package/dist/esm/components/core/Form.js +11 -2
- package/dist/esm/components/core/Input.js +13 -18
- package/dist/esm/components/core/Popover.js +59 -48
- package/dist/esm/components/core/ProgressBar.js +36 -64
- package/dist/esm/components/core/Rate.js +5 -10
- package/dist/esm/components/core/SearchField.js +311 -0
- package/dist/esm/components/core/SegmentedControl.js +189 -0
- package/dist/esm/components/core/Select.js +185 -190
- package/dist/esm/components/core/SwipeableListItem.js +286 -0
- package/dist/esm/components/core/SwipeableListItemGesture.js +219 -0
- package/dist/esm/components/core/Switch.js +11 -13
- package/dist/esm/components/core/Table/ActionMenu.js +45 -231
- package/dist/esm/components/core/Table/ColumnMenu.js +1 -1
- package/dist/esm/components/core/Table/MobileCard.js +66 -16
- package/dist/esm/components/core/Table/MobileFilters.js +181 -10
- package/dist/esm/components/core/Table/Table.js +149 -102
- package/dist/esm/components/core/Table/TableRow.js +10 -2
- package/dist/esm/components/core/Tabs.js +7 -7
- package/dist/esm/components/core/ThreeDotPopover.js +93 -99
- package/dist/esm/components/core/Tooltip.js +138 -145
- package/dist/esm/components/core/internal/Calendar.js +381 -0
- package/dist/esm/components/core/menu/ActionMenuSurface.js +110 -0
- package/dist/esm/components/core/menu/ActionSheetMenu.js +140 -0
- package/dist/esm/components/core/menu/MenuPopover.js +177 -0
- package/dist/esm/components/core/menu/menuItems.js +61 -0
- package/dist/esm/components/core/menu/menuKeyboard.js +54 -0
- package/dist/esm/components/feedback/ActionSheet.js +55 -0
- package/dist/esm/components/feedback/Alert.js +63 -53
- package/dist/esm/components/feedback/Dialog.js +141 -53
- package/dist/esm/components/feedback/Drawer.js +130 -132
- package/dist/esm/components/feedback/Sheet.js +125 -0
- package/dist/esm/components/feedback/Toast.js +21 -291
- package/dist/esm/components/feedback/ToastItem.js +348 -0
- package/dist/esm/components/feedback/ToastStack.js +130 -0
- package/dist/esm/components/feedback/ToastSwipe.js +52 -0
- package/dist/esm/components/feedback/Tour.js +107 -30
- package/dist/esm/components/feedback/sheetCore.js +494 -0
- package/dist/esm/components/navigation/Dropdown.js +1 -1
- package/dist/esm/components/navigation/Navbar.js +172 -37
- package/dist/esm/components/navigation/Sidebar.js +263 -111
- package/dist/esm/components/rich-text/RichTextEditor.js +9 -3
- package/dist/esm/components/rich-text/RichTextToolbar.js +29 -9
- package/dist/esm/components/utility/Portal.js +31 -0
- package/dist/esm/components/utility/PullToRefresh.js +229 -0
- package/dist/esm/hooks/useFloatingPosition.js +82 -0
- package/dist/esm/hooks/useHaptics.js +65 -0
- package/dist/esm/hooks/usePresence.js +58 -0
- package/dist/esm/hooks/usePresentation.js +21 -0
- package/dist/esm/hooks/useSheetDrag.js +220 -0
- package/dist/esm/index.js +13 -2
- package/dist/esm/utils/position.js +10 -63
- package/dist/hooks/useFloatingPosition.d.ts +8 -4
- package/dist/hooks/useFloatingPosition.d.ts.map +1 -1
- package/dist/hooks/useHaptics.d.ts +19 -0
- package/dist/hooks/useHaptics.d.ts.map +1 -0
- package/dist/hooks/useSheetDrag.d.ts +31 -0
- package/dist/hooks/useSheetDrag.d.ts.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.esm.css +1 -1
- package/dist/index.esm.js +8851 -3198
- package/dist/index.js +8856 -3195
- package/dist/rich-text/index.js +41 -11
- package/dist/types/blocks.d.ts +32 -2
- package/dist/types/blocks.d.ts.map +1 -1
- package/dist/types/index.d.ts +353 -19
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/rich-text.d.ts +5 -0
- package/dist/types/rich-text.d.ts.map +1 -1
- package/dist/utils/position.d.ts +0 -15
- package/dist/utils/position.d.ts.map +1 -1
- package/doc/README.md +15 -0
- package/mcp/catalog.snapshot.json +1398 -464
- package/package.json +7 -2
- package/dist/esm/hooks/useSwipeToClose.js +0 -66
- package/dist/hooks/useSwipeToClose.d.ts +0 -24
- package/dist/hooks/useSwipeToClose.d.ts.map +0 -1
package/dist/rich-text/index.js
CHANGED
|
@@ -30,6 +30,11 @@ function useLatestRef(value) {
|
|
|
30
30
|
return ref;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
// Internal (not exported). Grows an icon-only control to the 44×44 px minimum
|
|
34
|
+
// touch target (WCAG 2.5.5, Apple HIG) on coarse pointers only, so desktop
|
|
35
|
+
// layouts keep their compact size. Pair with inline-flex centering.
|
|
36
|
+
var TOUCH_TARGET = "[@media(pointer:coarse)]:min-h-11 [@media(pointer:coarse)]:min-w-11";
|
|
37
|
+
|
|
33
38
|
var isMac = typeof navigator !== "undefined" && /Mac|iPhone|iPad/.test(navigator.platform || "");
|
|
34
39
|
var shortcutLabel = function shortcutLabel(keys) {
|
|
35
40
|
return keys.replace("Mod", isMac ? "⌘" : "Ctrl").replace(/-/g, "+");
|
|
@@ -310,9 +315,23 @@ function LinkForm(_ref) {
|
|
|
310
315
|
});
|
|
311
316
|
}
|
|
312
317
|
var formButton = "h-8 rounded-md px-2 text-sm font-medium text-gray-700 hover:bg-gray-100 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 dark:text-gray-200 dark:hover:bg-gray-800";
|
|
318
|
+
// Keeps the editor selection when a toolbar button is pressed. `pointerdown`
|
|
319
|
+
// covers touch and pen (iOS drops the selection on a plain tap otherwise);
|
|
320
|
+
// `mousedown` stays for desktop browsers that move focus on mousedown even
|
|
321
|
+
// when pointerdown was cancelled.
|
|
322
|
+
var keepSelection = function keepSelection(e) {
|
|
323
|
+
return e.preventDefault();
|
|
324
|
+
};
|
|
325
|
+
/** `top` offset for a sticky toolbar: `true` → 0, a number → px, a string → any CSS length. */
|
|
326
|
+
function stickyTop(sticky) {
|
|
327
|
+
if (typeof sticky === "number") return "".concat(sticky, "px");
|
|
328
|
+
if (typeof sticky === "string" && sticky) return sticky;
|
|
329
|
+
return "0px";
|
|
330
|
+
}
|
|
313
331
|
/**
|
|
314
332
|
* A WAI-ARIA toolbar: one tab stop, arrow keys / Home / End move between the
|
|
315
|
-
* buttons (roving tabindex), toggles report `aria-pressed`.
|
|
333
|
+
* buttons (roving tabindex), toggles report `aria-pressed`. With `sticky` it
|
|
334
|
+
* stays pinned to the top of the scrolling page while the content scrolls.
|
|
316
335
|
*/
|
|
317
336
|
function RichTextToolbar(_ref2) {
|
|
318
337
|
var editor = _ref2.editor,
|
|
@@ -321,7 +340,9 @@ function RichTextToolbar(_ref2) {
|
|
|
321
340
|
disabled = _ref2.disabled,
|
|
322
341
|
controlsId = _ref2.controlsId,
|
|
323
342
|
_ref2$label = _ref2.label,
|
|
324
|
-
label = _ref2$label === void 0 ? "Formatting" : _ref2$label
|
|
343
|
+
label = _ref2$label === void 0 ? "Formatting" : _ref2$label,
|
|
344
|
+
_ref2$sticky = _ref2.sticky,
|
|
345
|
+
sticky = _ref2$sticky === void 0 ? false : _ref2$sticky;
|
|
325
346
|
var _useState5 = React.useState(0),
|
|
326
347
|
_useState6 = cn._slicedToArray(_useState5, 2),
|
|
327
348
|
focusIndex = _useState6[0],
|
|
@@ -370,7 +391,11 @@ function RichTextToolbar(_ref2) {
|
|
|
370
391
|
"aria-controls": controlsId,
|
|
371
392
|
"aria-orientation": "horizontal",
|
|
372
393
|
onKeyDown: onKeyDown,
|
|
373
|
-
|
|
394
|
+
"data-sticky": sticky ? "" : undefined,
|
|
395
|
+
style: sticky ? {
|
|
396
|
+
top: stickyTop(sticky)
|
|
397
|
+
} : undefined,
|
|
398
|
+
className: cn.cn("flex flex-wrap items-center gap-0.5 border-b border-line bg-background px-1 py-1", sticky && "sticky z-sticky"),
|
|
374
399
|
children: keys.map(function (key, i) {
|
|
375
400
|
var item = TOOLBAR_ITEMS[key];
|
|
376
401
|
var Icon = item.icon;
|
|
@@ -379,7 +404,7 @@ function RichTextToolbar(_ref2) {
|
|
|
379
404
|
var newGroup = i > 0 && TOOLBAR_ITEMS[keys[i - 1]].group !== item.group;
|
|
380
405
|
return jsxRuntime.jsxs(React__default.default.Fragment, {
|
|
381
406
|
children: [newGroup && jsxRuntime.jsx("span", {
|
|
382
|
-
className: "mx-1 h-5 w-px bg-
|
|
407
|
+
className: "mx-1 h-5 w-px bg-line",
|
|
383
408
|
"aria-hidden": "true"
|
|
384
409
|
}), jsxRuntime.jsx("button", {
|
|
385
410
|
ref: function ref(node) {
|
|
@@ -396,13 +421,12 @@ function RichTextToolbar(_ref2) {
|
|
|
396
421
|
onFocus: function onFocus() {
|
|
397
422
|
return setFocusIndex(i);
|
|
398
423
|
},
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
},
|
|
424
|
+
onPointerDown: keepSelection,
|
|
425
|
+
onMouseDown: keepSelection,
|
|
402
426
|
onClick: function onClick() {
|
|
403
427
|
return activate(key);
|
|
404
428
|
},
|
|
405
|
-
className: cn.cn("inline-flex h-8 w-8 items-center justify-center rounded-md text-
|
|
429
|
+
className: cn.cn("inline-flex h-8 w-8 items-center justify-center rounded-md text-muted transition-colors duration-fast motion-reduce:transition-none", TOUCH_TARGET, "hover:bg-muted/10 hover:text-foreground", "focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500", "disabled:cursor-not-allowed disabled:opacity-50", pressed && "bg-primary-100 text-primary-700 dark:bg-primary-900/40 dark:text-primary-300", unavailable && "opacity-40"),
|
|
406
430
|
children: jsxRuntime.jsx(Icon, {
|
|
407
431
|
className: "h-4 w-4",
|
|
408
432
|
"aria-hidden": "true"
|
|
@@ -419,7 +443,7 @@ function RichTextToolbar(_ref2) {
|
|
|
419
443
|
});
|
|
420
444
|
}
|
|
421
445
|
|
|
422
|
-
var _excluded = ["id", "className", "editorClassName", "label", "error", "helperText", "required", "disabled", "readOnly", "placeholder", "value", "defaultValue", "onChange", "outputFormat", "onFocus", "onBlur", "toolbar", "toolbarLabel", "minHeight", "maxHeight", "autoFocus", "extensions", "aria-label", "aria-describedby"];
|
|
446
|
+
var _excluded = ["id", "className", "editorClassName", "label", "error", "helperText", "required", "disabled", "readOnly", "placeholder", "value", "defaultValue", "onChange", "outputFormat", "onFocus", "onBlur", "toolbar", "toolbarLabel", "stickyToolbar", "minHeight", "maxHeight", "autoFocus", "extensions", "aria-label", "aria-describedby"];
|
|
423
447
|
// Tailwind's preflight strips list bullets, heading sizes, etc. These arbitrary
|
|
424
448
|
// variants restore readable defaults inside the editable area only.
|
|
425
449
|
var CONTENT_CLASSES = cn.cn("px-3 py-2 text-sm text-gray-900 focus:outline-none dark:text-gray-100", "[&_p]:my-1 [&_h1]:my-2 [&_h1]:text-2xl [&_h1]:font-bold [&_h2]:my-2 [&_h2]:text-xl [&_h2]:font-semibold [&_h3]:my-1.5 [&_h3]:text-lg [&_h3]:font-semibold", "[&_ul]:list-disc [&_ul]:pl-6 [&_ol]:list-decimal [&_ol]:pl-6 [&_li]:my-0.5", "[&_blockquote]:my-2 [&_blockquote]:border-l-4 [&_blockquote]:border-gray-300 [&_blockquote]:pl-3 [&_blockquote]:text-gray-600 dark:[&_blockquote]:border-gray-600 dark:[&_blockquote]:text-gray-300", "[&_code]:rounded [&_code]:bg-gray-100 [&_code]:px-1 [&_code]:font-mono [&_code]:text-[0.85em] dark:[&_code]:bg-gray-800", "[&_pre]:my-2 [&_pre]:rounded-md [&_pre]:bg-gray-100 [&_pre]:p-3 dark:[&_pre]:bg-gray-800 [&_pre_code]:bg-transparent [&_pre_code]:p-0", "[&_a]:text-primary-600 [&_a]:underline dark:[&_a]:text-primary-400 [&_hr]:my-3 [&_hr]:border-gray-200 dark:[&_hr]:border-gray-700");
|
|
@@ -456,6 +480,8 @@ var RichTextEditor = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
456
480
|
toolbar = _ref$toolbar === void 0 ? DEFAULT_TOOLBAR : _ref$toolbar,
|
|
457
481
|
_ref$toolbarLabel = _ref.toolbarLabel,
|
|
458
482
|
toolbarLabel = _ref$toolbarLabel === void 0 ? "Formatting" : _ref$toolbarLabel,
|
|
483
|
+
_ref$stickyToolbar = _ref.stickyToolbar,
|
|
484
|
+
stickyToolbar = _ref$stickyToolbar === void 0 ? false : _ref$stickyToolbar,
|
|
459
485
|
_ref$minHeight = _ref.minHeight,
|
|
460
486
|
minHeight = _ref$minHeight === void 0 ? 120 : _ref$minHeight,
|
|
461
487
|
maxHeight = _ref.maxHeight,
|
|
@@ -606,14 +632,18 @@ var RichTextEditor = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
606
632
|
children: "*"
|
|
607
633
|
})]
|
|
608
634
|
}), jsxRuntime.jsxs("div", {
|
|
609
|
-
className: cn.cn(
|
|
635
|
+
className: cn.cn(
|
|
636
|
+
// overflow-clip (not hidden) keeps the rounded corners without
|
|
637
|
+
// creating a scroll container, so a sticky toolbar can stick to the page.
|
|
638
|
+
stickyToolbar ? "overflow-clip" : "overflow-hidden", "rounded-md border bg-white dark:bg-gray-900", error ? "border-error-500" : "border-gray-300 dark:border-gray-600", disabled && "cursor-not-allowed opacity-50"),
|
|
610
639
|
children: [showToolbar && jsxRuntime.jsx(RichTextToolbar, {
|
|
611
640
|
editor: editor,
|
|
612
641
|
state: state,
|
|
613
642
|
items: items,
|
|
614
643
|
disabled: disabled,
|
|
615
644
|
controlsId: editorId,
|
|
616
|
-
label: toolbarLabel
|
|
645
|
+
label: toolbarLabel,
|
|
646
|
+
sticky: stickyToolbar
|
|
617
647
|
}), jsxRuntime.jsxs("div", {
|
|
618
648
|
className: cn.cn("relative overflow-y-auto focus-within:ring-2 focus-within:ring-inset", error ? "focus-within:ring-error-500" : "focus-within:ring-primary-500"),
|
|
619
649
|
style: {
|
package/dist/types/blocks.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ElementType, ReactNode } from 'react';
|
|
2
|
-
import type { BaseComponentProps } from './index';
|
|
1
|
+
import type { ElementType, HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
import type { BaseComponentProps, OverlayPresentation } from './index';
|
|
3
3
|
/** Semantic tone shared by StatCard and StatusPill. */
|
|
4
4
|
export type Tone = 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info';
|
|
5
5
|
export interface AppShellNavItem {
|
|
@@ -26,6 +26,11 @@ export interface AppShellProps extends BaseComponentProps {
|
|
|
26
26
|
pageTitle?: string;
|
|
27
27
|
/** Element used for nav links, e.g. Next.js `Link`. Defaults to `a`. */
|
|
28
28
|
linkAs?: ElementType;
|
|
29
|
+
/**
|
|
30
|
+
* Bottom navigation for phones, usually a `<FootNav>`. Rendered below `md` only (the sidebar
|
|
31
|
+
* takes over on desktop); a `FootNav.Spacer` is added after the content so nothing hides under it.
|
|
32
|
+
*/
|
|
33
|
+
bottomNav?: ReactNode;
|
|
29
34
|
children?: ReactNode;
|
|
30
35
|
}
|
|
31
36
|
export interface PageHeaderProps extends BaseComponentProps {
|
|
@@ -33,6 +38,11 @@ export interface PageHeaderProps extends BaseComponentProps {
|
|
|
33
38
|
subtitle?: ReactNode;
|
|
34
39
|
/** Buttons on the right. Keep one primary action per page. */
|
|
35
40
|
actions?: ReactNode;
|
|
41
|
+
/**
|
|
42
|
+
* Where `actions` go. `'inline'` (default): next to the title. `'bottom'`: pinned in a
|
|
43
|
+
* `BottomActionBar` on phones (coarse pointer, ≤639px), inline on desktop and on the server.
|
|
44
|
+
*/
|
|
45
|
+
actionsPlacement?: 'inline' | 'bottom';
|
|
36
46
|
/** Back link for detail pages. */
|
|
37
47
|
back?: {
|
|
38
48
|
href: string;
|
|
@@ -40,6 +50,22 @@ export interface PageHeaderProps extends BaseComponentProps {
|
|
|
40
50
|
};
|
|
41
51
|
linkAs?: ElementType;
|
|
42
52
|
}
|
|
53
|
+
export interface BottomActionBarProps extends BaseComponentProps, Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'style' | 'id' | 'children'> {
|
|
54
|
+
/** The actions, usually one or two `Button`s; the primary action goes last. */
|
|
55
|
+
children?: ReactNode;
|
|
56
|
+
/** `'fixed'` (default): pinned to the bottom of the screen; pair with `BottomActionBar.Spacer`. `'sticky'`: sticks at the bottom of its scroll container and keeps its place in the flow. */
|
|
57
|
+
position?: 'fixed' | 'sticky';
|
|
58
|
+
/** Horizontal alignment of the actions. Defaults to `'end'`. */
|
|
59
|
+
align?: 'start' | 'center' | 'end' | 'between';
|
|
60
|
+
/** Below `sm`, actions share the row's width equally. */
|
|
61
|
+
fullWidth?: boolean;
|
|
62
|
+
/** Below `sm`, actions stack full-width with the last (primary) one on top. */
|
|
63
|
+
stackOnMobile?: boolean;
|
|
64
|
+
/** Rise above the on-screen keyboard (via `window.visualViewport`). Defaults to `true`. */
|
|
65
|
+
keyboardAware?: boolean;
|
|
66
|
+
}
|
|
67
|
+
/** `BottomActionBar.Spacer`: reserves the fixed bar's measured height so content isn't hidden behind it. */
|
|
68
|
+
export type BottomActionBarSpacerProps = BaseComponentProps;
|
|
43
69
|
export interface StatCardChange {
|
|
44
70
|
value: number;
|
|
45
71
|
/** e.g. "vs last week". */
|
|
@@ -105,5 +131,9 @@ export interface ConfirmDialogProps extends BaseComponentProps {
|
|
|
105
131
|
loading?: boolean;
|
|
106
132
|
onConfirm: () => void;
|
|
107
133
|
onCancel: () => void;
|
|
134
|
+
/** Same as Dialog: `'auto'` (default), `'popover'` (centred) or `'sheet'`. */
|
|
135
|
+
presentation?: OverlayPresentation;
|
|
136
|
+
/** Opt-in vibration: `warning` when it opens with `destructive`, `success` on confirm. */
|
|
137
|
+
haptics?: boolean;
|
|
108
138
|
}
|
|
109
139
|
//# sourceMappingURL=blocks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../src/types/blocks.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../src/types/blocks.ts"],"names":[],"mappings":"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"}
|