hazo_ihelp 2.0.1

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 (156) hide show
  1. package/config/hazo_ihelp_config.ini +9 -0
  2. package/config/hazo_ihelp_config.ini.sample +23 -0
  3. package/dist/api/create_config_handler.d.ts +27 -0
  4. package/dist/api/create_config_handler.d.ts.map +1 -0
  5. package/dist/api/create_config_handler.js +122 -0
  6. package/dist/api/create_config_handler.js.map +1 -0
  7. package/dist/api/create_ihelp_handler.d.ts +60 -0
  8. package/dist/api/create_ihelp_handler.d.ts.map +1 -0
  9. package/dist/api/create_ihelp_handler.js +378 -0
  10. package/dist/api/create_ihelp_handler.js.map +1 -0
  11. package/dist/api/image_upload_handler.d.ts +29 -0
  12. package/dist/api/image_upload_handler.d.ts.map +1 -0
  13. package/dist/api/image_upload_handler.js +149 -0
  14. package/dist/api/image_upload_handler.js.map +1 -0
  15. package/dist/api/index.d.ts +6 -0
  16. package/dist/api/index.d.ts.map +1 -0
  17. package/dist/api/index.js +4 -0
  18. package/dist/api/index.js.map +1 -0
  19. package/dist/components/editor/editor_collapsible_section.d.ts +11 -0
  20. package/dist/components/editor/editor_collapsible_section.d.ts.map +1 -0
  21. package/dist/components/editor/editor_collapsible_section.js +10 -0
  22. package/dist/components/editor/editor_collapsible_section.js.map +1 -0
  23. package/dist/components/editor/editor_context_keys_section.d.ts +13 -0
  24. package/dist/components/editor/editor_context_keys_section.d.ts.map +1 -0
  25. package/dist/components/editor/editor_context_keys_section.js +99 -0
  26. package/dist/components/editor/editor_context_keys_section.js.map +1 -0
  27. package/dist/components/editor/editor_form.d.ts +27 -0
  28. package/dist/components/editor/editor_form.d.ts.map +1 -0
  29. package/dist/components/editor/editor_form.js +25 -0
  30. package/dist/components/editor/editor_form.js.map +1 -0
  31. package/dist/components/editor/editor_import_export.d.ts +18 -0
  32. package/dist/components/editor/editor_import_export.d.ts.map +1 -0
  33. package/dist/components/editor/editor_import_export.js +117 -0
  34. package/dist/components/editor/editor_import_export.js.map +1 -0
  35. package/dist/components/editor/editor_tags_section.d.ts +10 -0
  36. package/dist/components/editor/editor_tags_section.d.ts.map +1 -0
  37. package/dist/components/editor/editor_tags_section.js +33 -0
  38. package/dist/components/editor/editor_tags_section.js.map +1 -0
  39. package/dist/components/editor/editor_topic_list.d.ts +14 -0
  40. package/dist/components/editor/editor_topic_list.d.ts.map +1 -0
  41. package/dist/components/editor/editor_topic_list.js +58 -0
  42. package/dist/components/editor/editor_topic_list.js.map +1 -0
  43. package/dist/components/editor/editor_topic_list_item.d.ts +10 -0
  44. package/dist/components/editor/editor_topic_list_item.d.ts.map +1 -0
  45. package/dist/components/editor/editor_topic_list_item.js +10 -0
  46. package/dist/components/editor/editor_topic_list_item.js.map +1 -0
  47. package/dist/components/ihelp_detail_panel.d.ts +16 -0
  48. package/dist/components/ihelp_detail_panel.d.ts.map +1 -0
  49. package/dist/components/ihelp_detail_panel.js +46 -0
  50. package/dist/components/ihelp_detail_panel.js.map +1 -0
  51. package/dist/components/ihelp_editor.d.ts +3 -0
  52. package/dist/components/ihelp_editor.d.ts.map +1 -0
  53. package/dist/components/ihelp_editor.js +169 -0
  54. package/dist/components/ihelp_editor.js.map +1 -0
  55. package/dist/components/ihelp_icon.d.ts +7 -0
  56. package/dist/components/ihelp_icon.d.ts.map +1 -0
  57. package/dist/components/ihelp_icon.js +14 -0
  58. package/dist/components/ihelp_icon.js.map +1 -0
  59. package/dist/components/ihelp_provider.d.ts +21 -0
  60. package/dist/components/ihelp_provider.d.ts.map +1 -0
  61. package/dist/components/ihelp_provider.js +83 -0
  62. package/dist/components/ihelp_provider.js.map +1 -0
  63. package/dist/components/ihelp_rich_editor.d.ts +15 -0
  64. package/dist/components/ihelp_rich_editor.d.ts.map +1 -0
  65. package/dist/components/ihelp_rich_editor.js +182 -0
  66. package/dist/components/ihelp_rich_editor.js.map +1 -0
  67. package/dist/components/ihelp_search_dialog.d.ts +3 -0
  68. package/dist/components/ihelp_search_dialog.d.ts.map +1 -0
  69. package/dist/components/ihelp_search_dialog.js +454 -0
  70. package/dist/components/ihelp_search_dialog.js.map +1 -0
  71. package/dist/components/index.d.ts +7 -0
  72. package/dist/components/index.d.ts.map +1 -0
  73. package/dist/components/index.js +7 -0
  74. package/dist/components/index.js.map +1 -0
  75. package/dist/components/resizable_image.d.ts +17 -0
  76. package/dist/components/resizable_image.d.ts.map +1 -0
  77. package/dist/components/resizable_image.js +170 -0
  78. package/dist/components/resizable_image.js.map +1 -0
  79. package/dist/components/ui/badge.d.ts +9 -0
  80. package/dist/components/ui/badge.d.ts.map +1 -0
  81. package/dist/components/ui/badge.js +17 -0
  82. package/dist/components/ui/badge.js.map +1 -0
  83. package/dist/components/ui/button.d.ts +10 -0
  84. package/dist/components/ui/button.d.ts.map +1 -0
  85. package/dist/components/ui/button.js +50 -0
  86. package/dist/components/ui/button.js.map +1 -0
  87. package/dist/components/ui/dialog.d.ts +20 -0
  88. package/dist/components/ui/dialog.d.ts.map +1 -0
  89. package/dist/components/ui/dialog.js +26 -0
  90. package/dist/components/ui/dialog.js.map +1 -0
  91. package/dist/components/ui/input.d.ts +6 -0
  92. package/dist/components/ui/input.d.ts.map +1 -0
  93. package/dist/components/ui/input.js +12 -0
  94. package/dist/components/ui/input.js.map +1 -0
  95. package/dist/components/ui/label.d.ts +6 -0
  96. package/dist/components/ui/label.d.ts.map +1 -0
  97. package/dist/components/ui/label.js +12 -0
  98. package/dist/components/ui/label.js.map +1 -0
  99. package/dist/components/ui/popover.d.ts +7 -0
  100. package/dist/components/ui/popover.d.ts.map +1 -0
  101. package/dist/components/ui/popover.js +13 -0
  102. package/dist/components/ui/popover.js.map +1 -0
  103. package/dist/components/ui/select.d.ts +14 -0
  104. package/dist/components/ui/select.d.ts.map +1 -0
  105. package/dist/components/ui/select.js +29 -0
  106. package/dist/components/ui/select.js.map +1 -0
  107. package/dist/components/ui/switch.d.ts +5 -0
  108. package/dist/components/ui/switch.d.ts.map +1 -0
  109. package/dist/components/ui/switch.js +11 -0
  110. package/dist/components/ui/switch.js.map +1 -0
  111. package/dist/components/ui/textarea.d.ts +6 -0
  112. package/dist/components/ui/textarea.d.ts.map +1 -0
  113. package/dist/components/ui/textarea.js +12 -0
  114. package/dist/components/ui/textarea.js.map +1 -0
  115. package/dist/config/parse_config.d.ts +10 -0
  116. package/dist/config/parse_config.d.ts.map +1 -0
  117. package/dist/config/parse_config.js +76 -0
  118. package/dist/config/parse_config.js.map +1 -0
  119. package/dist/hooks/index.d.ts +6 -0
  120. package/dist/hooks/index.d.ts.map +1 -0
  121. package/dist/hooks/index.js +5 -0
  122. package/dist/hooks/index.js.map +1 -0
  123. package/dist/hooks/use_ihelp.d.ts +3 -0
  124. package/dist/hooks/use_ihelp.d.ts.map +1 -0
  125. package/dist/hooks/use_ihelp.js +52 -0
  126. package/dist/hooks/use_ihelp.js.map +1 -0
  127. package/dist/hooks/use_ihelp_config.d.ts +19 -0
  128. package/dist/hooks/use_ihelp_config.d.ts.map +1 -0
  129. package/dist/hooks/use_ihelp_config.js +62 -0
  130. package/dist/hooks/use_ihelp_config.js.map +1 -0
  131. package/dist/hooks/use_ihelp_editor.d.ts +3 -0
  132. package/dist/hooks/use_ihelp_editor.d.ts.map +1 -0
  133. package/dist/hooks/use_ihelp_editor.js +93 -0
  134. package/dist/hooks/use_ihelp_editor.js.map +1 -0
  135. package/dist/hooks/use_ihelp_search.d.ts +3 -0
  136. package/dist/hooks/use_ihelp_search.d.ts.map +1 -0
  137. package/dist/hooks/use_ihelp_search.js +68 -0
  138. package/dist/hooks/use_ihelp_search.js.map +1 -0
  139. package/dist/index.client.d.ts +13 -0
  140. package/dist/index.client.d.ts.map +1 -0
  141. package/dist/index.client.js +15 -0
  142. package/dist/index.client.js.map +1 -0
  143. package/dist/index.d.ts +12 -0
  144. package/dist/index.d.ts.map +1 -0
  145. package/dist/index.js +12 -0
  146. package/dist/index.js.map +1 -0
  147. package/dist/types/index.d.ts +595 -0
  148. package/dist/types/index.d.ts.map +1 -0
  149. package/dist/types/index.js +8 -0
  150. package/dist/types/index.js.map +1 -0
  151. package/dist/utils/cn.d.ts +3 -0
  152. package/dist/utils/cn.d.ts.map +1 -0
  153. package/dist/utils/cn.js +6 -0
  154. package/dist/utils/cn.js.map +1 -0
  155. package/migrations/001_create_ihelp_tables.sql +58 -0
  156. package/package.json +108 -0
@@ -0,0 +1,170 @@
1
+ "use client";
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from 'react';
4
+ import { Node, mergeAttributes } from '@tiptap/core';
5
+ import { NodeViewWrapper, ReactNodeViewRenderer } from '@tiptap/react';
6
+ import { AlignLeft, AlignCenter, AlignRight } from 'lucide-react';
7
+ const HANDLE_SIZE = 10;
8
+ const HALF = HANDLE_SIZE / 2;
9
+ const HANDLES = [
10
+ { pos: 'nw', cursor: 'nwse-resize', style: { top: -HALF, left: -HALF }, dx: -1, dy: -1 },
11
+ { pos: 'ne', cursor: 'nesw-resize', style: { top: -HALF, right: -HALF }, dx: 1, dy: -1 },
12
+ { pos: 'se', cursor: 'nwse-resize', style: { bottom: -HALF, right: -HALF }, dx: 1, dy: 1 },
13
+ { pos: 'sw', cursor: 'nesw-resize', style: { bottom: -HALF, left: -HALF }, dx: -1, dy: 1 },
14
+ { pos: 'n', cursor: 'ns-resize', style: { top: -HALF, left: '50%', marginLeft: -HALF }, dx: 0, dy: -1 },
15
+ { pos: 's', cursor: 'ns-resize', style: { bottom: -HALF, left: '50%', marginLeft: -HALF }, dx: 0, dy: 1 },
16
+ { pos: 'w', cursor: 'ew-resize', style: { top: '50%', left: -HALF, marginTop: -HALF }, dx: -1, dy: 0 },
17
+ { pos: 'e', cursor: 'ew-resize', style: { top: '50%', right: -HALF, marginTop: -HALF }, dx: 1, dy: 0 },
18
+ ];
19
+ const MIN_W = 60;
20
+ const MIN_H = 30;
21
+ const ALIGN_OPTIONS = [
22
+ { value: 'left', Icon: AlignLeft, label: 'Align left' },
23
+ { value: 'center', Icon: AlignCenter, label: 'Align center' },
24
+ { value: 'right', Icon: AlignRight, label: 'Align right' },
25
+ ];
26
+ // Map align value to wrapper justify style
27
+ function alignToJustify(align) {
28
+ switch (align) {
29
+ case 'right': return { display: 'flex', justifyContent: 'flex-end' };
30
+ case 'center': return { display: 'flex', justifyContent: 'center' };
31
+ default: return { display: 'flex', justifyContent: 'flex-start' };
32
+ }
33
+ }
34
+ // ---------------------------------------------------------------------------
35
+ // Node View — wraps each image with 8 resize handles + alignment toolbar
36
+ // ---------------------------------------------------------------------------
37
+ function ResizableImageView(props) {
38
+ const { node, updateAttributes, selected } = props;
39
+ const { src, alt, title, width, height, align } = node.attrs;
40
+ const containerRef = React.useRef(null);
41
+ const startResize = React.useCallback((e, handle) => {
42
+ e.preventDefault();
43
+ e.stopPropagation();
44
+ const startX = e.clientX;
45
+ const startY = e.clientY;
46
+ const startW = containerRef.current?.offsetWidth ?? 300;
47
+ const startH = containerRef.current?.offsetHeight ?? 200;
48
+ const onMouseMove = (ev) => {
49
+ const diffX = ev.clientX - startX;
50
+ const diffY = ev.clientY - startY;
51
+ const newAttrs = {};
52
+ if (handle.dx !== 0)
53
+ newAttrs.width = Math.max(MIN_W, startW + diffX * handle.dx);
54
+ if (handle.dy !== 0)
55
+ newAttrs.height = Math.max(MIN_H, startH + diffY * handle.dy);
56
+ updateAttributes(newAttrs);
57
+ };
58
+ const onMouseUp = () => {
59
+ document.removeEventListener('mousemove', onMouseMove);
60
+ document.removeEventListener('mouseup', onMouseUp);
61
+ };
62
+ document.addEventListener('mousemove', onMouseMove);
63
+ document.addEventListener('mouseup', onMouseUp);
64
+ }, [updateAttributes]);
65
+ // Dimensions go on the <img> directly; the container wraps it naturally.
66
+ const imgStyle = {
67
+ display: 'block',
68
+ borderRadius: '0.375rem',
69
+ maxWidth: '100%',
70
+ };
71
+ if (width)
72
+ imgStyle.width = `${width}px`;
73
+ if (height)
74
+ imgStyle.height = `${height}px`;
75
+ else
76
+ imgStyle.height = 'auto';
77
+ return (_jsx(NodeViewWrapper, { className: "ihelp-resizable-image", style: alignToJustify(align), "data-drag-handle": true, children: _jsxs("div", { ref: containerRef, style: { position: 'relative', display: 'inline-block', lineHeight: 0 }, className: selected ? 'ring-2 ring-primary rounded' : '', children: [_jsx("img", { src: src, alt: alt || '', title: title || undefined, style: imgStyle, draggable: false }), selected && (_jsxs(_Fragment, { children: [HANDLES.map((h) => (_jsx("div", { onMouseDown: (e) => startResize(e, h), style: {
78
+ position: 'absolute',
79
+ width: HANDLE_SIZE,
80
+ height: HANDLE_SIZE,
81
+ cursor: h.cursor,
82
+ background: 'var(--primary, #3b82f6)',
83
+ borderRadius: 2,
84
+ border: '2px solid white',
85
+ zIndex: 10,
86
+ boxSizing: 'border-box',
87
+ ...h.style,
88
+ } }, h.pos))), _jsx("div", { style: {
89
+ position: 'absolute',
90
+ bottom: 8,
91
+ left: '50%',
92
+ transform: 'translateX(-50%)',
93
+ display: 'inline-flex',
94
+ gap: 2,
95
+ padding: '3px 4px',
96
+ background: 'rgba(255,255,255,0.92)',
97
+ borderRadius: 6,
98
+ border: '1px solid var(--border, #e2e8f0)',
99
+ boxShadow: '0 1px 4px rgba(0,0,0,0.15)',
100
+ zIndex: 20,
101
+ }, children: ALIGN_OPTIONS.map(({ value, Icon, label }) => {
102
+ const active = (align || 'left') === value;
103
+ return (_jsx("button", { type: "button", title: label, onMouseDown: (e) => { e.preventDefault(); e.stopPropagation(); }, onClick: (e) => { e.preventDefault(); updateAttributes({ align: value }); }, style: {
104
+ display: 'flex',
105
+ alignItems: 'center',
106
+ justifyContent: 'center',
107
+ width: 28,
108
+ height: 28,
109
+ borderRadius: 4,
110
+ border: 'none',
111
+ cursor: 'pointer',
112
+ background: active ? 'var(--primary, #3b82f6)' : 'transparent',
113
+ color: active ? 'white' : 'var(--foreground, #334155)',
114
+ }, children: _jsx(Icon, { size: 16 }) }, value));
115
+ }) })] }))] }) }));
116
+ }
117
+ // ---------------------------------------------------------------------------
118
+ // Custom Image Extension with width + height + align attributes + NodeView
119
+ // ---------------------------------------------------------------------------
120
+ export const ResizableImage = Node.create({
121
+ name: 'image',
122
+ group: 'block',
123
+ atom: true,
124
+ draggable: true,
125
+ addAttributes() {
126
+ return {
127
+ src: { default: null },
128
+ alt: { default: null },
129
+ title: { default: null },
130
+ width: { default: null },
131
+ height: { default: null },
132
+ align: { default: 'left' },
133
+ };
134
+ },
135
+ parseHTML() {
136
+ return [{ tag: 'img[src]' }];
137
+ },
138
+ renderHTML({ HTMLAttributes }) {
139
+ const attrs = { ...HTMLAttributes };
140
+ const align = attrs.align || 'left';
141
+ delete attrs.align;
142
+ const parts = [];
143
+ if (attrs.width)
144
+ parts.push(`width: ${attrs.width}px`);
145
+ if (attrs.height)
146
+ parts.push(`height: ${attrs.height}px`);
147
+ parts.push('max-width: 100%');
148
+ // Wrap in a div for alignment
149
+ const divStyle = align === 'center' ? 'text-align: center;'
150
+ : align === 'right' ? 'text-align: right;'
151
+ : 'text-align: left;';
152
+ if (parts.length)
153
+ attrs.style = parts.join('; ') + ';';
154
+ return ['div', { style: divStyle }, ['img', mergeAttributes({ class: 'rounded-md max-w-full' }, attrs)]];
155
+ },
156
+ addNodeView() {
157
+ return ReactNodeViewRenderer(ResizableImageView);
158
+ },
159
+ addCommands() {
160
+ return {
161
+ setImage: (options) => ({ commands }) => {
162
+ return commands.insertContent({
163
+ type: this.name,
164
+ attrs: options,
165
+ });
166
+ },
167
+ };
168
+ },
169
+ });
170
+ //# sourceMappingURL=resizable_image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resizable_image.js","sourceRoot":"","sources":["../../src/components/resizable_image.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import * as React from "react";
2
+ type BadgeVariant = "default" | "success" | "warning" | "info";
3
+ export interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
4
+ variant?: BadgeVariant;
5
+ icon?: React.ReactNode;
6
+ }
7
+ declare const Badge: React.ForwardRefExoticComponent<BadgeProps & React.RefAttributes<HTMLSpanElement>>;
8
+ export { Badge };
9
+ //# sourceMappingURL=badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../src/components/ui/badge.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,KAAK,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAE/D,MAAM,WAAW,UAAW,SAAQ,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;IACvE,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AASD,QAAA,MAAM,KAAK,oFAkBV,CAAC;AAGF,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,17 @@
1
+ // Badge component for hazo_ihelp library
2
+ "use client";
3
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
+ import * as React from "react";
5
+ import { cn } from "../../utils/cn.js";
6
+ const variant_classes = {
7
+ default: "bg-[var(--ihelp-primary,hsl(var(--primary)))]/15 text-[var(--ihelp-primary,hsl(var(--primary)))] border-[var(--ihelp-primary,hsl(var(--primary)))]/25",
8
+ success: "bg-emerald-500/15 text-emerald-400 border-emerald-500/25",
9
+ warning: "bg-amber-500/15 text-amber-400 border-amber-500/25",
10
+ info: "bg-sky-500/15 text-sky-400 border-sky-500/25",
11
+ };
12
+ const Badge = React.forwardRef(({ className, variant = "default", icon, children, ...props }, ref) => {
13
+ return (_jsxs("span", { ref: ref, "data-slot": "badge", className: cn("inline-flex items-center gap-1 rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors", variant_classes[variant], className), ...props, children: [icon && _jsx("span", { className: "shrink-0", children: icon }), children] }));
14
+ });
15
+ Badge.displayName = "Badge";
16
+ export { Badge };
17
+ //# sourceMappingURL=badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../../src/components/ui/badge.tsx"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AASvC,MAAM,eAAe,GAAiC;IACpD,OAAO,EAAE,uJAAuJ;IAChK,OAAO,EAAE,0DAA0D;IACnE,OAAO,EAAE,oDAAoD;IAC7D,IAAI,EAAE,8CAA8C;CACrD,CAAC;AAEF,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAC5B,CAAC,EAAE,SAAS,EAAE,OAAO,GAAG,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IACpE,OAAO,CACL,gBACE,GAAG,EAAE,GAAG,eACE,OAAO,EACjB,SAAS,EAAE,EAAE,CACX,0GAA0G,EAC1G,eAAe,CAAC,OAAO,CAAC,EACxB,SAAS,CACV,KACG,KAAK,aAER,IAAI,IAAI,eAAM,SAAS,EAAC,UAAU,YAAE,IAAI,GAAQ,EAChD,QAAQ,IACJ,CACR,CAAC;AACJ,CAAC,CACF,CAAC;AACF,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC;AAE5B,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,10 @@
1
+ import * as React from "react";
2
+ type ButtonVariant = "default" | "destructive" | "outline" | "secondary" | "ghost" | "link";
3
+ type ButtonSize = "default" | "sm" | "lg" | "icon";
4
+ export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
5
+ variant?: ButtonVariant;
6
+ size?: ButtonSize;
7
+ }
8
+ declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
9
+ export { Button };
10
+ //# sourceMappingURL=button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/components/ui/button.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,KAAK,aAAa,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;AAC5F,KAAK,UAAU,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;AAEnD,MAAM,WAAW,WAAY,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;IAChF,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AA0CD,QAAA,MAAM,MAAM,uFAkBX,CAAC;AAGF,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,50 @@
1
+ // Button component for hazo_ihelp library
2
+ // Based on shadcn/ui button component
3
+ "use client";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ import * as React from "react";
6
+ import { cn } from "../../utils/cn.js";
7
+ const variant_classes = {
8
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
9
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
10
+ outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
11
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
12
+ ghost: "hover:bg-accent hover:text-accent-foreground",
13
+ link: "text-primary underline-offset-4 hover:underline",
14
+ };
15
+ const size_classes = {
16
+ default: "h-10 px-4 py-2",
17
+ sm: "h-9 rounded-md px-3",
18
+ lg: "h-11 rounded-md px-8",
19
+ icon: "h-10 w-10",
20
+ };
21
+ const variant_styles = {
22
+ default: {
23
+ backgroundColor: "var(--primary)",
24
+ color: "var(--primary-foreground)",
25
+ border: "1px solid var(--primary)",
26
+ },
27
+ destructive: {
28
+ backgroundColor: "var(--destructive)",
29
+ color: "white",
30
+ border: "1px solid var(--destructive)",
31
+ },
32
+ outline: {
33
+ backgroundColor: "var(--background)",
34
+ color: "var(--foreground)",
35
+ border: "1px solid var(--border)",
36
+ },
37
+ secondary: {
38
+ backgroundColor: "var(--secondary)",
39
+ color: "var(--secondary-foreground)",
40
+ },
41
+ ghost: {},
42
+ link: {},
43
+ };
44
+ const Button = React.forwardRef(({ className, variant = "default", size = "default", style, ...props }, ref) => {
45
+ const fallback_styles = variant_styles[variant] ?? {};
46
+ return (_jsx("button", { "data-slot": "button", className: cn("inline-flex items-center justify-center 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", variant_classes[variant], size_classes[size], className), style: { ...fallback_styles, ...style }, ref: ref, ...props }));
47
+ });
48
+ Button.displayName = "Button";
49
+ export { Button };
50
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.js","sourceRoot":"","sources":["../../../src/components/ui/button.tsx"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,sCAAsC;AACtC,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAUvC,MAAM,eAAe,GAAkC;IACrD,OAAO,EAAE,wDAAwD;IACjE,WAAW,EAAE,oEAAoE;IACjF,OAAO,EAAE,gFAAgF;IACzF,SAAS,EAAE,8DAA8D;IACzE,KAAK,EAAE,8CAA8C;IACrD,IAAI,EAAE,iDAAiD;CACxD,CAAC;AAEF,MAAM,YAAY,GAA+B;IAC/C,OAAO,EAAE,gBAAgB;IACzB,EAAE,EAAE,qBAAqB;IACzB,EAAE,EAAE,sBAAsB;IAC1B,IAAI,EAAE,WAAW;CAClB,CAAC;AAEF,MAAM,cAAc,GAA+C;IACjE,OAAO,EAAE;QACP,eAAe,EAAE,gBAAgB;QACjC,KAAK,EAAE,2BAA2B;QAClC,MAAM,EAAE,0BAA0B;KACnC;IACD,WAAW,EAAE;QACX,eAAe,EAAE,oBAAoB;QACrC,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,8BAA8B;KACvC;IACD,OAAO,EAAE;QACP,eAAe,EAAE,mBAAmB;QACpC,KAAK,EAAE,mBAAmB;QAC1B,MAAM,EAAE,yBAAyB;KAClC;IACD,SAAS,EAAE;QACT,eAAe,EAAE,kBAAkB;QACnC,KAAK,EAAE,6BAA6B;KACrC;IACD,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,EAAE;CACT,CAAC;AAEF,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAC7B,CAAC,EAAE,SAAS,EAAE,OAAO,GAAG,SAAS,EAAE,IAAI,GAAG,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IAC7E,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACtD,OAAO,CACL,8BACY,QAAQ,EAClB,SAAS,EAAE,EAAE,CACX,wRAAwR,EACxR,eAAe,CAAC,OAAO,CAAC,EACxB,YAAY,CAAC,IAAI,CAAC,EAClB,SAAS,CACV,EACD,KAAK,EAAE,EAAE,GAAG,eAAe,EAAE,GAAG,KAAK,EAAE,EACvC,GAAG,EAAE,GAAG,KACJ,KAAK,GACT,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AACF,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,20 @@
1
+ import * as React from "react";
2
+ import * as DialogPrimitive from "@radix-ui/react-dialog";
3
+ declare const Dialog: React.FC<DialogPrimitive.DialogProps>;
4
+ declare const DialogTrigger: React.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
5
+ declare const DialogPortal: React.FC<DialogPrimitive.DialogPortalProps>;
6
+ declare const DialogClose: React.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
7
+ declare const DialogOverlay: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
8
+ declare const DialogContent: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
9
+ declare const DialogHeader: {
10
+ ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
11
+ displayName: string;
12
+ };
13
+ declare const DialogFooter: {
14
+ ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
15
+ displayName: string;
16
+ };
17
+ declare const DialogTitle: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTitleProps & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
18
+ declare const DialogDescription: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
19
+ export { Dialog, DialogPortal, DialogOverlay, DialogClose, DialogTrigger, DialogContent, DialogHeader, DialogFooter, DialogTitle, DialogDescription, };
20
+ //# sourceMappingURL=dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../src/components/ui/dialog.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAI1D,QAAA,MAAM,MAAM,uCAAuB,CAAC;AACpC,QAAA,MAAM,aAAa,8GAA0B,CAAC;AAC9C,QAAA,MAAM,YAAY,6CAAyB,CAAC;AAC5C,QAAA,MAAM,WAAW,4GAAwB,CAAC;AAE1C,QAAA,MAAM,aAAa,8JAajB,CAAC;AAGH,QAAA,MAAM,aAAa,8JAsBjB,CAAC;AAGH,QAAA,MAAM,YAAY;8BAGf,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;;CAMtC,CAAC;AAGF,QAAA,MAAM,YAAY;8BAGf,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;;CAMtC,CAAC;AAGF,QAAA,MAAM,WAAW,oKAUf,CAAC;AAGH,QAAA,MAAM,iBAAiB,8KAUrB,CAAC;AAGH,OAAO,EACL,MAAM,EACN,YAAY,EACZ,aAAa,EACb,WAAW,EACX,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,iBAAiB,GAClB,CAAC"}
@@ -0,0 +1,26 @@
1
+ // Dialog component for hazo_ihelp library
2
+ // Based on shadcn/ui dialog component
3
+ "use client";
4
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
+ import * as React from "react";
6
+ import * as DialogPrimitive from "@radix-ui/react-dialog";
7
+ import { X } from "lucide-react";
8
+ import { cn } from "../../utils/cn.js";
9
+ const Dialog = DialogPrimitive.Root;
10
+ const DialogTrigger = DialogPrimitive.Trigger;
11
+ const DialogPortal = DialogPrimitive.Portal;
12
+ const DialogClose = DialogPrimitive.Close;
13
+ const DialogOverlay = React.forwardRef(({ className, ...props }, ref) => (_jsx(DialogPrimitive.Overlay, { ref: ref, "data-slot": "dialog-overlay", className: cn("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0", className), ...props })));
14
+ DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
15
+ const DialogContent = React.forwardRef(({ className, children, ...props }, ref) => (_jsxs(DialogPortal, { children: [_jsx(DialogOverlay, {}), _jsxs(DialogPrimitive.Content, { ref: ref, "data-slot": "dialog-content", className: cn("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg", className), ...props, children: [children, _jsxs(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-md p-1 opacity-60 ring-offset-background transition-all hover:opacity-100 hover:bg-white/[0.08] focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none text-[var(--ihelp-muted,var(--muted-foreground))]", children: [_jsx(X, { className: "h-4 w-4" }), _jsx("span", { className: "sr-only", children: "Close" })] })] })] })));
16
+ DialogContent.displayName = DialogPrimitive.Content.displayName;
17
+ const DialogHeader = ({ className, ...props }) => (_jsx("div", { "data-slot": "dialog-header", className: cn("flex flex-col space-y-1.5 text-center sm:text-left", className), ...props }));
18
+ DialogHeader.displayName = "DialogHeader";
19
+ const DialogFooter = ({ className, ...props }) => (_jsx("div", { "data-slot": "dialog-footer", className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className), ...props }));
20
+ DialogFooter.displayName = "DialogFooter";
21
+ const DialogTitle = React.forwardRef(({ className, ...props }, ref) => (_jsx(DialogPrimitive.Title, { ref: ref, "data-slot": "dialog-title", className: cn("text-lg font-semibold leading-none tracking-tight", className), ...props })));
22
+ DialogTitle.displayName = DialogPrimitive.Title.displayName;
23
+ const DialogDescription = React.forwardRef(({ className, ...props }, ref) => (_jsx(DialogPrimitive.Description, { ref: ref, "data-slot": "dialog-description", className: cn("text-sm text-muted-foreground", className), ...props })));
24
+ DialogDescription.displayName = DialogPrimitive.Description.displayName;
25
+ export { Dialog, DialogPortal, DialogOverlay, DialogClose, DialogTrigger, DialogContent, DialogHeader, DialogFooter, DialogTitle, DialogDescription, };
26
+ //# sourceMappingURL=dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../../src/components/ui/dialog.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import * as React from "react";
2
+ export interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {
3
+ }
4
+ declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
5
+ export { Input };
6
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../src/components/ui/input.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,WAAW,UAAW,SAAQ,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;CAAG;AAElF,QAAA,MAAM,KAAK,qFAeV,CAAC;AAGF,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ // Input component for hazo_ihelp library
2
+ // Based on shadcn/ui input component
3
+ "use client";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ import * as React from "react";
6
+ import { cn } from "../../utils/cn.js";
7
+ const Input = React.forwardRef(({ className, type, ...props }, ref) => {
8
+ return (_jsx("input", { type: type, "data-slot": "input", className: cn("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", className), ref: ref, ...props }));
9
+ });
10
+ Input.displayName = "Input";
11
+ export { Input };
12
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../../src/components/ui/input.tsx"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,qCAAqC;AACrC,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAIvC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAC5B,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IACrC,OAAO,CACL,gBACE,IAAI,EAAE,IAAI,eACA,OAAO,EACjB,SAAS,EAAE,EAAE,CACX,8VAA8V,EAC9V,SAAS,CACV,EACD,GAAG,EAAE,GAAG,KACJ,KAAK,GACT,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AACF,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC;AAE5B,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import * as React from "react";
2
+ export interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {
3
+ }
4
+ declare const Label: React.ForwardRefExoticComponent<LabelProps & React.RefAttributes<HTMLLabelElement>>;
5
+ export { Label };
6
+ //# sourceMappingURL=label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../../src/components/ui/label.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,WAAW,UAAW,SAAQ,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;CAAG;AAElF,QAAA,MAAM,KAAK,qFAcV,CAAC;AAGF,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ // Label component for hazo_ihelp library
2
+ // Based on shadcn/ui label component
3
+ "use client";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ import * as React from "react";
6
+ import { cn } from "../../utils/cn.js";
7
+ const Label = React.forwardRef(({ className, ...props }, ref) => {
8
+ return (_jsx("label", { ref: ref, "data-slot": "label", className: cn("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", className), ...props }));
9
+ });
10
+ Label.displayName = "Label";
11
+ export { Label };
12
+ //# sourceMappingURL=label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.js","sourceRoot":"","sources":["../../../src/components/ui/label.tsx"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,qCAAqC;AACrC,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAIvC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAC5B,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IAC/B,OAAO,CACL,gBACE,GAAG,EAAE,GAAG,eACE,OAAO,EACjB,SAAS,EAAE,EAAE,CACX,4FAA4F,EAC5F,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AACF,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC;AAE5B,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ import * as React from "react";
2
+ import * as PopoverPrimitive from "@radix-ui/react-popover";
3
+ declare const Popover: React.FC<PopoverPrimitive.PopoverProps>;
4
+ declare const PopoverTrigger: React.ForwardRefExoticComponent<PopoverPrimitive.PopoverTriggerProps & React.RefAttributes<HTMLButtonElement>>;
5
+ declare const PopoverContent: React.ForwardRefExoticComponent<Omit<PopoverPrimitive.PopoverContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
6
+ export { Popover, PopoverTrigger, PopoverContent };
7
+ //# sourceMappingURL=popover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["../../../src/components/ui/popover.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAG5D,QAAA,MAAM,OAAO,yCAAwB,CAAC;AACtC,QAAA,MAAM,cAAc,gHAA2B,CAAC;AAEhD,QAAA,MAAM,cAAc,gKAiBlB,CAAC;AAGH,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,13 @@
1
+ // Popover component for hazo_ihelp library
2
+ // Based on shadcn/ui popover component
3
+ "use client";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ import * as React from "react";
6
+ import * as PopoverPrimitive from "@radix-ui/react-popover";
7
+ import { cn } from "../../utils/cn.js";
8
+ const Popover = PopoverPrimitive.Root;
9
+ const PopoverTrigger = PopoverPrimitive.Trigger;
10
+ const PopoverContent = React.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => (_jsx(PopoverPrimitive.Portal, { children: _jsx(PopoverPrimitive.Content, { ref: ref, align: align, sideOffset: sideOffset, "data-slot": "popover-content", className: cn("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", className), ...props }) })));
11
+ PopoverContent.displayName = PopoverPrimitive.Content.displayName;
12
+ export { Popover, PopoverTrigger, PopoverContent };
13
+ //# sourceMappingURL=popover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover.js","sourceRoot":"","sources":["../../../src/components/ui/popover.tsx"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,uCAAuC;AACvC,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAEvC,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC;AACtC,MAAM,cAAc,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAEhD,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAGrC,CAAC,EAAE,SAAS,EAAE,KAAK,GAAG,QAAQ,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACpE,KAAC,gBAAgB,CAAC,MAAM,cACtB,KAAC,gBAAgB,CAAC,OAAO,IACvB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,eACZ,iBAAiB,EAC3B,SAAS,EAAE,EAAE,CACX,4aAA4a,EAC5a,SAAS,CACV,KACG,KAAK,GACT,GACsB,CAC3B,CAAC,CAAC;AACH,cAAc,CAAC,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC;AAElE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,14 @@
1
+ import * as React from "react";
2
+ import * as SelectPrimitive from "@radix-ui/react-select";
3
+ declare const Select: React.FC<SelectPrimitive.SelectProps>;
4
+ declare const SelectGroup: React.ForwardRefExoticComponent<SelectPrimitive.SelectGroupProps & React.RefAttributes<HTMLDivElement>>;
5
+ declare const SelectValue: React.ForwardRefExoticComponent<SelectPrimitive.SelectValueProps & React.RefAttributes<HTMLSpanElement>>;
6
+ declare const SelectTrigger: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
7
+ declare const SelectScrollUpButton: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollUpButtonProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
8
+ declare const SelectScrollDownButton: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollDownButtonProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
9
+ declare const SelectContent: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
10
+ declare const SelectLabel: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectLabelProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
11
+ declare const SelectItem: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
12
+ declare const SelectSeparator: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectSeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
13
+ export { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectLabel, SelectItem, SelectSeparator, SelectScrollUpButton, SelectScrollDownButton, };
14
+ //# sourceMappingURL=select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../src/components/ui/select.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAI1D,QAAA,MAAM,MAAM,uCAAuB,CAAC;AACpC,QAAA,MAAM,WAAW,yGAAwB,CAAC;AAC1C,QAAA,MAAM,WAAW,0GAAwB,CAAC;AAE1C,QAAA,MAAM,aAAa,oKAkBjB,CAAC;AAGH,QAAA,MAAM,oBAAoB,qKAWxB,CAAC;AAGH,QAAA,MAAM,sBAAsB,uKAW1B,CAAC;AAGH,QAAA,MAAM,aAAa,8JA8BjB,CAAC;AAGH,QAAA,MAAM,WAAW,4JASf,CAAC;AAGH,QAAA,MAAM,UAAU,2JAoBd,CAAC;AAGH,QAAA,MAAM,eAAe,gKASnB,CAAC;AAGH,OAAO,EACL,MAAM,EACN,WAAW,EACX,WAAW,EACX,aAAa,EACb,aAAa,EACb,WAAW,EACX,UAAU,EACV,eAAe,EACf,oBAAoB,EACpB,sBAAsB,GACvB,CAAC"}
@@ -0,0 +1,29 @@
1
+ // Select component for hazo_ihelp library
2
+ // Based on shadcn/ui select component
3
+ "use client";
4
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
+ import * as React from "react";
6
+ import * as SelectPrimitive from "@radix-ui/react-select";
7
+ import { Check, ChevronDown, ChevronUp } from "lucide-react";
8
+ import { cn } from "../../utils/cn.js";
9
+ const Select = SelectPrimitive.Root;
10
+ const SelectGroup = SelectPrimitive.Group;
11
+ const SelectValue = SelectPrimitive.Value;
12
+ const SelectTrigger = React.forwardRef(({ className, children, ...props }, ref) => (_jsxs(SelectPrimitive.Trigger, { ref: ref, "data-slot": "select-trigger", className: cn("flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1", className), ...props, children: [children, _jsx(SelectPrimitive.Icon, { asChild: true, children: _jsx(ChevronDown, { className: "h-4 w-4 opacity-50" }) })] })));
13
+ SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
14
+ const SelectScrollUpButton = React.forwardRef(({ className, ...props }, ref) => (_jsx(SelectPrimitive.ScrollUpButton, { ref: ref, className: cn("flex cursor-default items-center justify-center py-1", className), ...props, children: _jsx(ChevronUp, { className: "h-4 w-4" }) })));
15
+ SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
16
+ const SelectScrollDownButton = React.forwardRef(({ className, ...props }, ref) => (_jsx(SelectPrimitive.ScrollDownButton, { ref: ref, className: cn("flex cursor-default items-center justify-center py-1", className), ...props, children: _jsx(ChevronDown, { className: "h-4 w-4" }) })));
17
+ SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
18
+ const SelectContent = React.forwardRef(({ className, children, position = "popper", ...props }, ref) => (_jsx(SelectPrimitive.Portal, { children: _jsxs(SelectPrimitive.Content, { ref: ref, "data-slot": "select-content", className: cn("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", position === "popper" &&
19
+ "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", className), position: position, ...props, children: [_jsx(SelectScrollUpButton, {}), _jsx(SelectPrimitive.Viewport, { className: cn("p-1", position === "popper" &&
20
+ "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"), children: children }), _jsx(SelectScrollDownButton, {})] }) })));
21
+ SelectContent.displayName = SelectPrimitive.Content.displayName;
22
+ const SelectLabel = React.forwardRef(({ className, ...props }, ref) => (_jsx(SelectPrimitive.Label, { ref: ref, className: cn("py-1.5 pl-8 pr-2 text-sm font-semibold", className), ...props })));
23
+ SelectLabel.displayName = SelectPrimitive.Label.displayName;
24
+ const SelectItem = React.forwardRef(({ className, children, ...props }, ref) => (_jsxs(SelectPrimitive.Item, { ref: ref, "data-slot": "select-item", className: cn("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", className), ...props, children: [_jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: _jsx(SelectPrimitive.ItemIndicator, { children: _jsx(Check, { className: "h-4 w-4" }) }) }), _jsx(SelectPrimitive.ItemText, { children: children })] })));
25
+ SelectItem.displayName = SelectPrimitive.Item.displayName;
26
+ const SelectSeparator = React.forwardRef(({ className, ...props }, ref) => (_jsx(SelectPrimitive.Separator, { ref: ref, className: cn("-mx-1 my-1 h-px bg-muted", className), ...props })));
27
+ SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
28
+ export { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectLabel, SelectItem, SelectSeparator, SelectScrollUpButton, SelectScrollDownButton, };
29
+ //# sourceMappingURL=select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../../../src/components/ui/select.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import * as React from "react";
2
+ import * as SwitchPrimitives from "@radix-ui/react-switch";
3
+ declare const Switch: React.ForwardRefExoticComponent<Omit<SwitchPrimitives.SwitchProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
4
+ export { Switch };
5
+ //# sourceMappingURL=switch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch.d.ts","sourceRoot":"","sources":["../../../src/components/ui/switch.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,gBAAgB,MAAM,wBAAwB,CAAC;AAG3D,QAAA,MAAM,MAAM,8JAmBV,CAAC;AAGH,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,11 @@
1
+ // Switch component for hazo_ihelp library
2
+ // Based on shadcn/ui switch component
3
+ "use client";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ import * as React from "react";
6
+ import * as SwitchPrimitives from "@radix-ui/react-switch";
7
+ import { cn } from "../../utils/cn.js";
8
+ const Switch = React.forwardRef(({ className, ...props }, ref) => (_jsx(SwitchPrimitives.Root, { "data-slot": "switch", className: cn("peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input", className), ...props, ref: ref, children: _jsx(SwitchPrimitives.Thumb, { className: cn("pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0") }) })));
9
+ Switch.displayName = SwitchPrimitives.Root.displayName;
10
+ export { Switch };
11
+ //# sourceMappingURL=switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch.js","sourceRoot":"","sources":["../../../src/components/ui/switch.tsx"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,sCAAsC;AACtC,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,gBAAgB,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAEvC,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAG7B,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAClC,KAAC,gBAAgB,CAAC,IAAI,iBACV,QAAQ,EAClB,SAAS,EAAE,EAAE,CACX,oXAAoX,EACpX,SAAS,CACV,KACG,KAAK,EACT,GAAG,EAAE,GAAG,YAER,KAAC,gBAAgB,CAAC,KAAK,IACrB,SAAS,EAAE,EAAE,CACX,4KAA4K,CAC7K,GACD,GACoB,CACzB,CAAC,CAAC;AACH,MAAM,CAAC,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import * as React from "react";
2
+ export interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {
3
+ }
4
+ declare const Textarea: React.ForwardRefExoticComponent<TextareaProps & React.RefAttributes<HTMLTextAreaElement>>;
5
+ export { Textarea };
6
+ //# sourceMappingURL=textarea.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.d.ts","sourceRoot":"","sources":["../../../src/components/ui/textarea.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,sBAAsB,CAAC,mBAAmB,CAAC;CAAG;AAE3F,QAAA,MAAM,QAAQ,2FAcb,CAAC;AAGF,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ // Textarea component for hazo_ihelp library
2
+ // Based on shadcn/ui textarea component
3
+ "use client";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ import * as React from "react";
6
+ import { cn } from "../../utils/cn.js";
7
+ const Textarea = React.forwardRef(({ className, ...props }, ref) => {
8
+ return (_jsx("textarea", { "data-slot": "textarea", className: cn("flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", className), ref: ref, ...props }));
9
+ });
10
+ Textarea.displayName = "Textarea";
11
+ export { Textarea };
12
+ //# sourceMappingURL=textarea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../../src/components/ui/textarea.tsx"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,wCAAwC;AACxC,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAIvC,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAC/B,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IAC/B,OAAO,CACL,gCACY,UAAU,EACpB,SAAS,EAAE,EAAE,CACX,sSAAsS,EACtS,SAAS,CACV,EACD,GAAG,EAAE,GAAG,KACJ,KAAK,GACT,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AACF,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAC;AAElC,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { IhelpImageUploadConfig } from '../types/index.js';
2
+ /**
3
+ * Parse the hazo_ihelp config file.
4
+ * Returns defaults when the file is absent.
5
+ * Caches result per config_path so the file is read once per process.
6
+ */
7
+ export declare function parseIhelpConfig(config_path?: string): {
8
+ image_upload: IhelpImageUploadConfig;
9
+ };
10
+ //# sourceMappingURL=parse_config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse_config.d.ts","sourceRoot":"","sources":["../../src/config/parse_config.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAgDhE;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG;IAAE,YAAY,EAAE,sBAAsB,CAAA;CAAE,CA8B/F"}