|
36 | 36 | let isFilterInPorgress = false;
|
37 | 37 | let sortValue = data.sort as SortKey;
|
38 | 38 |
|
| 39 | + let showUnfeatured = data.showUnfeatured; |
| 40 | +
|
39 | 41 | const resetFilter = () => {
|
40 | 42 | filterValue = "";
|
41 | 43 | isFilterInPorgress = false;
|
|
73 | 75 | goto(newUrl);
|
74 | 76 | };
|
75 | 77 |
|
| 78 | + const toggleShowUnfeatured = () => { |
| 79 | + showUnfeatured = !showUnfeatured; |
| 80 | + const newUrl = getHref($page.url, { |
| 81 | + newKeys: { showUnfeatured: showUnfeatured ? "true" : undefined }, |
| 82 | + existingKeys: { behaviour: "delete", keys: [] }, |
| 83 | + }); |
| 84 | + goto(newUrl); |
| 85 | + }; |
| 86 | +
|
76 | 87 | const goToActiveUrl = () => {
|
77 | 88 | return getHref($page.url, {
|
78 | 89 | newKeys: { active: "true" },
|
|
112 | 123 | >. Consider sharing your feedback with us!
|
113 | 124 | </h4>
|
114 | 125 | <div class="ml-auto mt-6 flex justify-between gap-2 max-sm:flex-col sm:items-center">
|
| 126 | + {#if data.user?.isAdmin} |
| 127 | + <label class="mr-auto flex items-center gap-1 text-red-500" title="Admin only feature"> |
| 128 | + <input type="checkbox" checked={showUnfeatured} on:change={toggleShowUnfeatured} /> |
| 129 | + Show unfeatured tools |
| 130 | + </label> |
| 131 | + {/if} |
115 | 132 | <a
|
116 | 133 | href={`${base}/tools/new`}
|
117 | 134 | class="flex items-center gap-1 whitespace-nowrap rounded-lg border bg-white py-1 pl-1.5 pr-2.5 shadow-sm hover:bg-gray-50 hover:shadow-none dark:border-gray-600 dark:bg-gray-700 dark:hover:bg-gray-700"
|
|
211 | 228 | {@const isOfficial = !tool.createdByName}
|
212 | 229 | <a
|
213 | 230 | href="{base}/tools/{tool._id.toString()}"
|
214 |
| - class="relative flex flex-row items-center gap-4 overflow-hidden text-balance rounded-xl border bg-gray-50/50 px-4 text-center shadow hover:bg-gray-50 hover:shadow-inner dark:border-gray-800/70 dark:bg-gray-950/20 dark:hover:bg-gray-950/40 max-sm:px-4 sm:h-24" |
| 231 | + class="relative flex flex-row items-center gap-4 overflow-hidden text-balance rounded-xl border bg-gray-50/50 px-4 text-center shadow hover:bg-gray-50 hover:shadow-inner dark:bg-gray-950/20 dark:hover:bg-gray-950/40 max-sm:px-4 sm:h-24 {!tool.featured && |
| 232 | + !isOfficial |
| 233 | + ? ' border-red-500/30' |
| 234 | + : 'dark:border-gray-800/70'}" |
215 | 235 | class:!border-blue-600={isActive}
|
216 | 236 | >
|
217 | 237 | <ToolLogo color={tool.color} icon={tool.icon} />
|
|
0 commit comments