@keepkit/ui 0.3.0 → 0.5.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 +54 -26
- package/dist/index.d.ts +131 -14
- package/dist/index.js +532 -51
- package/dist/index.js.map +1 -1
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -4,57 +4,85 @@
|
|
|
4
4
|
|
|
5
5
|
## 日本語
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Reactアプリケーション向けの標準利用パッケージです。`@keepkit/core`を内包し、Provider、保存ボタン、検索・ソート・ページング付きの一覧を少ないコードで構成できます。
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
pnpm add @keepkit/
|
|
10
|
+
pnpm add @keepkit/ui
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
```tsx
|
|
14
|
-
import {
|
|
14
|
+
import { createBrowserStorageAdapter, createKeepKit } from "@keepkit/ui";
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
type ArticleMeta = { title: string; url: string };
|
|
17
|
+
const keep = createKeepKit<ArticleMeta>({
|
|
18
|
+
storage: createBrowserStorageAdapter({ key: "articles" }),
|
|
19
|
+
locale: "ja-JP",
|
|
20
|
+
labels: { save: "保存", remove: "削除" },
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
function SavedArticles() {
|
|
17
24
|
return (
|
|
18
|
-
<
|
|
19
|
-
<
|
|
20
|
-
|
|
21
|
-
|
|
25
|
+
<keep.Provider>
|
|
26
|
+
<keep.Collection
|
|
27
|
+
query={{ targetType: "article" }}
|
|
28
|
+
renderItem={(item) => <keep.Button item={{ id: item.id, targetType: item.targetType, meta: item.meta }} />}
|
|
29
|
+
/>
|
|
30
|
+
</keep.Provider>
|
|
22
31
|
);
|
|
23
32
|
}
|
|
24
33
|
```
|
|
25
34
|
|
|
26
|
-
|
|
35
|
+
`keep.Collection`は検索、ソート、ページング、loading / empty / error、ARIA live通知を標準で提供します。`features={{ tagFilter: true, bulkActions: true }}`でタグフィルターと一括操作も有効にできます。個別の`KeepList`、`KeepSearchInput`、`KeepSortSelect`、`KeepPagination`などは高度なレイアウト用に利用できます。
|
|
36
|
+
|
|
37
|
+
一覧のqueryは次の形式に統一されています。
|
|
38
|
+
|
|
39
|
+
```tsx
|
|
40
|
+
const query = {
|
|
41
|
+
targetType: "article",
|
|
42
|
+
tags: ["read"],
|
|
43
|
+
search: { query: "react", mode: "and" as const },
|
|
44
|
+
sort: { by: "updatedAt" as const, direction: "desc" as const },
|
|
45
|
+
pagination: { page: 1, pageSize: 20 },
|
|
46
|
+
};
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
保存操作にはID付きの最小入力を渡します。保存・更新時刻はKeepKitが管理します。
|
|
27
50
|
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
- `KeepNoteEditor`: ノートの編集・保存フォーム。`render` で完全なカスタムUIにできます。
|
|
33
|
-
- `KeepEmptyState` / `KeepStatus`: 空、読み込み中、保存中、同期中、エラー状態の表示。
|
|
51
|
+
```tsx
|
|
52
|
+
const article = { id: "article-123", targetType: "article", meta: { title, url } };
|
|
53
|
+
const item = keep.useItem(article);
|
|
54
|
+
```
|
|
34
55
|
|
|
35
|
-
|
|
56
|
+
高度なフレームワーク中立APIは`@keepkit/core/core`、低レベルのReact APIは`@keepkit/core/react`、ストレージ実装は`@keepkit/core/storage`から利用できます。
|
|
36
57
|
|
|
37
58
|
## English
|
|
38
59
|
|
|
39
|
-
|
|
60
|
+
The standard React package for KeepKit. It includes `@keepkit/core` and provides a single typed provider, save button, and searchable/sortable/paginated collection workflow.
|
|
40
61
|
|
|
41
62
|
```bash
|
|
42
|
-
pnpm add @keepkit/
|
|
63
|
+
pnpm add @keepkit/ui
|
|
43
64
|
```
|
|
44
65
|
|
|
45
66
|
```tsx
|
|
46
|
-
import {
|
|
67
|
+
import { createBrowserStorageAdapter, createKeepKit } from "@keepkit/ui";
|
|
47
68
|
|
|
48
|
-
|
|
69
|
+
type ArticleMeta = { title: string; url: string };
|
|
70
|
+
const keep = createKeepKit<ArticleMeta>({
|
|
71
|
+
storage: createBrowserStorageAdapter({ key: "articles" }),
|
|
72
|
+
labels: { save: "Save", remove: "Remove" },
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
function SavedArticles() {
|
|
49
76
|
return (
|
|
50
|
-
<
|
|
51
|
-
<
|
|
52
|
-
|
|
53
|
-
</KeepProvider>
|
|
77
|
+
<keep.Provider>
|
|
78
|
+
<keep.Collection query={{ targetType: "article" }} />
|
|
79
|
+
</keep.Provider>
|
|
54
80
|
);
|
|
55
81
|
}
|
|
56
82
|
```
|
|
57
83
|
|
|
58
|
-
|
|
84
|
+
`keep.Collection` includes search, sorting, pagination, loading/empty/error states, and polite live announcements. Enable `features={{ tagFilter: true, bulkActions: true }}` for tag filtering and bulk operations. Use the individual `KeepList`, `KeepSearchInput`, `KeepSortSelect`, and `KeepPagination` primitives when you need a custom layout.
|
|
85
|
+
|
|
86
|
+
Collection queries use one canonical shape: `targetType`, `tags`, `search`, `sort`, `pagination`, `filter`, and `savedBetween`. Saved item inputs contain only `id`, `meta`, `targetType`, `note`, and `tags`; KeepKit owns persistence timestamps.
|
|
59
87
|
|
|
60
|
-
|
|
88
|
+
Framework-neutral APIs remain available from `@keepkit/core/core`, low-level React bindings from `@keepkit/core/react`, and storage adapters from `@keepkit/core/storage`.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,50 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
-
import { ReactNode, HTMLAttributes, ReactElement, FormHTMLAttributes } from 'react';
|
|
3
|
-
import { KeepItem,
|
|
4
|
-
export { KeepItem, KeepItemInput,
|
|
5
|
-
import { KeepButtonProps as KeepButtonProps$1, UseKeepListResult } from '@keepkit/core/react';
|
|
6
|
-
export { KeepContextValue, KeepProvider, KeepProviderProps, useKeepContext, useKeepItem, useKeepList } from '@keepkit/core/react';
|
|
2
|
+
import { ReactNode, ImgHTMLAttributes, HTMLAttributes, ComponentType, ReactElement, FormHTMLAttributes, InputHTMLAttributes, SelectHTMLAttributes } from 'react';
|
|
3
|
+
import { KeepItem, KeepListQuery, KeepItemInput } from '@keepkit/core/core';
|
|
4
|
+
export { KeepItem, KeepItemInput, KeepListQuery, KeepSyncStatus } from '@keepkit/core/core';
|
|
5
|
+
import { CreateKeepKitOptions as CreateKeepKitOptions$1, KeepButtonProps as KeepButtonProps$1, UseKeepListResult, KeepProviderProps, useKeepContext, useKeepItem, KeepShortcutOptions } from '@keepkit/core/react';
|
|
6
|
+
export { KeepContextValue, KeepProvider, KeepProviderProps, KeepShortcutOptions, useKeepContext, useKeepItem, useKeepList, useKeepShortcut } from '@keepkit/core/react';
|
|
7
|
+
export { FallbackStorageAdapter, IndexedDBAdapter, IndexedDBSyncQueueAdapter, LocalStorageAdapter, LocalStorageSyncQueueAdapter, SyncStorageAdapter, createBrowserStorageAdapter, createStorageAdapter } from '@keepkit/core/storage';
|
|
7
8
|
|
|
9
|
+
type KeepUiLabelKey = "save" | "saved" | "remove" | "loading" | "saving" | "syncing" | "error" | "allTags" | "filterTags" | "note" | "saveNote" | "noItems" | "loadingItems" | "errorItems" | "search" | "sort" | "newest" | "oldest" | "previousPage" | "nextPage" | "pagination" | "page" | "selectItems" | "selectedCount" | "deleteSelected" | "tagsToApply" | "applyTags" | "savedMessage" | "removedMessage" | "noteSavedMessage";
|
|
10
|
+
type KeepUiLabels = Partial<Record<KeepUiLabelKey, string>>;
|
|
11
|
+
type KeepUiLabelContext = {
|
|
12
|
+
locale?: string;
|
|
13
|
+
labels: Readonly<Record<KeepUiLabelKey, string>>;
|
|
14
|
+
labelResolver?: (key: KeepUiLabelKey, context: {
|
|
15
|
+
locale?: string;
|
|
16
|
+
}) => string | undefined;
|
|
17
|
+
};
|
|
18
|
+
type KeepUiProviderProps = {
|
|
19
|
+
labels?: KeepUiLabels;
|
|
20
|
+
locale?: string;
|
|
21
|
+
labelResolver?: KeepUiLabelContext["labelResolver"];
|
|
22
|
+
children?: ReactNode;
|
|
23
|
+
};
|
|
24
|
+
/** Provides one locale-aware label source to every UI primitive. */
|
|
25
|
+
declare function KeepUiProvider({ labels, locale, labelResolver, children }: KeepUiProviderProps): react.JSX.Element;
|
|
26
|
+
type KeepKitProviderProps<TMeta = Record<string, unknown>> = Omit<KeepProviderProps<TMeta>, "children"> & Omit<KeepUiProviderProps, "children"> & {
|
|
27
|
+
children?: ReactNode;
|
|
28
|
+
};
|
|
29
|
+
/** Combines the core store and UI labels into the default application provider. */
|
|
30
|
+
declare function KeepKitProvider<TMeta = Record<string, unknown>>({ labels, locale, labelResolver, children, ...providerProps }: KeepKitProviderProps<TMeta>): react.JSX.Element;
|
|
31
|
+
declare function useKeepUiLabels(): KeepUiLabelContext;
|
|
32
|
+
|
|
33
|
+
type CreateKeepKitOptions<TMeta = Record<string, unknown>> = CreateKeepKitOptions$1<TMeta> & Omit<KeepUiProviderProps, "children"> & {
|
|
34
|
+
getTitle?: (item: KeepItem<TMeta>) => ReactNode;
|
|
35
|
+
getImageProps?: (item: KeepItem<TMeta>, title: ReactNode) => KeepImageProps | undefined;
|
|
36
|
+
};
|
|
37
|
+
type KeepKit<TMeta = Record<string, unknown>> = {
|
|
38
|
+
Provider: ComponentType<KeepKitProviderProps<TMeta>>;
|
|
39
|
+
Button: ComponentType<KeepButtonProps<TMeta>>;
|
|
40
|
+
Collection: ComponentType<KeepCollectionProps<TMeta>>;
|
|
41
|
+
useContext: () => ReturnType<typeof useKeepContext<TMeta>>;
|
|
42
|
+
useItem: (item?: KeepItemInput<TMeta>) => ReturnType<typeof useKeepItem<TMeta>>;
|
|
43
|
+
useList: (query?: KeepListQuery<TMeta>) => UseKeepListResult<TMeta>;
|
|
44
|
+
useShortcut: (options: KeepShortcutOptions<TMeta>) => void;
|
|
45
|
+
};
|
|
46
|
+
/** Create one typed application API for the core and the standard UI layer. */
|
|
47
|
+
declare function createKeepKit<TMeta = Record<string, unknown>>(options?: CreateKeepKitOptions<TMeta>): KeepKit<TMeta>;
|
|
8
48
|
type RenderProp<TState> = (state: TState) => ReactNode;
|
|
9
49
|
type KeepButtonLabels = {
|
|
10
50
|
saved?: ReactNode;
|
|
@@ -26,10 +66,17 @@ type KeepItemCardState<TMeta = Record<string, unknown>> = {
|
|
|
26
66
|
error: unknown | null;
|
|
27
67
|
remove: () => Promise<void>;
|
|
28
68
|
};
|
|
69
|
+
type KeepImageProps = ImgHTMLAttributes<HTMLImageElement> & {
|
|
70
|
+
src: string;
|
|
71
|
+
alt: string;
|
|
72
|
+
};
|
|
29
73
|
type KeepItemCardProps<TMeta = Record<string, unknown>> = Omit<HTMLAttributes<HTMLElement>, "children" | "title"> & {
|
|
30
74
|
item: KeepItem<TMeta>;
|
|
31
75
|
title?: ReactNode | ((item: KeepItem<TMeta>) => ReactNode);
|
|
32
|
-
|
|
76
|
+
getTitle?: (item: KeepItem<TMeta>) => ReactNode;
|
|
77
|
+
getImageProps?: (item: KeepItem<TMeta>, title: ReactNode) => KeepImageProps | undefined;
|
|
78
|
+
imageComponent?: ComponentType<KeepImageProps>;
|
|
79
|
+
renderImage?: (props: KeepImageProps, item: KeepItem<TMeta>) => ReactNode;
|
|
33
80
|
imageAlt?: string;
|
|
34
81
|
render?: RenderProp<KeepItemCardState<TMeta>>;
|
|
35
82
|
children?: ReactNode | RenderProp<KeepItemCardState<TMeta>>;
|
|
@@ -41,10 +88,10 @@ type KeepItemCardProps<TMeta = Record<string, unknown>> = Omit<HTMLAttributes<HT
|
|
|
41
88
|
asChild?: boolean;
|
|
42
89
|
};
|
|
43
90
|
/** A low-dependency item presentation primitive. The default markup can be replaced with render props. */
|
|
44
|
-
declare function KeepItemCard<TMeta = Record<string, unknown>>({ item, title,
|
|
91
|
+
declare function KeepItemCard<TMeta = Record<string, unknown>>({ item, title, getTitle, getImageProps, imageComponent: ImageComponent, renderImage, imageAlt, render, children, removeLabel, onRemoveError, onRemoved, showSaveButton, saveButtonLabels, asChild, className, ...rootProps }: KeepItemCardProps<TMeta>): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
|
|
45
92
|
type KeepListState<TMeta = Record<string, unknown>> = UseKeepListResult<TMeta>;
|
|
46
93
|
type KeepListProps<TMeta = Record<string, unknown>> = Omit<HTMLAttributes<HTMLElement>, "children"> & {
|
|
47
|
-
|
|
94
|
+
query?: KeepListQuery<TMeta>;
|
|
48
95
|
children?: ReactNode | RenderProp<KeepListState<TMeta>>;
|
|
49
96
|
renderItem?: (item: KeepItem<TMeta>, state: KeepListState<TMeta>) => ReactNode;
|
|
50
97
|
loading?: ReactNode | RenderProp<KeepListState<TMeta>>;
|
|
@@ -54,7 +101,20 @@ type KeepListProps<TMeta = Record<string, unknown>> = Omit<HTMLAttributes<HTMLEl
|
|
|
54
101
|
asChild?: boolean;
|
|
55
102
|
};
|
|
56
103
|
/** A list primitive with built-in loading, empty, error, and removal states. */
|
|
57
|
-
declare function KeepList<TMeta = Record<string, unknown>>({
|
|
104
|
+
declare function KeepList<TMeta = Record<string, unknown>>({ query, children, renderItem, loading, empty, error: errorContent, itemCardProps, asChild, className, ...rootProps }: KeepListProps<TMeta>): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
|
|
105
|
+
type KeepCollectionFeature = "search" | "sort" | "pagination" | "tagFilter" | "bulkActions";
|
|
106
|
+
type KeepCollectionProps<TMeta = Record<string, unknown>> = Omit<HTMLAttributes<HTMLElement>, "children"> & {
|
|
107
|
+
query?: KeepListQuery<TMeta>;
|
|
108
|
+
pageSize?: number;
|
|
109
|
+
features?: Partial<Record<KeepCollectionFeature, boolean>>;
|
|
110
|
+
renderItem?: (item: KeepItem<TMeta>, state: KeepListState<TMeta>) => ReactNode;
|
|
111
|
+
itemCardProps?: Omit<KeepItemCardProps<TMeta>, "item" | "children" | "render">;
|
|
112
|
+
loading?: ReactNode | RenderProp<KeepListState<TMeta>>;
|
|
113
|
+
empty?: ReactNode | RenderProp<KeepListState<TMeta>>;
|
|
114
|
+
error?: ReactNode | RenderProp<KeepListState<TMeta>>;
|
|
115
|
+
};
|
|
116
|
+
/** A batteries-included collection with query controls and accessible status feedback. */
|
|
117
|
+
declare function KeepCollection<TMeta = Record<string, unknown>>({ query, pageSize, features, renderItem, itemCardProps, loading, empty, error, className, ...rootProps }: KeepCollectionProps<TMeta>): react.JSX.Element;
|
|
58
118
|
type KeepTagFilterState = {
|
|
59
119
|
tags: string[];
|
|
60
120
|
tagCounts: Record<string, number>;
|
|
@@ -62,7 +122,7 @@ type KeepTagFilterState = {
|
|
|
62
122
|
select: (tag?: string) => void;
|
|
63
123
|
};
|
|
64
124
|
type KeepTagFilterProps<TMeta = Record<string, unknown>> = Omit<HTMLAttributes<HTMLElement>, "children" | "onChange"> & {
|
|
65
|
-
|
|
125
|
+
query?: KeepListQuery<TMeta>;
|
|
66
126
|
value?: string;
|
|
67
127
|
defaultValue?: string;
|
|
68
128
|
onChange?: (tag?: string) => void;
|
|
@@ -74,8 +134,8 @@ type KeepTagFilterProps<TMeta = Record<string, unknown>> = Omit<HTMLAttributes<H
|
|
|
74
134
|
children?: ReactNode | RenderProp<KeepTagFilterState>;
|
|
75
135
|
asChild?: boolean;
|
|
76
136
|
};
|
|
77
|
-
/** An ARIA button group for tag filtering; consumers can connect value to
|
|
78
|
-
declare function KeepTagFilter<TMeta = Record<string, unknown>>({
|
|
137
|
+
/** An ARIA button group for tag filtering; consumers can connect value to a collection query. */
|
|
138
|
+
declare function KeepTagFilter<TMeta = Record<string, unknown>>({ query, value: controlledValue, defaultValue, onChange, onValueChange, allLabel, ariaLabel, renderTag, render, children, asChild, className, ...rootProps }: KeepTagFilterProps<TMeta>): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
|
|
79
139
|
type KeepNoteEditorState<TMeta = Record<string, unknown>> = {
|
|
80
140
|
item: KeepItem<TMeta>;
|
|
81
141
|
note: string;
|
|
@@ -97,7 +157,59 @@ type KeepNoteEditorProps<TMeta = Record<string, unknown>> = Omit<FormHTMLAttribu
|
|
|
97
157
|
asChild?: boolean;
|
|
98
158
|
};
|
|
99
159
|
/** A controlled-by-default note editor that persists through useKeepItem. */
|
|
100
|
-
declare function KeepNoteEditor<TMeta = Record<string, unknown>>({ item, label, saveLabel, placeholder, onSaved, onSaveError, render, children, asChild, className, ...formProps }: KeepNoteEditorProps<TMeta>):
|
|
160
|
+
declare function KeepNoteEditor<TMeta = Record<string, unknown>>({ item, label, saveLabel, placeholder, onSaved, onSaveError, render, children, asChild, className, ...formProps }: KeepNoteEditorProps<TMeta>): react.JSX.Element;
|
|
161
|
+
type KeepSearchInputProps = Omit<InputHTMLAttributes<HTMLInputElement>, "value" | "defaultValue" | "onChange"> & {
|
|
162
|
+
value?: string;
|
|
163
|
+
defaultValue?: string;
|
|
164
|
+
onValueChange?: (value: string) => void;
|
|
165
|
+
};
|
|
166
|
+
/** A controlled/uncontrolled search field for wiring into KeepListQuery.search. */
|
|
167
|
+
declare function KeepSearchInput({ value: controlledValue, defaultValue, onValueChange, "aria-label": ariaLabel, placeholder, ...props }: KeepSearchInputProps): react.JSX.Element;
|
|
168
|
+
type KeepSortValue = "savedAt:desc" | "savedAt:asc" | "updatedAt:desc" | "updatedAt:asc";
|
|
169
|
+
type KeepSortSelectProps = Omit<SelectHTMLAttributes<HTMLSelectElement>, "value" | "defaultValue" | "onChange"> & {
|
|
170
|
+
value?: KeepSortValue;
|
|
171
|
+
defaultValue?: KeepSortValue;
|
|
172
|
+
onValueChange?: (value: KeepSortValue, sort: NonNullable<KeepListQuery["sort"]>) => void;
|
|
173
|
+
};
|
|
174
|
+
/** Emits a normalized sort descriptor that can be passed directly to useKeepList. */
|
|
175
|
+
declare function KeepSortSelect({ value: controlledValue, defaultValue, onValueChange, "aria-label": ariaLabel, children, ...props }: KeepSortSelectProps): react.JSX.Element;
|
|
176
|
+
type KeepPaginationProps = Omit<HTMLAttributes<HTMLElement>, "children"> & {
|
|
177
|
+
totalCount: number;
|
|
178
|
+
pageSize: number;
|
|
179
|
+
page?: number;
|
|
180
|
+
onPageChange?: (page: number, offset: number) => void;
|
|
181
|
+
render?: RenderProp<{
|
|
182
|
+
page: number;
|
|
183
|
+
pageCount: number;
|
|
184
|
+
goToPage: (page: number) => void;
|
|
185
|
+
}>;
|
|
186
|
+
};
|
|
187
|
+
/** A small accessible pagination control using one-based pages and zero-based offsets. */
|
|
188
|
+
declare function KeepPagination({ totalCount, pageSize, page, onPageChange, render, ...props }: KeepPaginationProps): react.JSX.Element;
|
|
189
|
+
type KeepTagEditorProps<TMeta = Record<string, unknown>> = Omit<FormHTMLAttributes<HTMLFormElement>, "children" | "onSubmit"> & {
|
|
190
|
+
item: KeepItem<TMeta>;
|
|
191
|
+
availableTags?: string[];
|
|
192
|
+
onSaved?: (tags?: string[]) => void;
|
|
193
|
+
onSaveError?: (error: unknown) => void;
|
|
194
|
+
render?: RenderProp<{
|
|
195
|
+
tags: string[];
|
|
196
|
+
setTags: (tags: string[]) => void;
|
|
197
|
+
save: () => Promise<void>;
|
|
198
|
+
isSaving: boolean;
|
|
199
|
+
}>;
|
|
200
|
+
};
|
|
201
|
+
/** Edits one item's normalized tag set and exposes a render-prop escape hatch. */
|
|
202
|
+
declare function KeepTagEditor<TMeta = Record<string, unknown>>({ item, availableTags, onSaved, onSaveError, render, ...props }: KeepTagEditorProps<TMeta>): react.JSX.Element;
|
|
203
|
+
type KeepBulkActionsProps<TMeta = Record<string, unknown>> = Omit<HTMLAttributes<HTMLElement>, "children"> & {
|
|
204
|
+
query?: KeepListQuery<TMeta>;
|
|
205
|
+
selectedIds?: string[];
|
|
206
|
+
defaultSelectedIds?: string[];
|
|
207
|
+
onSelectedIdsChange?: (ids: string[]) => void;
|
|
208
|
+
renderItem?: (item: KeepItem<TMeta>, selected: boolean) => ReactNode;
|
|
209
|
+
onCompleted?: (action: "remove" | "tags", ids: string[]) => void;
|
|
210
|
+
};
|
|
211
|
+
/** Selects visible items and performs one storage operation for the whole selection. */
|
|
212
|
+
declare function KeepBulkActions<TMeta = Record<string, unknown>>({ query, selectedIds: controlledSelectedIds, defaultSelectedIds, onSelectedIdsChange, renderItem, onCompleted, ...props }: KeepBulkActionsProps<TMeta>): react.JSX.Element;
|
|
101
213
|
type KeepEmptyStateProps = Omit<HTMLAttributes<HTMLElement>, "children" | "title"> & {
|
|
102
214
|
title?: ReactNode;
|
|
103
215
|
description?: ReactNode;
|
|
@@ -124,5 +236,10 @@ type KeepStatusProps<TMeta = Record<string, unknown>> = Omit<HTMLAttributes<HTML
|
|
|
124
236
|
};
|
|
125
237
|
/** Presents provider loading, mutation, synchronization, empty, and error states accessibly. */
|
|
126
238
|
declare function KeepStatus<TMeta = Record<string, unknown>>({ status, labels, children, render, asChild, className, ...rootProps }: KeepStatusProps<TMeta>): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
|
|
239
|
+
type KeepAnnouncementsProps = Omit<HTMLAttributes<HTMLElement>, "children"> & {
|
|
240
|
+
messages?: Partial<Record<"save" | "remove" | "note", string>>;
|
|
241
|
+
};
|
|
242
|
+
/** Announces successful save, remove, and note operations in a polite live region. */
|
|
243
|
+
declare function KeepAnnouncements<TMeta = Record<string, unknown>>({ messages, ...props }: KeepAnnouncementsProps): react.JSX.Element;
|
|
127
244
|
|
|
128
|
-
export { KeepButton, type KeepButtonLabels, type KeepButtonProps, KeepEmptyState, type KeepEmptyStateProps, KeepItemCard, type KeepItemCardProps, type KeepItemCardState, KeepList, type KeepListProps, type KeepListState, KeepNoteEditor, type KeepNoteEditorProps, type KeepNoteEditorState, KeepStatus, type KeepStatusLabels, type KeepStatusProps, type KeepStatusState, type KeepStatusValue, KeepTagFilter, type KeepTagFilterProps, type KeepTagFilterState, type RenderProp };
|
|
245
|
+
export { type CreateKeepKitOptions, KeepAnnouncements, type KeepAnnouncementsProps, KeepBulkActions, type KeepBulkActionsProps, KeepButton, type KeepButtonLabels, type KeepButtonProps, KeepCollection, type KeepCollectionFeature, type KeepCollectionProps, KeepEmptyState, type KeepEmptyStateProps, type KeepImageProps, KeepItemCard, type KeepItemCardProps, type KeepItemCardState, type KeepKit, KeepKitProvider, type KeepKitProviderProps, KeepList, type KeepListProps, type KeepListState, KeepNoteEditor, type KeepNoteEditorProps, type KeepNoteEditorState, KeepPagination, type KeepPaginationProps, KeepSearchInput, type KeepSearchInputProps, KeepSortSelect, type KeepSortSelectProps, type KeepSortValue, KeepStatus, type KeepStatusLabels, type KeepStatusProps, type KeepStatusState, type KeepStatusValue, KeepTagEditor, type KeepTagEditorProps, KeepTagFilter, type KeepTagFilterProps, type KeepTagFilterState, type KeepUiLabelContext, type KeepUiLabelKey, type KeepUiLabels, KeepUiProvider, type KeepUiProviderProps, type RenderProp, createKeepKit, useKeepUiLabels };
|