this repo has no description
1{{ define "title" }}new repo{{ end }}
2
3{{ define "content" }}
4<div class="px-6 py-2 mb-4">
5 <h1 class="text-xl font-bold dark:text-white mb-1">Create a new repository</h1>
6 <p class="text-gray-600 dark:text-gray-400 mb-1">
7 Repositories contain a project's files and version history.
8 </p>
9</div>
10
11<div class="bg-white dark:bg-gray-800 drop-shadow-sm rounded">
12 <form hx-post="/repo/new" hx-swap="none" hx-indicator="#spinner">
13
14 <div class="p-6">
15 <!-- Step 1: General -->
16 <div class="flex gap-4">
17 <div class="flex flex-col items-center w-10 flex-shrink-0">
18 <div class="w-6 h-6 bg-gray-900 dark:bg-gray-100 text-white dark:text-gray-900 rounded-full flex items-center justify-center text-sm font-medium mt-1">
19 1
20 </div>
21 <div class="w-px bg-gray-300 dark:bg-gray-600 h-80 mt-1"></div>
22 </div>
23 <div class="flex-1">
24 <div class="mb-6">
25 <div class="text-lg font-semibold dark:text-white mb-1">General</div>
26 <div class="text-sm text-gray-500 dark:text-gray-400">Basic repository information.</div>
27 </div>
28
29 <div class="space-y-2">
30 <!-- Repository Name with Owner -->
31 <div>
32 <label class="block text-sm font-bold uppercase dark:text-white mb-1">
33 Repository name
34 </label>
35 <div class="flex flex-col md:flex-row md:items-center gap-2 md:gap-0">
36 {{ if .LoggedInUser.Handle }}
37 <div class="flex items-center px-2 py-2 gap-1 text-sm text-gray-700 dark:text-gray-300 md:border md:border-r-0 md:border-gray-300 md:dark:border-gray-600 md:rounded-l md:bg-gray-50 md:dark:bg-gray-700">
38 {{ template "user/fragments/picHandle" .LoggedInUser.Handle }}
39 <span class="md:hidden pr-2 py-2 text-gray-500 dark:text-gray-400">/</span>
40 </div>
41 <span class="hidden md:inline pr-2 py-2 text-gray-500 dark:text-gray-400 border-t border-b border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-700">/</span>
42 {{ end }}
43 <input
44 type="text"
45 id="name"
46 name="name"
47 required
48 class="w-full max-w-md dark:bg-gray-700 dark:text-white dark:border-gray-600 border border-gray-300 rounded md:rounded-r md:rounded-l-none px-3 py-2"
49 placeholder="repository-name"
50 />
51 </div>
52 <p class="text-sm text-gray-500 dark:text-gray-400 mt-1">
53 Choose a unique, descriptive name for your repository. Use letters, numbers, and hyphens.
54 </p>
55 </div>
56
57 <!-- Description -->
58 <div>
59 <label for="description" class="block text-sm font-bold uppercase dark:text-white mb-1">
60 Description
61 </label>
62 <input
63 type="text"
64 id="description"
65 name="description"
66 class="w-full max-w-md dark:bg-gray-700 dark:text-white dark:border-gray-600 border border-gray-300 rounded px-3 py-2"
67 placeholder="A brief description of your project..."
68 />
69 <p class="text-sm text-gray-500 dark:text-gray-400 mt-1">
70 Optional. A short description to help others understand what your project does.
71 </p>
72 </div>
73 </div>
74 </div>
75 </div>
76
77 <!-- Step 2: Configuration -->
78 <div class="flex gap-4">
79 <div class="flex flex-col items-center w-10 flex-shrink-0">
80 <div class="w-6 h-6 bg-gray-900 dark:bg-gray-100 text-white dark:text-gray-900 rounded-full flex items-center justify-center text-sm font-medium mt-1">
81 2
82 </div>
83 </div>
84 <div class="flex-1">
85 <div class="mb-6">
86 <div class="text-lg font-semibold dark:text-white mb-1">Configuration</div>
87 <div class="text-sm text-gray-500 dark:text-gray-400">Repository settings and hosting.</div>
88 </div>
89
90 <div class="space-y-2">
91 <!-- Default Branch -->
92 <div>
93 <label for="branch" class="block text-sm font-bold uppercase dark:text-white mb-1">
94 Default branch
95 </label>
96 <input
97 type="text"
98 id="branch"
99 name="branch"
100 value="main"
101 required
102 class="w-full max-w-md dark:bg-gray-700 dark:text-white dark:border-gray-600 border border-gray-300 rounded px-3 py-2"
103 />
104 <p class="text-sm text-gray-500 dark:text-gray-400 mt-1">
105 The primary branch where development happens. Common choices are "main" or "master".
106 </p>
107 </div>
108
109 <!-- Knot Selection -->
110 <div>
111 <label class="block text-sm font-bold uppercase dark:text-white mb-1">
112 Select a knot
113 </label>
114 <div class="w-full max-w-md dark:bg-gray-700 dark:text-white dark:border-gray-600 border border-gray-300 rounded p-3 space-y-2">
115 {{ range .Knots }}
116 <div class="flex items-center">
117 <input
118 type="radio"
119 name="domain"
120 value="{{ . }}"
121 class="mr-2"
122 id="domain-{{ . }}"
123 required
124 />
125 <label for="domain-{{ . }}" class="dark:text-white lowercase">{{ . }}</label>
126 </div>
127 {{ else }}
128 <p class="dark:text-white">no knots available.</p>
129 {{ end }}
130 </div>
131 <p class="text-sm text-gray-500 dark:text-gray-400 mt-1">
132 A knot hosts repository data and handles Git operations.
133 You can also <a href="/knots" class="underline">register your own knot</a>.
134 </p>
135 </div>
136 </div>
137 </div>
138 </div>
139 </div>
140
141 <!-- Create Repository Button -->
142 <div class="p-6 border-t border-gray-200 dark:border-gray-700">
143 <div class="flex items-center justify-between">
144 <div class="text-sm text-gray-500 dark:text-gray-400">
145 All repositories are publicly accessible.
146 </div>
147 <button type="submit" class="btn-create flex items-center gap-2">
148 {{ i "book-plus" "w-4 h-4" }}
149 create repo
150 <span id="spinner" class="group">
151 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }}
152 </span>
153 </button>
154 </div>
155 <div id="repo" class="error mt-2"></div>
156 </div>
157
158 </form>
159</div>
160{{ end }}