@reallukemanning/folio 1.0.0
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/LICENSE +21 -0
- package/copy-components.js +31 -0
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/core/copy-components.js.html +178 -0
- package/coverage/core/eslint.config.js.html +184 -0
- package/coverage/core/index.html +146 -0
- package/coverage/core/src/__tests__/benchmarks/ProjectCard.bench.tsx.html +364 -0
- package/coverage/core/src/__tests__/benchmarks/ProjectView.bench.tsx.html +484 -0
- package/coverage/core/src/__tests__/benchmarks/github.bench.ts.html +244 -0
- package/coverage/core/src/__tests__/benchmarks/index.html +191 -0
- package/coverage/core/src/__tests__/benchmarks/npm.bench.ts.html +271 -0
- package/coverage/core/src/__tests__/benchmarks/product-hunt.bench.ts.html +259 -0
- package/coverage/core/src/__tests__/benchmarks/utilities.bench.ts.html +478 -0
- package/coverage/core/src/components/FeaturedProject.test.tsx.html +697 -0
- package/coverage/core/src/components/FeaturedProject.tsx.html +163 -0
- package/coverage/core/src/components/ProjectCard/ProjectCard.test.tsx.html +928 -0
- package/coverage/core/src/components/ProjectCard/ProjectCard.tsx.html +379 -0
- package/coverage/core/src/components/ProjectCard/index.html +146 -0
- package/coverage/core/src/components/ProjectCard/index.ts.html +88 -0
- package/coverage/core/src/components/ProjectGrid/ProjectGrid.test.tsx.html +292 -0
- package/coverage/core/src/components/ProjectGrid/ProjectGrid.tsx.html +103 -0
- package/coverage/core/src/components/ProjectGrid/index.html +146 -0
- package/coverage/core/src/components/ProjectGrid/index.ts.html +88 -0
- package/coverage/core/src/components/ProjectList/ProjectList.test.tsx.html +292 -0
- package/coverage/core/src/components/ProjectList/ProjectList.tsx.html +103 -0
- package/coverage/core/src/components/ProjectList/index.html +146 -0
- package/coverage/core/src/components/ProjectList/index.ts.html +88 -0
- package/coverage/core/src/components/ProjectView/ProjectView.test.tsx.html +1108 -0
- package/coverage/core/src/components/ProjectView/ProjectView.tsx.html +589 -0
- package/coverage/core/src/components/ProjectView/index.html +146 -0
- package/coverage/core/src/components/ProjectView/index.ts.html +88 -0
- package/coverage/core/src/components/index.html +146 -0
- package/coverage/core/src/components/index.ts.html +97 -0
- package/coverage/core/src/index.html +116 -0
- package/coverage/core/src/index.ts.html +94 -0
- package/coverage/core/src/lib/__tests__/defineProjects.test.ts.html +421 -0
- package/coverage/core/src/lib/__tests__/filterByFeatured.test.ts.html +523 -0
- package/coverage/core/src/lib/__tests__/filterByStatus.test.ts.html +664 -0
- package/coverage/core/src/lib/__tests__/filterByType.test.ts.html +631 -0
- package/coverage/core/src/lib/__tests__/github.test.ts.html +1783 -0
- package/coverage/core/src/lib/__tests__/hybrid-config.test.ts.html +1345 -0
- package/coverage/core/src/lib/__tests__/index.html +311 -0
- package/coverage/core/src/lib/__tests__/normalise.test.ts.html +1585 -0
- package/coverage/core/src/lib/__tests__/npm-config.test.ts.html +385 -0
- package/coverage/core/src/lib/__tests__/npm.test.ts.html +1135 -0
- package/coverage/core/src/lib/__tests__/product-hunt-config.test.ts.html +397 -0
- package/coverage/core/src/lib/__tests__/product-hunt.test.ts.html +505 -0
- package/coverage/core/src/lib/__tests__/sortByDate.test.ts.html +751 -0
- package/coverage/core/src/lib/__tests__/sortByName.test.ts.html +832 -0
- package/coverage/core/src/lib/__tests__/sortByStars.test.ts.html +703 -0
- package/coverage/core/src/lib/defineProjects.ts.html +100 -0
- package/coverage/core/src/lib/filterByFeatured.ts.html +133 -0
- package/coverage/core/src/lib/filterByStatus.ts.html +145 -0
- package/coverage/core/src/lib/filterByType.ts.html +133 -0
- package/coverage/core/src/lib/github.ts.html +517 -0
- package/coverage/core/src/lib/index.html +281 -0
- package/coverage/core/src/lib/index.ts.html +130 -0
- package/coverage/core/src/lib/normalise.ts.html +868 -0
- package/coverage/core/src/lib/npm.ts.html +199 -0
- package/coverage/core/src/lib/product-hunt.ts.html +256 -0
- package/coverage/core/src/lib/sortByDate.ts.html +175 -0
- package/coverage/core/src/lib/sortByName.ts.html +172 -0
- package/coverage/core/src/lib/sortByStars.ts.html +172 -0
- package/coverage/core/src/types/index.html +116 -0
- package/coverage/core/src/types/index.ts.html +517 -0
- package/coverage/core/vitest.config.ts.html +178 -0
- package/coverage/coverage-final.json +53 -0
- package/coverage/coverage-summary.json +54 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +266 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +210 -0
- package/dist/cli-components/FeaturedProject/FeaturedProject.d.ts +6 -0
- package/dist/cli-components/FeaturedProject/FeaturedProject.d.ts.map +1 -0
- package/dist/cli-components/FeaturedProject/FeaturedProject.js +9 -0
- package/dist/cli-components/FeaturedProject/FeaturedProject.js.map +1 -0
- package/dist/cli-components/FeaturedProject/FeaturedProject.tsx +54 -0
- package/dist/cli-components/FeaturedProject/index.d.ts +3 -0
- package/dist/cli-components/FeaturedProject/index.d.ts.map +1 -0
- package/dist/cli-components/FeaturedProject/index.js +2 -0
- package/dist/cli-components/FeaturedProject/index.js.map +1 -0
- package/dist/cli-components/FeaturedProject/index.ts +2 -0
- package/dist/cli-components/ProjectCard/ProjectCard.d.ts +26 -0
- package/dist/cli-components/ProjectCard/ProjectCard.d.ts.map +1 -0
- package/dist/cli-components/ProjectCard/ProjectCard.js +33 -0
- package/dist/cli-components/ProjectCard/ProjectCard.js.map +1 -0
- package/dist/cli-components/ProjectCard/ProjectCard.tsx +90 -0
- package/dist/cli-components/ProjectCard/index.d.ts +3 -0
- package/dist/cli-components/ProjectCard/index.d.ts.map +1 -0
- package/dist/cli-components/ProjectCard/index.js +2 -0
- package/dist/cli-components/ProjectCard/index.js.map +1 -0
- package/dist/cli-components/ProjectCard/index.ts +2 -0
- package/dist/cli-components/ProjectGrid/ProjectGrid.d.ts +5 -0
- package/dist/cli-components/ProjectGrid/ProjectGrid.d.ts.map +1 -0
- package/dist/cli-components/ProjectGrid/ProjectGrid.js +8 -0
- package/dist/cli-components/ProjectGrid/ProjectGrid.js.map +1 -0
- package/dist/cli-components/ProjectGrid/ProjectGrid.tsx +6 -0
- package/dist/cli-components/ProjectGrid/index.d.ts +3 -0
- package/dist/cli-components/ProjectGrid/index.d.ts.map +1 -0
- package/dist/cli-components/ProjectGrid/index.js +2 -0
- package/dist/cli-components/ProjectGrid/index.js.map +1 -0
- package/dist/cli-components/ProjectGrid/index.ts +2 -0
- package/dist/cli-components/ProjectList/ProjectList.d.ts +5 -0
- package/dist/cli-components/ProjectList/ProjectList.d.ts.map +1 -0
- package/dist/cli-components/ProjectList/ProjectList.js +8 -0
- package/dist/cli-components/ProjectList/ProjectList.js.map +1 -0
- package/dist/cli-components/ProjectList/ProjectList.tsx +6 -0
- package/dist/cli-components/ProjectList/index.d.ts +3 -0
- package/dist/cli-components/ProjectList/index.d.ts.map +1 -0
- package/dist/cli-components/ProjectList/index.js +2 -0
- package/dist/cli-components/ProjectList/index.js.map +1 -0
- package/dist/cli-components/ProjectList/index.ts +2 -0
- package/dist/cli-components/ProjectView/ProjectView.d.ts +17 -0
- package/dist/cli-components/ProjectView/ProjectView.d.ts.map +1 -0
- package/dist/cli-components/ProjectView/ProjectView.js +39 -0
- package/dist/cli-components/ProjectView/ProjectView.js.map +1 -0
- package/dist/cli-components/ProjectView/ProjectView.tsx +117 -0
- package/dist/cli-components/ProjectView/index.d.ts +3 -0
- package/dist/cli-components/ProjectView/index.d.ts.map +1 -0
- package/dist/cli-components/ProjectView/index.js +2 -0
- package/dist/cli-components/ProjectView/index.js.map +1 -0
- package/dist/cli-components/ProjectView/index.ts +2 -0
- package/dist/cli-components/types.d.ts +52 -0
- package/dist/cli-components/types.d.ts.map +1 -0
- package/dist/cli-components/types.js +2 -0
- package/dist/cli-components/types.js.map +1 -0
- package/dist/cli-components/types.ts +58 -0
- package/dist/cli-types.d.ts +52 -0
- package/dist/cli-types.d.ts.map +1 -0
- package/dist/cli-types.js +2 -0
- package/dist/cli-types.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +21 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/add.d.ts +2 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +166 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/init.d.ts +6 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +231 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/components/FeaturedProject.d.ts +7 -0
- package/dist/components/FeaturedProject.d.ts.map +1 -0
- package/dist/components/FeaturedProject.js +10 -0
- package/dist/components/FeaturedProject.js.map +1 -0
- package/dist/components/FeaturedProject.test.tsx +204 -0
- package/dist/components/FeaturedProject.tsx +26 -0
- package/dist/components/ProjectCard/ProjectCard.d.ts +26 -0
- package/dist/components/ProjectCard/ProjectCard.d.ts.map +1 -0
- package/dist/components/ProjectCard/ProjectCard.js +39 -0
- package/dist/components/ProjectCard/ProjectCard.js.map +1 -0
- package/dist/components/ProjectCard/ProjectCard.test.tsx +281 -0
- package/dist/components/ProjectCard/ProjectCard.tsx +98 -0
- package/dist/components/ProjectCard/index.d.ts +2 -0
- package/dist/components/ProjectCard/index.d.ts.map +1 -0
- package/dist/components/ProjectCard/index.js +2 -0
- package/dist/components/ProjectCard/index.js.map +1 -0
- package/dist/components/ProjectCard/index.ts +1 -0
- package/dist/components/ProjectGrid/ProjectGrid.d.ts +5 -0
- package/dist/components/ProjectGrid/ProjectGrid.d.ts.map +1 -0
- package/dist/components/ProjectGrid/ProjectGrid.js +8 -0
- package/dist/components/ProjectGrid/ProjectGrid.js.map +1 -0
- package/dist/components/ProjectGrid/ProjectGrid.test.tsx +69 -0
- package/dist/components/ProjectGrid/ProjectGrid.tsx +6 -0
- package/dist/components/ProjectGrid/index.d.ts +2 -0
- package/dist/components/ProjectGrid/index.d.ts.map +1 -0
- package/dist/components/ProjectGrid/index.js +2 -0
- package/dist/components/ProjectGrid/index.js.map +1 -0
- package/dist/components/ProjectGrid/index.ts +1 -0
- package/dist/components/ProjectList/ProjectList.d.ts +5 -0
- package/dist/components/ProjectList/ProjectList.d.ts.map +1 -0
- package/dist/components/ProjectList/ProjectList.js +8 -0
- package/dist/components/ProjectList/ProjectList.js.map +1 -0
- package/dist/components/ProjectList/ProjectList.test.tsx +69 -0
- package/dist/components/ProjectList/ProjectList.tsx +6 -0
- package/dist/components/ProjectList/index.d.ts +2 -0
- package/dist/components/ProjectList/index.d.ts.map +1 -0
- package/dist/components/ProjectList/index.js +2 -0
- package/dist/components/ProjectList/index.js.map +1 -0
- package/dist/components/ProjectList/index.ts +1 -0
- package/dist/components/ProjectView/ProjectView.d.ts +20 -0
- package/dist/components/ProjectView/ProjectView.d.ts.map +1 -0
- package/dist/components/ProjectView/ProjectView.js +64 -0
- package/dist/components/ProjectView/ProjectView.js.map +1 -0
- package/dist/components/ProjectView/ProjectView.test.tsx +341 -0
- package/dist/components/ProjectView/ProjectView.tsx +168 -0
- package/dist/components/ProjectView/index.d.ts +2 -0
- package/dist/components/ProjectView/index.d.ts.map +1 -0
- package/dist/components/ProjectView/index.js +2 -0
- package/dist/components/ProjectView/index.js.map +1 -0
- package/dist/components/ProjectView/index.ts +1 -0
- package/dist/components/index.d.ts +5 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +5 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/index.ts +4 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/defineProjects.d.ts +3 -0
- package/dist/lib/defineProjects.d.ts.map +1 -0
- package/dist/lib/defineProjects.js +4 -0
- package/dist/lib/defineProjects.js.map +1 -0
- package/dist/lib/filterByFeatured.d.ts +3 -0
- package/dist/lib/filterByFeatured.d.ts.map +1 -0
- package/dist/lib/filterByFeatured.js +10 -0
- package/dist/lib/filterByFeatured.js.map +1 -0
- package/dist/lib/filterByStatus.d.ts +3 -0
- package/dist/lib/filterByStatus.d.ts.map +1 -0
- package/dist/lib/filterByStatus.js +13 -0
- package/dist/lib/filterByStatus.js.map +1 -0
- package/dist/lib/filterByType.d.ts +3 -0
- package/dist/lib/filterByType.d.ts.map +1 -0
- package/dist/lib/filterByType.js +10 -0
- package/dist/lib/filterByType.js.map +1 -0
- package/dist/lib/github.d.ts +24 -0
- package/dist/lib/github.d.ts.map +1 -0
- package/dist/lib/github.js +107 -0
- package/dist/lib/github.js.map +1 -0
- package/dist/lib/index.d.ts +16 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +12 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/normalise.d.ts +4 -0
- package/dist/lib/normalise.d.ts.map +1 -0
- package/dist/lib/normalise.js +221 -0
- package/dist/lib/normalise.js.map +1 -0
- package/dist/lib/npm.d.ts +7 -0
- package/dist/lib/npm.d.ts.map +1 -0
- package/dist/lib/npm.js +28 -0
- package/dist/lib/npm.js.map +1 -0
- package/dist/lib/product-hunt.d.ts +12 -0
- package/dist/lib/product-hunt.d.ts.map +1 -0
- package/dist/lib/product-hunt.js +40 -0
- package/dist/lib/product-hunt.js.map +1 -0
- package/dist/lib/sortByDate.d.ts +4 -0
- package/dist/lib/sortByDate.d.ts.map +1 -0
- package/dist/lib/sortByDate.js +21 -0
- package/dist/lib/sortByDate.js.map +1 -0
- package/dist/lib/sortByName.d.ts +4 -0
- package/dist/lib/sortByName.d.ts.map +1 -0
- package/dist/lib/sortByName.js +21 -0
- package/dist/lib/sortByName.js.map +1 -0
- package/dist/lib/sortByStars.d.ts +4 -0
- package/dist/lib/sortByStars.d.ts.map +1 -0
- package/dist/lib/sortByStars.js +21 -0
- package/dist/lib/sortByStars.js.map +1 -0
- package/dist/test-setup.d.ts +2 -0
- package/dist/test-setup.d.ts.map +1 -0
- package/dist/test-setup.js +2 -0
- package/dist/test-setup.js.map +1 -0
- package/dist/types/index.d.ts +121 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/eslint.config.js +33 -0
- package/package.json +47 -0
- package/playwright-report/index.html +85 -0
- package/src/__tests__/benchmarks/ProjectCard.bench.tsx +93 -0
- package/src/__tests__/benchmarks/ProjectView.bench.tsx +133 -0
- package/src/__tests__/benchmarks/github.bench.ts +53 -0
- package/src/__tests__/benchmarks/npm.bench.ts +62 -0
- package/src/__tests__/benchmarks/product-hunt.bench.ts +58 -0
- package/src/__tests__/benchmarks/utilities.bench.ts +131 -0
- package/src/cli-components/FeaturedProject/FeaturedProject.tsx +54 -0
- package/src/cli-components/FeaturedProject/index.ts +2 -0
- package/src/cli-components/ProjectCard/ProjectCard.tsx +90 -0
- package/src/cli-components/ProjectCard/index.ts +2 -0
- package/src/cli-components/ProjectGrid/ProjectGrid.tsx +6 -0
- package/src/cli-components/ProjectGrid/index.ts +2 -0
- package/src/cli-components/ProjectList/ProjectList.tsx +6 -0
- package/src/cli-components/ProjectList/index.ts +2 -0
- package/src/cli-components/ProjectView/ProjectView.tsx +117 -0
- package/src/cli-components/ProjectView/index.ts +2 -0
- package/src/cli-components/types.ts +58 -0
- package/src/cli-types.ts +58 -0
- package/src/cli.ts +26 -0
- package/src/commands/add.ts +191 -0
- package/src/commands/init.ts +260 -0
- package/src/components/FeaturedProject.test.tsx +204 -0
- package/src/components/FeaturedProject.tsx +26 -0
- package/src/components/ProjectCard/ProjectCard.test.tsx +281 -0
- package/src/components/ProjectCard/ProjectCard.tsx +98 -0
- package/src/components/ProjectCard/index.ts +1 -0
- package/src/components/ProjectGrid/ProjectGrid.test.tsx +69 -0
- package/src/components/ProjectGrid/ProjectGrid.tsx +6 -0
- package/src/components/ProjectGrid/index.ts +1 -0
- package/src/components/ProjectList/ProjectList.test.tsx +69 -0
- package/src/components/ProjectList/ProjectList.tsx +6 -0
- package/src/components/ProjectList/index.ts +1 -0
- package/src/components/ProjectView/ProjectView.test.tsx +341 -0
- package/src/components/ProjectView/ProjectView.tsx +168 -0
- package/src/components/ProjectView/index.ts +1 -0
- package/src/components/index.ts +4 -0
- package/src/index.ts +3 -0
- package/src/lib/__tests__/defineProjects.test.ts +112 -0
- package/src/lib/__tests__/filterByFeatured.test.ts +146 -0
- package/src/lib/__tests__/filterByStatus.test.ts +193 -0
- package/src/lib/__tests__/filterByType.test.ts +182 -0
- package/src/lib/__tests__/github.test.ts +566 -0
- package/src/lib/__tests__/hybrid-config.test.ts +420 -0
- package/src/lib/__tests__/normalise.test.ts +500 -0
- package/src/lib/__tests__/npm-config.test.ts +100 -0
- package/src/lib/__tests__/npm.test.ts +350 -0
- package/src/lib/__tests__/product-hunt-config.test.ts +104 -0
- package/src/lib/__tests__/product-hunt.test.ts +140 -0
- package/src/lib/__tests__/sortByDate.test.ts +222 -0
- package/src/lib/__tests__/sortByName.test.ts +249 -0
- package/src/lib/__tests__/sortByStars.test.ts +206 -0
- package/src/lib/defineProjects.ts +5 -0
- package/src/lib/filterByFeatured.ts +16 -0
- package/src/lib/filterByStatus.ts +20 -0
- package/src/lib/filterByType.ts +16 -0
- package/src/lib/github.ts +144 -0
- package/src/lib/index.ts +15 -0
- package/src/lib/normalise.ts +261 -0
- package/src/lib/npm.ts +38 -0
- package/src/lib/product-hunt.ts +57 -0
- package/src/lib/sortByDate.ts +30 -0
- package/src/lib/sortByName.ts +29 -0
- package/src/lib/sortByStars.ts +29 -0
- package/src/test-setup.ts +1 -0
- package/src/types/index.ts +144 -0
- package/test-results/.last-run.json +62 -0
- package/tsconfig.json +29 -0
- package/vitest.config.ts +31 -0
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
var addSorting = (function() {
|
|
3
|
+
'use strict';
|
|
4
|
+
var cols,
|
|
5
|
+
currentSort = {
|
|
6
|
+
index: 0,
|
|
7
|
+
desc: false
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
// returns the summary table element
|
|
11
|
+
function getTable() {
|
|
12
|
+
return document.querySelector('.coverage-summary');
|
|
13
|
+
}
|
|
14
|
+
// returns the thead element of the summary table
|
|
15
|
+
function getTableHeader() {
|
|
16
|
+
return getTable().querySelector('thead tr');
|
|
17
|
+
}
|
|
18
|
+
// returns the tbody element of the summary table
|
|
19
|
+
function getTableBody() {
|
|
20
|
+
return getTable().querySelector('tbody');
|
|
21
|
+
}
|
|
22
|
+
// returns the th element for nth column
|
|
23
|
+
function getNthColumn(n) {
|
|
24
|
+
return getTableHeader().querySelectorAll('th')[n];
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function onFilterInput() {
|
|
28
|
+
const searchValue = document.getElementById('fileSearch').value;
|
|
29
|
+
const rows = document.getElementsByTagName('tbody')[0].children;
|
|
30
|
+
|
|
31
|
+
// Try to create a RegExp from the searchValue. If it fails (invalid regex),
|
|
32
|
+
// it will be treated as a plain text search
|
|
33
|
+
let searchRegex;
|
|
34
|
+
try {
|
|
35
|
+
searchRegex = new RegExp(searchValue, 'i'); // 'i' for case-insensitive
|
|
36
|
+
} catch (error) {
|
|
37
|
+
searchRegex = null;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
for (let i = 0; i < rows.length; i++) {
|
|
41
|
+
const row = rows[i];
|
|
42
|
+
let isMatch = false;
|
|
43
|
+
|
|
44
|
+
if (searchRegex) {
|
|
45
|
+
// If a valid regex was created, use it for matching
|
|
46
|
+
isMatch = searchRegex.test(row.textContent);
|
|
47
|
+
} else {
|
|
48
|
+
// Otherwise, fall back to the original plain text search
|
|
49
|
+
isMatch = row.textContent
|
|
50
|
+
.toLowerCase()
|
|
51
|
+
.includes(searchValue.toLowerCase());
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
row.style.display = isMatch ? '' : 'none';
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// loads the search box
|
|
59
|
+
function addSearchBox() {
|
|
60
|
+
var template = document.getElementById('filterTemplate');
|
|
61
|
+
var templateClone = template.content.cloneNode(true);
|
|
62
|
+
templateClone.getElementById('fileSearch').oninput = onFilterInput;
|
|
63
|
+
template.parentElement.appendChild(templateClone);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// loads all columns
|
|
67
|
+
function loadColumns() {
|
|
68
|
+
var colNodes = getTableHeader().querySelectorAll('th'),
|
|
69
|
+
colNode,
|
|
70
|
+
cols = [],
|
|
71
|
+
col,
|
|
72
|
+
i;
|
|
73
|
+
|
|
74
|
+
for (i = 0; i < colNodes.length; i += 1) {
|
|
75
|
+
colNode = colNodes[i];
|
|
76
|
+
col = {
|
|
77
|
+
key: colNode.getAttribute('data-col'),
|
|
78
|
+
sortable: !colNode.getAttribute('data-nosort'),
|
|
79
|
+
type: colNode.getAttribute('data-type') || 'string'
|
|
80
|
+
};
|
|
81
|
+
cols.push(col);
|
|
82
|
+
if (col.sortable) {
|
|
83
|
+
col.defaultDescSort = col.type === 'number';
|
|
84
|
+
colNode.innerHTML =
|
|
85
|
+
colNode.innerHTML + '<span class="sorter"></span>';
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return cols;
|
|
89
|
+
}
|
|
90
|
+
// attaches a data attribute to every tr element with an object
|
|
91
|
+
// of data values keyed by column name
|
|
92
|
+
function loadRowData(tableRow) {
|
|
93
|
+
var tableCols = tableRow.querySelectorAll('td'),
|
|
94
|
+
colNode,
|
|
95
|
+
col,
|
|
96
|
+
data = {},
|
|
97
|
+
i,
|
|
98
|
+
val;
|
|
99
|
+
for (i = 0; i < tableCols.length; i += 1) {
|
|
100
|
+
colNode = tableCols[i];
|
|
101
|
+
col = cols[i];
|
|
102
|
+
val = colNode.getAttribute('data-value');
|
|
103
|
+
if (col.type === 'number') {
|
|
104
|
+
val = Number(val);
|
|
105
|
+
}
|
|
106
|
+
data[col.key] = val;
|
|
107
|
+
}
|
|
108
|
+
return data;
|
|
109
|
+
}
|
|
110
|
+
// loads all row data
|
|
111
|
+
function loadData() {
|
|
112
|
+
var rows = getTableBody().querySelectorAll('tr'),
|
|
113
|
+
i;
|
|
114
|
+
|
|
115
|
+
for (i = 0; i < rows.length; i += 1) {
|
|
116
|
+
rows[i].data = loadRowData(rows[i]);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// sorts the table using the data for the ith column
|
|
120
|
+
function sortByIndex(index, desc) {
|
|
121
|
+
var key = cols[index].key,
|
|
122
|
+
sorter = function(a, b) {
|
|
123
|
+
a = a.data[key];
|
|
124
|
+
b = b.data[key];
|
|
125
|
+
return a < b ? -1 : a > b ? 1 : 0;
|
|
126
|
+
},
|
|
127
|
+
finalSorter = sorter,
|
|
128
|
+
tableBody = document.querySelector('.coverage-summary tbody'),
|
|
129
|
+
rowNodes = tableBody.querySelectorAll('tr'),
|
|
130
|
+
rows = [],
|
|
131
|
+
i;
|
|
132
|
+
|
|
133
|
+
if (desc) {
|
|
134
|
+
finalSorter = function(a, b) {
|
|
135
|
+
return -1 * sorter(a, b);
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
for (i = 0; i < rowNodes.length; i += 1) {
|
|
140
|
+
rows.push(rowNodes[i]);
|
|
141
|
+
tableBody.removeChild(rowNodes[i]);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
rows.sort(finalSorter);
|
|
145
|
+
|
|
146
|
+
for (i = 0; i < rows.length; i += 1) {
|
|
147
|
+
tableBody.appendChild(rows[i]);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// removes sort indicators for current column being sorted
|
|
151
|
+
function removeSortIndicators() {
|
|
152
|
+
var col = getNthColumn(currentSort.index),
|
|
153
|
+
cls = col.className;
|
|
154
|
+
|
|
155
|
+
cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, '');
|
|
156
|
+
col.className = cls;
|
|
157
|
+
}
|
|
158
|
+
// adds sort indicators for current column being sorted
|
|
159
|
+
function addSortIndicators() {
|
|
160
|
+
getNthColumn(currentSort.index).className += currentSort.desc
|
|
161
|
+
? ' sorted-desc'
|
|
162
|
+
: ' sorted';
|
|
163
|
+
}
|
|
164
|
+
// adds event listeners for all sorter widgets
|
|
165
|
+
function enableUI() {
|
|
166
|
+
var i,
|
|
167
|
+
el,
|
|
168
|
+
ithSorter = function ithSorter(i) {
|
|
169
|
+
var col = cols[i];
|
|
170
|
+
|
|
171
|
+
return function() {
|
|
172
|
+
var desc = col.defaultDescSort;
|
|
173
|
+
|
|
174
|
+
if (currentSort.index === i) {
|
|
175
|
+
desc = !currentSort.desc;
|
|
176
|
+
}
|
|
177
|
+
sortByIndex(i, desc);
|
|
178
|
+
removeSortIndicators();
|
|
179
|
+
currentSort.index = i;
|
|
180
|
+
currentSort.desc = desc;
|
|
181
|
+
addSortIndicators();
|
|
182
|
+
};
|
|
183
|
+
};
|
|
184
|
+
for (i = 0; i < cols.length; i += 1) {
|
|
185
|
+
if (cols[i].sortable) {
|
|
186
|
+
// add the click event handler on the th so users
|
|
187
|
+
// dont have to click on those tiny arrows
|
|
188
|
+
el = getNthColumn(i).querySelector('.sorter').parentElement;
|
|
189
|
+
if (el.addEventListener) {
|
|
190
|
+
el.addEventListener('click', ithSorter(i));
|
|
191
|
+
} else {
|
|
192
|
+
el.attachEvent('onclick', ithSorter(i));
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
// adds sorting functionality to the UI
|
|
198
|
+
return function() {
|
|
199
|
+
if (!getTable()) {
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
cols = loadColumns();
|
|
203
|
+
loadData();
|
|
204
|
+
addSearchBox();
|
|
205
|
+
addSortIndicators();
|
|
206
|
+
enableUI();
|
|
207
|
+
};
|
|
208
|
+
})();
|
|
209
|
+
|
|
210
|
+
window.addEventListener('load', addSorting);
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { FolioProject } from '../types.js';
|
|
2
|
+
declare function FeaturedProject({ project }: {
|
|
3
|
+
project: FolioProject | null | undefined;
|
|
4
|
+
}): import("react/jsx-runtime").JSX.Element | null;
|
|
5
|
+
export { FeaturedProject };
|
|
6
|
+
//# sourceMappingURL=FeaturedProject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeaturedProject.d.ts","sourceRoot":"","sources":["../../../src/cli-components/FeaturedProject/FeaturedProject.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,iBAAS,eAAe,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE,kDAiDjF;AAED,OAAO,EAAE,eAAe,EAAE,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
function FeaturedProject({ project }) {
|
|
3
|
+
if (!project) {
|
|
4
|
+
return null;
|
|
5
|
+
}
|
|
6
|
+
return (_jsxs("div", { "data-folio-featured": true, children: [project.image && _jsx("img", { "data-folio-featured-image": true, src: project.image, alt: project.name }), _jsxs("div", { "data-folio-view": true, children: [_jsx("h2", { children: project.name }), project.background && _jsx("div", { "data-folio-view-section": true, "data-folio-view-section-name": "background", children: project.background }), project.why && _jsx("div", { "data-folio-view-section": true, "data-folio-view-section-name": "why", children: project.why }), project.stats && (project.stats.stars || project.stats.forks || project.stats.downloads) && (_jsxs("div", { "data-folio-card-stats": true, children: [project.stats.stars && _jsxs("span", { "data-folio-stat": "stars", children: [project.stats.stars, " stars"] }), project.stats.forks && _jsxs("span", { "data-folio-stat": "forks", children: [project.stats.forks, " forks"] }), project.stats.downloads && _jsxs("span", { "data-folio-stat": "downloads", children: [project.stats.downloads, " downloads"] })] })), _jsxs("div", { "data-folio-view-links": true, children: [project.links.github && (_jsx("a", { href: project.links.github, "data-folio-link": true, "data-folio-link-type": "github", children: "GitHub" })), project.links.live && (_jsx("a", { href: project.links.live, "data-folio-link": true, "data-folio-link-type": "live", children: "Live" })), project.links.npm && (_jsx("a", { href: project.links.npm, "data-folio-link": true, "data-folio-link-type": "npm", children: "npm" })), project.links.appStore && (_jsx("a", { href: project.links.appStore, "data-folio-link": true, "data-folio-link-type": "app-store", children: "App Store" })), project.links.playStore && (_jsx("a", { href: project.links.playStore, "data-folio-link": true, "data-folio-link-type": "play-store", children: "Play Store" }))] })] })] }));
|
|
7
|
+
}
|
|
8
|
+
export { FeaturedProject };
|
|
9
|
+
//# sourceMappingURL=FeaturedProject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeaturedProject.js","sourceRoot":"","sources":["../../../src/cli-components/FeaturedProject/FeaturedProject.tsx"],"names":[],"mappings":";AAEA,SAAS,eAAe,CAAC,EAAE,OAAO,EAAgD;IAChF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,CACL,uDACG,OAAO,CAAC,KAAK,IAAI,iDAA+B,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,GAAI,EAC1F,mDACE,uBAAK,OAAO,CAAC,IAAI,GAAM,EACtB,OAAO,CAAC,UAAU,IAAI,+EAA0D,YAAY,YAAE,OAAO,CAAC,UAAU,GAAO,EACvH,OAAO,CAAC,GAAG,IAAI,+EAA0D,KAAK,YAAE,OAAO,CAAC,GAAG,GAAO,EAClG,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAC3F,yDACG,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,mCAAsB,OAAO,aAAE,OAAO,CAAC,KAAK,CAAC,KAAK,cAAc,EACvF,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,mCAAsB,OAAO,aAAE,OAAO,CAAC,KAAK,CAAC,KAAK,cAAc,EACvF,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,mCAAsB,WAAW,aAAE,OAAO,CAAC,KAAK,CAAC,SAAS,kBAAkB,IACpG,CACP,EACD,yDACG,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,CACvB,YAAG,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,mDAAuC,QAAQ,uBAExE,CACL,EACA,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CACrB,YAAG,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,mDAAuC,MAAM,qBAEpE,CACL,EACA,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CACpB,YAAG,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,mDAAuC,KAAK,oBAElE,CACL,EACA,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,CACzB,YAAG,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,mDAAuC,WAAW,0BAE7E,CACL,EACA,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,CAC1B,YAAG,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,mDAAuC,YAAY,2BAE/E,CACL,IACG,IACF,IACF,CACP,CAAA;AACH,CAAC;AAED,OAAO,EAAE,eAAe,EAAE,CAAA"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { FolioProject } from '../types.js'
|
|
2
|
+
|
|
3
|
+
function FeaturedProject({ project }: { project: FolioProject | null | undefined }) {
|
|
4
|
+
if (!project) {
|
|
5
|
+
return null
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
return (
|
|
9
|
+
<div data-folio-featured>
|
|
10
|
+
{project.image && <img data-folio-featured-image src={project.image} alt={project.name} />}
|
|
11
|
+
<div data-folio-view>
|
|
12
|
+
<h2>{project.name}</h2>
|
|
13
|
+
{project.background && <div data-folio-view-section data-folio-view-section-name="background">{project.background}</div>}
|
|
14
|
+
{project.why && <div data-folio-view-section data-folio-view-section-name="why">{project.why}</div>}
|
|
15
|
+
{project.stats && (project.stats.stars || project.stats.forks || project.stats.downloads) && (
|
|
16
|
+
<div data-folio-card-stats>
|
|
17
|
+
{project.stats.stars && <span data-folio-stat="stars">{project.stats.stars} stars</span>}
|
|
18
|
+
{project.stats.forks && <span data-folio-stat="forks">{project.stats.forks} forks</span>}
|
|
19
|
+
{project.stats.downloads && <span data-folio-stat="downloads">{project.stats.downloads} downloads</span>}
|
|
20
|
+
</div>
|
|
21
|
+
)}
|
|
22
|
+
<div data-folio-view-links>
|
|
23
|
+
{project.links.github && (
|
|
24
|
+
<a href={project.links.github} data-folio-link data-folio-link-type="github">
|
|
25
|
+
GitHub
|
|
26
|
+
</a>
|
|
27
|
+
)}
|
|
28
|
+
{project.links.live && (
|
|
29
|
+
<a href={project.links.live} data-folio-link data-folio-link-type="live">
|
|
30
|
+
Live
|
|
31
|
+
</a>
|
|
32
|
+
)}
|
|
33
|
+
{project.links.npm && (
|
|
34
|
+
<a href={project.links.npm} data-folio-link data-folio-link-type="npm">
|
|
35
|
+
npm
|
|
36
|
+
</a>
|
|
37
|
+
)}
|
|
38
|
+
{project.links.appStore && (
|
|
39
|
+
<a href={project.links.appStore} data-folio-link data-folio-link-type="app-store">
|
|
40
|
+
App Store
|
|
41
|
+
</a>
|
|
42
|
+
)}
|
|
43
|
+
{project.links.playStore && (
|
|
44
|
+
<a href={project.links.playStore} data-folio-link data-folio-link-type="play-store">
|
|
45
|
+
Play Store
|
|
46
|
+
</a>
|
|
47
|
+
)}
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export { FeaturedProject }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli-components/FeaturedProject/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli-components/FeaturedProject/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { FolioProject } from '../types.js';
|
|
2
|
+
declare function ProjectCard({ children }: {
|
|
3
|
+
children: React.ReactNode;
|
|
4
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
declare namespace ProjectCard {
|
|
6
|
+
var Header: ({ project }: {
|
|
7
|
+
project: FolioProject;
|
|
8
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
var Description: ({ project }: {
|
|
10
|
+
project: FolioProject;
|
|
11
|
+
}) => import("react/jsx-runtime").JSX.Element | null;
|
|
12
|
+
var Tags: ({ project }: {
|
|
13
|
+
project: FolioProject;
|
|
14
|
+
}) => import("react/jsx-runtime").JSX.Element | null;
|
|
15
|
+
var Stats: ({ project }: {
|
|
16
|
+
project: FolioProject;
|
|
17
|
+
}) => import("react/jsx-runtime").JSX.Element | null;
|
|
18
|
+
var Status: ({ project }: {
|
|
19
|
+
project: FolioProject;
|
|
20
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
var Links: ({ project }: {
|
|
22
|
+
project: FolioProject;
|
|
23
|
+
}) => import("react/jsx-runtime").JSX.Element | null;
|
|
24
|
+
}
|
|
25
|
+
export { ProjectCard };
|
|
26
|
+
//# sourceMappingURL=ProjectCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectCard.d.ts","sourceRoot":"","sources":["../../../src/cli-components/ProjectCard/ProjectCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,iBAAS,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAE/D;kBAFQ,WAAW;8BAIyC;QAAE,OAAO,EAAE,YAAY,CAAA;KAAE;mCAWf;QAAE,OAAO,EAAE,YAAY,CAAA;KAAE;4BAKvC;QAAE,OAAO,EAAE,YAAY,CAAA;KAAE;6BAavB;QAAE,OAAO,EAAE,YAAY,CAAA;KAAE;8BAkBvB;QAAE,OAAO,EAAE,YAAY,CAAA;KAAE;6BAQ3B;QAAE,OAAO,EAAE,YAAY,CAAA;KAAE;;AA4BpF,OAAO,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
function ProjectCard({ children }) {
|
|
3
|
+
return _jsx("div", { "data-folio-card": true, children: children });
|
|
4
|
+
}
|
|
5
|
+
ProjectCard.Header = function ProjectCardHeader({ project }) {
|
|
6
|
+
return (_jsxs("div", { "data-folio-card-header": true, children: [_jsx("h3", { children: project.name }), _jsx("div", { "data-folio-type": true, "data-folio-type-value": project.type, children: project.type })] }));
|
|
7
|
+
};
|
|
8
|
+
ProjectCard.Description = function ProjectCardDescription({ project }) {
|
|
9
|
+
if (!project.description)
|
|
10
|
+
return null;
|
|
11
|
+
return _jsx("div", { "data-folio-card-description": true, children: project.description });
|
|
12
|
+
};
|
|
13
|
+
ProjectCard.Tags = function ProjectCardTags({ project }) {
|
|
14
|
+
if (!project.stack || project.stack.length === 0)
|
|
15
|
+
return null;
|
|
16
|
+
return (_jsx("div", { "data-folio-card-tags": true, children: project.stack.map((tag) => (_jsx("span", { "data-folio-tag": true, children: tag }, tag))) }));
|
|
17
|
+
};
|
|
18
|
+
ProjectCard.Stats = function ProjectCardStats({ project }) {
|
|
19
|
+
if (!project.stats || (!project.stats.stars && !project.stats.forks && !project.stats.downloads && !project.stats.version && !project.stats.upvotes && !project.stats.comments)) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
return (_jsxs("div", { "data-folio-card-stats": true, children: [project.stats.stars && _jsxs("span", { "data-folio-stat": "stars", children: [project.stats.stars, " stars"] }), project.stats.forks && _jsxs("span", { "data-folio-stat": "forks", children: [project.stats.forks, " forks"] }), project.stats.downloads && (_jsxs("span", { "data-folio-stat": "downloads", children: [project.stats.downloads, " downloads"] })), project.stats.version && _jsx("span", { "data-folio-stat": "version", children: project.stats.version }), project.stats.upvotes && _jsxs("span", { "data-folio-stat": "upvotes", children: [project.stats.upvotes, " upvotes"] }), project.stats.comments && _jsxs("span", { "data-folio-stat": "comments", children: [project.stats.comments, " comments"] })] }));
|
|
23
|
+
};
|
|
24
|
+
ProjectCard.Status = function ProjectCardStatus({ project }) {
|
|
25
|
+
return (_jsx("div", { "data-folio-status": true, "data-folio-status-value": project.status, children: project.status }));
|
|
26
|
+
};
|
|
27
|
+
ProjectCard.Links = function ProjectCardLinks({ project }) {
|
|
28
|
+
if (!project.links.github && !project.links.live && !project.links.npm && !project.links.productHunt)
|
|
29
|
+
return null;
|
|
30
|
+
return (_jsxs("div", { "data-folio-card-links": true, children: [project.links.github && (_jsx("a", { href: project.links.github, "data-folio-link": true, "data-folio-link-type": "github", children: "GitHub" })), project.links.live && (_jsx("a", { href: project.links.live, "data-folio-link": true, "data-folio-link-type": "live", children: "Live" })), project.links.npm && (_jsx("a", { href: project.links.npm, "data-folio-link": true, "data-folio-link-type": "npm", children: "npm" })), project.links.productHunt && (_jsx("a", { href: project.links.productHunt, "data-folio-link": true, "data-folio-link-type": "product-hunt", children: "Product Hunt" }))] }));
|
|
31
|
+
};
|
|
32
|
+
export { ProjectCard };
|
|
33
|
+
//# sourceMappingURL=ProjectCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectCard.js","sourceRoot":"","sources":["../../../src/cli-components/ProjectCard/ProjectCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type { FolioProject } from '../types.js'
|
|
2
|
+
|
|
3
|
+
function ProjectCard({ children }: { children: React.ReactNode }) {
|
|
4
|
+
return <div data-folio-card>{children}</div>
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
ProjectCard.Header = function ProjectCardHeader({ project }: { project: FolioProject }) {
|
|
8
|
+
return (
|
|
9
|
+
<div data-folio-card-header>
|
|
10
|
+
<h3>{project.name}</h3>
|
|
11
|
+
<div data-folio-type data-folio-type-value={project.type}>
|
|
12
|
+
{project.type}
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
15
|
+
)
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
ProjectCard.Description = function ProjectCardDescription({ project }: { project: FolioProject }) {
|
|
19
|
+
if (!project.description) return null
|
|
20
|
+
return <div data-folio-card-description>{project.description}</div>
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
ProjectCard.Tags = function ProjectCardTags({ project }: { project: FolioProject }) {
|
|
24
|
+
if (!project.stack || project.stack.length === 0) return null
|
|
25
|
+
return (
|
|
26
|
+
<div data-folio-card-tags>
|
|
27
|
+
{project.stack.map((tag) => (
|
|
28
|
+
<span key={tag} data-folio-tag>
|
|
29
|
+
{tag}
|
|
30
|
+
</span>
|
|
31
|
+
))}
|
|
32
|
+
</div>
|
|
33
|
+
)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
ProjectCard.Stats = function ProjectCardStats({ project }: { project: FolioProject }) {
|
|
37
|
+
if (!project.stats || (!project.stats.stars && !project.stats.forks && !project.stats.downloads && !project.stats.version && !project.stats.upvotes && !project.stats.comments)) {
|
|
38
|
+
return null
|
|
39
|
+
}
|
|
40
|
+
return (
|
|
41
|
+
<div data-folio-card-stats>
|
|
42
|
+
{project.stats.stars && <span data-folio-stat="stars">{project.stats.stars} stars</span>}
|
|
43
|
+
{project.stats.forks && <span data-folio-stat="forks">{project.stats.forks} forks</span>}
|
|
44
|
+
{project.stats.downloads && (
|
|
45
|
+
<span data-folio-stat="downloads">{project.stats.downloads} downloads</span>
|
|
46
|
+
)}
|
|
47
|
+
{project.stats.version && <span data-folio-stat="version">{project.stats.version}</span>}
|
|
48
|
+
{project.stats.upvotes && <span data-folio-stat="upvotes">{project.stats.upvotes} upvotes</span>}
|
|
49
|
+
{project.stats.comments && <span data-folio-stat="comments">{project.stats.comments} comments</span>}
|
|
50
|
+
</div>
|
|
51
|
+
)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
ProjectCard.Status = function ProjectCardStatus({ project }: { project: FolioProject }) {
|
|
55
|
+
return (
|
|
56
|
+
<div data-folio-status data-folio-status-value={project.status}>
|
|
57
|
+
{project.status}
|
|
58
|
+
</div>
|
|
59
|
+
)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
ProjectCard.Links = function ProjectCardLinks({ project }: { project: FolioProject }) {
|
|
63
|
+
if (!project.links.github && !project.links.live && !project.links.npm && !project.links.productHunt) return null
|
|
64
|
+
return (
|
|
65
|
+
<div data-folio-card-links>
|
|
66
|
+
{project.links.github && (
|
|
67
|
+
<a href={project.links.github} data-folio-link data-folio-link-type="github">
|
|
68
|
+
GitHub
|
|
69
|
+
</a>
|
|
70
|
+
)}
|
|
71
|
+
{project.links.live && (
|
|
72
|
+
<a href={project.links.live} data-folio-link data-folio-link-type="live">
|
|
73
|
+
Live
|
|
74
|
+
</a>
|
|
75
|
+
)}
|
|
76
|
+
{project.links.npm && (
|
|
77
|
+
<a href={project.links.npm} data-folio-link data-folio-link-type="npm">
|
|
78
|
+
npm
|
|
79
|
+
</a>
|
|
80
|
+
)}
|
|
81
|
+
{project.links.productHunt && (
|
|
82
|
+
<a href={project.links.productHunt} data-folio-link data-folio-link-type="product-hunt">
|
|
83
|
+
Product Hunt
|
|
84
|
+
</a>
|
|
85
|
+
)}
|
|
86
|
+
</div>
|
|
87
|
+
)
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export { ProjectCard }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli-components/ProjectCard/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli-components/ProjectCard/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectGrid.d.ts","sourceRoot":"","sources":["../../../src/cli-components/ProjectGrid/ProjectGrid.tsx"],"names":[],"mappings":"AAAA,iBAAS,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,kDAG/D;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectGrid.js","sourceRoot":"","sources":["../../../src/cli-components/ProjectGrid/ProjectGrid.tsx"],"names":[],"mappings":";AAAA,SAAS,WAAW,CAAC,EAAE,QAAQ,EAAiC;IAC9D,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC1B,OAAO,iDAAsB,QAAQ,GAAO,CAAA;AAC9C,CAAC;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli-components/ProjectGrid/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli-components/ProjectGrid/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectList.d.ts","sourceRoot":"","sources":["../../../src/cli-components/ProjectList/ProjectList.tsx"],"names":[],"mappings":"AAAA,iBAAS,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,kDAG/D;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectList.js","sourceRoot":"","sources":["../../../src/cli-components/ProjectList/ProjectList.tsx"],"names":[],"mappings":";AAAA,SAAS,WAAW,CAAC,EAAE,QAAQ,EAAiC;IAC9D,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC1B,OAAO,iDAAsB,QAAQ,GAAO,CAAA;AAC9C,CAAC;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli-components/ProjectList/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli-components/ProjectList/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { FolioProject } from '../types.js';
|
|
2
|
+
declare function ProjectView({ project, onBack, children }: {
|
|
3
|
+
project: FolioProject;
|
|
4
|
+
onBack?: () => void;
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
declare namespace ProjectView {
|
|
8
|
+
var Section: ({ project, name }: {
|
|
9
|
+
project: FolioProject;
|
|
10
|
+
name: string;
|
|
11
|
+
}) => import("react/jsx-runtime").JSX.Element | null;
|
|
12
|
+
var Links: ({ project }: {
|
|
13
|
+
project: FolioProject;
|
|
14
|
+
}) => import("react/jsx-runtime").JSX.Element | null;
|
|
15
|
+
}
|
|
16
|
+
export { ProjectView };
|
|
17
|
+
//# sourceMappingURL=ProjectView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectView.d.ts","sourceRoot":"","sources":["../../../src/cli-components/ProjectView/ProjectView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,iBAAS,WAAW,CAAC,EACnB,OAAO,EACP,MAAM,EACN,QAAQ,EACT,EAAE;IACD,OAAO,EAAE,YAAY,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,2CAQA;kBAhBQ,WAAW;qCAqBjB;QACD,OAAO,EAAE,YAAY,CAAA;QACrB,IAAI,EAAE,MAAM,CAAA;KACb;6BAoD0D;QAAE,OAAO,EAAE,YAAY,CAAA;KAAE;;AAsCpF,OAAO,EAAE,WAAW,EAAE,CAAA"}
|