tempest-react-sdk 0.25.0 → 0.26.1
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 +14 -1
- package/bin/lib/alias/collect.mjs +94 -0
- package/bin/lib/alias/collect.test.mjs +95 -0
- package/bin/lib/alias/discover.mjs +77 -0
- package/bin/lib/alias/discover.test.mjs +189 -0
- package/bin/lib/alias/index.mjs +88 -0
- package/bin/lib/alias/index.test.mjs +138 -0
- package/bin/lib/alias/rewrite-css.mjs +76 -0
- package/bin/lib/alias/rewrite-css.test.mjs +85 -0
- package/bin/lib/alias/rewrite.mjs +141 -0
- package/bin/lib/alias/rewrite.test.mjs +148 -0
- package/bin/lib/alias/specifier.mjs +49 -0
- package/bin/lib/alias/specifier.test.mjs +85 -0
- package/bin/lib/alias/tsconfig.mjs +116 -0
- package/bin/lib/alias/typescript.mjs +23 -0
- package/bin/lib/doctor/lucide.mjs +74 -0
- package/bin/lib/doctor/lucide.test.mjs +107 -0
- package/bin/lib/icons/generate.mjs +156 -0
- package/bin/lib/icons/generate.test.mjs +125 -0
- package/bin/tempest.mjs +174 -13
- package/dist/audio/use-audio.cjs +1 -1
- package/dist/audio/use-audio.cjs.map +1 -1
- package/dist/audio/use-audio.js +12 -12
- package/dist/audio/use-audio.js.map +1 -1
- package/dist/charts/palette.cjs +1 -1
- package/dist/charts/palette.cjs.map +1 -1
- package/dist/charts/palette.js +2 -2
- package/dist/charts/palette.js.map +1 -1
- package/dist/charts.d.ts +5 -3
- package/dist/components/ClickOutside/ClickOutside.cjs +1 -1
- package/dist/components/ClickOutside/ClickOutside.cjs.map +1 -1
- package/dist/components/ClickOutside/ClickOutside.js +3 -1
- package/dist/components/ClickOutside/ClickOutside.js.map +1 -1
- package/dist/components/DataTable/DataTable.cjs +1 -1
- package/dist/components/DataTable/DataTable.cjs.map +1 -1
- package/dist/components/DataTable/DataTable.js +21 -23
- package/dist/components/DataTable/DataTable.js.map +1 -1
- package/dist/components/Kanban/Kanban.cjs +2 -0
- package/dist/components/Kanban/Kanban.cjs.map +1 -0
- package/dist/components/Kanban/Kanban.js +102 -0
- package/dist/components/Kanban/Kanban.js.map +1 -0
- package/dist/components/Kanban/Kanban.module.cjs +2 -0
- package/dist/components/Kanban/Kanban.module.cjs.map +1 -0
- package/dist/components/Kanban/Kanban.module.js +19 -0
- package/dist/components/Kanban/Kanban.module.js.map +1 -0
- package/dist/components/NotificationCenter/NotificationCenter.cjs +2 -0
- package/dist/components/NotificationCenter/NotificationCenter.cjs.map +1 -0
- package/dist/components/NotificationCenter/NotificationCenter.js +83 -0
- package/dist/components/NotificationCenter/NotificationCenter.js.map +1 -0
- package/dist/components/NotificationCenter/NotificationCenter.module.cjs +2 -0
- package/dist/components/NotificationCenter/NotificationCenter.module.cjs.map +1 -0
- package/dist/components/NotificationCenter/NotificationCenter.module.js +21 -0
- package/dist/components/NotificationCenter/NotificationCenter.module.js.map +1 -0
- package/dist/components/NotificationCenter/use-notification-inbox.cjs +2 -0
- package/dist/components/NotificationCenter/use-notification-inbox.cjs.map +1 -0
- package/dist/components/NotificationCenter/use-notification-inbox.js +63 -0
- package/dist/components/NotificationCenter/use-notification-inbox.js.map +1 -0
- package/dist/components/RefreshIndicator/RefreshIndicator.cjs +1 -1
- package/dist/components/RefreshIndicator/RefreshIndicator.cjs.map +1 -1
- package/dist/components/RefreshIndicator/RefreshIndicator.js +17 -17
- package/dist/components/RefreshIndicator/RefreshIndicator.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.cjs +1 -1
- package/dist/components/Tooltip/Tooltip.cjs.map +1 -1
- package/dist/components/Tooltip/Tooltip.js +26 -20
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/VirtualTable/VirtualTable.cjs +2 -0
- package/dist/components/VirtualTable/VirtualTable.cjs.map +1 -0
- package/dist/components/VirtualTable/VirtualTable.js +116 -0
- package/dist/components/VirtualTable/VirtualTable.js.map +1 -0
- package/dist/components/VirtualTable/VirtualTable.module.cjs +2 -0
- package/dist/components/VirtualTable/VirtualTable.module.cjs.map +1 -0
- package/dist/components/VirtualTable/VirtualTable.module.js +20 -0
- package/dist/components/VirtualTable/VirtualTable.module.js.map +1 -0
- package/dist/components/Wizard/Wizard.cjs +1 -1
- package/dist/components/Wizard/Wizard.cjs.map +1 -1
- package/dist/components/Wizard/Wizard.js +53 -53
- package/dist/components/Wizard/Wizard.js.map +1 -1
- package/dist/geo/use-position-tracker.cjs +1 -1
- package/dist/geo/use-position-tracker.cjs.map +1 -1
- package/dist/geo/use-position-tracker.js +3 -1
- package/dist/geo/use-position-tracker.js.map +1 -1
- package/dist/hooks/use-async.cjs +1 -1
- package/dist/hooks/use-async.cjs.map +1 -1
- package/dist/hooks/use-async.js +3 -1
- package/dist/hooks/use-async.js.map +1 -1
- package/dist/hooks/use-click-outside.cjs +1 -1
- package/dist/hooks/use-click-outside.cjs.map +1 -1
- package/dist/hooks/use-click-outside.js +3 -1
- package/dist/hooks/use-click-outside.js.map +1 -1
- package/dist/hooks/use-deep-memo.cjs.map +1 -1
- package/dist/hooks/use-deep-memo.js.map +1 -1
- package/dist/hooks/use-event-listener.cjs +1 -1
- package/dist/hooks/use-event-listener.cjs.map +1 -1
- package/dist/hooks/use-event-listener.js +3 -1
- package/dist/hooks/use-event-listener.js.map +1 -1
- package/dist/hooks/use-interval.cjs +1 -1
- package/dist/hooks/use-interval.cjs.map +1 -1
- package/dist/hooks/use-interval.js +3 -1
- package/dist/hooks/use-interval.js.map +1 -1
- package/dist/hooks/use-is-first-render.cjs.map +1 -1
- package/dist/hooks/use-is-first-render.js.map +1 -1
- package/dist/hooks/use-long-press-handlers.cjs +1 -1
- package/dist/hooks/use-long-press-handlers.cjs.map +1 -1
- package/dist/hooks/use-long-press-handlers.js +25 -23
- package/dist/hooks/use-long-press-handlers.js.map +1 -1
- package/dist/hooks/use-long-press.cjs +1 -1
- package/dist/hooks/use-long-press.cjs.map +1 -1
- package/dist/hooks/use-long-press.js +3 -1
- package/dist/hooks/use-long-press.js.map +1 -1
- package/dist/hooks/use-online.cjs +1 -1
- package/dist/hooks/use-online.cjs.map +1 -1
- package/dist/hooks/use-online.js +6 -4
- package/dist/hooks/use-online.js.map +1 -1
- package/dist/hooks/use-previous.cjs.map +1 -1
- package/dist/hooks/use-previous.js.map +1 -1
- package/dist/hooks/use-service-worker-update.cjs +1 -1
- package/dist/hooks/use-service-worker-update.cjs.map +1 -1
- package/dist/hooks/use-service-worker-update.js +3 -1
- package/dist/hooks/use-service-worker-update.js.map +1 -1
- package/dist/hooks/use-sortable.cjs +2 -0
- package/dist/hooks/use-sortable.cjs.map +1 -0
- package/dist/hooks/use-sortable.js +169 -0
- package/dist/hooks/use-sortable.js.map +1 -0
- package/dist/hooks/use-stable-callback.cjs.map +1 -1
- package/dist/hooks/use-stable-callback.js.map +1 -1
- package/dist/hooks/use-timeout.cjs +1 -1
- package/dist/hooks/use-timeout.cjs.map +1 -1
- package/dist/hooks/use-timeout.js +3 -1
- package/dist/hooks/use-timeout.js.map +1 -1
- package/dist/icons/Icon.cjs +2 -0
- package/dist/icons/Icon.cjs.map +1 -0
- package/dist/icons/Icon.js +24 -0
- package/dist/icons/Icon.js.map +1 -0
- package/dist/icons/IconProvider.cjs +2 -0
- package/dist/icons/IconProvider.cjs.map +1 -0
- package/dist/icons/IconProvider.js +24 -0
- package/dist/icons/IconProvider.js.map +1 -0
- package/dist/icons/generated/aliases.cjs +2 -0
- package/dist/icons/generated/aliases.cjs.map +1 -0
- package/dist/icons/generated/aliases.js +255 -0
- package/dist/icons/generated/aliases.js.map +1 -0
- package/dist/icons/generated/icon-names.cjs +2 -0
- package/dist/icons/generated/icon-names.cjs.map +1 -0
- package/dist/icons/generated/icon-names.js +6 -0
- package/dist/icons/generated/icon-names.js.map +1 -0
- package/dist/icons/generated/loaders.cjs +2 -0
- package/dist/icons/generated/loaders.cjs.map +1 -0
- package/dist/icons/generated/loaders.js +32 -0
- package/dist/icons/generated/loaders.js.map +1 -0
- package/dist/icons/generated/shard-a.cjs +2 -0
- package/dist/icons/generated/shard-a.cjs.map +1 -0
- package/dist/icons/generated/shard-a.js +114 -0
- package/dist/icons/generated/shard-a.js.map +1 -0
- package/dist/icons/generated/shard-b.cjs +2 -0
- package/dist/icons/generated/shard-b.cjs.map +1 -0
- package/dist/icons/generated/shard-b.js +156 -0
- package/dist/icons/generated/shard-b.js.map +1 -0
- package/dist/icons/generated/shard-c.cjs +2 -0
- package/dist/icons/generated/shard-c.cjs.map +1 -0
- package/dist/icons/generated/shard-c.js +269 -0
- package/dist/icons/generated/shard-c.js.map +1 -0
- package/dist/icons/generated/shard-d.cjs +2 -0
- package/dist/icons/generated/shard-d.cjs.map +1 -0
- package/dist/icons/generated/shard-d.js +62 -0
- package/dist/icons/generated/shard-d.js.map +1 -0
- package/dist/icons/generated/shard-e.cjs +2 -0
- package/dist/icons/generated/shard-e.cjs.map +1 -0
- package/dist/icons/generated/shard-e.js +32 -0
- package/dist/icons/generated/shard-e.js.map +1 -0
- package/dist/icons/generated/shard-f.cjs +2 -0
- package/dist/icons/generated/shard-f.cjs.map +1 -0
- package/dist/icons/generated/shard-f.js +139 -0
- package/dist/icons/generated/shard-f.js.map +1 -0
- package/dist/icons/generated/shard-g.cjs +2 -0
- package/dist/icons/generated/shard-g.cjs.map +1 -0
- package/dist/icons/generated/shard-g.js +61 -0
- package/dist/icons/generated/shard-g.js.map +1 -0
- package/dist/icons/generated/shard-h.cjs +2 -0
- package/dist/icons/generated/shard-h.cjs.map +1 -0
- package/dist/icons/generated/shard-h.js +63 -0
- package/dist/icons/generated/shard-h.js.map +1 -0
- package/dist/icons/generated/shard-i.cjs +2 -0
- package/dist/icons/generated/shard-i.cjs.map +1 -0
- package/dist/icons/generated/shard-i.js +30 -0
- package/dist/icons/generated/shard-i.js.map +1 -0
- package/dist/icons/generated/shard-j.cjs +2 -0
- package/dist/icons/generated/shard-j.cjs.map +1 -0
- package/dist/icons/generated/shard-j.js +10 -0
- package/dist/icons/generated/shard-j.js.map +1 -0
- package/dist/icons/generated/shard-k.cjs +2 -0
- package/dist/icons/generated/shard-k.cjs.map +1 -0
- package/dist/icons/generated/shard-k.js +16 -0
- package/dist/icons/generated/shard-k.js.map +1 -0
- package/dist/icons/generated/shard-l.cjs +2 -0
- package/dist/icons/generated/shard-l.cjs.map +1 -0
- package/dist/icons/generated/shard-l.js +88 -0
- package/dist/icons/generated/shard-l.js.map +1 -0
- package/dist/icons/generated/shard-m.cjs +2 -0
- package/dist/icons/generated/shard-m.cjs.map +1 -0
- package/dist/icons/generated/shard-m.js +140 -0
- package/dist/icons/generated/shard-m.js.map +1 -0
- package/dist/icons/generated/shard-n.cjs +2 -0
- package/dist/icons/generated/shard-n.cjs.map +1 -0
- package/dist/icons/generated/shard-n.js +24 -0
- package/dist/icons/generated/shard-n.js.map +1 -0
- package/dist/icons/generated/shard-o.cjs +2 -0
- package/dist/icons/generated/shard-o.cjs.map +1 -0
- package/dist/icons/generated/shard-o.js +17 -0
- package/dist/icons/generated/shard-o.js.map +1 -0
- package/dist/icons/generated/shard-p.cjs +2 -0
- package/dist/icons/generated/shard-p.cjs.map +1 -0
- package/dist/icons/generated/shard-p.js +115 -0
- package/dist/icons/generated/shard-p.js.map +1 -0
- package/dist/icons/generated/shard-q.cjs +2 -0
- package/dist/icons/generated/shard-q.cjs.map +1 -0
- package/dist/icons/generated/shard-q.js +10 -0
- package/dist/icons/generated/shard-q.js.map +1 -0
- package/dist/icons/generated/shard-r.cjs +2 -0
- package/dist/icons/generated/shard-r.cjs.map +1 -0
- package/dist/icons/generated/shard-r.js +77 -0
- package/dist/icons/generated/shard-r.js.map +1 -0
- package/dist/icons/generated/shard-s.cjs +2 -0
- package/dist/icons/generated/shard-s.cjs.map +1 -0
- package/dist/icons/generated/shard-s.js +255 -0
- package/dist/icons/generated/shard-s.js.map +1 -0
- package/dist/icons/generated/shard-t.cjs +2 -0
- package/dist/icons/generated/shard-t.cjs.map +1 -0
- package/dist/icons/generated/shard-t.js +109 -0
- package/dist/icons/generated/shard-t.js.map +1 -0
- package/dist/icons/generated/shard-u.cjs +2 -0
- package/dist/icons/generated/shard-u.cjs.map +1 -0
- package/dist/icons/generated/shard-u.js +49 -0
- package/dist/icons/generated/shard-u.js.map +1 -0
- package/dist/icons/generated/shard-v.cjs +2 -0
- package/dist/icons/generated/shard-v.cjs.map +1 -0
- package/dist/icons/generated/shard-v.js +30 -0
- package/dist/icons/generated/shard-v.js.map +1 -0
- package/dist/icons/generated/shard-w.cjs +2 -0
- package/dist/icons/generated/shard-w.cjs.map +1 -0
- package/dist/icons/generated/shard-w.js +48 -0
- package/dist/icons/generated/shard-w.js.map +1 -0
- package/dist/icons/generated/shard-x.cjs +2 -0
- package/dist/icons/generated/shard-x.cjs.map +1 -0
- package/dist/icons/generated/shard-x.js +10 -0
- package/dist/icons/generated/shard-x.js.map +1 -0
- package/dist/icons/generated/shard-z.cjs +2 -0
- package/dist/icons/generated/shard-z.cjs.map +1 -0
- package/dist/icons/generated/shard-z.js +25 -0
- package/dist/icons/generated/shard-z.js.map +1 -0
- package/dist/icons/icon-context.cjs +2 -0
- package/dist/icons/icon-context.cjs.map +1 -0
- package/dist/icons/icon-context.js +13 -0
- package/dist/icons/icon-context.js.map +1 -0
- package/dist/icons/is-icon-name.cjs +2 -0
- package/dist/icons/is-icon-name.cjs.map +1 -0
- package/dist/icons/is-icon-name.js +10 -0
- package/dist/icons/is-icon-name.js.map +1 -0
- package/dist/icons/shard-cache.cjs +2 -0
- package/dist/icons/shard-cache.cjs.map +1 -0
- package/dist/icons/shard-cache.js +41 -0
- package/dist/icons/shard-cache.js.map +1 -0
- package/dist/icons/use-icon.cjs +2 -0
- package/dist/icons/use-icon.cjs.map +1 -0
- package/dist/icons/use-icon.js +20 -0
- package/dist/icons/use-icon.js.map +1 -0
- package/dist/icons-virtual.d.ts +22 -0
- package/dist/icons.cjs +1 -0
- package/dist/icons.d.ts +220 -0
- package/dist/icons.js +9 -0
- package/dist/offline/use-offline-sync.cjs +1 -1
- package/dist/offline/use-offline-sync.cjs.map +1 -1
- package/dist/offline/use-offline-sync.js +3 -1
- package/dist/offline/use-offline-sync.js.map +1 -1
- package/dist/push/use-push-subscription.cjs +1 -1
- package/dist/push/use-push-subscription.cjs.map +1 -1
- package/dist/push/use-push-subscription.js +3 -1
- package/dist/push/use-push-subscription.js.map +1 -1
- package/dist/sse/use-event-stream.cjs +1 -1
- package/dist/sse/use-event-stream.cjs.map +1 -1
- package/dist/sse/use-event-stream.js +3 -1
- package/dist/sse/use-event-stream.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/tempest-react-sdk.cjs +1 -1
- package/dist/tempest-react-sdk.d.ts +585 -3
- package/dist/tempest-react-sdk.js +189 -183
- package/dist/theme/ThemeProvider.cjs +1 -1
- package/dist/theme/ThemeProvider.cjs.map +1 -1
- package/dist/theme/ThemeProvider.js +6 -2
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/color.cjs +1 -1
- package/dist/theme/color.cjs.map +1 -1
- package/dist/theme/color.js +77 -46
- package/dist/theme/color.js.map +1 -1
- package/dist/theme/create-theme.cjs +1 -1
- package/dist/theme/create-theme.cjs.map +1 -1
- package/dist/theme/create-theme.js +9 -3
- package/dist/theme/create-theme.js.map +1 -1
- package/dist/utils/compare-values.cjs +2 -0
- package/dist/utils/compare-values.cjs.map +1 -0
- package/dist/utils/compare-values.js +8 -0
- package/dist/utils/compare-values.js.map +1 -0
- package/dist/vision/use-camera-stream.cjs +1 -1
- package/dist/vision/use-camera-stream.cjs.map +1 -1
- package/dist/vision/use-camera-stream.js +3 -1
- package/dist/vision/use-camera-stream.js.map +1 -1
- package/dist/vite/create-vite-config.cjs +1 -1
- package/dist/vite/create-vite-config.cjs.map +1 -1
- package/dist/vite/create-vite-config.js +30 -22
- package/dist/vite/create-vite-config.js.map +1 -1
- package/dist/vite/tempest-icons.cjs +9 -0
- package/dist/vite/tempest-icons.cjs.map +1 -0
- package/dist/vite/tempest-icons.js +99 -0
- package/dist/vite/tempest-icons.js.map +1 -0
- package/dist/vite.cjs +1 -1
- package/dist/vite.d.ts +79 -0
- package/dist/vite.js +6 -5
- package/dist/ws/use-web-socket.cjs +1 -1
- package/dist/ws/use-web-socket.cjs.map +1 -1
- package/dist/ws/use-web-socket.js +3 -1
- package/dist/ws/use-web-socket.js.map +1 -1
- package/package.json +12 -3
- package/template/package.json +1 -1
|
@@ -32,6 +32,7 @@ import { InfiniteData } from '@tanstack/react-query';
|
|
|
32
32
|
import { InputEventHandler } from 'react';
|
|
33
33
|
import { InputHTMLAttributes } from 'react';
|
|
34
34
|
import { JSX } from 'react';
|
|
35
|
+
import { KeyboardEvent as KeyboardEvent_2 } from 'react';
|
|
35
36
|
import { KeyboardEventHandler } from 'react';
|
|
36
37
|
import { LabelHTMLAttributes } from 'react';
|
|
37
38
|
import { lazy } from 'react';
|
|
@@ -46,6 +47,7 @@ import { Outlet } from 'react-router';
|
|
|
46
47
|
import { Params } from 'react-router';
|
|
47
48
|
import { Path } from 'react-hook-form';
|
|
48
49
|
import { PersistOptions } from 'zustand/middleware';
|
|
50
|
+
import { PointerEvent as PointerEvent_2 } from 'react';
|
|
49
51
|
import { PointerEventHandler } from 'react';
|
|
50
52
|
import { QueryClient } from '@tanstack/react-query';
|
|
51
53
|
import { QueryKey } from '@tanstack/react-query';
|
|
@@ -304,6 +306,24 @@ export declare interface AppBarProps extends Omit<HTMLAttributes<HTMLElement>, "
|
|
|
304
306
|
|
|
305
307
|
export declare type AppBarTone = "surface" | "primary" | "transparent";
|
|
306
308
|
|
|
309
|
+
/**
|
|
310
|
+
* Apply a {@link KanbanMove} to a column list, returning new arrays.
|
|
311
|
+
*
|
|
312
|
+
* Exported because every consumer needs the same reducer.
|
|
313
|
+
*
|
|
314
|
+
* `toIndex` is the position of the card that was dropped **onto**, read from the
|
|
315
|
+
* board as it looked before the move. Inserting at that same index *after* removing
|
|
316
|
+
* the dragged card lands where the user aimed in both directions — moving down, the
|
|
317
|
+
* removal shifts the target up by one and the insertion lands after it; moving up,
|
|
318
|
+
* nothing shifted. Compensating for the shift (the "obvious" `toIndex - 1`) is what
|
|
319
|
+
* turns a one-step move down into a no-op.
|
|
320
|
+
*
|
|
321
|
+
* @param columns - Current board.
|
|
322
|
+
* @param move - The move reported by `onMove`.
|
|
323
|
+
* @returns A new column list, or the same reference when the move cannot apply.
|
|
324
|
+
*/
|
|
325
|
+
export declare function applyKanbanMove(columns: KanbanColumn[], move: KanbanMove): KanbanColumn[];
|
|
326
|
+
|
|
307
327
|
/**
|
|
308
328
|
* Install a generated theme (or raw CSS) into the document.
|
|
309
329
|
*
|
|
@@ -1221,6 +1241,30 @@ export declare interface CollapsibleProps extends HTMLAttributes<HTMLDivElement>
|
|
|
1221
1241
|
/** A generated tint scale, keyed by step. */
|
|
1222
1242
|
export declare type ColorScale = Record<ScaleStep, string>;
|
|
1223
1243
|
|
|
1244
|
+
/** Options for {@link createColorScale}. */
|
|
1245
|
+
declare interface ColorScaleOptions {
|
|
1246
|
+
/**
|
|
1247
|
+
* Pin step `500` to the input color's exact lightness. Default `true`.
|
|
1248
|
+
*
|
|
1249
|
+
* Right for a **brand** color: the hex a designer hands over is the one the
|
|
1250
|
+
* buttons must be. Wrong for a **neutral**: nobody checks that `gray-500` is
|
|
1251
|
+
* exactly the input, while everybody notices that a surface stopped being
|
|
1252
|
+
* near-white — anchoring rescales both halves around the input and compresses
|
|
1253
|
+
* exactly the range a neutral needs wide. With `false`, the ramp keeps the
|
|
1254
|
+
* tuned lightness curve and the input only contributes hue and chroma (a warm
|
|
1255
|
+
* or cool neutral, as asked).
|
|
1256
|
+
*/
|
|
1257
|
+
anchor?: boolean;
|
|
1258
|
+
/**
|
|
1259
|
+
* Use the neutral lightness curve instead of the brand one. Default `false`.
|
|
1260
|
+
*
|
|
1261
|
+
* The neutral curve is wider at both ends, which is what keeps
|
|
1262
|
+
* `text-muted`-on-`surface-3` above AA. Implies the ramp is meant for
|
|
1263
|
+
* surfaces, borders and text rather than for an action color.
|
|
1264
|
+
*/
|
|
1265
|
+
neutral?: boolean;
|
|
1266
|
+
}
|
|
1267
|
+
|
|
1224
1268
|
/**
|
|
1225
1269
|
* Combobox — text input with a filterable dropdown of options.
|
|
1226
1270
|
*
|
|
@@ -1289,6 +1333,25 @@ export declare interface CommandProps {
|
|
|
1289
1333
|
className?: string;
|
|
1290
1334
|
}
|
|
1291
1335
|
|
|
1336
|
+
/**
|
|
1337
|
+
* Compare two arbitrary cell values with stable, type-aware ordering.
|
|
1338
|
+
*
|
|
1339
|
+
* The comparator every table in the SDK sorts with, so `DataTable` and
|
|
1340
|
+
* `VirtualTable` agree on what "sorted" means. The type-aware branches exist
|
|
1341
|
+
* because the naive `String(a) < String(b)` gets the two most common cases wrong:
|
|
1342
|
+
* numbers would sort `10` before `9`, and dates would sort by their formatted
|
|
1343
|
+
* text. Strings fall back to `localeCompare` with `numeric: true`, so `"item 2"`
|
|
1344
|
+
* lands before `"item 10"`.
|
|
1345
|
+
*
|
|
1346
|
+
* `null` and `undefined` sort first, together — a missing value is not smaller
|
|
1347
|
+
* than another missing value.
|
|
1348
|
+
*
|
|
1349
|
+
* @param a - First value.
|
|
1350
|
+
* @param b - Second value.
|
|
1351
|
+
* @returns Negative when `a < b`, positive when `a > b`, zero when equal.
|
|
1352
|
+
*/
|
|
1353
|
+
export declare function compareValues(a: unknown, b: unknown): number;
|
|
1354
|
+
|
|
1292
1355
|
/**
|
|
1293
1356
|
* Conditionally wraps its children with `wrapper`.
|
|
1294
1357
|
*
|
|
@@ -1503,7 +1566,7 @@ export declare interface CreateAuthStoreOptions<TUser> {
|
|
|
1503
1566
|
}
|
|
1504
1567
|
|
|
1505
1568
|
/**
|
|
1506
|
-
* Build a ten-step tint scale from a single
|
|
1569
|
+
* Build a ten-step tint scale from a single color.
|
|
1507
1570
|
*
|
|
1508
1571
|
* The input color's hue is kept throughout and its chroma sets the intensity of
|
|
1509
1572
|
* the whole ramp, so a muted brand color yields a muted scale instead of being
|
|
@@ -1512,8 +1575,9 @@ export declare interface CreateAuthStoreOptions<TUser> {
|
|
|
1512
1575
|
* @param hex - Any hex color (`#abc` or `#aabbcc`), the intended `500` step.
|
|
1513
1576
|
* @param mode - `"light"` for a light→dark ramp, `"dark"` for the inverted ramp
|
|
1514
1577
|
* used under `[data-tempest-theme="dark"]`.
|
|
1578
|
+
* @param options - See {@link ColorScaleOptions}.
|
|
1515
1579
|
*/
|
|
1516
|
-
export declare function createColorScale(hex: string, mode?: "light" | "dark"): ColorScale;
|
|
1580
|
+
export declare function createColorScale(hex: string, mode?: "light" | "dark", options?: ColorScaleOptions): ColorScale;
|
|
1517
1581
|
|
|
1518
1582
|
/**
|
|
1519
1583
|
* Create a {@link DataProvider} bound to an {@link ApiClient}.
|
|
@@ -3969,6 +4033,109 @@ export declare function isValidLatitude(value: number): boolean;
|
|
|
3969
4033
|
/** True when `value` is a finite longitude in `[-180, 180]`. */
|
|
3970
4034
|
export declare function isValidLongitude(value: number): boolean;
|
|
3971
4035
|
|
|
4036
|
+
/**
|
|
4037
|
+
* Kanban board: columns of cards, reorderable within a column and movable across
|
|
4038
|
+
* columns, by pointer **or** keyboard.
|
|
4039
|
+
*
|
|
4040
|
+
* The drag machine is `useSortable` — the board does not reimplement it. Cards are
|
|
4041
|
+
* indexed globally across columns so a single sortable can span the whole board;
|
|
4042
|
+
* the component translates that flat index back into `{ column, index }` for
|
|
4043
|
+
* `onMove`, which is the shape an app actually needs.
|
|
4044
|
+
*
|
|
4045
|
+
* Nothing is mutated here: `onMove` reports the intent once and the parent applies
|
|
4046
|
+
* it. That keeps the board a controlled value and avoids a re-render per pointer
|
|
4047
|
+
* frame.
|
|
4048
|
+
*
|
|
4049
|
+
* ARIA shape: **one `listbox` per column**, named by the column title, containing
|
|
4050
|
+
* only `option` cards. A single board-wide listbox does not survive the markup a
|
|
4051
|
+
* board needs — `listbox` requires `option`/`group` children, and the column header
|
|
4052
|
+
* and card wrapper in between break that ownership. Per-column listboxes also read
|
|
4053
|
+
* better: a screen reader announces which column it is in and how many cards it
|
|
4054
|
+
* holds. The column header is a plain `div`, not a `<header>`, because outside a
|
|
4055
|
+
* sectioning element every `<header>` becomes a page-level banner landmark — with
|
|
4056
|
+
* three columns that is three duplicate banners. An **empty** column is not marked
|
|
4057
|
+
* as a listbox at all: a listbox with zero options fails `aria-required-children`,
|
|
4058
|
+
* and "no cards" is exactly zero options.
|
|
4059
|
+
*
|
|
4060
|
+
* Known limitation: a **keyboard** move can only target positions that hold a card,
|
|
4061
|
+
* because the move walks the flat index space of existing cards. Dropping into an
|
|
4062
|
+
* empty column works by pointer; by keyboard it does not. Moving a card to a column
|
|
4063
|
+
* that already has one card, then reordering, is the workaround until column-switch
|
|
4064
|
+
* keys land.
|
|
4065
|
+
*
|
|
4066
|
+
* @example
|
|
4067
|
+
* ```tsx
|
|
4068
|
+
* const [columns, setColumns] = useState<KanbanColumn[]>([
|
|
4069
|
+
* { id: "todo", title: "A fazer", cards: [{ id: "1", content: "Corrigir login" }] },
|
|
4070
|
+
* { id: "doing", title: "Fazendo", cards: [] },
|
|
4071
|
+
* { id: "done", title: "Feito", cards: [], locked: true },
|
|
4072
|
+
* ]);
|
|
4073
|
+
*
|
|
4074
|
+
* <Kanban
|
|
4075
|
+
* columns={columns}
|
|
4076
|
+
* onMove={({ cardId, fromColumn, toColumn, toIndex }) =>
|
|
4077
|
+
* setColumns((current) => applyKanbanMove(current, { cardId, fromColumn, toColumn, toIndex }))
|
|
4078
|
+
* }
|
|
4079
|
+
* />
|
|
4080
|
+
* ```
|
|
4081
|
+
*/
|
|
4082
|
+
export declare function Kanban({ columns, onMove, renderCard, emptyLabel, cardRoleDescription, label, disabled, className, }: KanbanProps): JSX.Element;
|
|
4083
|
+
|
|
4084
|
+
/** One card on the board. */
|
|
4085
|
+
export declare interface KanbanCard {
|
|
4086
|
+
/** Stable identifier, unique across the whole board. */
|
|
4087
|
+
id: string;
|
|
4088
|
+
/** Card body. A string renders as the card's title. */
|
|
4089
|
+
content: ReactNode;
|
|
4090
|
+
}
|
|
4091
|
+
|
|
4092
|
+
/** One column of the board. */
|
|
4093
|
+
export declare interface KanbanColumn {
|
|
4094
|
+
/** Stable identifier, used as the drop group. */
|
|
4095
|
+
id: string;
|
|
4096
|
+
/** Column heading. */
|
|
4097
|
+
title: ReactNode;
|
|
4098
|
+
/** Cards in display order. */
|
|
4099
|
+
cards: KanbanCard[];
|
|
4100
|
+
/**
|
|
4101
|
+
* Refuses drops into this column. The cards inside can still be picked up and
|
|
4102
|
+
* moved elsewhere — a "done" column that no longer accepts work, for instance.
|
|
4103
|
+
*/
|
|
4104
|
+
locked?: boolean;
|
|
4105
|
+
}
|
|
4106
|
+
|
|
4107
|
+
/** Where a card ended up. */
|
|
4108
|
+
export declare interface KanbanMove {
|
|
4109
|
+
cardId: string;
|
|
4110
|
+
fromColumn: string;
|
|
4111
|
+
toColumn: string;
|
|
4112
|
+
/** Index within the destination column. */
|
|
4113
|
+
toIndex: number;
|
|
4114
|
+
}
|
|
4115
|
+
|
|
4116
|
+
export declare interface KanbanProps {
|
|
4117
|
+
columns: KanbanColumn[];
|
|
4118
|
+
/**
|
|
4119
|
+
* Called once per committed move — on pointer release or on a keyboard drop.
|
|
4120
|
+
* You own the data: apply the move and pass the new `columns` back.
|
|
4121
|
+
*/
|
|
4122
|
+
onMove: (move: KanbanMove) => void;
|
|
4123
|
+
/** Renders a card. Defaults to its `content`. */
|
|
4124
|
+
renderCard?: (card: KanbanCard, column: KanbanColumn) => ReactNode;
|
|
4125
|
+
/** Text shown in a column with no cards. */
|
|
4126
|
+
emptyLabel?: ReactNode;
|
|
4127
|
+
/** Announced per card, so a screen reader user learns the keyboard contract. */
|
|
4128
|
+
cardRoleDescription?: string;
|
|
4129
|
+
/**
|
|
4130
|
+
* Accessible name of the board. A `listbox` without a name is unusable with a
|
|
4131
|
+
* screen reader, so this has a default rather than being optional in practice.
|
|
4132
|
+
*/
|
|
4133
|
+
label?: string;
|
|
4134
|
+
/** Blocks all dragging. */
|
|
4135
|
+
disabled?: boolean;
|
|
4136
|
+
className?: string;
|
|
4137
|
+
}
|
|
4138
|
+
|
|
3972
4139
|
/**
|
|
3973
4140
|
* Renders a `<kbd>` styled like a keyboard key — useful for shortcut hints.
|
|
3974
4141
|
* Compose multiple keys by rendering siblings: `<Kbd>Ctrl</Kbd> + <Kbd>K</Kbd>`.
|
|
@@ -4456,6 +4623,9 @@ export declare interface MoneyProps extends HTMLAttributes<HTMLSpanElement> {
|
|
|
4456
4623
|
locale?: string;
|
|
4457
4624
|
}
|
|
4458
4625
|
|
|
4626
|
+
/** Reorder helper: move `from` to `to`, returning a new array. */
|
|
4627
|
+
export declare function moveItem<T>(items: T[], from: number, to: number): T[];
|
|
4628
|
+
|
|
4459
4629
|
/**
|
|
4460
4630
|
* MultiSelect — a filterable dropdown that selects many options, shown as
|
|
4461
4631
|
* removable chips inside the field. Selecting toggles a value; Backspace on an
|
|
@@ -4627,6 +4797,78 @@ export { NavLink }
|
|
|
4627
4797
|
*/
|
|
4628
4798
|
export declare function normalizeLongitude(longitude: number): number;
|
|
4629
4799
|
|
|
4800
|
+
/**
|
|
4801
|
+
* Inbox panel for notifications the app has received.
|
|
4802
|
+
*
|
|
4803
|
+
* Deliberately presentational and controlled: it takes a list and emits intent.
|
|
4804
|
+
* Where the list comes from — an API, a service-worker push, `localStorage` — and
|
|
4805
|
+
* where read state is written are app decisions, and a component that assumed any
|
|
4806
|
+
* of them would be wrong for most apps. `useNotificationInbox` is the companion
|
|
4807
|
+
* that holds the state, including the service-worker bridge.
|
|
4808
|
+
*
|
|
4809
|
+
* It is also just the panel, not a popover: apps mount it inside their own
|
|
4810
|
+
* `Popover`, `Drawer` or route. That keeps one component from owning both the
|
|
4811
|
+
* inbox and a positioning strategy.
|
|
4812
|
+
*
|
|
4813
|
+
* @example
|
|
4814
|
+
* const inbox = useNotificationInbox();
|
|
4815
|
+
*
|
|
4816
|
+
* <Popover trigger={<Button>Notificações ({inbox.unreadCount})</Button>}>
|
|
4817
|
+
* <NotificationCenter
|
|
4818
|
+
* items={inbox.items}
|
|
4819
|
+
* onMarkRead={inbox.markRead}
|
|
4820
|
+
* onMarkAllRead={inbox.markAllRead}
|
|
4821
|
+
* onDismiss={inbox.remove}
|
|
4822
|
+
* onSelect={(item) => item.url && navigate(item.url)}
|
|
4823
|
+
* />
|
|
4824
|
+
* </Popover>
|
|
4825
|
+
*/
|
|
4826
|
+
export declare function NotificationCenter({ items, title, onSelect, onMarkRead, onMarkAllRead, onDismiss, renderIcon, locale, emptyState, now, className, ...rest }: NotificationCenterProps): JSX.Element;
|
|
4827
|
+
|
|
4828
|
+
export declare interface NotificationCenterProps extends Omit<HTMLAttributes<HTMLDivElement>, OverriddenDomProps> {
|
|
4829
|
+
/** Entries to show. Rendered in the order given — `useNotificationInbox` sorts newest first. */
|
|
4830
|
+
items: readonly NotificationItem[];
|
|
4831
|
+
/**
|
|
4832
|
+
* Panel heading. Pass `null` to render the list with no header.
|
|
4833
|
+
*
|
|
4834
|
+
* Widened from the DOM `title` attribute (a `string`) on purpose: this is a
|
|
4835
|
+
* rendered heading, not a tooltip, so it takes a node.
|
|
4836
|
+
*/
|
|
4837
|
+
title?: ReactNode;
|
|
4838
|
+
/** Activate an entry: click, `Enter` or `Space`. Also marks it read when `onMarkRead` is set. */
|
|
4839
|
+
onSelect?: (item: NotificationItem) => void;
|
|
4840
|
+
/** Mark one entry as read. Enables the per-item read control. */
|
|
4841
|
+
onMarkRead?: (id: string) => void;
|
|
4842
|
+
/** Mark every entry as read. Enables the header action. */
|
|
4843
|
+
onMarkAllRead?: () => void;
|
|
4844
|
+
/** Remove one entry. Enables the per-item dismiss control. */
|
|
4845
|
+
onDismiss?: (id: string) => void;
|
|
4846
|
+
/** Icon rendered at the leading edge of each row — an `<Icon name={…} />`, say. */
|
|
4847
|
+
renderIcon?: (item: NotificationItem) => ReactNode;
|
|
4848
|
+
/** Locale for the relative timestamps. Default `"pt-BR"`. */
|
|
4849
|
+
locale?: RelativeTimeLocale;
|
|
4850
|
+
/** Shown when `items` is empty. */
|
|
4851
|
+
emptyState?: ReactNode;
|
|
4852
|
+
/** Reference point for the relative timestamps. Default: now, at render time. */
|
|
4853
|
+
now?: number;
|
|
4854
|
+
}
|
|
4855
|
+
|
|
4856
|
+
/** One entry in the inbox. */
|
|
4857
|
+
export declare interface NotificationItem {
|
|
4858
|
+
/** Stable id. Re-adding an existing id updates that entry instead of duplicating it. */
|
|
4859
|
+
id: string;
|
|
4860
|
+
title: string;
|
|
4861
|
+
/** Body text. Optional — a title-only notification is a legitimate shape. */
|
|
4862
|
+
body?: string;
|
|
4863
|
+
/** Epoch milliseconds. Used for ordering and for the relative timestamp. */
|
|
4864
|
+
receivedAt: number;
|
|
4865
|
+
read?: boolean;
|
|
4866
|
+
/** Where activating the notification should take the user. */
|
|
4867
|
+
url?: string;
|
|
4868
|
+
/** Free-form payload the app passes through, e.g. the entity it refers to. */
|
|
4869
|
+
data?: Record<string, unknown>;
|
|
4870
|
+
}
|
|
4871
|
+
|
|
4630
4872
|
/**
|
|
4631
4873
|
* Module-level singleton progress controller. Drive it imperatively from
|
|
4632
4874
|
* anywhere (router transitions, fetch interceptors) and render the visual bar
|
|
@@ -5091,6 +5333,16 @@ export declare type OutboxOp = "create" | "update" | "delete";
|
|
|
5091
5333
|
|
|
5092
5334
|
export { Outlet }
|
|
5093
5335
|
|
|
5336
|
+
/**
|
|
5337
|
+
* DOM attributes this component redefines.
|
|
5338
|
+
*
|
|
5339
|
+
* `title` becomes a rendered heading node instead of a tooltip string, and
|
|
5340
|
+
* `onSelect` becomes "an entry was activated" instead of the DOM text-selection
|
|
5341
|
+
* event. Both would be type errors if merged, and silently confusing if allowed
|
|
5342
|
+
* through.
|
|
5343
|
+
*/
|
|
5344
|
+
declare type OverriddenDomProps = "children" | "title" | "onSelect";
|
|
5345
|
+
|
|
5094
5346
|
/**
|
|
5095
5347
|
* Page wrapper with header + (optional) toolbar + content + footer. Pairs
|
|
5096
5348
|
* with `Container` when you want a max-width content well.
|
|
@@ -6436,6 +6688,40 @@ export declare interface SliderProps {
|
|
|
6436
6688
|
*/
|
|
6437
6689
|
export declare function slugify(input: string): string;
|
|
6438
6690
|
|
|
6691
|
+
/** Where a dragged item would land if dropped now. */
|
|
6692
|
+
export declare interface SortableDropTarget {
|
|
6693
|
+
/** Index the item started at, within its own group. */
|
|
6694
|
+
from: number;
|
|
6695
|
+
/** Index it would move to, within the destination group. */
|
|
6696
|
+
to: number;
|
|
6697
|
+
/**
|
|
6698
|
+
* Group the item started in — a Kanban column, for instance. `undefined` for a
|
|
6699
|
+
* plain single-list sortable.
|
|
6700
|
+
*/
|
|
6701
|
+
fromGroup?: string;
|
|
6702
|
+
/** Destination group. Equal to `fromGroup` when the move stays in one group. */
|
|
6703
|
+
toGroup?: string;
|
|
6704
|
+
}
|
|
6705
|
+
|
|
6706
|
+
/** Props to spread on each sortable item. */
|
|
6707
|
+
export declare interface SortableItemProps {
|
|
6708
|
+
/** Marks the item for hit-testing. */
|
|
6709
|
+
"data-sortable-index": number;
|
|
6710
|
+
/** Group the item belongs to, when the sortable spans several lists. */
|
|
6711
|
+
"data-sortable-group"?: string;
|
|
6712
|
+
/** `true` while this item is the one being moved. */
|
|
6713
|
+
"data-sortable-active"?: boolean;
|
|
6714
|
+
/** Grab handle wiring: starts a pointer drag. */
|
|
6715
|
+
onPointerDown: (event: PointerEvent_2<HTMLElement>) => void;
|
|
6716
|
+
/** Keyboard reordering — see {@link UseSortableResult}. */
|
|
6717
|
+
onKeyDown: (event: KeyboardEvent_2<HTMLElement>) => void;
|
|
6718
|
+
/** Puts the item in the tab order so the keyboard path is reachable. */
|
|
6719
|
+
tabIndex: number;
|
|
6720
|
+
role: "option";
|
|
6721
|
+
"aria-roledescription": string;
|
|
6722
|
+
"aria-selected": boolean;
|
|
6723
|
+
}
|
|
6724
|
+
|
|
6439
6725
|
export declare type SortDirection = "asc" | "desc";
|
|
6440
6726
|
|
|
6441
6727
|
/**
|
|
@@ -7689,6 +7975,11 @@ export declare interface UseAsyncResult<T> {
|
|
|
7689
7975
|
}
|
|
7690
7976
|
|
|
7691
7977
|
/**
|
|
7978
|
+
* The player lives in a state initializer, not in a lazily-written ref: the
|
|
7979
|
+
* initializer runs exactly once and is not a side effect during render, which is
|
|
7980
|
+
* what the ref version was. The player identity never changes, so state holds it
|
|
7981
|
+
* fine and the value is non-null from the first render.
|
|
7982
|
+
*
|
|
7692
7983
|
* Hook-managed audio player. Each component instance gets its own
|
|
7693
7984
|
* {@link AudioPlayer}, so unmounting cleanly stops playback. Useful for
|
|
7694
7985
|
* notification chimes, UI feedback sounds, and per-component soundtracks.
|
|
@@ -7893,6 +8184,11 @@ export declare function useDebounce<T>(value: T, delay?: number): T;
|
|
|
7893
8184
|
* Memoize a value with a structural equality check. Use when an object/array
|
|
7894
8185
|
* created during render is fed to `useEffect` dependencies and you want to
|
|
7895
8186
|
* avoid spurious effect runs when only the reference changes.
|
|
8187
|
+
*
|
|
8188
|
+
* The cache is a ref read and written during render. That is flagged by the React
|
|
8189
|
+
* Compiler rules and is nonetheless correct here: the write is idempotent — a
|
|
8190
|
+
* discarded render either wrote a structurally equal value or nothing at all — so
|
|
8191
|
+
* replaying the render cannot change the result.
|
|
7896
8192
|
*/
|
|
7897
8193
|
export declare function useDeepMemo<T>(value: T): T;
|
|
7898
8194
|
|
|
@@ -8169,6 +8465,11 @@ export declare function useInterval(fn: () => void, delay: number | null): void;
|
|
|
8169
8465
|
/**
|
|
8170
8466
|
* Return `true` on the first render of the component and `false` thereafter.
|
|
8171
8467
|
*
|
|
8468
|
+
* Reads *and* flips a ref during render, which the React Compiler rules flag on
|
|
8469
|
+
* sight — here it is the entire hook. Under StrictMode's double render in dev the
|
|
8470
|
+
* second pass already sees `false`, so treat the result as "first committed
|
|
8471
|
+
* render" and not as a strict render counter.
|
|
8472
|
+
*
|
|
8172
8473
|
* @returns Whether the current render is the first one.
|
|
8173
8474
|
*/
|
|
8174
8475
|
export declare function useIsFirstRender(): boolean;
|
|
@@ -8341,6 +8642,76 @@ export declare function useModals(): ModalsApi;
|
|
|
8341
8642
|
|
|
8342
8643
|
export { useNavigate }
|
|
8343
8644
|
|
|
8645
|
+
/**
|
|
8646
|
+
* Client-side inbox state for received notifications.
|
|
8647
|
+
*
|
|
8648
|
+
* Newest first, deduplicated by `id`, capped at `limit`. Pairs with
|
|
8649
|
+
* `NotificationCenter` for the UI and with the `push` module for the source:
|
|
8650
|
+
* point a service worker's `postMessage` at it and a push that arrives while the
|
|
8651
|
+
* app is open shows up in the inbox instead of only as an OS notification.
|
|
8652
|
+
*
|
|
8653
|
+
* Persistence is deliberately left out — where an inbox belongs (server, Dexie,
|
|
8654
|
+
* `localStorage`) is an app decision. Use `onChange` to write it wherever it goes,
|
|
8655
|
+
* and `initialItems` to read it back.
|
|
8656
|
+
*
|
|
8657
|
+
* @example
|
|
8658
|
+
* const inbox = useNotificationInbox({
|
|
8659
|
+
* initialItems: await api.notifications.list(),
|
|
8660
|
+
* onChange: (items) => storage.set("inbox", items),
|
|
8661
|
+
* });
|
|
8662
|
+
*
|
|
8663
|
+
* <NotificationCenter
|
|
8664
|
+
* items={inbox.items}
|
|
8665
|
+
* onMarkRead={inbox.markRead}
|
|
8666
|
+
* onMarkAllRead={inbox.markAllRead}
|
|
8667
|
+
* onDismiss={inbox.remove}
|
|
8668
|
+
* />
|
|
8669
|
+
*/
|
|
8670
|
+
export declare function useNotificationInbox(options?: UseNotificationInboxOptions): UseNotificationInboxResult;
|
|
8671
|
+
|
|
8672
|
+
export declare interface UseNotificationInboxOptions {
|
|
8673
|
+
/** Entries the inbox starts with — typically what the API returned. */
|
|
8674
|
+
initialItems?: readonly NotificationItem[];
|
|
8675
|
+
/**
|
|
8676
|
+
* Listen for `message` events from the service worker and add whatever
|
|
8677
|
+
* arrives. Default `true`.
|
|
8678
|
+
*
|
|
8679
|
+
* This is the missing half of web push: a service worker runs outside the
|
|
8680
|
+
* page and cannot touch React state, so a push that arrives while the app is
|
|
8681
|
+
* open shows an OS notification and then vanishes as far as the UI is
|
|
8682
|
+
* concerned. Have the worker `postMessage` the payload and it lands here.
|
|
8683
|
+
*/
|
|
8684
|
+
listenToServiceWorker?: boolean;
|
|
8685
|
+
/**
|
|
8686
|
+
* Message `type` to accept from the worker. Default `"tempest:notification"`.
|
|
8687
|
+
*
|
|
8688
|
+
* Filtering by type matters because the SW message channel is shared — a
|
|
8689
|
+
* sync-progress ping or a cache-updated notice would otherwise show up in the
|
|
8690
|
+
* user's inbox.
|
|
8691
|
+
*/
|
|
8692
|
+
messageType?: string;
|
|
8693
|
+
/**
|
|
8694
|
+
* Cap on stored entries; the oldest are dropped past it. Default `100`.
|
|
8695
|
+
*
|
|
8696
|
+
* An inbox fed by push grows without bound otherwise, and it lives in memory.
|
|
8697
|
+
*/
|
|
8698
|
+
limit?: number;
|
|
8699
|
+
/** Called whenever the list changes — the hook for persisting it. */
|
|
8700
|
+
onChange?: (items: readonly NotificationItem[]) => void;
|
|
8701
|
+
}
|
|
8702
|
+
|
|
8703
|
+
export declare interface UseNotificationInboxResult {
|
|
8704
|
+
items: NotificationItem[];
|
|
8705
|
+
unreadCount: number;
|
|
8706
|
+
/** Add an entry, or update the existing one with the same id. */
|
|
8707
|
+
add: (item: NotificationItem) => void;
|
|
8708
|
+
markRead: (id: string) => void;
|
|
8709
|
+
markUnread: (id: string) => void;
|
|
8710
|
+
markAllRead: () => void;
|
|
8711
|
+
remove: (id: string) => void;
|
|
8712
|
+
clear: () => void;
|
|
8713
|
+
}
|
|
8714
|
+
|
|
8344
8715
|
/**
|
|
8345
8716
|
* Run an OAuth-callback "exchange" exactly once on mount. Designed for
|
|
8346
8717
|
* `/callback` routes that receive provider redirects and need to swap a
|
|
@@ -8883,10 +9254,126 @@ export declare interface UseSetResult<T> {
|
|
|
8883
9254
|
size: number;
|
|
8884
9255
|
}
|
|
8885
9256
|
|
|
9257
|
+
/**
|
|
9258
|
+
* Drag-to-reorder for a list, with a **keyboard path of equal standing**.
|
|
9259
|
+
*
|
|
9260
|
+
* Pointer events cover mouse, touch and stylus through one code path, and pointer
|
|
9261
|
+
* capture keeps the drag alive when the pointer leaves the item. `Space` picks an
|
|
9262
|
+
* item up, the arrows move it, `Space`/`Enter` drops it and `Escape` cancels —
|
|
9263
|
+
* because a reorder that only works by dragging excludes keyboard users
|
|
9264
|
+
* completely, which is where most drag-and-drop implementations fail.
|
|
9265
|
+
*
|
|
9266
|
+
* The hook owns interaction only: it never mutates your data. `onReorder` fires
|
|
9267
|
+
* once per committed move and you apply it, typically with {@link moveItem}. That
|
|
9268
|
+
* keeps the list a controlled value and avoids a re-render per pointer frame.
|
|
9269
|
+
*
|
|
9270
|
+
* Hit-testing reads the live DOM rects of `[data-sortable-index]` children rather
|
|
9271
|
+
* than assuming a fixed row height, so it works with rows of different sizes.
|
|
9272
|
+
*
|
|
9273
|
+
* A change in `itemCount` cancels an in-flight drag: the list no longer has the
|
|
9274
|
+
* indices the drag was based on, and committing anyway would move the wrong row.
|
|
9275
|
+
*
|
|
9276
|
+
* Note for consumers: the indices and groups are exposed as **state** (so rendering
|
|
9277
|
+
* from them is reactive) and mirrored into refs only so the window-level `pointerup`
|
|
9278
|
+
* listener can read both synchronously. Because the handlers returned by
|
|
9279
|
+
* `getItemProps` close over those mirrors, the React Compiler `refs` rule reports
|
|
9280
|
+
* the *call site* — a component spreading these props may need a file-level
|
|
9281
|
+
* exemption, as `Kanban` documents.
|
|
9282
|
+
*
|
|
9283
|
+
* @example
|
|
9284
|
+
* ```tsx
|
|
9285
|
+
* const [items, setItems] = useState(["Alfa", "Bravo", "Charlie"]);
|
|
9286
|
+
* const sortable = useSortable({
|
|
9287
|
+
* itemCount: items.length,
|
|
9288
|
+
* onReorder: ({ from, to }) => setItems((current) => moveItem(current, from, to)),
|
|
9289
|
+
* });
|
|
9290
|
+
*
|
|
9291
|
+
* <ul {...sortable.getListProps()} aria-label="Prioridade" ref={sortable.setContainer}>
|
|
9292
|
+
* {items.map((item, index) => (
|
|
9293
|
+
* <li key={item} {...sortable.getItemProps(index)}>
|
|
9294
|
+
* {item}
|
|
9295
|
+
* </li>
|
|
9296
|
+
* ))}
|
|
9297
|
+
* </ul>
|
|
9298
|
+
* ```
|
|
9299
|
+
*/
|
|
9300
|
+
export declare function useSortable(options: UseSortableOptions): UseSortableResult;
|
|
9301
|
+
|
|
9302
|
+
export declare interface UseSortableOptions {
|
|
9303
|
+
/**
|
|
9304
|
+
* How many items are in the sortable. Changing it cancels an in-flight drag.
|
|
9305
|
+
*
|
|
9306
|
+
* With groups, pass the **total** across groups: the number only has to change
|
|
9307
|
+
* whenever the indices the drag was based on stop being valid.
|
|
9308
|
+
*/
|
|
9309
|
+
itemCount: number;
|
|
9310
|
+
/**
|
|
9311
|
+
* Called once, when a move is committed — on pointer release or on a keyboard
|
|
9312
|
+
* move. Never called mid-drag, so a controlled list re-renders once instead of
|
|
9313
|
+
* on every pointer frame.
|
|
9314
|
+
*/
|
|
9315
|
+
onReorder: (target: SortableDropTarget) => void;
|
|
9316
|
+
/** Blocks all interaction. */
|
|
9317
|
+
disabled?: boolean;
|
|
9318
|
+
/**
|
|
9319
|
+
* Description announced for each item, so a screen reader user learns the
|
|
9320
|
+
* keyboard contract. Default is in English — override it to localize.
|
|
9321
|
+
*/
|
|
9322
|
+
roleDescription?: string;
|
|
9323
|
+
}
|
|
9324
|
+
|
|
9325
|
+
export declare interface UseSortableResult {
|
|
9326
|
+
/** Index being dragged, or `null` when idle. */
|
|
9327
|
+
activeIndex: number | null;
|
|
9328
|
+
/** Index the item would land on, or `null` when idle. */
|
|
9329
|
+
overIndex: number | null;
|
|
9330
|
+
/** Group the dragged item came from, when using groups. */
|
|
9331
|
+
activeGroup?: string;
|
|
9332
|
+
/** Group the item is currently over, when using groups. */
|
|
9333
|
+
overGroup?: string;
|
|
9334
|
+
/**
|
|
9335
|
+
* Spread on each item. Pass `group` when the sortable spans several lists (a
|
|
9336
|
+
* Kanban column id), so a drop can land in a different group.
|
|
9337
|
+
*/
|
|
9338
|
+
getItemProps: (index: number, group?: string) => SortableItemProps;
|
|
9339
|
+
/**
|
|
9340
|
+
* Spread on an **empty** group's drop area, so an item can be moved into a
|
|
9341
|
+
* column that has no cards yet — hit-testing works off item rects, and a group
|
|
9342
|
+
* with no items has none.
|
|
9343
|
+
*/
|
|
9344
|
+
getEmptyGroupProps: (group: string) => {
|
|
9345
|
+
"data-sortable-group": string;
|
|
9346
|
+
"data-sortable-empty": true;
|
|
9347
|
+
};
|
|
9348
|
+
/** Spread on the list container (`role="listbox"` + a label of your own). */
|
|
9349
|
+
getListProps: () => {
|
|
9350
|
+
role: "listbox";
|
|
9351
|
+
"aria-orientation": "vertical";
|
|
9352
|
+
};
|
|
9353
|
+
/** Abort the current drag without reordering. */
|
|
9354
|
+
cancel: () => void;
|
|
9355
|
+
/**
|
|
9356
|
+
* Callback ref for the element that contains the sortable items — hit-testing
|
|
9357
|
+
* searches inside it.
|
|
9358
|
+
*
|
|
9359
|
+
* Named `setContainer` rather than `ref` because it is a **callback**, not a ref
|
|
9360
|
+
* object: `ref={sortable.setContainer}`. The old name also read as a readable
|
|
9361
|
+
* ref to the React Compiler rules, which flagged every consumer.
|
|
9362
|
+
*/
|
|
9363
|
+
setContainer: (node: HTMLElement | null) => void;
|
|
9364
|
+
}
|
|
9365
|
+
|
|
8886
9366
|
/**
|
|
8887
9367
|
* Returns a stable function reference that always invokes the latest
|
|
8888
9368
|
* `callback` argument. Use to break dependency cycles in effects without
|
|
8889
9369
|
* triggering re-runs when the callback identity changes.
|
|
9370
|
+
*
|
|
9371
|
+
* The assignment happens **during render** on purpose. Moving it into an effect
|
|
9372
|
+
* would satisfy the React Compiler rules but open a one-commit staleness window:
|
|
9373
|
+
* an effect declared before this hook's own effect, in the same commit, would call
|
|
9374
|
+
* the previous render's callback. This is a primitive other hooks build on, so a
|
|
9375
|
+
* subtle staleness here is worse than the rule violation. Prefer React's
|
|
9376
|
+
* `useEffectEvent` once it ships as stable.
|
|
8890
9377
|
*/
|
|
8891
9378
|
export declare function useStableCallback<TArgs extends unknown[], TReturn>(callback: (...args: TArgs) => TReturn): (...args: TArgs) => TReturn;
|
|
8892
9379
|
|
|
@@ -9135,6 +9622,95 @@ export declare interface VirtualListProps<T> {
|
|
|
9135
9622
|
style?: CSSProperties;
|
|
9136
9623
|
}
|
|
9137
9624
|
|
|
9625
|
+
/**
|
|
9626
|
+
* A table that stays responsive at 10k+ rows by rendering only the visible window.
|
|
9627
|
+
*
|
|
9628
|
+
* `Table` renders every row it is given and `DataTable` paginates to keep that
|
|
9629
|
+
* count small; neither has an answer for "show me all 40 000 rows in one
|
|
9630
|
+
* scrollable grid". This does, at the cost of one constraint: **`rowHeight` must
|
|
9631
|
+
* be uniform**, since mapping a scroll offset to a row index is what makes the
|
|
9632
|
+
* window computable without measuring anything.
|
|
9633
|
+
*
|
|
9634
|
+
* It stays a real `<table>`. The window is produced by two spacer rows — one
|
|
9635
|
+
* above the visible slice, one below — instead of absolutely positioning rows.
|
|
9636
|
+
* That is deliberate: `position: absolute` on `<tr>` collapses table layout, so
|
|
9637
|
+
* every column width would have to be computed by hand, and the element would
|
|
9638
|
+
* stop being a table for assistive technology. With spacer rows the browser keeps
|
|
9639
|
+
* doing column layout and screen readers keep announcing a grid.
|
|
9640
|
+
*
|
|
9641
|
+
* Because only a slice is in the DOM, `aria-rowcount` on the table and
|
|
9642
|
+
* `aria-rowindex` on each row carry the real numbers — without them a screen
|
|
9643
|
+
* reader announces "row 3 of 20" while the user is on row 5003 of 40 000.
|
|
9644
|
+
*
|
|
9645
|
+
* @example
|
|
9646
|
+
* <VirtualTable
|
|
9647
|
+
* data={rows}
|
|
9648
|
+
* columns={[
|
|
9649
|
+
* { key: "id", header: "#", width: 80, sortable: true },
|
|
9650
|
+
* { key: "name", header: "Nome", width: 240, sortable: true },
|
|
9651
|
+
* { key: "total", header: "Total", align: "right", width: 120, sortable: true },
|
|
9652
|
+
* ]}
|
|
9653
|
+
* rowHeight={40}
|
|
9654
|
+
* height={480}
|
|
9655
|
+
* rowKey={(row) => row.id}
|
|
9656
|
+
* />
|
|
9657
|
+
*/
|
|
9658
|
+
export declare function VirtualTable<T>({ data, columns, rowHeight, height, overscan, rowKey, initialSort, onRowClick, emptyMessage, caption, scrollToIndex, className, ...rest }: VirtualTableProps<T>): JSX.Element;
|
|
9659
|
+
|
|
9660
|
+
export declare interface VirtualTableColumn<T> {
|
|
9661
|
+
/** Property of the row this column reads from. Doubles as the cell key. */
|
|
9662
|
+
key: keyof T;
|
|
9663
|
+
/** Column heading. */
|
|
9664
|
+
header: ReactNode;
|
|
9665
|
+
/** Custom cell renderer. Defaults to `row[key]`. */
|
|
9666
|
+
render?: (row: T, index: number) => ReactNode;
|
|
9667
|
+
/** Enable click-to-sort on this column's header. */
|
|
9668
|
+
sortable?: boolean;
|
|
9669
|
+
/** Text alignment. */
|
|
9670
|
+
align?: TableAlign;
|
|
9671
|
+
/**
|
|
9672
|
+
* Column width. Recommended for every column: virtualized rows enter and
|
|
9673
|
+
* leave the DOM as you scroll, so letting the browser auto-size columns from
|
|
9674
|
+
* whatever is currently rendered makes them jump mid-scroll.
|
|
9675
|
+
*/
|
|
9676
|
+
width?: string | number;
|
|
9677
|
+
}
|
|
9678
|
+
|
|
9679
|
+
export declare interface VirtualTableProps<T> extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
|
|
9680
|
+
/** Full dataset. Every row is accounted for; only the visible ones render. */
|
|
9681
|
+
data: T[];
|
|
9682
|
+
/** Column definitions. */
|
|
9683
|
+
columns: VirtualTableColumn<T>[];
|
|
9684
|
+
/**
|
|
9685
|
+
* Row height in px. Must be uniform and must match what the CSS produces,
|
|
9686
|
+
* because it is what maps scroll offset to row index.
|
|
9687
|
+
*/
|
|
9688
|
+
rowHeight: number;
|
|
9689
|
+
/** Height of the scroll viewport — a number of px or any CSS length. */
|
|
9690
|
+
height: number | string;
|
|
9691
|
+
/** Rows rendered above and below the viewport. Default `4`. */
|
|
9692
|
+
overscan?: number;
|
|
9693
|
+
/** Stable key extractor. Defaults to the row's index in `data`. */
|
|
9694
|
+
rowKey?: (row: T, index: number) => string | number;
|
|
9695
|
+
/** Sort applied before any header interaction. */
|
|
9696
|
+
initialSort?: VirtualTableSort<T>;
|
|
9697
|
+
/** Called when a row is activated by click, `Enter` or `Space`. */
|
|
9698
|
+
onRowClick?: (row: T, index: number) => void;
|
|
9699
|
+
/** Content shown when `data` is empty. */
|
|
9700
|
+
emptyMessage?: ReactNode;
|
|
9701
|
+
/** Accessible name for the table. Rendered as a visually hidden `<caption>`. */
|
|
9702
|
+
caption?: ReactNode;
|
|
9703
|
+
/** Scroll this row into view whenever it changes. */
|
|
9704
|
+
scrollToIndex?: number;
|
|
9705
|
+
}
|
|
9706
|
+
|
|
9707
|
+
export declare interface VirtualTableSort<T> {
|
|
9708
|
+
key: keyof T;
|
|
9709
|
+
direction: VirtualTableSortDirection;
|
|
9710
|
+
}
|
|
9711
|
+
|
|
9712
|
+
export declare type VirtualTableSortDirection = "asc" | "desc";
|
|
9713
|
+
|
|
9138
9714
|
/**
|
|
9139
9715
|
* Render content that is hidden visually but remains available to screen
|
|
9140
9716
|
* readers — the standard "sr-only" pattern. Useful for accessible labels on
|
|
@@ -9605,7 +10181,7 @@ export declare function withTimeout<T>(promise: Promise<T>, ms: number, message?
|
|
|
9605
10181
|
* </FormProvider>
|
|
9606
10182
|
* ```
|
|
9607
10183
|
*/
|
|
9608
|
-
export declare function Wizard({ steps, activeIndex, defaultActiveIndex, onStepChange, onComplete, nextLabel, backLabel, finishLabel, clickableSteps, renderActions, className, }: WizardProps): JSX.Element;
|
|
10184
|
+
export declare function Wizard({ steps, activeIndex, defaultActiveIndex, onStepChange, onComplete, nextLabel, backLabel, finishLabel, optionalLabel, clickableSteps, renderActions, className, }: WizardProps): JSX.Element;
|
|
9609
10185
|
|
|
9610
10186
|
/** Flow controls handed to a step body and to `renderActions`. */
|
|
9611
10187
|
export declare interface WizardControls {
|
|
@@ -9640,6 +10216,12 @@ export declare interface WizardProps {
|
|
|
9640
10216
|
backLabel?: string;
|
|
9641
10217
|
/** Label of the button on the last step. Default `"Finish"`. */
|
|
9642
10218
|
finishLabel?: string;
|
|
10219
|
+
/**
|
|
10220
|
+
* Suffix appended to an optional step's description in the indicator.
|
|
10221
|
+
* Default `"(optional)"` — override it to localize, since the SDK ships no
|
|
10222
|
+
* translation for component-internal copy.
|
|
10223
|
+
*/
|
|
10224
|
+
optionalLabel?: string;
|
|
9643
10225
|
/**
|
|
9644
10226
|
* Allow clicking the indicator to jump. Default `false` — a wizard exists
|
|
9645
10227
|
* because order matters, and a free jump skips the gates.
|