this repo has no description
1{{ define "title" }}{{ or .Card.UserHandle .Card.UserDid }}{{ end }}
2
3{{ define "extrameta" }}
4 <meta property="og:title" content="{{ or .Card.UserHandle .Card.UserDid }}" />
5 <meta property="og:type" content="profile" />
6 <meta property="og:url" content="https://tangled.sh/{{ or .Card.UserHandle .Card.UserDid }}?tab={{ .Active }}" />
7 <meta property="og:description" content="{{ or .Card.Profile.Description .Card.UserHandle .Card.UserDid }}" />
8{{ end }}
9
10{{ define "content" }}
11 {{ template "profileTabs" . }}
12 <section class="bg-white dark:bg-gray-800 p-6 rounded w-full dark:text-white drop-shadow-sm">
13 <div class="grid grid-cols-1 md:grid-cols-11 gap-4">
14 <div class="md:col-span-3 order-1 md:order-1">
15 <div class="flex flex-col gap-4">
16 {{ template "user/fragments/profileCard" .Card }}
17 {{ block "punchcard" .Card.Punchcard }} {{ end }}
18 </div>
19 </div>
20 {{ block "profileContent" . }} {{ end }}
21 </div>
22 </section>
23{{ end }}
24
25{{ define "profileTabs" }}
26<nav class="w-full pl-4 overflow-x-auto overflow-y-hidden">
27 <div class="flex z-60">
28 {{ $activeTabStyles := "-mb-px bg-white dark:bg-gray-800" }}
29 {{ $tabs := .Card.GetTabs }}
30 {{ $tabmeta := dict "x" "y" }}
31 {{ range $item := $tabs }}
32 {{ $key := index $item 0 }}
33 {{ $value := index $item 1 }}
34 {{ $icon := index $item 2 }}
35 {{ $meta := index $item 3 }}
36 <a
37 href="?tab={{ $value }}"
38 class="relative -mr-px group no-underline hover:no-underline"
39 hx-boost="true">
40 <div
41 class="px-4 py-1 mr-1 text-black dark:text-white min-w-[80px] text-center relative rounded-t whitespace-nowrap
42 {{ if eq $.Active $key }}
43 {{ $activeTabStyles }}
44 {{ else }}
45 group-hover:bg-gray-100/25 group-hover:dark:bg-gray-700/25
46 {{ end }}
47 ">
48 <span class="flex items-center justify-center">
49 {{ i $icon "w-4 h-4 mr-2" }}
50 {{ $key }}
51 {{ if $meta }}
52 <span class="bg-gray-200 dark:bg-gray-700 rounded py-1/2 px-1 text-sm ml-1">{{ $meta }}</span>
53 {{ end }}
54 </span>
55 </div>
56 </a>
57 {{ end }}
58 </div>
59</nav>
60{{ end }}
61
62{{ define "punchcard" }}
63 {{ $now := now }}
64 <div>
65 <p class="px-2 pb-4 flex gap-2 text-sm font-bold dark:text-white">
66 PUNCHCARD
67 <span class="font-mono font-normal text-sm text-gray-500 dark:text-gray-400 ">
68 {{ .Total | int64 | commaFmt }} commits
69 </span>
70 </p>
71 <div class="grid grid-cols-28 md:grid-cols-14 gap-y-3 w-full h-full">
72 {{ range .Punches }}
73 {{ $count := .Count }}
74 {{ $theme := "bg-gray-200 dark:bg-gray-700 size-[4px]" }}
75 {{ if lt $count 1 }}
76 {{ $theme = "bg-gray-200 dark:bg-gray-700 size-[4px]" }}
77 {{ else if lt $count 2 }}
78 {{ $theme = "bg-green-200 dark:bg-green-900 size-[5px]" }}
79 {{ else if lt $count 4 }}
80 {{ $theme = "bg-green-300 dark:bg-green-800 size-[5px]" }}
81 {{ else if lt $count 8 }}
82 {{ $theme = "bg-green-400 dark:bg-green-700 size-[6px]" }}
83 {{ else }}
84 {{ $theme = "bg-green-500 dark:bg-green-600 size-[7px]" }}
85 {{ end }}
86
87 {{ if .Date.After $now }}
88 {{ $theme = "border border-gray-200 dark:border-gray-700 size-[4px]" }}
89 {{ end }}
90 <div class="w-full h-full flex justify-center items-center">
91 <div
92 class="aspect-square rounded-full transition-all duration-300 {{ $theme }} max-w-full max-h-full"
93 title="{{ .Date.Format "2006-01-02" }}: {{ .Count }} commits">
94 </div>
95 </div>
96 {{ end }}
97 </div>
98 </div>
99{{ end }}
100
101{{ define "layouts/profilebase" }}
102 {{ template "layouts/base" . }}
103{{ end }}
104