diff options
| author | Stanisław Zagórowski <hasohasacz@gmail.com> | 2024-01-12 18:44:38 +0100 |
|---|---|---|
| committer | Stanisław Zagórowski <hasohasacz@gmail.com> | 2024-01-12 18:44:38 +0100 |
| commit | 2294bc65825972106aff44f2ad8204c4f2af30f4 (patch) | |
| tree | 516a564f54912565695fd5abc5cad1d6313cbabc /luax/components/project.luax | |
| parent | 6c247f1e1d69f817f585995a6d6a8301470814b4 (diff) | |
luax: initial
Diffstat (limited to 'luax/components/project.luax')
| -rw-r--r-- | luax/components/project.luax | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/luax/components/project.luax b/luax/components/project.luax new file mode 100644 index 0000000..ddb8c69 --- /dev/null +++ b/luax/components/project.luax @@ -0,0 +1,60 @@ +local Carousel = require('components.carousel') + +function getProjectImageLink(project, image) + return 'assets/' .. project.type .. 's/' .. project.name_normalized .. '/' .. image +end + +function getProjectTechIconLink(tech) + return 'assets/images/' .. tech .. '.png' +end + +function getProjectTargetIconLink(target) + return 'assets/images/' .. target .. '.png' +end + +return function (props) + local project = props.attrs.project + local techs = {} + for _, tech in ipairs(project.tech) do + techs[#techs + 1] = <img class="grow icon" src={getProjectTechIconLink(tech)} /> + end + local targets = {} + for _, target in ipairs(project.targets) do + targets[#targets + 1] = <img class="grow icon" src={getProjectTargetIconLink(target)} /> + end + + local images = nil + if project.images then + images = {} + for _, image in ipairs(project.images) do + images[#images + 1] = <img class="carousel-item" src={getProjectImageLink(project, image)} /> + end + + images = <Carousel>{$ images $}</Carousel> + end + + return ( + <div class="project"> + <div class="project-title"><a href={project.link}>{$ project.name $}</a></div> + <div class="project-info"> + <div class="icon-row"> + <div class="icon-text">Made using</div> + <div class="icon-container"> + {$ techs $} + </div> + </div> + <div class="icon-row"> + <div class="icon-text">Available on</div> + <div class="icon-container"> + {$ targets $} + </div> + </div> + <hr /> + <div class="project-description"> + {$ project.description $} + </div> + </div> + {$ images $} + </div> + ) +end |
