@xyhp915/slack-base-ui 0.0.4 → 0.0.5

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
@@ -178,6 +178,15 @@ npm run preview
178
178
  - 适用于上下文操作场景
179
179
  - [详细文档](./docs/POPOVER_MENU_CONTEXTMENU.md#context-menu-组件)
180
180
 
181
+ ### Toast - 通知条
182
+ - 基于 Base UI 的 `Toast` 组件
183
+ - 五种语义类型:`default`、`info`、`success`、`warning`、`error`
184
+ - **六个显示位置**:`top-left`、`top-center`、`top-right`、`bottom-left`、`bottom-center`、`bottom-right`
185
+ - 支持可选操作按钮(action)和自定义超时时长
186
+ - 通过 `<ToastProvider position="…">` 设置默认位置
187
+ - 运行时通过 `useToast()` 返回的 `setPosition()` 动态切换位置
188
+ - 使用 `useToast()` 命令式调用,无需管理状态
189
+
181
190
  ## 🎨 主题系统
182
191
 
183
192
  项目使用 CSS 变量实现主题切换,所有颜色都定义在 `src/index.css` 中:
@@ -293,6 +302,55 @@ function ConfirmDialog() {
293
302
  }
294
303
  ```
295
304
 
305
+ ### Toast 通知
306
+
307
+ ```tsx
308
+ import { useToast } from './components/Toast';
309
+
310
+ function NotifyButton() {
311
+ const { toast } = useToast();
312
+
313
+ return (
314
+ <Button onClick={() =>
315
+ toast({
316
+ type: 'success',
317
+ title: 'Message sent!',
318
+ description: 'Your message was delivered to #general.',
319
+ })
320
+ }>
321
+ Send Message
322
+ </Button>
323
+ );
324
+ }
325
+ ```
326
+
327
+ ### Toast 自定义位置
328
+
329
+ ```tsx
330
+ // 1. 在 Provider 上设置默认位置(main.tsx)
331
+ <ToastProvider position="top-right">
332
+ <App />
333
+ </ToastProvider>
334
+
335
+ // 2. 在任意组件中运行时切换位置
336
+ function ToastPositionDemo() {
337
+ const { toast, setPosition } = useToast();
338
+
339
+ return (
340
+ <button onClick={() => {
341
+ setPosition('top-center');
342
+ toast({ type: 'info', title: '已切换到顶部居中' });
343
+ }}>
344
+ 切换到 top-center
345
+ </button>
346
+ );
347
+ }
348
+ ```
349
+
350
+ > **支持的 6 个位置:**
351
+ > `top-left` · `top-center` · `top-right`
352
+ > `bottom-left` · `bottom-center` · `bottom-right`(默认)
353
+
296
354
  ## 🚀 命令式 API
297
355
 
298
356
  Dialog 和 Popover 均支持不依赖声明式 JSX、直接用代码调用的**命令式 API**,使用方式与 `useToast()` 完全一致。
package/libs/Toast.d.ts CHANGED
@@ -1,13 +1,24 @@
1
1
  import React from 'react';
2
2
  export type ToastType = 'default' | 'info' | 'success' | 'warning' | 'error';
3
+ export type ToastPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
3
4
  export interface ToastProviderProps {
4
5
  children: React.ReactNode;
5
6
  timeout?: number;
6
7
  limit?: number;
8
+ /** Where toasts appear on screen. Defaults to `'bottom-right'`. */
9
+ position?: ToastPosition;
7
10
  }
8
11
  /**
9
12
  * Wrap your app (or part of it) with `ToastProvider` to enable toasts.
10
13
  * Then use the `useToast()` hook inside to add toasts.
14
+ *
15
+ * @example
16
+ * // Positon can be set at provider level:
17
+ * <ToastProvider position="top-center">...</ToastProvider>
18
+ *
19
+ * // Or changed at runtime via the hook:
20
+ * const { setPosition } = useToast()
21
+ * setPosition('top-right')
11
22
  */
12
23
  export declare const ToastProvider: React.FC<ToastProviderProps>;
13
24
  export interface ToastOptions {
@@ -23,11 +34,16 @@ export interface ToastOptions {
23
34
  }
24
35
  /**
25
36
  * Hook to imperatively add, close and update toasts.
37
+ * Also exposes `position` / `setPosition` for runtime position changes.
26
38
  *
27
39
  * Must be used inside `<ToastProvider>`.
28
40
  */
29
41
  export declare function useToast(): {
30
42
  toast: (options: ToastOptions) => string;
31
43
  dismiss: (toastId: string) => void;
44
+ /** Current toast position */
45
+ position: ToastPosition;
46
+ /** Dynamically change where toasts appear */
47
+ setPosition: (p: ToastPosition) => void;
32
48
  };
33
49
  //# sourceMappingURL=Toast.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../src/components/Toast.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAA;AAI5E,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAWtD,CAAA;AAID,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,8CAA8C;IAC9C,MAAM,CAAC,EAAE;QACP,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,IAAI,CAAA;KACpB,CAAA;CACF;AAED;;;;GAIG;AACH,wBAAgB,QAAQ;qBAGH,YAAY;;EAYhC"}
1
+ {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../src/components/Toast.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8C,MAAM,OAAO,CAAA;AAOlE,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAA;AAE5E,MAAM,MAAM,aAAa,GACrB,UAAU,GACV,YAAY,GACZ,WAAW,GACX,aAAa,GACb,eAAe,GACf,cAAc,CAAA;AAyBlB,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,mEAAmE;IACnE,QAAQ,CAAC,EAAE,aAAa,CAAA;CACzB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAgBtD,CAAA;AAID,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,8CAA8C;IAC9C,MAAM,CAAC,EAAE;QACP,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,IAAI,CAAA;KACpB,CAAA;CACF;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ;qBAKH,YAAY;;IAW7B,6BAA6B;;IAE7B,6CAA6C;qBA/F9B,aAAa,KAAK,IAAI;EAkGxC"}
package/libs/index.d.ts CHANGED
@@ -35,7 +35,7 @@ export type { TabsProps, TabListProps, TabProps, TabPanelProps } from './Tabs';
35
35
  export { Progress } from './Progress';
36
36
  export type { ProgressProps } from './Progress';
37
37
  export { ToastProvider, useToast } from './Toast';
38
- export type { ToastProviderProps, ToastOptions, ToastType } from './Toast';
38
+ export type { ToastProviderProps, ToastOptions, ToastType, ToastPosition } from './Toast';
39
39
  export { Loading } from './Loading';
40
40
  export type { LoadingProps, LoadingVariant, LoadingSize } from './Loading';
41
41
  export { AutoComplete } from './AutoComplete';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/components/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/components/index.ts"],"names":[],"mappings":"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"}