hazo_chat 2.0.14 → 2.0.15

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 (155) hide show
  1. package/README.md +41 -5
  2. package/SETUP_CHECKLIST.md +73 -0
  3. package/package.json +1 -1
  4. package/dist/api/index.d.ts +0 -26
  5. package/dist/api/index.d.ts.map +0 -1
  6. package/dist/api/index.js +0 -25
  7. package/dist/api/index.js.map +0 -1
  8. package/dist/api/messages.d.ts +0 -34
  9. package/dist/api/messages.d.ts.map +0 -1
  10. package/dist/api/messages.js +0 -214
  11. package/dist/api/messages.js.map +0 -1
  12. package/dist/api/types.d.ts +0 -69
  13. package/dist/api/types.d.ts.map +0 -1
  14. package/dist/api/types.js +0 -8
  15. package/dist/api/types.js.map +0 -1
  16. package/dist/api/unread_count.d.ts +0 -57
  17. package/dist/api/unread_count.d.ts.map +0 -1
  18. package/dist/api/unread_count.js +0 -86
  19. package/dist/api/unread_count.js.map +0 -1
  20. package/dist/components/hazo_chat/hazo_chat.d.ts +0 -28
  21. package/dist/components/hazo_chat/hazo_chat.d.ts.map +0 -1
  22. package/dist/components/hazo_chat/hazo_chat.js +0 -201
  23. package/dist/components/hazo_chat/hazo_chat.js.map +0 -1
  24. package/dist/components/hazo_chat/hazo_chat_attachment_preview.d.ts +0 -17
  25. package/dist/components/hazo_chat/hazo_chat_attachment_preview.d.ts.map +0 -1
  26. package/dist/components/hazo_chat/hazo_chat_attachment_preview.js +0 -60
  27. package/dist/components/hazo_chat/hazo_chat_attachment_preview.js.map +0 -1
  28. package/dist/components/hazo_chat/hazo_chat_context.d.ts +0 -42
  29. package/dist/components/hazo_chat/hazo_chat_context.d.ts.map +0 -1
  30. package/dist/components/hazo_chat/hazo_chat_context.js +0 -273
  31. package/dist/components/hazo_chat/hazo_chat_context.js.map +0 -1
  32. package/dist/components/hazo_chat/hazo_chat_document_viewer.d.ts +0 -15
  33. package/dist/components/hazo_chat/hazo_chat_document_viewer.d.ts.map +0 -1
  34. package/dist/components/hazo_chat/hazo_chat_document_viewer.js +0 -140
  35. package/dist/components/hazo_chat/hazo_chat_document_viewer.js.map +0 -1
  36. package/dist/components/hazo_chat/hazo_chat_header.d.ts +0 -16
  37. package/dist/components/hazo_chat/hazo_chat_header.d.ts.map +0 -1
  38. package/dist/components/hazo_chat/hazo_chat_header.js +0 -24
  39. package/dist/components/hazo_chat/hazo_chat_header.js.map +0 -1
  40. package/dist/components/hazo_chat/hazo_chat_input.d.ts +0 -16
  41. package/dist/components/hazo_chat/hazo_chat_input.d.ts.map +0 -1
  42. package/dist/components/hazo_chat/hazo_chat_input.js +0 -75
  43. package/dist/components/hazo_chat/hazo_chat_input.js.map +0 -1
  44. package/dist/components/hazo_chat/hazo_chat_messages.d.ts +0 -17
  45. package/dist/components/hazo_chat/hazo_chat_messages.d.ts.map +0 -1
  46. package/dist/components/hazo_chat/hazo_chat_messages.js +0 -109
  47. package/dist/components/hazo_chat/hazo_chat_messages.js.map +0 -1
  48. package/dist/components/hazo_chat/hazo_chat_reference_list.d.ts +0 -16
  49. package/dist/components/hazo_chat/hazo_chat_reference_list.d.ts.map +0 -1
  50. package/dist/components/hazo_chat/hazo_chat_reference_list.js +0 -59
  51. package/dist/components/hazo_chat/hazo_chat_reference_list.js.map +0 -1
  52. package/dist/components/hazo_chat/hazo_chat_sidebar.d.ts +0 -18
  53. package/dist/components/hazo_chat/hazo_chat_sidebar.d.ts.map +0 -1
  54. package/dist/components/hazo_chat/hazo_chat_sidebar.js +0 -72
  55. package/dist/components/hazo_chat/hazo_chat_sidebar.js.map +0 -1
  56. package/dist/components/hazo_chat/index.d.ts +0 -16
  57. package/dist/components/hazo_chat/index.d.ts.map +0 -1
  58. package/dist/components/hazo_chat/index.js +0 -19
  59. package/dist/components/hazo_chat/index.js.map +0 -1
  60. package/dist/components/index.d.ts +0 -9
  61. package/dist/components/index.d.ts.map +0 -1
  62. package/dist/components/index.js +0 -11
  63. package/dist/components/index.js.map +0 -1
  64. package/dist/components/ui/avatar.d.ts +0 -13
  65. package/dist/components/ui/avatar.d.ts.map +0 -1
  66. package/dist/components/ui/avatar.js +0 -28
  67. package/dist/components/ui/avatar.js.map +0 -1
  68. package/dist/components/ui/badge.d.ts +0 -16
  69. package/dist/components/ui/badge.d.ts.map +0 -1
  70. package/dist/components/ui/badge.js +0 -36
  71. package/dist/components/ui/badge.js.map +0 -1
  72. package/dist/components/ui/button.d.ts +0 -18
  73. package/dist/components/ui/button.d.ts.map +0 -1
  74. package/dist/components/ui/button.js +0 -47
  75. package/dist/components/ui/button.js.map +0 -1
  76. package/dist/components/ui/chat_bubble.d.ts +0 -18
  77. package/dist/components/ui/chat_bubble.d.ts.map +0 -1
  78. package/dist/components/ui/chat_bubble.js +0 -107
  79. package/dist/components/ui/chat_bubble.js.map +0 -1
  80. package/dist/components/ui/hover-card.d.ts +0 -13
  81. package/dist/components/ui/hover-card.d.ts.map +0 -1
  82. package/dist/components/ui/hover-card.js +0 -17
  83. package/dist/components/ui/hover-card.js.map +0 -1
  84. package/dist/components/ui/index.d.ts +0 -19
  85. package/dist/components/ui/index.d.ts.map +0 -1
  86. package/dist/components/ui/index.js +0 -21
  87. package/dist/components/ui/index.js.map +0 -1
  88. package/dist/components/ui/input.d.ts +0 -11
  89. package/dist/components/ui/input.d.ts.map +0 -1
  90. package/dist/components/ui/input.js +0 -18
  91. package/dist/components/ui/input.js.map +0 -1
  92. package/dist/components/ui/loading_skeleton.d.ts +0 -19
  93. package/dist/components/ui/loading_skeleton.d.ts.map +0 -1
  94. package/dist/components/ui/loading_skeleton.js +0 -30
  95. package/dist/components/ui/loading_skeleton.js.map +0 -1
  96. package/dist/components/ui/scroll-area.d.ts +0 -12
  97. package/dist/components/ui/scroll-area.d.ts.map +0 -1
  98. package/dist/components/ui/scroll-area.js +0 -25
  99. package/dist/components/ui/scroll-area.js.map +0 -1
  100. package/dist/components/ui/separator.d.ts +0 -11
  101. package/dist/components/ui/separator.d.ts.map +0 -1
  102. package/dist/components/ui/separator.js +0 -18
  103. package/dist/components/ui/separator.js.map +0 -1
  104. package/dist/components/ui/skeleton.d.ts +0 -9
  105. package/dist/components/ui/skeleton.d.ts.map +0 -1
  106. package/dist/components/ui/skeleton.js +0 -16
  107. package/dist/components/ui/skeleton.js.map +0 -1
  108. package/dist/components/ui/textarea.d.ts +0 -11
  109. package/dist/components/ui/textarea.d.ts.map +0 -1
  110. package/dist/components/ui/textarea.js +0 -18
  111. package/dist/components/ui/textarea.js.map +0 -1
  112. package/dist/components/ui/tooltip.d.ts +0 -14
  113. package/dist/components/ui/tooltip.d.ts.map +0 -1
  114. package/dist/components/ui/tooltip.js +0 -30
  115. package/dist/components/ui/tooltip.js.map +0 -1
  116. package/dist/hooks/index.d.ts +0 -10
  117. package/dist/hooks/index.d.ts.map +0 -1
  118. package/dist/hooks/index.js +0 -10
  119. package/dist/hooks/index.js.map +0 -1
  120. package/dist/hooks/use_chat_messages.d.ts +0 -33
  121. package/dist/hooks/use_chat_messages.d.ts.map +0 -1
  122. package/dist/hooks/use_chat_messages.js +0 -466
  123. package/dist/hooks/use_chat_messages.js.map +0 -1
  124. package/dist/hooks/use_chat_references.d.ts +0 -17
  125. package/dist/hooks/use_chat_references.d.ts.map +0 -1
  126. package/dist/hooks/use_chat_references.js +0 -133
  127. package/dist/hooks/use_chat_references.js.map +0 -1
  128. package/dist/hooks/use_file_upload.d.ts +0 -23
  129. package/dist/hooks/use_file_upload.d.ts.map +0 -1
  130. package/dist/hooks/use_file_upload.js +0 -212
  131. package/dist/hooks/use_file_upload.js.map +0 -1
  132. package/dist/index.d.ts +0 -13
  133. package/dist/index.d.ts.map +0 -1
  134. package/dist/index.js +0 -17
  135. package/dist/index.js.map +0 -1
  136. package/dist/lib/config.d.ts +0 -41
  137. package/dist/lib/config.d.ts.map +0 -1
  138. package/dist/lib/config.js +0 -93
  139. package/dist/lib/config.js.map +0 -1
  140. package/dist/lib/constants.d.ts +0 -41
  141. package/dist/lib/constants.d.ts.map +0 -1
  142. package/dist/lib/constants.js +0 -72
  143. package/dist/lib/constants.js.map +0 -1
  144. package/dist/lib/index.d.ts +0 -9
  145. package/dist/lib/index.d.ts.map +0 -1
  146. package/dist/lib/index.js +0 -9
  147. package/dist/lib/index.js.map +0 -1
  148. package/dist/lib/utils.d.ts +0 -17
  149. package/dist/lib/utils.d.ts.map +0 -1
  150. package/dist/lib/utils.js +0 -20
  151. package/dist/lib/utils.js.map +0 -1
  152. package/dist/types/index.d.ts +0 -404
  153. package/dist/types/index.d.ts.map +0 -1
  154. package/dist/types/index.js +0 -11
  155. package/dist/types/index.js.map +0 -1
@@ -1,17 +0,0 @@
1
- /**
2
- * HazoChatMessages Component
3
- *
4
- * Scrollable message list with:
5
- * - Infinite scroll for older messages
6
- * - Auto-scroll to new messages
7
- * - Scroll to highlighted message
8
- * - Empty and loading states
9
- *
10
- * Uses shadcn/ui ScrollArea component.
11
- */
12
- import type { HazoChatMessagesProps } from '../../types/index.js';
13
- export declare function HazoChatMessages({ messages, current_user_id, timezone, is_loading, has_more, on_load_more, on_delete_message, on_scroll_to_message, highlighted_message_id, show_delete_button, bubble_radius, className }: HazoChatMessagesProps): import("react/jsx-runtime").JSX.Element;
14
- export declare namespace HazoChatMessages {
15
- var displayName: string;
16
- }
17
- //# sourceMappingURL=hazo_chat_messages.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hazo_chat_messages.d.ts","sourceRoot":"","sources":["../../../src/components/hazo_chat/hazo_chat_messages.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,KAAK,EAAE,qBAAqB,EAAqB,MAAM,sBAAsB,CAAC;AAUrF,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,eAAe,EACf,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAyB,EACzB,aAAyB,EACzB,SAAS,EACV,EAAE,qBAAqB,2CA4JvB;yBAzKe,gBAAgB"}
@@ -1,109 +0,0 @@
1
- /**
2
- * HazoChatMessages Component
3
- *
4
- * Scrollable message list with:
5
- * - Infinite scroll for older messages
6
- * - Auto-scroll to new messages
7
- * - Scroll to highlighted message
8
- * - Empty and loading states
9
- *
10
- * Uses shadcn/ui ScrollArea component.
11
- */
12
- 'use client';
13
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
- import { useRef, useEffect, useCallback } from 'react';
15
- import { cn } from '../../lib/utils.js';
16
- import { ChatBubble } from '../ui/chat_bubble.js';
17
- import { LoadingSkeleton } from '../ui/loading_skeleton.js';
18
- import { ScrollArea } from '../ui/scroll-area.js';
19
- import { EMPTY_CHAT_MESSAGE } from '../../lib/constants.js';
20
- // ============================================================================
21
- // Component
22
- // ============================================================================
23
- export function HazoChatMessages({ messages, current_user_id, timezone, is_loading, has_more, on_load_more, on_delete_message, on_scroll_to_message, highlighted_message_id, show_delete_button = true, bubble_radius = 'default', className }) {
24
- const container_ref = useRef(null);
25
- const load_more_trigger_ref = useRef(null);
26
- const is_at_bottom_ref = useRef(true);
27
- const previous_messages_length_ref = useRef(0);
28
- // -------------------------------------------------------------------------
29
- // Intersection observer for infinite scroll
30
- // -------------------------------------------------------------------------
31
- useEffect(() => {
32
- const trigger = load_more_trigger_ref.current;
33
- if (!trigger || !has_more)
34
- return;
35
- const observer = new IntersectionObserver((entries) => {
36
- if (entries[0].isIntersecting) {
37
- on_load_more();
38
- }
39
- }, { threshold: 0.1 });
40
- observer.observe(trigger);
41
- return () => {
42
- observer.disconnect();
43
- };
44
- }, [has_more, on_load_more]);
45
- // -------------------------------------------------------------------------
46
- // Track scroll position
47
- // -------------------------------------------------------------------------
48
- const handle_scroll = useCallback(() => {
49
- const container = container_ref.current;
50
- if (!container)
51
- return;
52
- // Check if scrolled to bottom
53
- const threshold = 50;
54
- is_at_bottom_ref.current =
55
- container.scrollHeight - container.scrollTop - container.clientHeight < threshold;
56
- }, []);
57
- // -------------------------------------------------------------------------
58
- // Auto-scroll to bottom on new messages (if already at bottom)
59
- // -------------------------------------------------------------------------
60
- useEffect(() => {
61
- const container = container_ref.current;
62
- if (!container)
63
- return;
64
- // Only auto-scroll if we were at the bottom and new messages arrived
65
- if (is_at_bottom_ref.current && messages.length > previous_messages_length_ref.current) {
66
- container.scrollTop = container.scrollHeight;
67
- }
68
- previous_messages_length_ref.current = messages.length;
69
- }, [messages.length]);
70
- // -------------------------------------------------------------------------
71
- // Scroll to highlighted message
72
- // -------------------------------------------------------------------------
73
- useEffect(() => {
74
- if (!highlighted_message_id)
75
- return;
76
- const element = document.getElementById(`message-${highlighted_message_id}`);
77
- if (element) {
78
- element.scrollIntoView({ behavior: 'smooth', block: 'center' });
79
- }
80
- }, [highlighted_message_id]);
81
- // -------------------------------------------------------------------------
82
- // Handle reference click in message
83
- // -------------------------------------------------------------------------
84
- const handle_reference_click = useCallback((reference) => {
85
- // This would be handled by parent via context
86
- console.log('[HazoChatMessages] Reference clicked:', reference);
87
- }, []);
88
- // -------------------------------------------------------------------------
89
- // Loading state
90
- // -------------------------------------------------------------------------
91
- if (is_loading && messages.length === 0) {
92
- return (_jsx("div", { className: cn('cls_messages_loading p-4', className), children: _jsx(LoadingSkeleton, { variant: "message", count: 5 }) }));
93
- }
94
- // -------------------------------------------------------------------------
95
- // Empty state
96
- // -------------------------------------------------------------------------
97
- if (!is_loading && messages.length === 0) {
98
- return (_jsx("div", { className: cn('cls_messages_empty', 'flex items-center justify-center h-full', 'px-6 py-8', 'text-muted-foreground text-sm', className), children: EMPTY_CHAT_MESSAGE }));
99
- }
100
- // -------------------------------------------------------------------------
101
- // Messages list
102
- // -------------------------------------------------------------------------
103
- return (_jsx(ScrollArea, { className: cn('cls_hazo_chat_messages flex-1', className), children: _jsxs("div", { ref: container_ref, onScroll: handle_scroll, className: cn('cls_messages_container', 'p-4', 'flex flex-col-reverse' // Reverse order for bottom-up display
104
- ), role: "log", "aria-label": "Chat messages", "aria-live": "polite", children: [messages.map((message) => (_jsx(ChatBubble, { message: message, is_sender: message.sender_user_id === current_user_id, sender_profile: message.sender_profile, timezone: timezone, on_delete: message.sender_user_id === current_user_id
105
- ? () => on_delete_message(message.id)
106
- : undefined, on_reference_click: handle_reference_click, is_highlighted: highlighted_message_id === message.id, show_delete_button: show_delete_button, bubble_radius: bubble_radius }, message.id))), has_more && (_jsx("div", { ref: load_more_trigger_ref, className: "cls_load_more_trigger py-4", children: _jsx(LoadingSkeleton, { variant: "message", count: 2 }) }))] }) }));
107
- }
108
- HazoChatMessages.displayName = 'HazoChatMessages';
109
- //# sourceMappingURL=hazo_chat_messages.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hazo_chat_messages.js","sourceRoot":"","sources":["../../../src/components/hazo_chat/hazo_chat_messages.tsx"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- /**
2
- * HazoChatReferenceList Component
3
- *
4
- * Displays a list of document/field/URL references as text chips with:
5
- * - File name display
6
- * - Selection state (highlighted background)
7
- * - Click to open in viewer + scroll to message
8
- *
9
- * Uses shadcn/ui Button and Tooltip components.
10
- */
11
- import type { HazoChatReferenceListProps } from '../../types/index.js';
12
- export declare function HazoChatReferenceList({ references, selected_reference_id, on_select, className }: HazoChatReferenceListProps): import("react/jsx-runtime").JSX.Element;
13
- export declare namespace HazoChatReferenceList {
14
- var displayName: string;
15
- }
16
- //# sourceMappingURL=hazo_chat_reference_list.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hazo_chat_reference_list.d.ts","sourceRoot":"","sources":["../../../src/components/hazo_chat/hazo_chat_reference_list.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,KAAK,EAAE,0BAA0B,EAAqB,MAAM,sBAAsB,CAAC;AAqF1F,wBAAgB,qBAAqB,CAAC,EACpC,UAAU,EACV,qBAAqB,EACrB,SAAS,EACT,SAAS,EACV,EAAE,0BAA0B,2CA2C5B;yBAhDe,qBAAqB"}
@@ -1,59 +0,0 @@
1
- /**
2
- * HazoChatReferenceList Component
3
- *
4
- * Displays a list of document/field/URL references as text chips with:
5
- * - File name display
6
- * - Selection state (highlighted background)
7
- * - Click to open in viewer + scroll to message
8
- *
9
- * Uses shadcn/ui Button and Tooltip components.
10
- */
11
- 'use client';
12
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
- import { useCallback } from 'react';
14
- import { cn } from '../../lib/utils.js';
15
- import { Button } from '../ui/button.js';
16
- import { Tooltip, TooltipContent, TooltipTrigger } from '../ui/tooltip.js';
17
- // ============================================================================
18
- // Helper Functions
19
- // ============================================================================
20
- /**
21
- * Get file extension from URL or name
22
- */
23
- function get_file_extension(reference) {
24
- const name = reference.name || reference.url;
25
- const parts = name.split('.');
26
- return parts.length > 1 ? parts.pop()?.toUpperCase() || '' : '';
27
- }
28
- /**
29
- * Get display name (truncated if needed)
30
- */
31
- function get_display_name(reference, max_length = 20) {
32
- const name = reference.name || 'Untitled';
33
- if (name.length <= max_length)
34
- return name;
35
- const ext = get_file_extension(reference);
36
- const name_without_ext = ext ? name.slice(0, -(ext.length + 1)) : name;
37
- const truncated = name_without_ext.slice(0, max_length - 3 - (ext ? ext.length + 1 : 0));
38
- return ext ? `${truncated}...${ext.toLowerCase()}` : `${truncated}...`;
39
- }
40
- function ReferenceItem({ reference, is_selected, on_click }) {
41
- const display_name = get_display_name(reference);
42
- return (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(Button, { variant: is_selected ? 'default' : 'outline', size: "sm", onClick: on_click, className: cn('cls_reference_item', 'h-7 px-2.5 text-xs font-medium', 'rounded-full', is_selected
43
- ? 'bg-primary text-primary-foreground'
44
- : 'bg-background hover:bg-accent'), "aria-label": `${reference.type}: ${reference.name}`, "aria-pressed": is_selected, children: display_name }) }), _jsxs(TooltipContent, { side: "bottom", className: "text-xs", children: [_jsx("p", { className: "font-medium", children: reference.name }), _jsxs("p", { className: "text-muted-foreground", children: [reference.type === 'document' ? 'Document' : reference.type === 'field' ? 'Field' : 'Link', ' • ', reference.scope === 'chat' ? 'Chat attachment' : 'Form reference'] })] })] }));
45
- }
46
- // ============================================================================
47
- // Main Component
48
- // ============================================================================
49
- export function HazoChatReferenceList({ references, selected_reference_id, on_select, className }) {
50
- const handle_select = useCallback((reference) => {
51
- on_select(reference);
52
- }, [on_select]);
53
- if (references.length === 0) {
54
- return (_jsx("div", { className: cn('cls_reference_list_empty', 'flex items-center justify-center py-1 px-2', 'text-xs text-muted-foreground italic', className), children: "No references" }));
55
- }
56
- return (_jsx("div", { className: cn('cls_hazo_chat_reference_list', 'flex flex-wrap items-center gap-1.5', className), role: "listbox", "aria-label": "Document references", children: references.map((reference) => (_jsx(ReferenceItem, { reference: reference, is_selected: selected_reference_id === reference.id, on_click: () => handle_select(reference) }, reference.id))) }));
57
- }
58
- HazoChatReferenceList.displayName = 'HazoChatReferenceList';
59
- //# sourceMappingURL=hazo_chat_reference_list.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hazo_chat_reference_list.js","sourceRoot":"","sources":["../../../src/components/hazo_chat/hazo_chat_reference_list.tsx"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- /**
2
- * HazoChatSidebar Component
3
- *
4
- * Collapsible sidebar containing:
5
- * - Reference list
6
- * - Document viewer
7
- *
8
- * On mobile: slides in from left as overlay
9
- * On desktop: always visible as left column
10
- *
11
- * Uses shadcn/ui Button, ScrollArea, and Separator components.
12
- */
13
- import type { HazoChatSidebarProps } from '../../types/index.js';
14
- export declare function HazoChatSidebar({ is_open, on_close, className, children }: HazoChatSidebarProps): import("react/jsx-runtime").JSX.Element;
15
- export declare namespace HazoChatSidebar {
16
- var displayName: string;
17
- }
18
- //# sourceMappingURL=hazo_chat_sidebar.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hazo_chat_sidebar.d.ts","sourceRoot":"","sources":["../../../src/components/hazo_chat/hazo_chat_sidebar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAUjE,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EACP,QAAQ,EACR,SAAS,EACT,QAAQ,EACT,EAAE,oBAAoB,2CAmGtB;yBAxGe,eAAe"}
@@ -1,72 +0,0 @@
1
- /**
2
- * HazoChatSidebar Component
3
- *
4
- * Collapsible sidebar containing:
5
- * - Reference list
6
- * - Document viewer
7
- *
8
- * On mobile: slides in from left as overlay
9
- * On desktop: always visible as left column
10
- *
11
- * Uses shadcn/ui Button, ScrollArea, and Separator components.
12
- */
13
- 'use client';
14
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
15
- import { useEffect, useCallback } from 'react';
16
- import { IoClose } from 'react-icons/io5';
17
- import { cn } from '../../lib/utils.js';
18
- import { MOBILE_BREAKPOINT } from '../../lib/constants.js';
19
- import { Button } from '../ui/button.js';
20
- import { ScrollArea } from '../ui/scroll-area.js';
21
- import { Separator } from '../ui/separator.js';
22
- // ============================================================================
23
- // Component
24
- // ============================================================================
25
- export function HazoChatSidebar({ is_open, on_close, className, children }) {
26
- // Handle escape key to close sidebar
27
- const handle_escape = useCallback((event) => {
28
- if (event.key === 'Escape' && is_open) {
29
- on_close();
30
- }
31
- }, [is_open, on_close]);
32
- // Handle click outside to close (mobile)
33
- const handle_backdrop_click = useCallback(() => {
34
- on_close();
35
- }, [on_close]);
36
- // Add escape key listener
37
- useEffect(() => {
38
- document.addEventListener('keydown', handle_escape);
39
- return () => {
40
- document.removeEventListener('keydown', handle_escape);
41
- };
42
- }, [handle_escape]);
43
- // Prevent body scroll when sidebar is open on mobile
44
- useEffect(() => {
45
- if (typeof window === 'undefined')
46
- return;
47
- const is_mobile = window.innerWidth < MOBILE_BREAKPOINT;
48
- if (is_open && is_mobile) {
49
- document.body.style.overflow = 'hidden';
50
- }
51
- else {
52
- document.body.style.overflow = '';
53
- }
54
- return () => {
55
- document.body.style.overflow = '';
56
- };
57
- }, [is_open]);
58
- return (_jsxs(_Fragment, { children: [_jsx("div", { className: cn('cls_sidebar_backdrop', 'fixed inset-0 bg-black/50 z-40', 'md:hidden', // Only on mobile
59
- 'transition-opacity duration-200', is_open ? 'opacity-100' : 'opacity-0 pointer-events-none'), onClick: handle_backdrop_click, "aria-hidden": "true" }), _jsxs("aside", { className: cn('cls_hazo_chat_sidebar',
60
- // Mobile: fixed overlay
61
- 'fixed md:relative', 'top-0 left-0 h-full z-50',
62
- // Sizing
63
- 'w-[280px] md:w-full',
64
- // Background
65
- 'bg-background border-r',
66
- // Transition
67
- 'transition-transform duration-200 ease-in-out',
68
- // Mobile: slide in/out
69
- is_open ? 'translate-x-0' : '-translate-x-full md:translate-x-0', className), "aria-label": "Chat sidebar", "aria-hidden": !is_open, children: [_jsxs("div", { className: "cls_sidebar_header flex items-center justify-between p-3 md:hidden", children: [_jsx("span", { className: "text-sm font-medium", children: "Documents & References" }), _jsx(Button, { variant: "ghost", size: "icon", onClick: on_close, className: "h-8 w-8", "aria-label": "Close sidebar", children: _jsx(IoClose, { className: "w-4 h-4" }) })] }), _jsx(Separator, { className: "md:hidden" }), _jsx(ScrollArea, { className: "cls_sidebar_content h-full flex flex-col", children: children })] })] }));
70
- }
71
- HazoChatSidebar.displayName = 'HazoChatSidebar';
72
- //# sourceMappingURL=hazo_chat_sidebar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hazo_chat_sidebar.js","sourceRoot":"","sources":["../../../src/components/hazo_chat/hazo_chat_sidebar.tsx"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- /**
2
- * HazoChat components barrel export file
3
- *
4
- * Exports all HazoChat components from the hazo_chat package.
5
- * All export paths use explicit .js extensions for ES module compatibility.
6
- */
7
- export { HazoChat } from './hazo_chat.js';
8
- export { HazoChatProvider, useHazoChatContext } from './hazo_chat_context.js';
9
- export { HazoChatHeader } from './hazo_chat_header.js';
10
- export { HazoChatSidebar } from './hazo_chat_sidebar.js';
11
- export { HazoChatReferenceList } from './hazo_chat_reference_list.js';
12
- export { HazoChatDocumentViewer } from './hazo_chat_document_viewer.js';
13
- export { HazoChatMessages } from './hazo_chat_messages.js';
14
- export { HazoChatInput } from './hazo_chat_input.js';
15
- export { HazoChatAttachmentPreview } from './hazo_chat_attachment_preview.js';
16
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/hazo_chat/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG9E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC"}
@@ -1,19 +0,0 @@
1
- /**
2
- * HazoChat components barrel export file
3
- *
4
- * Exports all HazoChat components from the hazo_chat package.
5
- * All export paths use explicit .js extensions for ES module compatibility.
6
- */
7
- // Main component
8
- export { HazoChat } from './hazo_chat.js';
9
- // Context
10
- export { HazoChatProvider, useHazoChatContext } from './hazo_chat_context.js';
11
- // Sub-components (for custom layouts)
12
- export { HazoChatHeader } from './hazo_chat_header.js';
13
- export { HazoChatSidebar } from './hazo_chat_sidebar.js';
14
- export { HazoChatReferenceList } from './hazo_chat_reference_list.js';
15
- export { HazoChatDocumentViewer } from './hazo_chat_document_viewer.js';
16
- export { HazoChatMessages } from './hazo_chat_messages.js';
17
- export { HazoChatInput } from './hazo_chat_input.js';
18
- export { HazoChatAttachmentPreview } from './hazo_chat_attachment_preview.js';
19
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/hazo_chat/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,iBAAiB;AACjB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,UAAU;AACV,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE9E,sCAAsC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Components barrel export file
3
- *
4
- * Exports all components from the hazo_chat package.
5
- * All export paths use explicit .js extensions for ES module compatibility.
6
- */
7
- export * from './hazo_chat/index.js';
8
- export * from './ui/index.js';
9
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,cAAc,sBAAsB,CAAC;AAGrC,cAAc,eAAe,CAAC"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Components barrel export file
3
- *
4
- * Exports all components from the hazo_chat package.
5
- * All export paths use explicit .js extensions for ES module compatibility.
6
- */
7
- // HazoChat components
8
- export * from './hazo_chat/index.js';
9
- // UI components
10
- export * from './ui/index.js';
11
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,sBAAsB;AACtB,cAAc,sBAAsB,CAAC;AAErC,gBAAgB;AAChB,cAAc,eAAe,CAAC"}
@@ -1,13 +0,0 @@
1
- /**
2
- * Avatar Component (shadcn/ui style)
3
- *
4
- * A user avatar component with image and fallback support.
5
- * Uses @radix-ui/react-avatar for accessibility.
6
- */
7
- import * as React from 'react';
8
- import * as AvatarPrimitive from '@radix-ui/react-avatar';
9
- declare const Avatar: React.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarProps & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
10
- declare const AvatarImage: React.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarImageProps & React.RefAttributes<HTMLImageElement>, "ref"> & React.RefAttributes<HTMLImageElement>>;
11
- declare const AvatarFallback: React.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarFallbackProps & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
12
- export { Avatar, AvatarImage, AvatarFallback };
13
- //# sourceMappingURL=avatar.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../../src/components/ui/avatar.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAO1D,QAAA,MAAM,MAAM,yJAYV,CAAC;AAQH,QAAA,MAAM,WAAW,gKASf,CAAC;AAQH,QAAA,MAAM,cAAc,iKAYlB,CAAC;AAIH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC"}
@@ -1,28 +0,0 @@
1
- /**
2
- * Avatar Component (shadcn/ui style)
3
- *
4
- * A user avatar component with image and fallback support.
5
- * Uses @radix-ui/react-avatar for accessibility.
6
- */
7
- 'use client';
8
- import { jsx as _jsx } from "react/jsx-runtime";
9
- import * as React from 'react';
10
- import * as AvatarPrimitive from '@radix-ui/react-avatar';
11
- import { cn } from '../../lib/utils.js';
12
- // ============================================================================
13
- // Avatar Root
14
- // ============================================================================
15
- const Avatar = React.forwardRef(({ className, ...props }, ref) => (_jsx(AvatarPrimitive.Root, { ref: ref, className: cn('relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full', className), ...props })));
16
- Avatar.displayName = AvatarPrimitive.Root.displayName;
17
- // ============================================================================
18
- // Avatar Image
19
- // ============================================================================
20
- const AvatarImage = React.forwardRef(({ className, ...props }, ref) => (_jsx(AvatarPrimitive.Image, { ref: ref, className: cn('aspect-square h-full w-full', className), ...props })));
21
- AvatarImage.displayName = AvatarPrimitive.Image.displayName;
22
- // ============================================================================
23
- // Avatar Fallback
24
- // ============================================================================
25
- const AvatarFallback = React.forwardRef(({ className, ...props }, ref) => (_jsx(AvatarPrimitive.Fallback, { ref: ref, className: cn('flex h-full w-full items-center justify-center rounded-full bg-muted', className), ...props })));
26
- AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
27
- export { Avatar, AvatarImage, AvatarFallback };
28
- //# sourceMappingURL=avatar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"avatar.js","sourceRoot":"","sources":["../../../src/components/ui/avatar.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAExC,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAG7B,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAClC,KAAC,eAAe,CAAC,IAAI,IACnB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,+DAA+D,EAC/D,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC,CAAC;AAEH,MAAM,CAAC,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC;AAEtD,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAGlC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAClC,KAAC,eAAe,CAAC,KAAK,IACpB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,6BAA6B,EAAE,SAAS,CAAC,KACnD,KAAK,GACT,CACH,CAAC,CAAC;AAEH,WAAW,CAAC,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC;AAE5D,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAGrC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAClC,KAAC,eAAe,CAAC,QAAQ,IACvB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,sEAAsE,EACtE,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC,CAAC;AAEH,cAAc,CAAC,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC;AAElE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC"}
@@ -1,16 +0,0 @@
1
- /**
2
- * Badge Component (shadcn/ui style)
3
- *
4
- * A badge component for status indicators and labels.
5
- * Uses class-variance-authority for variant management.
6
- */
7
- import * as React from 'react';
8
- import { type VariantProps } from 'class-variance-authority';
9
- declare const badge_variants: (props?: ({
10
- variant?: "default" | "destructive" | "outline" | "secondary" | "success" | "warning" | null | undefined;
11
- } & import("class-variance-authority/types").ClassProp) | undefined) => string;
12
- export interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badge_variants> {
13
- }
14
- declare function Badge({ className, variant, ...props }: BadgeProps): import("react/jsx-runtime").JSX.Element;
15
- export { Badge, badge_variants };
16
- //# sourceMappingURL=badge.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../src/components/ui/badge.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAOlE,QAAA,MAAM,cAAc;;8EAsBnB,CAAC;AAMF,MAAM,WAAW,UACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAC1C,YAAY,CAAC,OAAO,cAAc,CAAC;CAAG;AAM1C,iBAAS,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,2CAI1D;AAED,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC"}
@@ -1,36 +0,0 @@
1
- /**
2
- * Badge Component (shadcn/ui style)
3
- *
4
- * A badge component for status indicators and labels.
5
- * Uses class-variance-authority for variant management.
6
- */
7
- 'use client';
8
- import { jsx as _jsx } from "react/jsx-runtime";
9
- import { cva } from 'class-variance-authority';
10
- import { cn } from '../../lib/utils.js';
11
- // ============================================================================
12
- // Badge Variants
13
- // ============================================================================
14
- const badge_variants = cva('inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2', {
15
- variants: {
16
- variant: {
17
- default: 'border-transparent bg-primary text-primary-foreground hover:bg-primary/80',
18
- secondary: 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',
19
- destructive: 'border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80',
20
- outline: 'text-foreground',
21
- success: 'border-transparent bg-green-500 text-white hover:bg-green-600',
22
- warning: 'border-transparent bg-yellow-500 text-white hover:bg-yellow-600',
23
- },
24
- },
25
- defaultVariants: {
26
- variant: 'default',
27
- },
28
- });
29
- // ============================================================================
30
- // Component
31
- // ============================================================================
32
- function Badge({ className, variant, ...props }) {
33
- return (_jsx("div", { className: cn(badge_variants({ variant }), className), ...props }));
34
- }
35
- export { Badge, badge_variants };
36
- //# sourceMappingURL=badge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../../src/components/ui/badge.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,CAAC;;AAGb,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAExC,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,MAAM,cAAc,GAAG,GAAG,CACxB,wKAAwK,EACxK;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EACL,2EAA2E;YAC7E,SAAS,EACP,iFAAiF;YACnF,WAAW,EACT,uFAAuF;YACzF,OAAO,EAAE,iBAAiB;YAC1B,OAAO,EACL,+DAA+D;YACjE,OAAO,EACL,iEAAiE;SACpE;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;KACnB;CACF,CACF,CAAC;AAUF,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,SAAS,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,EAAc;IACzD,OAAO,CACL,cAAK,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAC1E,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC"}
@@ -1,18 +0,0 @@
1
- /**
2
- * Button Component (shadcn/ui style)
3
- *
4
- * A versatile button component with multiple variants and sizes.
5
- * Uses class-variance-authority for variant management.
6
- */
7
- import * as React from 'react';
8
- import { type VariantProps } from 'class-variance-authority';
9
- declare const button_variants: (props?: ({
10
- variant?: "default" | "link" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
11
- size?: "default" | "sm" | "lg" | "icon" | null | undefined;
12
- } & import("class-variance-authority/types").ClassProp) | undefined) => string;
13
- export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof button_variants> {
14
- as_child?: boolean;
15
- }
16
- declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
17
- export { Button, button_variants };
18
- //# sourceMappingURL=button.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/components/ui/button.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAOlE,QAAA,MAAM,eAAe;;;8EAwBpB,CAAC;AAMF,MAAM,WAAW,WACf,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EACnD,YAAY,CAAC,OAAO,eAAe,CAAC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAMD,QAAA,MAAM,MAAM,uFAWX,CAAC;AAIF,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC"}
@@ -1,47 +0,0 @@
1
- /**
2
- * Button Component (shadcn/ui style)
3
- *
4
- * A versatile button component with multiple variants and sizes.
5
- * Uses class-variance-authority for variant management.
6
- */
7
- 'use client';
8
- import { jsx as _jsx } from "react/jsx-runtime";
9
- import * as React from 'react';
10
- import { Slot } from '@radix-ui/react-slot';
11
- import { cva } from 'class-variance-authority';
12
- import { cn } from '../../lib/utils.js';
13
- // ============================================================================
14
- // Button Variants
15
- // ============================================================================
16
- const button_variants = cva('inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0', {
17
- variants: {
18
- variant: {
19
- default: 'bg-primary text-primary-foreground hover:bg-primary/90',
20
- destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90',
21
- outline: 'border border-input bg-background hover:bg-accent hover:text-accent-foreground',
22
- secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80',
23
- ghost: 'hover:bg-accent hover:text-accent-foreground',
24
- link: 'text-primary underline-offset-4 hover:underline',
25
- },
26
- size: {
27
- default: 'h-10 px-4 py-2',
28
- sm: 'h-9 rounded-md px-3',
29
- lg: 'h-11 rounded-md px-8',
30
- icon: 'h-10 w-10',
31
- },
32
- },
33
- defaultVariants: {
34
- variant: 'default',
35
- size: 'default',
36
- },
37
- });
38
- // ============================================================================
39
- // Component
40
- // ============================================================================
41
- const Button = React.forwardRef(({ className, variant, size, as_child = false, ...props }, ref) => {
42
- const Comp = as_child ? Slot : 'button';
43
- return (_jsx(Comp, { className: cn(button_variants({ variant, size, className })), ref: ref, ...props }));
44
- });
45
- Button.displayName = 'Button';
46
- export { Button, button_variants };
47
- //# sourceMappingURL=button.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"button.js","sourceRoot":"","sources":["../../../src/components/ui/button.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAExC,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,MAAM,eAAe,GAAG,GAAG,CACzB,0VAA0V,EAC1V;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,wDAAwD;YACjE,WAAW,EAAE,oEAAoE;YACjF,OAAO,EAAE,gFAAgF;YACzF,SAAS,EAAE,8DAA8D;YACzE,KAAK,EAAE,8CAA8C;YACrD,IAAI,EAAE,iDAAiD;SACxD;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,gBAAgB;YACzB,EAAE,EAAE,qBAAqB;YACzB,EAAE,EAAE,sBAAsB;YAC1B,IAAI,EAAE,WAAW;SAClB;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;KAChB;CACF,CACF,CAAC;AAYF,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAC7B,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IAChE,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;IACxC,OAAO,CACL,KAAC,IAAI,IACH,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,EAC5D,GAAG,EAAE,GAAG,KACJ,KAAK,GACT,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC"}