main
html 103 lines 3.92 KB
Raw
1 <html>
2
3 <head>
4 <title>Create a new project</title>
5 <script type="module">
6 import { store } from "/components/projects/projects-store.js";
7 </script>
8 </head>
9
10 <body>
11 <div x-data>
12 <template x-if="$store.projects && $store.projects.selectedProject">
13 <div>
14 <div class="project-detail">
15
16 <x-component path="projects/project-edit-basic-data.html">
17 </x-component>
18
19 <div class="projects-form-group">
20 <label class="projects-form-label">Git Repository (optional)</label>
21 <span class="projects-form-description">Clone from an existing git repository. Leave empty to create an empty project.</span>
22 <input class="projects-form-input" type="text"
23 x-model="$store.projects.selectedProject.git_url"
24 :disabled="$store.projects.selectedProject._cloning"
25 placeholder="https://github.com/user/repo.git">
26 </div>
27
28 <template x-if="$store.projects.selectedProject.git_url && $store.projects.selectedProject.git_url.trim()">
29 <div class="projects-form-group">
30 <label class="projects-form-label">Access Token (optional)</label>
31 <span class="projects-form-description">For private repositories. Token is used only for cloning and will not be stored.</span>
32 <input class="projects-form-input masked-text-input" type="text" autocomplete="off"
33 x-model="$store.projects.selectedProject.git_token"
34 :disabled="$store.projects.selectedProject._cloning"
35 placeholder="ghp_xxxx or glpat-xxxx">
36 </div>
37 </template>
38
39 <div class="buttons-right">
40 <button type="button" class="button confirm"
41 @click="$store.projects.confirmCreate()"
42 :disabled="$store.projects.selectedProject._cloning">
43 <template x-if="$store.projects.selectedProject._cloning">
44 <span class="button-loading">
45 <span class="spinner"></span>
46 <span>Cloning...</span>
47 </span>
48 </template>
49 <template x-if="!$store.projects.selectedProject._cloning">
50 <span x-text="$store.projects.selectedProject.git_url ? 'Clone and continue' : 'Create and continue'"></span>
51 </template>
52 </button>
53 <button type="button" class="button cancel"
54 @click="$store.projects.cancelCreate()"
55 :disabled="$store.projects.selectedProject._cloning">Cancel</button>
56 </div>
57 </div>
58
59
60 </div>
61 </template>
62 </div>
63 </body>
64 <style>
65 .project-detail {
66 border: 1px solid var(--color-border);
67 border-radius: 0.5em;
68 padding: 1em;
69 margin: 1em;
70 background: var(--color-panel);
71 }
72
73 .project-detail-header {
74 margin-bottom: 1em;
75 }
76
77 .button-loading {
78 display: inline-flex;
79 align-items: center;
80 gap: 0.5em;
81 }
82
83 .spinner {
84 width: 14px;
85 height: 14px;
86 border: 2px solid rgba(255, 255, 255, 0.3);
87 border-top: 2px solid white;
88 border-radius: 50%;
89 animation: spin 1s linear infinite;
90 }
91
92 @keyframes spin {
93 0% { transform: rotate(0deg); }
94 100% { transform: rotate(360deg); }
95 }
96
97 .button:disabled {
98 opacity: 0.6;
99 cursor: not-allowed;
100 }
101 </style>
102
103 </html>