@keepkit/ui 0.9.0 → 0.11.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 CHANGED
@@ -55,6 +55,9 @@ function SavedArticles() {
55
55
  ```
56
56
 
57
57
  `keep.Collection`は検索、ソート、ページング、loading / empty / error、ARIA live通知を標準で提供します。検索は既定で300msデバウンスされます。`features={{ tagFilter: true, bulkActions: true }}`でタグフィルターと一括操作も有効にできます。個別の`KeepList`、`KeepSearchInput`、`KeepSortSelect`、`KeepPagination`、`KeepItemCheckbox`、`KeepTagEditor`などは高度なレイアウト用に利用できます。`KeepBulkActions`はrender propsで操作UIを差し替えられ、`isAllSelected` / `toggleSelectAll`で表示中アイテムを一括操作できます。`KeepNoteEditor`は既定300msのデバウンス保存に対応し、`debounceMs={0}`でフォーム送信のみへ戻せます。通知領域だけを明示的に置く場合は`KeepAnnouncer`(`KeepAnnouncements`のalias)を使えます。
58
+ `KeepItemCard`は`href`、`onOpen`、`linkTarget`、`linkComponent`に対応し、保存アイテムから詳細ページへ遷移できます。非公開・期限切れ等の`status`を持つアイテムは自動的にリンクを無効化します。`KeepBackup`はJSONのエクスポート、merge / replaceインポート、結果件数、容量エラー表示を提供します。
59
+
60
+ v0.11.0では`KeepCollection urlSync layout="list" | "grid" | "compact"`、`KeepBulkActions selectionScope="page" | "query" | "all"`、`KeepUndo`を利用できます。`createNextPagesRouterAdapter`はNext.js Pages Router用の注入adapterです。`locale`は日本語・英語・韓国語・中国語に対応し、`labels`で上書きできます。
58
61
 
59
62
  一覧のqueryは次の形式に統一されています。
60
63
 
@@ -104,6 +107,9 @@ function SavedArticles() {
104
107
  ```
105
108
 
106
109
  `keep.Collection` includes search, sorting, pagination, loading/empty/error states, and polite live announcements. Search is debounced by 300ms by default. Enable `features={{ tagFilter: true, bulkActions: true }}` for tag filtering and bulk operations. Use the individual `KeepList`, `KeepSearchInput`, `KeepSortSelect`, `KeepPagination`, `KeepItemCheckbox`, and `KeepTagEditor` primitives when you need a custom layout. `KeepBulkActions` supports render props and exposes `isAllSelected` / `toggleSelectAll` for visible-item selection. `KeepNoteEditor` auto-saves dirty notes after 300ms by default; set `debounceMs={0}` to use form submission only. Mount `KeepAnnouncer` (`KeepAnnouncements` alias) when you need the live region explicitly.
110
+ `KeepItemCard` accepts `href`, `onOpen`, `linkTarget`, and `linkComponent` for detail-page navigation. Links are disabled for unavailable `status` values such as private or expired. `KeepBackup` provides JSON export, merge/replace import, result counts, and quota-error messaging.
111
+
112
+ In v0.11.0, use `KeepCollection urlSync` with `layout="list" | "grid" | "compact"`, `KeepBulkActions selectionScope="page" | "query" | "all"`, and `KeepUndo`. `createNextPagesRouterAdapter` is the injected adapter for Next.js Pages Router. `locale` includes Japanese, English, Korean, and Chinese dictionaries; `labels` overrides individual entries.
107
113
 
108
114
  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.
109
115
 
package/dist/index.d.ts CHANGED
@@ -1,11 +1,19 @@
1
1
  import * as react from 'react';
2
- import { ReactNode, HTMLAttributes, ImgHTMLAttributes, ComponentType, InputHTMLAttributes, FormHTMLAttributes, SelectHTMLAttributes } from 'react';
3
- import { KeepListQuery, KeepItem, KeepItemInput } from '@keepkit/core/core';
4
- export { KeepItem, KeepItemInput, KeepListQuery, KeepSyncStatus } from '@keepkit/core/core';
2
+ import { HTMLAttributes, ReactNode, ImgHTMLAttributes, ComponentType, MouseEvent, HTMLAttributeAnchorTarget, InputHTMLAttributes, FormHTMLAttributes, SelectHTMLAttributes } from 'react';
3
+ import { ImportItemsResult, KeepListQuery, KeepItem, KeepUrlSyncOptions, KeepItemInput } from '@keepkit/core/core';
4
+ export { KeepItem, KeepItemInput, KeepListQuery, KeepScope, KeepSyncStatus, KeepUndoState, KeepUrlSyncOptions } from '@keepkit/core/core';
5
5
  import { KeepButtonProps as KeepButtonProps$1, UseKeepListResult, KeepErrorBoundaryProps, CreateKeepKitOptions as CreateKeepKitOptions$1, KeepProviderProps, useKeepContext, useKeepItem, useKeepList, KeepShortcutOptions } from '@keepkit/core/react';
6
6
  export { KeepButtonState, KeepContextValue, KeepErrorBoundary, KeepErrorBoundaryProps, KeepProvider, KeepProviderProps, KeepShortcutOptions, useKeepContext, useKeepItem, useKeepList, useKeepShortcut } from '@keepkit/core/react';
7
7
  export { FallbackStorageAdapter, IndexedDBAdapter, IndexedDBSyncQueueAdapter, LocalStorageAdapter, LocalStorageSyncQueueAdapter, SyncStorageAdapter, createBrowserStorageAdapter, createStorageAdapter } from '@keepkit/core/storage';
8
8
 
9
+ type KeepBackupProps<TMeta = Record<string, unknown>> = Omit<HTMLAttributes<HTMLElement>, "children"> & {
10
+ filename?: string;
11
+ onExport?: (data: string) => void;
12
+ onImported?: (result: ImportItemsResult<TMeta>) => void;
13
+ };
14
+ /** Accessible JSON backup controls backed by the current KeepProvider storage. */
15
+ declare function KeepBackup<TMeta = Record<string, unknown>>({ filename, onExport, onImported, ...props }: KeepBackupProps<TMeta>): react.JSX.Element;
16
+
9
17
  type RenderProp<TState> = (state: TState) => ReactNode;
10
18
  type KeepButtonLabels = {
11
19
  saved?: ReactNode;
@@ -30,7 +38,10 @@ type KeepBulkActionsState<TMeta = Record<string, unknown>> = {
30
38
  remove: () => Promise<void>;
31
39
  updateTags: () => Promise<void>;
32
40
  isMutating: boolean;
41
+ selectionScope: KeepSelectionScope;
42
+ setSelectionScope: (scope: KeepSelectionScope) => void;
33
43
  };
44
+ type KeepSelectionScope = "page" | "query" | "all";
34
45
  /** Returns whether every visible item is selected. Empty lists are never all selected. */
35
46
  declare function isAllSelected<TMeta>(items: readonly Pick<KeepItem<TMeta>, "id">[], selectedIds: readonly string[]): boolean;
36
47
  /** Toggles only the visible items, preserving selections outside the current query or page. */
@@ -42,11 +53,13 @@ type KeepBulkActionsProps<TMeta = Record<string, unknown>> = Omit<HTMLAttributes
42
53
  onSelectedIdsChange?: (ids: string[]) => void;
43
54
  renderItem?: (item: KeepItem<TMeta>, selected: boolean) => ReactNode;
44
55
  onCompleted?: (action: "remove" | "tags", ids: string[]) => void;
56
+ selectionScope?: KeepSelectionScope;
57
+ onSelectionScopeChange?: (scope: KeepSelectionScope) => void;
45
58
  render?: RenderProp<KeepBulkActionsState<TMeta>>;
46
59
  children?: ReactNode | RenderProp<KeepBulkActionsState<TMeta>>;
47
60
  };
48
61
  /** Selects visible items and performs one storage operation for the whole selection. */
49
- declare function KeepBulkActions<TMeta = Record<string, unknown>>({ query, selectedIds: controlledSelectedIds, defaultSelectedIds, onSelectedIdsChange, renderItem, onCompleted, render, children, ...props }: KeepBulkActionsProps<TMeta>): react.JSX.Element;
62
+ declare function KeepBulkActions<TMeta = Record<string, unknown>>({ query, selectedIds: controlledSelectedIds, defaultSelectedIds, onSelectedIdsChange, renderItem, onCompleted, selectionScope: controlledScope, onSelectionScopeChange, render, children, ...props }: KeepBulkActionsProps<TMeta>): react.JSX.Element;
50
63
 
51
64
  type KeepButtonProps<TMeta = Record<string, unknown>> = KeepButtonProps$1<TMeta> & {
52
65
  labels?: KeepButtonLabels;
@@ -60,6 +73,14 @@ type KeepItemCardState<TMeta = Record<string, unknown>> = {
60
73
  isMutating: boolean;
61
74
  error: unknown | null;
62
75
  remove: () => Promise<void>;
76
+ status: KeepItem["status"];
77
+ };
78
+ type KeepItemCardLinkProps = {
79
+ href: string;
80
+ children?: ReactNode;
81
+ target?: HTMLAttributeAnchorTarget;
82
+ rel?: string;
83
+ onClick?: (event: MouseEvent<HTMLElement>) => void;
63
84
  };
64
85
  type KeepImageProps = ImgHTMLAttributes<HTMLImageElement> & {
65
86
  src: string;
@@ -72,6 +93,8 @@ type KeepItemCardProps<TMeta = Record<string, unknown>> = Omit<HTMLAttributes<HT
72
93
  getImageProps?: (item: KeepItem<TMeta>, title: ReactNode) => KeepImageProps | undefined;
73
94
  imageComponent?: ComponentType<KeepImageProps>;
74
95
  renderImage?: (props: KeepImageProps, item: KeepItem<TMeta>) => ReactNode;
96
+ renderTags?: (tags: string[], item: KeepItem<TMeta>) => ReactNode;
97
+ showTags?: boolean;
75
98
  imageAlt?: string;
76
99
  render?: RenderProp<KeepItemCardState<TMeta>>;
77
100
  children?: ReactNode | RenderProp<KeepItemCardState<TMeta>>;
@@ -81,9 +104,15 @@ type KeepItemCardProps<TMeta = Record<string, unknown>> = Omit<HTMLAttributes<HT
81
104
  showSaveButton?: boolean;
82
105
  saveButtonLabels?: KeepButtonLabels;
83
106
  asChild?: boolean;
107
+ href?: string | ((item: KeepItem<TMeta>) => string | undefined);
108
+ onOpen?: (item: KeepItem<TMeta>, event: MouseEvent<HTMLElement>) => void;
109
+ linkTarget?: "title" | "card";
110
+ linkComponent?: ComponentType<KeepItemCardLinkProps>;
111
+ linkTargetAttribute?: HTMLAttributeAnchorTarget;
112
+ linkRel?: string;
84
113
  };
85
114
  /** A low-dependency item presentation primitive. The default markup can be replaced with render props. */
86
- 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>): react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
115
+ declare function KeepItemCard<TMeta = Record<string, unknown>>({ item, title, getTitle, getImageProps, imageComponent: ImageComponent, renderImage, renderTags, showTags, imageAlt, render, children, removeLabel, onRemoveError, onRemoved, showSaveButton, saveButtonLabels, asChild, href: hrefOption, onOpen, linkTarget, linkComponent: LinkComponent, linkTargetAttribute, linkRel, className, ...rootProps }: KeepItemCardProps<TMeta>): react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
87
116
 
88
117
  type KeepListState<TMeta = Record<string, unknown>> = UseKeepListResult<TMeta>;
89
118
  type KeepListProps<TMeta = Record<string, unknown>> = Omit<HTMLAttributes<HTMLElement>, "children"> & {
@@ -94,6 +123,7 @@ type KeepListProps<TMeta = Record<string, unknown>> = Omit<HTMLAttributes<HTMLEl
94
123
  empty?: ReactNode | RenderProp<KeepListState<TMeta>>;
95
124
  error?: ReactNode | RenderProp<KeepListState<TMeta>>;
96
125
  itemCardProps?: Omit<KeepItemCardProps<TMeta>, "item" | "children" | "render">;
126
+ layout?: KeepLayoutPreset;
97
127
  asChild?: boolean;
98
128
  fallback?: KeepErrorBoundaryProps["fallback"];
99
129
  onBoundaryError?: KeepErrorBoundaryProps["onError"];
@@ -102,10 +132,44 @@ type KeepListProps<TMeta = Record<string, unknown>> = Omit<HTMLAttributes<HTMLEl
102
132
  /** A list primitive with built-in loading, empty, error, and removal states. */
103
133
  declare function KeepList<TMeta = Record<string, unknown>>(props: KeepListProps<TMeta>): react.JSX.Element;
104
134
 
135
+ type KeepUrlAdapter = {
136
+ getUrl: () => string;
137
+ subscribe?: (listener: () => void) => () => void;
138
+ navigate: (url: string, mode: "replace" | "push") => void;
139
+ };
140
+ type KeepPagesRouterLike = {
141
+ asPath?: string;
142
+ push: (url: string, as?: string, options?: {
143
+ shallow?: boolean;
144
+ }) => Promise<boolean> | boolean;
145
+ replace: (url: string, as?: string, options?: {
146
+ shallow?: boolean;
147
+ }) => Promise<boolean> | boolean;
148
+ events?: {
149
+ on: (event: string, listener: () => void) => void;
150
+ off: (event: string, listener: () => void) => void;
151
+ };
152
+ };
153
+ type KeepUrlSyncProps<TMeta = Record<string, unknown>> = {
154
+ enabled?: boolean;
155
+ query: KeepListQuery<TMeta>;
156
+ onQueryChange: (query: KeepListQuery<TMeta> | ((previous: KeepListQuery<TMeta>) => KeepListQuery<TMeta>)) => void;
157
+ options?: KeepUrlSyncOptions;
158
+ adapter?: KeepUrlAdapter;
159
+ };
160
+ /** Adapter for Next.js Pages Router. It intentionally uses structural typing and has no Next dependency. */
161
+ declare function createNextPagesRouterAdapter(router: KeepPagesRouterLike): KeepUrlAdapter;
162
+ /** Synchronizes collection filters with browser history and supports back/forward restoration. */
163
+ declare function useKeepUrlSync<TMeta = Record<string, unknown>>({ enabled, query, onQueryChange, options, adapter: providedAdapter, }: KeepUrlSyncProps<TMeta>): void;
164
+
105
165
  type KeepCollectionFeature = "search" | "sort" | "pagination" | "tagFilter" | "bulkActions";
166
+ type KeepLayoutPreset = "list" | "grid" | "compact";
106
167
  type KeepCollectionProps<TMeta = Record<string, unknown>> = Omit<HTMLAttributes<HTMLElement>, "children"> & {
107
168
  query?: KeepListQuery<TMeta>;
108
169
  pageSize?: number;
170
+ layout?: KeepLayoutPreset;
171
+ urlSync?: boolean | KeepUrlSyncOptions;
172
+ urlAdapter?: KeepUrlAdapter;
109
173
  features?: Partial<Record<KeepCollectionFeature, boolean>>;
110
174
  renderItem?: (item: KeepItem<TMeta>, state: KeepListState<TMeta>) => ReactNode;
111
175
  itemCardProps?: Omit<KeepItemCardProps<TMeta>, "item" | "children" | "render">;
@@ -128,6 +192,13 @@ type KeepItemCheckboxProps<TMeta = Record<string, unknown>> = Omit<InputHTMLAttr
128
192
  /** A reusable accessible selection checkbox for a saved item. */
129
193
  declare function KeepItemCheckbox<TMeta = Record<string, unknown>>({ item, checked, label, onCheckedChange, "aria-label": ariaLabel, ...props }: KeepItemCheckboxProps<TMeta>): react.JSX.Element;
130
194
 
195
+ type KeepLayoutProps = Omit<HTMLAttributes<HTMLElement>, "children"> & {
196
+ layout?: KeepLayoutPreset;
197
+ children?: ReactNode;
198
+ };
199
+ /** A CSS-free layout wrapper with responsive grid presets and data attributes for host styling. */
200
+ declare function KeepLayout({ layout, children, style, ...props }: KeepLayoutProps): react.JSX.Element;
201
+
131
202
  type KeepNoteEditorState<TMeta = Record<string, unknown>> = {
132
203
  item: KeepItem<TMeta>;
133
204
  note: string;
@@ -191,6 +262,13 @@ type KeepTagFilterProps<TMeta = Record<string, unknown>> = Omit<HTMLAttributes<H
191
262
  /** An ARIA button group for tag filtering; consumers can connect value to a collection query. */
192
263
  declare function KeepTagFilter<TMeta = Record<string, unknown>>({ query, value: controlledValue, defaultValue, onChange, onValueChange, allLabel, ariaLabel, renderTag, render, children, asChild, className, ...rootProps }: KeepTagFilterProps<TMeta>): react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
193
264
 
265
+ type KeepUndoProps = Omit<HTMLAttributes<HTMLElement>, "children"> & {
266
+ children?: ReactNode;
267
+ label?: ReactNode;
268
+ };
269
+ /** Presents the short-lived undo action created by removeWithUndo/removeBatchWithUndo. */
270
+ declare function KeepUndo({ children, label, ...props }: KeepUndoProps): react.JSX.Element | null;
271
+
194
272
  type KeepSearchInputProps = Omit<InputHTMLAttributes<HTMLInputElement>, "value" | "defaultValue" | "onChange"> & {
195
273
  value?: string;
196
274
  defaultValue?: string;
@@ -258,11 +336,12 @@ declare function KeepAnnouncements<TMeta = Record<string, unknown>>({ messages,
258
336
  /** Singular alias for applications that mount one announcer explicitly. */
259
337
  declare const KeepAnnouncer: typeof KeepAnnouncements;
260
338
 
261
- type KeepUiLabelKey = "save" | "saved" | "remove" | "loading" | "saving" | "syncing" | "error" | "allTags" | "filterTags" | "note" | "saveNote" | "noItems" | "loadingItems" | "errorItems" | "search" | "sort" | "newest" | "oldest" | "savedNewest" | "savedOldest" | "updatedNewest" | "updatedOldest" | "previousPage" | "nextPage" | "pagination" | "page" | "selectItems" | "selectedCount" | "deleteSelected" | "tagsToApply" | "applyTags" | "savedMessage" | "removedMessage" | "noteSavedMessage";
339
+ type KeepUiLabelKey = "save" | "saved" | "remove" | "loading" | "saving" | "syncing" | "error" | "allTags" | "tags" | "filterTags" | "note" | "saveNote" | "noItems" | "loadingItems" | "errorItems" | "search" | "sort" | "newest" | "oldest" | "savedNewest" | "savedOldest" | "updatedNewest" | "updatedOldest" | "previousPage" | "nextPage" | "pagination" | "page" | "selectItems" | "selectedCount" | "deleteSelected" | "tagsToApply" | "applyTags" | "savedMessage" | "removedMessage" | "undo" | "undoAvailable" | "selectionScope" | "currentPage" | "searchResults" | "allItems" | "statusAvailable" | "noteSavedMessage" | "exportData" | "importData" | "importMode" | "merge" | "replace" | "importedCount" | "failedCount" | "storageQuotaError" | "statusExpired" | "statusRemoved" | "statusDeleted" | "statusPrivate" | "statusUnknown";
262
340
  type KeepUiLabels = Partial<Record<KeepUiLabelKey, string>>;
263
341
  type KeepUiLabelContext = {
264
342
  locale?: string;
265
343
  labels: Readonly<Record<KeepUiLabelKey, string>>;
344
+ customLabels?: KeepUiLabels;
266
345
  labelResolver?: (key: KeepUiLabelKey, context: {
267
346
  locale?: string;
268
347
  }) => string | undefined;
@@ -276,6 +355,7 @@ type KeepUiProviderProps = {
276
355
  /** Provides one locale-aware label source to every UI primitive. */
277
356
  declare function KeepUiProvider({ labels, locale, labelResolver, children }: KeepUiProviderProps): react.JSX.Element;
278
357
  declare function useKeepUiLabels(): KeepUiLabelContext;
358
+ declare function getKeepLocaleLabels(locale?: string): KeepUiLabels;
279
359
 
280
360
  type KeepKitProviderProps<TMeta = Record<string, unknown>> = Omit<KeepProviderProps<TMeta>, "children"> & Omit<KeepUiProviderProps, "children"> & {
281
361
  children?: ReactNode;
@@ -290,6 +370,7 @@ type CreateKeepKitOptions<TMeta = Record<string, unknown>> = CreateKeepKitOption
290
370
  type KeepKit<TMeta = Record<string, unknown>> = {
291
371
  Provider: ComponentType<KeepKitProviderProps<TMeta>>;
292
372
  Button: ComponentType<KeepButtonProps<TMeta>>;
373
+ Backup: ComponentType<KeepBackupProps<TMeta>>;
293
374
  Collection: ComponentType<KeepCollectionProps<TMeta>>;
294
375
  useContext: () => ReturnType<typeof useKeepContext<TMeta>>;
295
376
  useItem: (item?: KeepItemInput<TMeta>) => ReturnType<typeof useKeepItem<TMeta>>;
@@ -299,4 +380,4 @@ type KeepKit<TMeta = Record<string, unknown>> = {
299
380
  /** Create one typed application API for the core and standard UI layer. */
300
381
  declare function createKeepKit<TMeta = Record<string, unknown>>(options?: CreateKeepKitOptions<TMeta>): KeepKit<TMeta>;
301
382
 
302
- export { type CreateKeepKitOptions, KeepAnnouncements, type KeepAnnouncementsProps, KeepAnnouncer, KeepBulkActions, type KeepBulkActionsProps, type KeepBulkActionsState, KeepButton, type KeepButtonLabels, type KeepButtonProps, KeepCollection, type KeepCollectionFeature, type KeepCollectionProps, KeepEmptyState, type KeepEmptyStateProps, type KeepImageProps, KeepItemCard, type KeepItemCardProps, type KeepItemCardState, KeepItemCheckbox, type KeepItemCheckboxProps, type KeepKit, KeepKitProvider, type KeepKitProviderProps, KeepList, type KeepListProps, type KeepListState, KeepNoteEditor, type KeepNoteEditorProps, type KeepNoteEditorState, KeepPagination, type KeepPaginationProps, type KeepPaginationState, KeepSearchInput, type KeepSearchInputProps, KeepSortSelect, type KeepSortSelectProps, type KeepSortValue, KeepStatus, type KeepStatusLabels, type KeepStatusProps, type KeepStatusState, type KeepStatusValue, KeepTagEditor, type KeepTagEditorProps, type KeepTagEditorState, KeepTagFilter, type KeepTagFilterProps, type KeepTagFilterState, type KeepUiLabelContext, type KeepUiLabelKey, type KeepUiLabels, KeepUiProvider, type KeepUiProviderProps, type RenderProp, createKeepKit, isAllSelected, toggleSelectAll, useKeepUiLabels };
383
+ export { type CreateKeepKitOptions, KeepAnnouncements, type KeepAnnouncementsProps, KeepAnnouncer, KeepBackup, type KeepBackupProps, KeepBulkActions, type KeepBulkActionsProps, type KeepBulkActionsState, KeepButton, type KeepButtonLabels, type KeepButtonProps, KeepCollection, type KeepCollectionFeature, type KeepCollectionProps, KeepEmptyState, type KeepEmptyStateProps, type KeepImageProps, KeepItemCard, type KeepItemCardLinkProps, type KeepItemCardProps, type KeepItemCardState, KeepItemCheckbox, type KeepItemCheckboxProps, type KeepKit, KeepKitProvider, type KeepKitProviderProps, KeepLayout, type KeepLayoutPreset, type KeepLayoutProps, KeepList, type KeepListProps, type KeepListState, KeepNoteEditor, type KeepNoteEditorProps, type KeepNoteEditorState, type KeepPagesRouterLike, KeepPagination, type KeepPaginationProps, type KeepPaginationState, KeepSearchInput, type KeepSearchInputProps, type KeepSelectionScope, KeepSortSelect, type KeepSortSelectProps, type KeepSortValue, KeepStatus, type KeepStatusLabels, type KeepStatusProps, type KeepStatusState, type KeepStatusValue, KeepTagEditor, type KeepTagEditorProps, type KeepTagEditorState, KeepTagFilter, type KeepTagFilterProps, type KeepTagFilterState, type KeepUiLabelContext, type KeepUiLabelKey, type KeepUiLabels, KeepUiProvider, type KeepUiProviderProps, KeepUndo, type KeepUndoProps, type KeepUrlAdapter, type RenderProp, createKeepKit, createNextPagesRouterAdapter, getKeepLocaleLabels, isAllSelected, toggleSelectAll, useKeepUiLabels, useKeepUrlSync };