@myrjfa/ui 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chat/ChatMain.d.ts +3 -1
- package/dist/chat/ChatMain.d.ts.map +1 -1
- package/dist/chat/ChatMain.js +174 -145
- package/dist/chat/ChatSidebar.js +7 -8
- package/dist/chat/ConversationList.d.ts.map +1 -1
- package/dist/chat/ConversationList.js +20 -18
- package/dist/chat/ExpensePanel.d.ts +4 -1
- package/dist/chat/ExpensePanel.d.ts.map +1 -1
- package/dist/chat/ExpensePanel.js +215 -195
- package/dist/chat/MessageBubble.d.ts +5 -3
- package/dist/chat/MessageBubble.d.ts.map +1 -1
- package/dist/chat/MessageBubble.js +185 -103
- package/dist/chat/MessageInput.d.ts +8 -1
- package/dist/chat/MessageInput.d.ts.map +1 -1
- package/dist/chat/MessageInput.js +182 -165
- package/dist/chat/MilestonePanel.d.ts +4 -1
- package/dist/chat/MilestonePanel.d.ts.map +1 -1
- package/dist/chat/MilestonePanel.js +150 -150
- package/dist/chat/components/ParticipantSelector.d.ts +11 -0
- package/dist/chat/components/ParticipantSelector.d.ts.map +1 -0
- package/dist/chat/components/ParticipantSelector.js +17 -0
- package/dist/chat/components/SplitInputs.d.ts +11 -0
- package/dist/chat/components/SplitInputs.d.ts.map +1 -0
- package/dist/chat/components/SplitInputs.js +83 -0
- package/dist/chat/components/SplitTypeSelector.d.ts +8 -0
- package/dist/chat/components/SplitTypeSelector.d.ts.map +1 -0
- package/dist/chat/components/SplitTypeSelector.js +13 -0
- package/dist/chat/dialogs/AddMemberDialog.js +30 -90
- package/dist/chat/dialogs/CameraDialog.js +38 -86
- package/dist/chat/dialogs/CreatePollDialog.d.ts +8 -0
- package/dist/chat/dialogs/CreatePollDialog.d.ts.map +1 -0
- package/dist/chat/dialogs/CreatePollDialog.js +38 -0
- package/dist/chat/dialogs/ExpenseAnalyticsDialog.d.ts +19 -0
- package/dist/chat/dialogs/ExpenseAnalyticsDialog.d.ts.map +1 -0
- package/dist/chat/dialogs/ExpenseAnalyticsDialog.js +52 -0
- package/dist/chat/dialogs/GroupInfoDialog.d.ts.map +1 -1
- package/dist/chat/dialogs/GroupInfoDialog.js +55 -92
- package/dist/chat/dialogs/GroupInfoViewDialog.js +5 -6
- package/dist/chat/dialogs/NewChatDialog.d.ts.map +1 -1
- package/dist/chat/dialogs/NewChatDialog.js +49 -113
- package/dist/chat/dialogs/NewGroupDialog.d.ts.map +1 -1
- package/dist/chat/dialogs/NewGroupDialog.js +49 -92
- package/dist/chat/dialogs/ParticipantsDialog.d.ts.map +1 -1
- package/dist/chat/dialogs/ParticipantsDialog.js +68 -118
- package/dist/dashboard/action-buttons.js +4 -5
- package/dist/dashboard/app-sidebar.js +47 -129
- package/dist/dashboard/card-header.js +1 -2
- package/dist/dashboard/dashboard-components.js +3 -5
- package/dist/dashboard/data-table.d.ts +2 -1
- package/dist/dashboard/data-table.d.ts.map +1 -1
- package/dist/dashboard/data-table.js +21 -33
- package/dist/dashboard/nav-main.js +4 -5
- package/dist/dashboard/nav-secondary.js +2 -25
- package/dist/dashboard/stats-card.js +1 -2
- package/dist/dashboard/table.js +8 -54
- package/dist/header/mobile-nav-item.js +1 -2
- package/dist/header/mobile-navbar.js +8 -9
- package/dist/header/nav-item.js +1 -2
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/main/footer.js +5 -9
- package/dist/main/navbar.js +55 -138
- package/dist/main/paginationBar.js +12 -14
- package/dist/main/portfolio/portfolioItem.js +1 -2
- package/dist/main/portfolio/portfolioPopup.js +16 -17
- package/dist/main/review-page.d.ts.map +1 -1
- package/dist/main/review-page.js +132 -199
- package/dist/misc/accordion.js +8 -34
- package/dist/misc/alert-dialog.js +22 -55
- package/dist/misc/alert.js +7 -32
- package/dist/misc/alertdialogclaude.js +50 -125
- package/dist/misc/avatar.js +6 -31
- package/dist/misc/badge.js +4 -27
- package/dist/misc/button.js +4 -27
- package/dist/misc/card.js +12 -40
- package/dist/misc/carousel.js +37 -61
- package/dist/misc/checkbox.js +2 -25
- package/dist/misc/command.js +18 -49
- package/dist/misc/datepicker.js +66 -76
- package/dist/misc/dialog.js +20 -52
- package/dist/misc/document-upload-button.d.ts +12 -0
- package/dist/misc/document-upload-button.d.ts.map +1 -0
- package/dist/misc/document-upload-button.js +27 -0
- package/dist/misc/dropdown-menu.js +30 -67
- package/dist/misc/empty-state.d.ts +10 -0
- package/dist/misc/empty-state.d.ts.map +1 -0
- package/dist/misc/empty-state.js +5 -0
- package/dist/misc/faq.js +2 -3
- package/dist/misc/file-preview.js +43 -97
- package/dist/misc/filter.d.ts.map +1 -1
- package/dist/misc/filter.js +18 -21
- package/dist/misc/filterBar.js +136 -160
- package/dist/misc/form.js +39 -60
- package/dist/misc/image-compressor.d.ts +29 -0
- package/dist/misc/image-compressor.d.ts.map +1 -0
- package/dist/misc/image-compressor.js +70 -0
- package/dist/misc/image-cropper.d.ts +10 -0
- package/dist/misc/image-cropper.d.ts.map +1 -0
- package/dist/misc/image-cropper.js +44 -0
- package/dist/misc/input.d.ts.map +1 -1
- package/dist/misc/input.js +2 -25
- package/dist/misc/label.js +2 -25
- package/dist/misc/line-carousel.js +3 -13
- package/dist/misc/multiImageUploader.d.ts +2 -1
- package/dist/misc/multiImageUploader.d.ts.map +1 -1
- package/dist/misc/multiImageUploader.js +26 -3
- package/dist/misc/newsLetter.js +19 -79
- package/dist/misc/notification.d.ts +1 -2
- package/dist/misc/notification.d.ts.map +1 -1
- package/dist/misc/notification.js +89 -125
- package/dist/misc/pagination.js +16 -45
- package/dist/misc/password-eye.js +2 -3
- package/dist/misc/popover.d.ts.map +1 -1
- package/dist/misc/popover.js +8 -34
- package/dist/misc/progress.js +2 -25
- package/dist/misc/pwa-install-button.d.ts +9 -0
- package/dist/misc/pwa-install-button.d.ts.map +1 -0
- package/dist/misc/pwa-install-button.js +158 -0
- package/dist/misc/scroll-area.js +5 -29
- package/dist/misc/searchBar.js +27 -31
- package/dist/misc/searchBox.js +18 -22
- package/dist/misc/select.d.ts.map +1 -1
- package/dist/misc/select.js +22 -54
- package/dist/misc/separator.js +2 -25
- package/dist/misc/share.js +48 -104
- package/dist/misc/sheet.js +21 -53
- package/dist/misc/sidebar.js +112 -153
- package/dist/misc/skeleton.d.ts +36 -1
- package/dist/misc/skeleton.d.ts.map +1 -1
- package/dist/misc/skeleton.js +41 -27
- package/dist/misc/slider.js +3 -26
- package/dist/misc/starRating.js +5 -15
- package/dist/misc/stateCard.js +7 -8
- package/dist/misc/switch.d.ts +5 -0
- package/dist/misc/switch.d.ts.map +1 -0
- package/dist/misc/switch.js +8 -0
- package/dist/misc/tabs.js +8 -34
- package/dist/misc/textarea.js +2 -25
- package/dist/misc/tile.js +32 -93
- package/dist/misc/tooltip.js +8 -34
- package/dist/misc/whatsapp-help.d.ts +9 -0
- package/dist/misc/whatsapp-help.d.ts.map +1 -0
- package/dist/misc/whatsapp-help.js +13 -0
- package/dist/profile/socialLink.d.ts +1 -1
- package/dist/profile/socialLink.d.ts.map +1 -1
- package/dist/profile/socialLink.js +53 -69
- package/dist/utils/permissions.d.ts +7 -0
- package/dist/utils/permissions.d.ts.map +1 -0
- package/dist/utils/permissions.js +38 -0
- package/package.json +6 -4
- package/dist/main/portfolio/temp-page.d.ts +0 -2
- package/dist/main/portfolio/temp-page.d.ts.map +0 -1
- package/dist/main/portfolio/temp-page.js +0 -102
package/dist/misc/scroll-area.js
CHANGED
|
@@ -1,37 +1,13 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
14
|
-
var t = {};
|
|
15
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
16
|
-
t[p] = s[p];
|
|
17
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
18
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
19
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
20
|
-
t[p[i]] = s[p[i]];
|
|
21
|
-
}
|
|
22
|
-
return t;
|
|
23
|
-
};
|
|
24
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
25
3
|
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
|
|
26
4
|
import { cn } from "@myrjfa/state/dist/lib/utils";
|
|
27
|
-
function ScrollArea(
|
|
28
|
-
|
|
29
|
-
return (_jsxs(ScrollAreaPrimitive.Root, __assign({ "data-slot": "scroll-area", className: cn("relative", className) }, props, { children: [_jsx(ScrollAreaPrimitive.Viewport, { "data-slot": "scroll-area-viewport", className: "ring-ring/10 dark:ring-ring/20 dark:outline-ring/40 outline-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] focus-visible:ring-4 focus-visible:outline-1", children: children }), _jsx(ScrollBar, {}), _jsx(ScrollAreaPrimitive.Corner, {})] })));
|
|
5
|
+
function ScrollArea({ className, children, ...props }) {
|
|
6
|
+
return (_jsxs(ScrollAreaPrimitive.Root, { "data-slot": "scroll-area", className: cn("relative", className), ...props, children: [_jsx(ScrollAreaPrimitive.Viewport, { "data-slot": "scroll-area-viewport", className: "ring-ring/10 dark:ring-ring/20 dark:outline-ring/40 outline-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] focus-visible:ring-4 focus-visible:outline-1", children: children }), _jsx(ScrollBar, {}), _jsx(ScrollAreaPrimitive.Corner, {})] }));
|
|
30
7
|
}
|
|
31
|
-
function ScrollBar(
|
|
32
|
-
|
|
33
|
-
return (_jsx(ScrollAreaPrimitive.ScrollAreaScrollbar, __assign({ "data-slot": "scroll-area-scrollbar", orientation: orientation, className: cn("flex touch-none p-px transition-colors select-none", orientation === "vertical" &&
|
|
8
|
+
function ScrollBar({ className, orientation = "vertical", ...props }) {
|
|
9
|
+
return (_jsx(ScrollAreaPrimitive.ScrollAreaScrollbar, { "data-slot": "scroll-area-scrollbar", orientation: orientation, className: cn("flex touch-none p-px transition-colors select-none", orientation === "vertical" &&
|
|
34
10
|
"h-full w-2.5 border-l border-l-transparent", orientation === "horizontal" &&
|
|
35
|
-
"h-2.5 flex-col border-t border-t-transparent", className)
|
|
11
|
+
"h-2.5 flex-col border-t border-t-transparent", className), ...props, children: _jsx(ScrollAreaPrimitive.ScrollAreaThumb, { "data-slot": "scroll-area-thumb", className: "bg-border relative flex-1 rounded-full" }) }));
|
|
36
12
|
}
|
|
37
13
|
export { ScrollArea, ScrollBar };
|
package/dist/misc/searchBar.js
CHANGED
|
@@ -4,39 +4,36 @@ import { Search } from "lucide-react";
|
|
|
4
4
|
import { usePathname, useRouter, useSearchParams } from "next/navigation";
|
|
5
5
|
import { Suspense, useEffect, useRef, useState } from "react";
|
|
6
6
|
import { Button } from "./button";
|
|
7
|
-
function SearchBarComponent(
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
var inputRef = useRef(null);
|
|
7
|
+
function SearchBarComponent({ titles }) {
|
|
8
|
+
const searchParams = useSearchParams();
|
|
9
|
+
const pathname = usePathname();
|
|
10
|
+
const router = useRouter();
|
|
11
|
+
const inputRef = useRef(null);
|
|
13
12
|
// State for search input and suggestions
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
useEffect(
|
|
19
|
-
|
|
13
|
+
const [searchQuery, setSearchQuery] = useState("");
|
|
14
|
+
const [showSuggestions, setShowSuggestions] = useState(false);
|
|
15
|
+
const [suggestions, setSuggestions] = useState([]);
|
|
16
|
+
const [highlightedIndex, setHighlightedIndex] = useState(-1);
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
const query = searchParams.get("query") || "";
|
|
20
19
|
setSearchQuery(query);
|
|
21
20
|
}, [searchParams]);
|
|
22
21
|
// Update suggestions when search query changes
|
|
23
|
-
useEffect(
|
|
22
|
+
useEffect(() => {
|
|
24
23
|
if (searchQuery.trim() === "") {
|
|
25
24
|
setSuggestions([]);
|
|
26
25
|
setHighlightedIndex(-1);
|
|
27
26
|
return;
|
|
28
27
|
}
|
|
29
|
-
|
|
30
|
-
.filter(
|
|
31
|
-
return title.toLowerCase().includes(searchQuery.toLowerCase());
|
|
32
|
-
})
|
|
28
|
+
const filtered = titles
|
|
29
|
+
.filter(title => title.toLowerCase().includes(searchQuery.toLowerCase()))
|
|
33
30
|
.slice(0, 5); // Limit to top 5 suggestions
|
|
34
31
|
setSuggestions(filtered);
|
|
35
32
|
setHighlightedIndex(-1);
|
|
36
33
|
}, [searchQuery, titles]);
|
|
37
34
|
// Execute search by updating URL params
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
const executeSearch = () => {
|
|
36
|
+
const newParams = new URLSearchParams(searchParams);
|
|
40
37
|
// Reset to first page when searching
|
|
41
38
|
newParams.set("page", "1");
|
|
42
39
|
if (searchQuery.trim() !== "") {
|
|
@@ -45,24 +42,24 @@ function SearchBarComponent(_a) {
|
|
|
45
42
|
else {
|
|
46
43
|
newParams.delete("query");
|
|
47
44
|
}
|
|
48
|
-
router.push(
|
|
45
|
+
router.push(`${pathname}?${newParams.toString()}`);
|
|
49
46
|
setShowSuggestions(false);
|
|
50
47
|
};
|
|
51
|
-
|
|
48
|
+
const handleKeyDown = (e) => {
|
|
52
49
|
if (e.key === "ArrowDown") {
|
|
53
50
|
e.preventDefault();
|
|
54
51
|
setShowSuggestions(true);
|
|
55
|
-
setHighlightedIndex(
|
|
52
|
+
setHighlightedIndex((prev) => (prev + 1) % suggestions.length);
|
|
56
53
|
}
|
|
57
54
|
else if (e.key === "ArrowUp") {
|
|
58
55
|
e.preventDefault();
|
|
59
56
|
setShowSuggestions(true);
|
|
60
|
-
setHighlightedIndex(
|
|
57
|
+
setHighlightedIndex((prev) => (prev - 1 + suggestions.length) % suggestions.length);
|
|
61
58
|
}
|
|
62
59
|
else if (e.key === "Enter") {
|
|
63
60
|
e.preventDefault();
|
|
64
61
|
if (highlightedIndex >= 0 && suggestions[highlightedIndex]) {
|
|
65
|
-
|
|
62
|
+
const selectedSuggestion = suggestions[highlightedIndex];
|
|
66
63
|
setSearchQuery(selectedSuggestion);
|
|
67
64
|
setHighlightedIndex(0);
|
|
68
65
|
}
|
|
@@ -73,21 +70,20 @@ function SearchBarComponent(_a) {
|
|
|
73
70
|
}
|
|
74
71
|
};
|
|
75
72
|
// Select a suggestion
|
|
76
|
-
|
|
73
|
+
const handleSuggestionClick = (suggestion) => {
|
|
77
74
|
var _a;
|
|
78
75
|
setSearchQuery(suggestion);
|
|
79
76
|
setShowSuggestions(false);
|
|
80
77
|
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
81
78
|
};
|
|
82
|
-
return (_jsx("div", { className: "relative w-4/5 mx-auto bg-background shadow-md rounded-full px-4 py-2 md:max-w-5xl z-11", children: _jsxs("div", { className: "flex items-center", children: [_jsxs("div", { className: "relative flex-1", children: [_jsx("input", { ref: inputRef, type: "text", placeholder: "Search...", value: searchQuery, onChange:
|
|
79
|
+
return (_jsx("div", { className: "relative w-4/5 mx-auto bg-background shadow-md rounded-full px-4 py-2 md:max-w-5xl z-11", children: _jsxs("div", { className: "flex items-center", children: [_jsxs("div", { className: "relative flex-1", children: [_jsx("input", { ref: inputRef, type: "text", placeholder: "Search...", value: searchQuery, onChange: (e) => {
|
|
83
80
|
setSearchQuery(e.target.value);
|
|
84
81
|
setShowSuggestions(true);
|
|
85
|
-
}, onKeyDown: handleKeyDown, onFocus:
|
|
82
|
+
}, onKeyDown: handleKeyDown, onFocus: () => setShowSuggestions(searchQuery.trim() !== ""), onBlur: () => {
|
|
86
83
|
// Delay hiding suggestions to allow clicking on them
|
|
87
|
-
setTimeout(
|
|
88
|
-
}, className: "w-full bg-transparent border-none outline-none py-2 px-3 text-gray-700" }), showSuggestions && suggestions.length > 0 && (_jsx("div", { className: "absolute top-full left-0 w-full mt-1 bg-white rounded-md shadow-lg z-15 max-h-60 overflow-y-auto", children: suggestions.map(
|
|
84
|
+
setTimeout(() => setShowSuggestions(false), 150);
|
|
85
|
+
}, className: "w-full bg-transparent border-none outline-none py-2 px-3 text-gray-700" }), showSuggestions && suggestions.length > 0 && (_jsx("div", { className: "absolute top-full left-0 w-full mt-1 bg-white rounded-md shadow-lg z-15 max-h-60 overflow-y-auto", children: suggestions.map((suggestion, index) => (_jsx("div", { className: `px-4 py-2 text-sm cursor-pointer ${index === highlightedIndex ? 'bg-muted' : 'text-gray-700 hover:bg-muted'}`, onMouseDown: (e) => e.preventDefault(), onClick: () => handleSuggestionClick(suggestion), children: suggestion }, index))) }))] }), _jsx(Button, { variant: "default", onClick: executeSearch, className: "ml-4 w-10 h-10 rounded-full flex items-center justify-center cursor-pointer", children: _jsx(Search, { size: 18 }) })] }) }));
|
|
89
86
|
}
|
|
90
|
-
export default function SearchBar(
|
|
91
|
-
var titles = _a.titles;
|
|
87
|
+
export default function SearchBar({ titles }) {
|
|
92
88
|
return (_jsx(Suspense, { fallback: _jsx("div", { className: "w-full h-screen flex items-center justify-center", children: "Loading..." }), children: _jsx(SearchBarComponent, { titles: titles }) }));
|
|
93
89
|
}
|
package/dist/misc/searchBox.js
CHANGED
|
@@ -1,45 +1,41 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { useEffect, useRef, useState } from "react";
|
|
4
|
-
export function SearchBox(
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
var _d = useState([]), suggestions = _d[0], setSuggestions = _d[1];
|
|
10
|
-
var _e = useState(-1), highlightedIndex = _e[0], setHighlightedIndex = _e[1];
|
|
4
|
+
export function SearchBox({ titles, id, placeholder, onChange, searchQuery, setSearchQuery, handleAdd }) {
|
|
5
|
+
const inputRef = useRef(null);
|
|
6
|
+
const [showSuggestions, setShowSuggestions] = useState(false);
|
|
7
|
+
const [suggestions, setSuggestions] = useState([]);
|
|
8
|
+
const [highlightedIndex, setHighlightedIndex] = useState(-1);
|
|
11
9
|
if (!setSearchQuery) {
|
|
12
|
-
|
|
10
|
+
[searchQuery, setSearchQuery] = useState("");
|
|
13
11
|
}
|
|
14
|
-
useEffect(
|
|
12
|
+
useEffect(() => {
|
|
15
13
|
if (searchQuery.trim() === "") {
|
|
16
14
|
setSuggestions([]);
|
|
17
15
|
setHighlightedIndex(-1);
|
|
18
16
|
return;
|
|
19
17
|
}
|
|
20
|
-
|
|
21
|
-
.filter(
|
|
22
|
-
return title.toLowerCase().includes(searchQuery.toLowerCase());
|
|
23
|
-
})
|
|
18
|
+
const filtered = titles
|
|
19
|
+
.filter((title) => title.toLowerCase().includes(searchQuery.toLowerCase()))
|
|
24
20
|
.slice(0, 5);
|
|
25
21
|
setSuggestions(filtered);
|
|
26
22
|
setHighlightedIndex(-1);
|
|
27
23
|
}, [searchQuery, titles]);
|
|
28
|
-
|
|
24
|
+
const handleKeyDown = (e) => {
|
|
29
25
|
if (e.key === "ArrowDown") {
|
|
30
26
|
e.preventDefault();
|
|
31
27
|
setShowSuggestions(true);
|
|
32
|
-
setHighlightedIndex(
|
|
28
|
+
setHighlightedIndex((prev) => (prev + 1) % suggestions.length);
|
|
33
29
|
}
|
|
34
30
|
else if (e.key === "ArrowUp") {
|
|
35
31
|
e.preventDefault();
|
|
36
32
|
setShowSuggestions(true);
|
|
37
|
-
setHighlightedIndex(
|
|
33
|
+
setHighlightedIndex((prev) => (prev - 1 + suggestions.length) % suggestions.length);
|
|
38
34
|
}
|
|
39
35
|
else if (e.key === "Enter") {
|
|
40
36
|
e.preventDefault();
|
|
41
37
|
if (highlightedIndex >= 0 && suggestions[highlightedIndex]) {
|
|
42
|
-
|
|
38
|
+
const selectedSuggestion = suggestions[highlightedIndex];
|
|
43
39
|
setSearchQuery(selectedSuggestion);
|
|
44
40
|
setHighlightedIndex(0);
|
|
45
41
|
}
|
|
@@ -50,17 +46,17 @@ export function SearchBox(_a) {
|
|
|
50
46
|
setShowSuggestions(false);
|
|
51
47
|
}
|
|
52
48
|
};
|
|
53
|
-
|
|
49
|
+
const handleSuggestionClick = (suggestion) => {
|
|
54
50
|
var _a;
|
|
55
51
|
setSearchQuery(suggestion);
|
|
56
52
|
setShowSuggestions(false);
|
|
57
53
|
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
58
54
|
};
|
|
59
|
-
return (_jsx("div", { className: "relative w-full mx-auto bg-background rounded-lg", children: _jsx("div", { className: "flex items-center", children: _jsxs("div", { className: "relative flex-1", children: [_jsx("input", { id: id !== null && id !== void 0 ? id : "", ref: inputRef, type: "text", placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : "Search...", value: searchQuery, onChange:
|
|
55
|
+
return (_jsx("div", { className: "relative w-full mx-auto bg-background rounded-lg", children: _jsx("div", { className: "flex items-center", children: _jsxs("div", { className: "relative flex-1", children: [_jsx("input", { id: id !== null && id !== void 0 ? id : "", ref: inputRef, type: "text", placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : "Search...", value: searchQuery, onChange: (e) => {
|
|
60
56
|
setSearchQuery(e.target.value);
|
|
61
57
|
setShowSuggestions(true);
|
|
62
|
-
}, onKeyDown: handleKeyDown, onFocus:
|
|
58
|
+
}, onKeyDown: handleKeyDown, onFocus: () => setShowSuggestions(searchQuery.trim() !== ""), onBlur: (e) => {
|
|
63
59
|
// Delay hiding to allow click
|
|
64
|
-
setTimeout(
|
|
65
|
-
}, className: "w-full bg-transparent border border-input rounded-md py-2 px-3 text-sm text-gray-700 focus:outline-none z-11" }), showSuggestions && suggestions.length > 0 && (_jsx("div", { className: "absolute top-full left-0 w-full mt-1 bg-white rounded-md shadow-lg z-100 max-h-60 overflow-y-auto border border-muted", children: suggestions.map(
|
|
60
|
+
setTimeout(() => setShowSuggestions(false), 150);
|
|
61
|
+
}, className: "w-full bg-transparent border border-input rounded-md py-2 px-3 text-sm text-gray-700 focus:outline-none z-11" }), showSuggestions && suggestions.length > 0 && (_jsx("div", { className: "absolute top-full left-0 w-full mt-1 bg-white rounded-md shadow-lg z-100 max-h-60 overflow-y-auto border border-muted", children: suggestions.map((suggestion, index) => (_jsx("div", { className: `px-4 py-2 text-sm cursor-pointer ${index === highlightedIndex ? 'bg-muted' : 'text-gray-700 hover:bg-muted'}`, onMouseDown: (e) => e.preventDefault(), onClick: () => handleSuggestionClick(suggestion), children: suggestion }, index))) }))] }) }) }));
|
|
66
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/misc/select.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAA;AAKzD,iBAAS,MAAM,CAAC,EACd,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,2CAEnD;AAED,iBAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,2CAEpD;AAED,iBAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,2CAEpD;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,2CAgBtD;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,QAAQ,EACR,QAAmB,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/misc/select.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAA;AAKzD,iBAAS,MAAM,CAAC,EACd,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,2CAEnD;AAED,iBAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,2CAEpD;AAED,iBAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,2CAEpD;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,2CAgBtD;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,QAAQ,EACR,QAAmB,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,2CA6BtD;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,2CAQpD;AAED,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,2CAkBnD;AAED,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,SAAS,CAAC,2CAQxD;AAED,iBAAS,oBAAoB,CAAC,EAC5B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,cAAc,CAAC,2CAa7D;AAED,iBAAS,sBAAsB,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,gBAAgB,CAAC,2CAa/D;AAED,OAAO,EACL,MAAM,EACN,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,WAAW,GACZ,CAAA"}
|
package/dist/misc/select.js
CHANGED
|
@@ -1,70 +1,38 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
14
|
-
var t = {};
|
|
15
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
16
|
-
t[p] = s[p];
|
|
17
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
18
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
19
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
20
|
-
t[p[i]] = s[p[i]];
|
|
21
|
-
}
|
|
22
|
-
return t;
|
|
23
|
-
};
|
|
24
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
25
3
|
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
26
4
|
import { cn } from "@myrjfa/state/dist/lib/utils";
|
|
27
5
|
import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react";
|
|
28
|
-
function Select(
|
|
29
|
-
|
|
30
|
-
return _jsx(SelectPrimitive.Root, __assign({ "data-slot": "select" }, props));
|
|
6
|
+
function Select({ ...props }) {
|
|
7
|
+
return _jsx(SelectPrimitive.Root, { "data-slot": "select", ...props });
|
|
31
8
|
}
|
|
32
|
-
function SelectGroup(
|
|
33
|
-
|
|
34
|
-
return _jsx(SelectPrimitive.Group, __assign({ "data-slot": "select-group" }, props));
|
|
9
|
+
function SelectGroup({ ...props }) {
|
|
10
|
+
return _jsx(SelectPrimitive.Group, { "data-slot": "select-group", ...props });
|
|
35
11
|
}
|
|
36
|
-
function SelectValue(
|
|
37
|
-
|
|
38
|
-
return _jsx(SelectPrimitive.Value, __assign({ "data-slot": "select-value" }, props));
|
|
12
|
+
function SelectValue({ ...props }) {
|
|
13
|
+
return _jsx(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
|
|
39
14
|
}
|
|
40
|
-
function SelectTrigger(
|
|
41
|
-
|
|
42
|
-
return (_jsxs(SelectPrimitive.Trigger, __assign({ "data-slot": "select-trigger", className: cn("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive flex h-9 w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className) }, props, { children: [children, _jsx(SelectPrimitive.Icon, { asChild: true, children: _jsx(ChevronDownIcon, { className: "size-4 opacity-50" }) })] })));
|
|
15
|
+
function SelectTrigger({ className, children, ...props }) {
|
|
16
|
+
return (_jsxs(SelectPrimitive.Trigger, { "data-slot": "select-trigger", className: cn("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive flex h-9 w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className), ...props, children: [children, _jsx(SelectPrimitive.Icon, { asChild: true, children: _jsx(ChevronDownIcon, { className: "size-4 opacity-50" }) })] }));
|
|
43
17
|
}
|
|
44
|
-
function SelectContent(
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"), children: children }), _jsx(SelectScrollDownButton, {})] })) }));
|
|
18
|
+
function SelectContent({ className, children, position = "popper", ...props }) {
|
|
19
|
+
return (_jsx(SelectPrimitive.Portal, { children: _jsxs(SelectPrimitive.Content, { "data-slot": "select-content", className: cn("bg-popover text-popover-foreground 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 relative z-[310] max-h-96 min-w-[8rem] overflow-hidden rounded-md border shadow-md pointer-events-auto", position === "popper" &&
|
|
20
|
+
"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, onWheel: (e) => e.stopPropagation(), ...props, children: [_jsx(SelectScrollUpButton, {}), _jsx(SelectPrimitive.Viewport, { className: cn("p-1", position === "popper" &&
|
|
21
|
+
"h-full max-h-[var(--radix-select-content-available-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1 overflow-y-auto touch-pan-y"), children: children }), _jsx(SelectScrollDownButton, {})] }) }));
|
|
49
22
|
}
|
|
50
|
-
function SelectLabel(
|
|
51
|
-
|
|
52
|
-
return (_jsx(SelectPrimitive.Label, __assign({ "data-slot": "select-label", className: cn("px-2 py-1.5 text-sm font-medium", className) }, props)));
|
|
23
|
+
function SelectLabel({ className, ...props }) {
|
|
24
|
+
return (_jsx(SelectPrimitive.Label, { "data-slot": "select-label", className: cn("px-2 py-1.5 text-sm font-medium", className), ...props }));
|
|
53
25
|
}
|
|
54
|
-
function SelectItem(
|
|
55
|
-
|
|
56
|
-
return (_jsxs(SelectPrimitive.Item, __assign({ "data-slot": "select-item", className: cn("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2", className) }, props, { children: [_jsx("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: _jsx(SelectPrimitive.ItemIndicator, { children: _jsx(CheckIcon, { className: "size-4" }) }) }), _jsx(SelectPrimitive.ItemText, { children: children })] })));
|
|
26
|
+
function SelectItem({ className, children, ...props }) {
|
|
27
|
+
return (_jsxs(SelectPrimitive.Item, { "data-slot": "select-item", className: cn("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2", className), ...props, children: [_jsx("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: _jsx(SelectPrimitive.ItemIndicator, { children: _jsx(CheckIcon, { className: "size-4" }) }) }), _jsx(SelectPrimitive.ItemText, { children: children })] }));
|
|
57
28
|
}
|
|
58
|
-
function SelectSeparator(
|
|
59
|
-
|
|
60
|
-
return (_jsx(SelectPrimitive.Separator, __assign({ "data-slot": "select-separator", className: cn("bg-border pointer-events-none -mx-1 my-1 h-px", className) }, props)));
|
|
29
|
+
function SelectSeparator({ className, ...props }) {
|
|
30
|
+
return (_jsx(SelectPrimitive.Separator, { "data-slot": "select-separator", className: cn("bg-border pointer-events-none -mx-1 my-1 h-px", className), ...props }));
|
|
61
31
|
}
|
|
62
|
-
function SelectScrollUpButton(
|
|
63
|
-
|
|
64
|
-
return (_jsx(SelectPrimitive.ScrollUpButton, __assign({ "data-slot": "select-scroll-up-button", className: cn("flex cursor-default items-center justify-center py-1", className) }, props, { children: _jsx(ChevronUpIcon, { className: "size-4" }) })));
|
|
32
|
+
function SelectScrollUpButton({ className, ...props }) {
|
|
33
|
+
return (_jsx(SelectPrimitive.ScrollUpButton, { "data-slot": "select-scroll-up-button", className: cn("flex cursor-default items-center justify-center py-1", className), ...props, children: _jsx(ChevronUpIcon, { className: "size-4" }) }));
|
|
65
34
|
}
|
|
66
|
-
function SelectScrollDownButton(
|
|
67
|
-
|
|
68
|
-
return (_jsx(SelectPrimitive.ScrollDownButton, __assign({ "data-slot": "select-scroll-down-button", className: cn("flex cursor-default items-center justify-center py-1", className) }, props, { children: _jsx(ChevronDownIcon, { className: "size-4" }) })));
|
|
35
|
+
function SelectScrollDownButton({ className, ...props }) {
|
|
36
|
+
return (_jsx(SelectPrimitive.ScrollDownButton, { "data-slot": "select-scroll-down-button", className: cn("flex cursor-default items-center justify-center py-1", className), ...props, children: _jsx(ChevronDownIcon, { className: "size-4" }) }));
|
|
69
37
|
}
|
|
70
38
|
export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, };
|
package/dist/misc/separator.js
CHANGED
|
@@ -1,31 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
14
|
-
var t = {};
|
|
15
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
16
|
-
t[p] = s[p];
|
|
17
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
18
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
19
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
20
|
-
t[p[i]] = s[p[i]];
|
|
21
|
-
}
|
|
22
|
-
return t;
|
|
23
|
-
};
|
|
24
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
25
3
|
import * as SeparatorPrimitive from "@radix-ui/react-separator";
|
|
26
4
|
import { cn } from "@myrjfa/state/dist/lib/utils";
|
|
27
|
-
function Separator(
|
|
28
|
-
|
|
29
|
-
return (_jsx(SeparatorPrimitive.Root, __assign({ "data-slot": "separator-root", decorative: decorative, orientation: orientation, className: cn("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px", className) }, props)));
|
|
5
|
+
function Separator({ className, orientation = "horizontal", decorative = true, ...props }) {
|
|
6
|
+
return (_jsx(SeparatorPrimitive.Root, { "data-slot": "separator-root", decorative: decorative, orientation: orientation, className: cn("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px", className), ...props }));
|
|
30
7
|
}
|
|
31
8
|
export { Separator };
|