@xyhp915/slack-base-ui 0.0.13 → 0.0.14

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.
Files changed (65) hide show
  1. package/libs/components/AlertDialog.d.ts +26 -0
  2. package/libs/components/AlertDialog.d.ts.map +1 -0
  3. package/libs/components/AutoComplete.d.ts +32 -0
  4. package/libs/components/AutoComplete.d.ts.map +1 -0
  5. package/libs/components/Avatar.d.ts +13 -0
  6. package/libs/components/Avatar.d.ts.map +1 -0
  7. package/libs/components/Badge.d.ts +8 -0
  8. package/libs/components/Badge.d.ts.map +1 -0
  9. package/libs/components/Button.d.ts +12 -0
  10. package/libs/components/Button.d.ts.map +1 -0
  11. package/libs/components/Checkbox.d.ts +21 -0
  12. package/libs/components/Checkbox.d.ts.map +1 -0
  13. package/libs/components/Combobox.d.ts +77 -0
  14. package/libs/components/Combobox.d.ts.map +1 -0
  15. package/libs/components/ContextMenu.d.ts +85 -0
  16. package/libs/components/ContextMenu.d.ts.map +1 -0
  17. package/libs/components/Dialog.d.ts +107 -0
  18. package/libs/components/Dialog.d.ts.map +1 -0
  19. package/libs/components/Dropdown.d.ts +177 -0
  20. package/libs/components/Dropdown.d.ts.map +1 -0
  21. package/libs/components/Form.d.ts +77 -0
  22. package/libs/components/Form.d.ts.map +1 -0
  23. package/libs/components/IconButton.d.ts +9 -0
  24. package/libs/components/IconButton.d.ts.map +1 -0
  25. package/libs/components/Input.d.ts +8 -0
  26. package/libs/components/Input.d.ts.map +1 -0
  27. package/libs/components/Loading.d.ts +16 -0
  28. package/libs/components/Loading.d.ts.map +1 -0
  29. package/libs/components/Menu.d.ts +89 -0
  30. package/libs/components/Menu.d.ts.map +1 -0
  31. package/libs/components/Popover.d.ts +112 -0
  32. package/libs/components/Popover.d.ts.map +1 -0
  33. package/libs/components/Progress.d.ts +18 -0
  34. package/libs/components/Progress.d.ts.map +1 -0
  35. package/libs/components/Radio.d.ts +29 -0
  36. package/libs/components/Radio.d.ts.map +1 -0
  37. package/libs/components/Select.d.ts +31 -0
  38. package/libs/components/Select.d.ts.map +1 -0
  39. package/libs/components/Switch.d.ts +20 -0
  40. package/libs/components/Switch.d.ts.map +1 -0
  41. package/libs/components/Tabs.d.ts +30 -0
  42. package/libs/components/Tabs.d.ts.map +1 -0
  43. package/libs/components/Toast.d.ts +49 -0
  44. package/libs/components/Toast.d.ts.map +1 -0
  45. package/libs/components/Tooltip.d.ts +9 -0
  46. package/libs/components/Tooltip.d.ts.map +1 -0
  47. package/libs/components/index.d.ts +47 -0
  48. package/libs/components/index.d.ts.map +1 -0
  49. package/libs/context/ThemeContext.d.ts +15 -0
  50. package/libs/context/ThemeContext.d.ts.map +1 -0
  51. package/libs/context/useTheme.d.ts +2 -0
  52. package/libs/context/useTheme.d.ts.map +1 -0
  53. package/libs/index.d.ts +3 -46
  54. package/libs/index.d.ts.map +1 -1
  55. package/libs/index.js +688 -687
  56. package/libs/theme.d.ts +3 -0
  57. package/libs/theme.d.ts.map +1 -0
  58. package/libs/theme.js +2 -0
  59. package/libs/useTheme-P7tC1A4a.js +26 -0
  60. package/package.json +16 -1
  61. package/src/context/ThemeContext.tsx +3 -3
  62. package/src/index.ts +3 -0
  63. package/src/theme.ts +8 -0
  64. package/tsconfig.libs.json +7 -2
  65. package/vite.libs.config.ts +5 -2
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ export type AlertDialogVariant = 'info' | 'success' | 'warning' | 'danger';
3
+ export interface AlertDialogProps {
4
+ open?: boolean;
5
+ onOpenChange?: (open: boolean) => void;
6
+ title: string;
7
+ description?: string;
8
+ children?: React.ReactNode;
9
+ variant?: AlertDialogVariant;
10
+ confirmText?: string;
11
+ cancelText?: string;
12
+ onConfirm?: () => void | Promise<void>;
13
+ onCancel?: () => void;
14
+ showCancel?: boolean;
15
+ confirmButtonVariant?: 'primary' | 'secondary' | 'danger' | 'ghost';
16
+ className?: string;
17
+ }
18
+ export declare const AlertDialog: {
19
+ ({ open, onOpenChange, title, description, children, variant, confirmText, cancelText, onConfirm, onCancel, showCancel, confirmButtonVariant, className, }: AlertDialogProps): import("react/jsx-runtime").JSX.Element;
20
+ displayName: string;
21
+ };
22
+ export interface AlertDialogTriggerProps extends React.ComponentPropsWithoutRef<'button'> {
23
+ asChild?: boolean;
24
+ }
25
+ export declare const AlertDialogTrigger: React.ForwardRefExoticComponent<AlertDialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
26
+ //# sourceMappingURL=AlertDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AlertDialog.d.ts","sourceRoot":"","sources":["../../src/components/AlertDialog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE3E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oBAAoB,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAyBD,eAAO,MAAM,WAAW;gKAcrB,gBAAgB;;CAkGlB,CAAA;AAKD,MAAM,WAAW,uBAAwB,SAAQ,KAAK,CAAC,wBAAwB,CAAC,QAAQ,CAAC;IACvF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,kBAAkB,mGAY9B,CAAA"}
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ export interface AutoCompleteOption {
3
+ value: string;
4
+ label: string;
5
+ disabled?: boolean;
6
+ }
7
+ export interface AutoCompleteProps {
8
+ options: AutoCompleteOption[];
9
+ value?: string;
10
+ defaultValue?: string;
11
+ onValueChange?: (value: string) => void;
12
+ /** Called when the raw input text changes */
13
+ onInputChange?: (input: string) => void;
14
+ placeholder?: string;
15
+ disabled?: boolean;
16
+ required?: boolean;
17
+ /** Label shown above the input */
18
+ label?: string;
19
+ /** Error message shown below the input */
20
+ error?: string;
21
+ fullWidth?: boolean;
22
+ /** Show a clear button when a value is selected */
23
+ clearable?: boolean;
24
+ /** Maximum dropdown height (Tailwind class) */
25
+ maxHeight?: string;
26
+ /** No-results message */
27
+ emptyMessage?: string;
28
+ className?: string;
29
+ id?: string;
30
+ }
31
+ export declare const AutoComplete: React.ForwardRefExoticComponent<AutoCompleteProps & React.RefAttributes<HTMLInputElement>>;
32
+ //# sourceMappingURL=AutoComplete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoComplete.d.ts","sourceRoot":"","sources":["../../src/components/AutoComplete.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,kBAAkB,EAAE,CAAA;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,6CAA6C;IAC7C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,mDAAmD;IACnD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yBAAyB;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AAED,eAAO,MAAM,YAAY,4FAgRxB,CAAA"}
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ export type AvatarStatus = 'online' | 'away' | 'dnd' | 'offline';
3
+ export type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
4
+ export interface AvatarProps extends React.ComponentPropsWithoutRef<'div'> {
5
+ src?: string;
6
+ alt?: string;
7
+ fallback?: string;
8
+ size?: AvatarSize;
9
+ status?: AvatarStatus;
10
+ rounded?: boolean;
11
+ }
12
+ export declare const Avatar: React.ForwardRefExoticComponent<AvatarProps & React.RefAttributes<HTMLDivElement>>;
13
+ //# sourceMappingURL=Avatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../src/components/Avatar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;AACjE,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1D,MAAM,WAAW,WAAY,SAAQ,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC;IACxE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,MAAM,oFAoDlB,CAAA"}
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ export interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
3
+ count?: number;
4
+ dot?: boolean;
5
+ variant?: 'danger' | 'neutral';
6
+ }
7
+ export declare const Badge: React.ForwardRefExoticComponent<BadgeProps & React.RefAttributes<HTMLSpanElement>>;
8
+ //# sourceMappingURL=Badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../../src/components/Badge.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,WAAW,UAAW,SAAQ,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAChC;AAED,eAAO,MAAM,KAAK,oFAoCjB,CAAA"}
@@ -0,0 +1,12 @@
1
+ import type { ButtonProps as BaseButtonProps } from '@base-ui/react';
2
+ import React from 'react';
3
+ type ButtonVariant = 'primary' | 'secondary' | 'danger' | 'ghost';
4
+ type ButtonSize = 'sm' | 'md' | 'lg';
5
+ export interface ButtonProps extends BaseButtonProps {
6
+ variant?: ButtonVariant;
7
+ size?: ButtonSize;
8
+ fullWidth?: boolean;
9
+ }
10
+ export declare const Button: React.ForwardRefExoticComponent<Omit<ButtonProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
11
+ export {};
12
+ //# sourceMappingURL=Button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/components/Button.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACpE,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,KAAK,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;AAClE,KAAK,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAErC,MAAM,WAAW,WAAY,SAAQ,eAAe;IAClD,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,MAAM,oGAmClB,CAAA"}
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ export interface CheckboxProps {
3
+ checked?: boolean;
4
+ defaultChecked?: boolean;
5
+ onCheckedChange?: (checked: boolean) => void;
6
+ indeterminate?: boolean;
7
+ disabled?: boolean;
8
+ required?: boolean;
9
+ /** Label text shown next to the checkbox */
10
+ label?: string;
11
+ /** Helper text shown below the label */
12
+ description?: string;
13
+ /** Error message */
14
+ error?: string;
15
+ name?: string;
16
+ value?: string;
17
+ id?: string;
18
+ className?: string;
19
+ }
20
+ export declare const Checkbox: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<HTMLButtonElement>>;
21
+ //# sourceMappingURL=Checkbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../src/components/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IAC5C,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,eAAO,MAAM,QAAQ,yFAkFpB,CAAA"}
@@ -0,0 +1,77 @@
1
+ import React from 'react';
2
+ export interface ComboboxOption {
3
+ value: string;
4
+ label: string;
5
+ disabled?: boolean;
6
+ }
7
+ export interface ComboboxGroup {
8
+ label: string;
9
+ options: ComboboxOption[];
10
+ }
11
+ export interface ComboboxProps {
12
+ /** Flat option list */
13
+ options?: ComboboxOption[];
14
+ /** Grouped option list (mutually exclusive with `options`) */
15
+ groups?: ComboboxGroup[];
16
+ /** Controlled selected value */
17
+ value?: ComboboxOption | null;
18
+ /** Initial selected value (uncontrolled) */
19
+ defaultValue?: ComboboxOption | null;
20
+ /** Callback when the selected value changes */
21
+ onValueChange?: (value: ComboboxOption | null) => void;
22
+ /** Placeholder text shown in the input */
23
+ placeholder?: string;
24
+ /** Whether the combobox is disabled */
25
+ disabled?: boolean;
26
+ /** Whether a value is required */
27
+ required?: boolean;
28
+ /** Label shown above the input */
29
+ label?: string;
30
+ /** Error message shown below the input */
31
+ error?: string;
32
+ /** Whether the combobox takes full width */
33
+ fullWidth?: boolean;
34
+ /** Whether the user can clear the selected value */
35
+ clearable?: boolean;
36
+ /** No-results message */
37
+ emptyMessage?: string;
38
+ /** Additional CSS class on the outermost container */
39
+ className?: string;
40
+ /** HTML id forwarded to the input */
41
+ id?: string;
42
+ }
43
+ export interface ComboboxMultipleProps {
44
+ /** Flat option list */
45
+ options?: ComboboxOption[];
46
+ /** Grouped option list */
47
+ groups?: ComboboxGroup[];
48
+ /** Controlled selected values */
49
+ value?: ComboboxOption[];
50
+ /** Initial selected values (uncontrolled) */
51
+ defaultValue?: ComboboxOption[];
52
+ /** Callback when selected values change */
53
+ onValueChange?: (value: ComboboxOption[]) => void;
54
+ /** Placeholder text shown in the input */
55
+ placeholder?: string;
56
+ /** Whether the combobox is disabled */
57
+ disabled?: boolean;
58
+ /** Whether a value is required */
59
+ required?: boolean;
60
+ /** Label shown above the input */
61
+ label?: string;
62
+ /** Error message shown below the input */
63
+ error?: string;
64
+ /** Whether the combobox takes full width */
65
+ fullWidth?: boolean;
66
+ /** Whether the user can clear all selected values */
67
+ clearable?: boolean;
68
+ /** No-results message */
69
+ emptyMessage?: string;
70
+ /** Additional CSS class on the outermost container */
71
+ className?: string;
72
+ /** HTML id forwarded to the input */
73
+ id?: string;
74
+ }
75
+ export declare const Combobox: React.ForwardRefExoticComponent<ComboboxProps & React.RefAttributes<HTMLInputElement>>;
76
+ export declare const ComboboxMultiple: React.ForwardRefExoticComponent<ComboboxMultipleProps & React.RefAttributes<HTMLInputElement>>;
77
+ //# sourceMappingURL=Combobox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../src/components/Combobox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,cAAc,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,uBAAuB;IACvB,OAAO,CAAC,EAAE,cAAc,EAAE,CAAA;IAC1B,8DAA8D;IAC9D,MAAM,CAAC,EAAE,aAAa,EAAE,CAAA;IACxB,gCAAgC;IAChC,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;IAC7B,4CAA4C;IAC5C,YAAY,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;IACpC,+CAA+C;IAC/C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAA;IACtD,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,4CAA4C;IAC5C,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,oDAAoD;IACpD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,yBAAyB;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qCAAqC;IACrC,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,qBAAqB;IACpC,uBAAuB;IACvB,OAAO,CAAC,EAAE,cAAc,EAAE,CAAA;IAC1B,0BAA0B;IAC1B,MAAM,CAAC,EAAE,aAAa,EAAE,CAAA;IACxB,iCAAiC;IACjC,KAAK,CAAC,EAAE,cAAc,EAAE,CAAA;IACxB,6CAA6C;IAC7C,YAAY,CAAC,EAAE,cAAc,EAAE,CAAA;IAC/B,2CAA2C;IAC3C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,IAAI,CAAA;IACjD,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,4CAA4C;IAC5C,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,qDAAqD;IACrD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,yBAAyB;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qCAAqC;IACrC,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AAmCD,eAAO,MAAM,QAAQ,wFAoIpB,CAAA;AAMD,eAAO,MAAM,gBAAgB,gGAuK5B,CAAA"}
@@ -0,0 +1,85 @@
1
+ import React from 'react';
2
+ export interface ContextMenuProps {
3
+ children: React.ReactNode;
4
+ open?: boolean;
5
+ defaultOpen?: boolean;
6
+ onOpenChange?: (open: boolean) => void;
7
+ }
8
+ export interface ContextMenuTriggerProps {
9
+ children: React.ReactNode;
10
+ className?: string;
11
+ disabled?: boolean;
12
+ }
13
+ export interface ContextMenuContentProps {
14
+ children: React.ReactNode;
15
+ className?: string;
16
+ }
17
+ export interface ContextMenuItemProps {
18
+ children: React.ReactNode;
19
+ className?: string;
20
+ disabled?: boolean;
21
+ onSelect?: () => void;
22
+ destructive?: boolean;
23
+ }
24
+ export interface ContextMenuCheckboxItemProps {
25
+ children: React.ReactNode;
26
+ className?: string;
27
+ checked?: boolean;
28
+ onCheckedChange?: (checked: boolean) => void;
29
+ disabled?: boolean;
30
+ }
31
+ export interface ContextMenuRadioGroupProps {
32
+ children: React.ReactNode;
33
+ value?: string;
34
+ onValueChange?: (value: string) => void;
35
+ }
36
+ export interface ContextMenuRadioItemProps {
37
+ children: React.ReactNode;
38
+ value: string;
39
+ className?: string;
40
+ disabled?: boolean;
41
+ }
42
+ export interface ContextMenuLabelProps {
43
+ children: React.ReactNode;
44
+ className?: string;
45
+ }
46
+ export interface ContextMenuSeparatorProps {
47
+ className?: string;
48
+ }
49
+ export interface ContextMenuSubProps {
50
+ children: React.ReactNode;
51
+ open?: boolean;
52
+ defaultOpen?: boolean;
53
+ onOpenChange?: (open: boolean) => void;
54
+ }
55
+ export interface ContextMenuSubTriggerProps {
56
+ children: React.ReactNode;
57
+ className?: string;
58
+ disabled?: boolean;
59
+ }
60
+ export interface ContextMenuSubContentProps {
61
+ children: React.ReactNode;
62
+ className?: string;
63
+ }
64
+ export declare const ContextMenu: React.FC<ContextMenuProps>;
65
+ export declare const ContextMenuTrigger: React.ForwardRefExoticComponent<ContextMenuTriggerProps & React.RefAttributes<HTMLDivElement>>;
66
+ export declare const ContextMenuContent: React.ForwardRefExoticComponent<ContextMenuContentProps & React.RefAttributes<HTMLDivElement>>;
67
+ export declare const ContextMenuItem: React.ForwardRefExoticComponent<ContextMenuItemProps & React.RefAttributes<HTMLDivElement>>;
68
+ export declare const ContextMenuCheckboxItem: React.ForwardRefExoticComponent<ContextMenuCheckboxItemProps & React.RefAttributes<HTMLDivElement>>;
69
+ export declare const ContextMenuRadioGroup: React.FC<ContextMenuRadioGroupProps>;
70
+ export declare const ContextMenuRadioItem: React.ForwardRefExoticComponent<ContextMenuRadioItemProps & React.RefAttributes<HTMLDivElement>>;
71
+ export declare const ContextMenuLabel: React.FC<ContextMenuLabelProps>;
72
+ export declare const ContextMenuSeparator: React.FC<ContextMenuSeparatorProps>;
73
+ export declare const ContextMenuSub: React.FC<ContextMenuSubProps>;
74
+ export declare const ContextMenuSubTrigger: React.ForwardRefExoticComponent<ContextMenuSubTriggerProps & React.RefAttributes<HTMLButtonElement>>;
75
+ export declare const ContextMenuSubContent: React.ForwardRefExoticComponent<ContextMenuSubContentProps & React.RefAttributes<HTMLDivElement>>;
76
+ export declare const ContextMenuItemWithIcon: React.FC<{
77
+ icon?: React.ReactNode;
78
+ children: React.ReactNode;
79
+ shortcut?: string;
80
+ className?: string;
81
+ disabled?: boolean;
82
+ onSelect?: () => void;
83
+ destructive?: boolean;
84
+ }>;
85
+ //# sourceMappingURL=ContextMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextMenu.d.ts","sourceRoot":"","sources":["../../src/components/ContextMenu.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ import React from 'react';
2
+ export type DialogSize = 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';
3
+ export interface DialogProps {
4
+ open?: boolean;
5
+ onOpenChange?: (open: boolean) => void;
6
+ title?: string;
7
+ description?: string;
8
+ children?: React.ReactNode;
9
+ size?: DialogSize;
10
+ showCloseButton?: boolean;
11
+ className?: string;
12
+ }
13
+ export declare const Dialog: {
14
+ ({ open, onOpenChange, title, description, children, size, showCloseButton, className, }: DialogProps): import("react/jsx-runtime").JSX.Element;
15
+ displayName: string;
16
+ };
17
+ export declare const DialogHeader: ({ children, className }: {
18
+ children: React.ReactNode;
19
+ className?: string;
20
+ }) => import("react/jsx-runtime").JSX.Element;
21
+ export declare const DialogBody: ({ children, className }: {
22
+ children: React.ReactNode;
23
+ className?: string;
24
+ }) => import("react/jsx-runtime").JSX.Element;
25
+ export declare const DialogFooter: ({ children, className }: {
26
+ children: React.ReactNode;
27
+ className?: string;
28
+ }) => import("react/jsx-runtime").JSX.Element;
29
+ export interface DialogTriggerProps extends React.ComponentPropsWithoutRef<'button'> {
30
+ asChild?: boolean;
31
+ }
32
+ export declare const DialogTrigger: React.ForwardRefExoticComponent<DialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
33
+ export declare const DialogClose: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").AlertDialogCloseProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
34
+ export interface ShowDialogOptions {
35
+ title?: string;
36
+ description?: string;
37
+ /** Custom content rendered inside the dialog body */
38
+ content?: React.ReactNode;
39
+ size?: DialogSize;
40
+ showCloseButton?: boolean;
41
+ className?: string;
42
+ }
43
+ export interface ConfirmDialogOptions {
44
+ title?: string;
45
+ description?: string;
46
+ content?: React.ReactNode;
47
+ size?: DialogSize;
48
+ confirmLabel?: string;
49
+ cancelLabel?: string;
50
+ confirmVariant?: 'primary' | 'danger' | 'secondary';
51
+ }
52
+ export interface AlertDialogOptions {
53
+ title?: string;
54
+ description?: string;
55
+ content?: React.ReactNode;
56
+ size?: DialogSize;
57
+ confirmLabel?: string;
58
+ }
59
+ export interface UseDialogReturn {
60
+ /** Show a generic dialog. Resolves when the dialog is closed. */
61
+ show: (options: ShowDialogOptions) => Promise<void>;
62
+ /** Show a confirm dialog. Resolves `true` when confirmed, `false` when cancelled. */
63
+ confirm: (options: ConfirmDialogOptions) => Promise<boolean>;
64
+ /** Show an alert dialog with a single OK button. Resolves when dismissed. */
65
+ alert: (options: AlertDialogOptions) => Promise<void>;
66
+ }
67
+ /**
68
+ * Provides the imperative dialog API to all descendant components.
69
+ * Must wrap any component that calls `useDialog()`.
70
+ *
71
+ * @example
72
+ * ```tsx
73
+ * // main.tsx
74
+ * <DialogProvider>
75
+ * <App />
76
+ * </DialogProvider>
77
+ *
78
+ * // Any component
79
+ * const { show, confirm, alert } = useDialog()
80
+ * await confirm({ title: 'Delete?', confirmLabel: 'Delete', confirmVariant: 'danger' })
81
+ * ```
82
+ */
83
+ export declare const DialogProvider: React.FC<{
84
+ children: React.ReactNode;
85
+ }>;
86
+ /**
87
+ * Returns imperative methods for showing dialogs from anywhere in the component tree.
88
+ *
89
+ * Must be used inside `<DialogProvider>`.
90
+ *
91
+ * @example
92
+ * ```tsx
93
+ * const { show, confirm, alert } = useDialog()
94
+ *
95
+ * // Generic dialog
96
+ * await show({ title: 'Welcome', content: <p>Hello world</p> })
97
+ *
98
+ * // Confirm
99
+ * const ok = await confirm({ title: 'Delete item?', confirmLabel: 'Delete', confirmVariant: 'danger' })
100
+ * if (ok) deleteItem()
101
+ *
102
+ * // Alert
103
+ * await alert({ title: 'Error', description: 'Something went wrong.' })
104
+ * ```
105
+ */
106
+ export declare function useDialog(): UseDialogReturn;
107
+ //# sourceMappingURL=Dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../src/components/Dialog.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,177 @@
1
+ import React from 'react';
2
+ export interface DropdownOption {
3
+ value: string;
4
+ label: string;
5
+ /** Optional icon rendered before the label */
6
+ icon?: React.ReactNode;
7
+ /** Show shortcut hint on the right */
8
+ shortcut?: string;
9
+ disabled?: boolean;
10
+ /** Renders in red to indicate destructive action */
11
+ destructive?: boolean;
12
+ }
13
+ export interface DropdownGroup {
14
+ /** Group header label */
15
+ label: string;
16
+ options: DropdownOption[];
17
+ }
18
+ export interface DropdownProps {
19
+ children: React.ReactNode;
20
+ open?: boolean;
21
+ defaultOpen?: boolean;
22
+ onOpenChange?: (open: boolean) => void;
23
+ /** Called when the user selects an option */
24
+ onSelect?: (value: string) => void;
25
+ }
26
+ export interface DropdownTriggerProps {
27
+ children?: React.ReactNode;
28
+ className?: string;
29
+ render?: React.ReactElement;
30
+ }
31
+ export interface DropdownContentProps {
32
+ children: React.ReactNode;
33
+ className?: string;
34
+ side?: 'top' | 'right' | 'bottom' | 'left';
35
+ align?: 'start' | 'center' | 'end';
36
+ sideOffset?: number;
37
+ alignOffset?: number;
38
+ }
39
+ export interface DropdownItemProps {
40
+ value: string;
41
+ children: React.ReactNode;
42
+ icon?: React.ReactNode;
43
+ shortcut?: string;
44
+ className?: string;
45
+ disabled?: boolean;
46
+ destructive?: boolean;
47
+ onSelect?: (value: string) => void;
48
+ }
49
+ export interface DropdownLabelProps {
50
+ children: React.ReactNode;
51
+ className?: string;
52
+ }
53
+ export interface DropdownSeparatorProps {
54
+ className?: string;
55
+ }
56
+ export interface DropdownGroupProps {
57
+ label: string;
58
+ children: React.ReactNode;
59
+ className?: string;
60
+ }
61
+ export declare const Dropdown: React.FC<DropdownProps>;
62
+ export declare const DropdownTrigger: React.ForwardRefExoticComponent<DropdownTriggerProps & React.RefAttributes<HTMLButtonElement>>;
63
+ export declare const DropdownContent: React.ForwardRefExoticComponent<DropdownContentProps & React.RefAttributes<HTMLDivElement>>;
64
+ export declare const DropdownItem: React.ForwardRefExoticComponent<DropdownItemProps & React.RefAttributes<HTMLDivElement>>;
65
+ export declare const DropdownLabel: React.FC<DropdownLabelProps>;
66
+ export declare const DropdownSeparator: React.FC<DropdownSeparatorProps>;
67
+ export declare const DropdownGroup: React.FC<DropdownGroupProps>;
68
+ /** Convenience: render a list of DropdownOption objects inside a DropdownContent */
69
+ export declare const DropdownOptionList: React.FC<{
70
+ options: DropdownOption[];
71
+ onSelect?: (value: string) => void;
72
+ }>;
73
+ /** Convenience: render a list of DropdownGroup objects inside a DropdownContent */
74
+ export declare const DropdownGroupList: React.FC<{
75
+ groups: DropdownGroup[];
76
+ onSelect?: (value: string) => void;
77
+ }>;
78
+ export interface DropdownSubProps {
79
+ children: React.ReactNode;
80
+ open?: boolean;
81
+ defaultOpen?: boolean;
82
+ onOpenChange?: (open: boolean) => void;
83
+ }
84
+ export interface DropdownSubTriggerProps {
85
+ children: React.ReactNode;
86
+ className?: string;
87
+ disabled?: boolean;
88
+ }
89
+ export interface DropdownSubContentProps {
90
+ children: React.ReactNode;
91
+ className?: string;
92
+ }
93
+ export declare const DropdownSub: React.FC<DropdownSubProps>;
94
+ export declare const DropdownSubTrigger: React.ForwardRefExoticComponent<DropdownSubTriggerProps & React.RefAttributes<HTMLButtonElement>>;
95
+ export declare const DropdownSubContent: React.ForwardRefExoticComponent<DropdownSubContentProps & React.RefAttributes<HTMLDivElement>>;
96
+ export interface DropdownShowOptions {
97
+ /** Flat list of options (use `groups` for grouped layout) */
98
+ options?: DropdownOption[];
99
+ /** Grouped options (renders group headers + separators) */
100
+ groups?: DropdownGroup[];
101
+ /** Called when the user picks an option */
102
+ onSelect?: (value: string) => void;
103
+ side?: 'top' | 'right' | 'bottom' | 'left';
104
+ align?: 'start' | 'center' | 'end';
105
+ sideOffset?: number;
106
+ alignOffset?: number;
107
+ className?: string;
108
+ }
109
+ export interface UseDropdownReturn {
110
+ /**
111
+ * Show the dropdown anchored to the given element.
112
+ * Replaces any currently open dropdown.
113
+ */
114
+ show: (anchor: HTMLElement | null, options: DropdownShowOptions) => void;
115
+ /** Close the dropdown. */
116
+ hide: () => void;
117
+ /**
118
+ * Toggle the dropdown for the given anchor.
119
+ * Closes if the same anchor is already open; otherwise opens on the new anchor.
120
+ */
121
+ toggle: (anchor: HTMLElement | null, options: DropdownShowOptions) => void;
122
+ /** Whether the dropdown is currently open. */
123
+ isOpen: boolean;
124
+ }
125
+ /**
126
+ * Provides the imperative dropdown API to all descendant components.
127
+ * Only one dropdown is shown at a time (singleton).
128
+ *
129
+ * @example
130
+ * ```tsx
131
+ * // main.tsx
132
+ * <DropdownProvider>
133
+ * <App />
134
+ * </DropdownProvider>
135
+ *
136
+ * // Any component
137
+ * const dropdown = useDropdown()
138
+ *
139
+ * <button onClick={e => dropdown.show(e.currentTarget, {
140
+ * options: [
141
+ * { value: 'edit', label: '编辑', icon: <Edit size={14} /> },
142
+ * { value: 'delete', label: '删除', destructive: true },
143
+ * ],
144
+ * onSelect: (value) => handleAction(value),
145
+ * })}>
146
+ * 操作
147
+ * </button>
148
+ * ```
149
+ */
150
+ export declare const DropdownProvider: React.FC<{
151
+ children: React.ReactNode;
152
+ }>;
153
+ /**
154
+ * Returns imperative methods for showing a dropdown anchored to any element.
155
+ *
156
+ * Must be used inside `<DropdownProvider>`.
157
+ *
158
+ * @example
159
+ * ```tsx
160
+ * const dropdown = useDropdown()
161
+ *
162
+ * // Show
163
+ * <button onClick={e => dropdown.show(e.currentTarget, {
164
+ * options: [{ value: 'copy', label: 'Copy' }, { value: 'paste', label: 'Paste' }],
165
+ * onSelect: (v) => console.log(v),
166
+ * })}>
167
+ * Actions
168
+ * </button>
169
+ *
170
+ * // Toggle (click again to close)
171
+ * <button onClick={e => dropdown.toggle(e.currentTarget, { options, onSelect })}>
172
+ * Toggle
173
+ * </button>
174
+ * ```
175
+ */
176
+ export declare function useDropdown(): UseDropdownReturn;
177
+ //# sourceMappingURL=Dropdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dropdown.d.ts","sourceRoot":"","sources":["../../src/components/Dropdown.tsx"],"names":[],"mappings":"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"}