ChristopherJKoen commited on
Commit
07e1705
·
verified ·
1 Parent(s): 96cba11

Call the software RepEx.

Browse files
Files changed (6) hide show
  1. README.md +8 -5
  2. components/footer.js +93 -0
  3. components/navbar.js +69 -0
  4. index.html +166 -19
  5. script.js +34 -0
  6. style.css +26 -18
README.md CHANGED
@@ -1,10 +1,13 @@
1
  ---
2
- title: Repex Report Express
3
- emoji: 😻
4
- colorFrom: blue
5
- colorTo: yellow
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
1
  ---
2
+ title: RepEx - Report Express 🚀
3
+ colorFrom: gray
4
+ colorTo: blue
5
+ emoji: 🐳
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite-v3
10
  ---
11
 
12
+ # Welcome to your new DeepSite project!
13
+ This project was created with [DeepSite](https://huggingface.co/deepsite).
components/footer.js ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomFooter extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ :host {
7
+ display: block;
8
+ width: 100%;
9
+ }
10
+ footer {
11
+ background-color: #f8fafc;
12
+ border-top: 1px solid #e2e8f0;
13
+ }
14
+ .footer-container {
15
+ max-width: 1200px;
16
+ margin: 0 auto;
17
+ padding: 2rem 1rem;
18
+ }
19
+ .footer-link:hover {
20
+ color: #3b82f6;
21
+ }
22
+ .social-icon {
23
+ transition: all 0.2s ease;
24
+ }
25
+ .social-icon:hover {
26
+ transform: translateY(-2px);
27
+ }
28
+ </style>
29
+ <footer class="py-8">
30
+ <div class="footer-container">
31
+ <div class="grid grid-cols-1 md:grid-cols-4 gap-8">
32
+ <div>
33
+ <h3 class="text-lg font-semibold text-gray-800 mb-4">RepEx</h3>
34
+ <p class="text-gray-600 mb-4">Express your reports with our AI-powered automation.</p>
35
+ <div class="flex space-x-4">
36
+ <a href="#" class="social-icon text-gray-600 hover:text-primary">
37
+ <i data-feather="twitter"></i>
38
+ </a>
39
+ <a href="#" class="social-icon text-gray-600 hover:text-primary">
40
+ <i data-feather="linkedin"></i>
41
+ </a>
42
+ <a href="#" class="social-icon text-gray-600 hover:text-primary">
43
+ <i data-feather="github"></i>
44
+ </a>
45
+ </div>
46
+ </div>
47
+
48
+ <div>
49
+ <h4 class="text-md font-medium text-gray-800 mb-4">Product</h4>
50
+ <ul class="space-y-2">
51
+ <li><a href="#" class="footer-link text-gray-600">Features</a></li>
52
+ <li><a href="#" class="footer-link text-gray-600">Pricing</a></li>
53
+ <li><a href="#" class="footer-link text-gray-600">Templates</a></li>
54
+ <li><a href="#" class="footer-link text-gray-600">Integrations</a></li>
55
+ </ul>
56
+ </div>
57
+
58
+ <div>
59
+ <h4 class="text-md font-medium text-gray-800 mb-4">Resources</h4>
60
+ <ul class="space-y-2">
61
+ <li><a href="#" class="footer-link text-gray-600">Documentation</a></li>
62
+ <li><a href="#" class="footer-link text-gray-600">API Reference</a></li>
63
+ <li><a href="#" class="footer-link text-gray-600">Community</a></li>
64
+ <li><a href="#" class="footer-link text-gray-600">Support</a></li>
65
+ </ul>
66
+ </div>
67
+
68
+ <div>
69
+ <h4 class="text-md font-medium text-gray-800 mb-4">Company</h4>
70
+ <ul class="space-y-2">
71
+ <li><a href="#" class="footer-link text-gray-600">About</a></li>
72
+ <li><a href="#" class="footer-link text-gray-600">Blog</a></li>
73
+ <li><a href="#" class="footer-link text-gray-600">Careers</a></li>
74
+ <li><a href="#" class="footer-link text-gray-600">Contact</a></li>
75
+ </ul>
76
+ </div>
77
+ </div>
78
+
79
+ <div class="border-t border-gray-200 mt-8 pt-8 flex flex-col md:flex-row justify-between items-center">
80
+ <p class="text-gray-600 mb-4 md:mb-0">© 2023 RepEx. All rights reserved.</p>
81
+ <div class="flex space-x-6">
82
+ <a href="#" class="footer-link text-gray-600">Privacy Policy</a>
83
+ <a href="#" class="footer-link text-gray-600">Terms of Service</a>
84
+ <a href="#" class="footer-link text-gray-600">Cookies</a>
85
+ </div>
86
+ </div>
87
+ </div>
88
+ </footer>
89
+ `;
90
+ }
91
+ }
92
+
93
+ customElements.define('custom-footer', CustomFooter);
components/navbar.js ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomNavbar extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ :host {
7
+ display: block;
8
+ width: 100%;
9
+ }
10
+ nav {
11
+ background-color: white;
12
+ box-shadow: 0 1px 3px rgba(0,0,0,0.1);
13
+ }
14
+ .nav-container {
15
+ max-width: 1200px;
16
+ margin: 0 auto;
17
+ padding: 0 1rem;
18
+ }
19
+ .nav-link:hover {
20
+ color: #3b82f6;
21
+ }
22
+ .mobile-menu {
23
+ transition: all 0.3s ease;
24
+ }
25
+ </style>
26
+ <nav class="py-4">
27
+ <div class="nav-container flex justify-between items-center">
28
+ <a href="/" class="flex items-center">
29
+ <i data-feather="clipboard" class="text-primary mr-2"></i>
30
+ <span class="text-xl font-bold text-gray-800">RepEx</span>
31
+ </a>
32
+
33
+ <div class="hidden md:flex items-center space-x-8">
34
+ <a href="/" class="nav-link text-gray-700 font-medium">Home</a>
35
+ <a href="#upload" class="nav-link text-gray-700 font-medium">Upload</a>
36
+ <a href="#" class="nav-link text-gray-700 font-medium">Reports</a>
37
+ <a href="#" class="nav-link text-gray-700 font-medium">Templates</a>
38
+ <a href="#" class="nav-link text-gray-700 font-medium">Account</a>
39
+ </div>
40
+
41
+ <div class="md:hidden">
42
+ <button id="mobile-menu-button" class="text-gray-700">
43
+ <i data-feather="menu"></i>
44
+ </button>
45
+ </div>
46
+ </div>
47
+
48
+ <!-- Mobile menu -->
49
+ <div id="mobile-menu" class="mobile-menu hidden md:hidden bg-white py-2 px-4 shadow-md">
50
+ <a href="/" class="block py-2 text-gray-700">Home</a>
51
+ <a href="#upload" class="block py-2 text-gray-700">Upload</a>
52
+ <a href="#" class="block py-2 text-gray-700">Reports</a>
53
+ <a href="#" class="block py-2 text-gray-700">Templates</a>
54
+ <a href="#" class="block py-2 text-gray-700">Account</a>
55
+ </div>
56
+ </nav>
57
+ `;
58
+
59
+ // Add mobile menu toggle functionality
60
+ const menuButton = this.shadowRoot.getElementById('mobile-menu-button');
61
+ const mobileMenu = this.shadowRoot.getElementById('mobile-menu');
62
+
63
+ menuButton.addEventListener('click', () => {
64
+ mobileMenu.classList.toggle('hidden');
65
+ });
66
+ }
67
+ }
68
+
69
+ customElements.define('custom-navbar', CustomNavbar);
index.html CHANGED
@@ -1,19 +1,166 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>RepEx - Report Express</title>
7
+ <link rel="stylesheet" href="style.css">
8
+ <script src="https://cdn.tailwindcss.com"></script>
9
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
10
+ <script src="https://unpkg.com/feather-icons"></script>
11
+ <script>
12
+ tailwind.config = {
13
+ theme: {
14
+ extend: {
15
+ colors: {
16
+ primary: '#3b82f6',
17
+ secondary: '#10b981'
18
+ }
19
+ }
20
+ }
21
+ }
22
+ </script>
23
+ </head>
24
+ <body class="bg-gray-50 min-h-screen">
25
+ <custom-navbar></custom-navbar>
26
+
27
+ <main class="container mx-auto px-4 py-8">
28
+ <div class="max-w-4xl mx-auto">
29
+ <!-- Hero Section -->
30
+ <section class="text-center mb-12">
31
+ <h1 class="text-4xl font-bold text-gray-800 mb-4">RepEx - Report Express</h1>
32
+ <p class="text-xl text-gray-600 mb-8">Upload photos and documents to generate professional job reports instantly</p>
33
+ <div class="flex justify-center gap-4">
34
+ <a href="#upload" class="bg-primary hover:bg-primary-600 text-white px-6 py-3 rounded-lg font-medium transition duration-200 flex items-center gap-2">
35
+ <i data-feather="upload"></i> Start Uploading
36
+ </a>
37
+ <a href="#" class="border border-primary text-primary hover:bg-primary-50 px-6 py-3 rounded-lg font-medium transition duration-200 flex items-center gap-2">
38
+ <i data-feather="info"></i> Learn More
39
+ </a>
40
+ </div>
41
+ </section>
42
+
43
+ <!-- Features Grid -->
44
+ <section class="mb-16">
45
+ <h2 class="text-2xl font-semibold text-gray-800 mb-8 text-center">How It Works</h2>
46
+ <div class="grid md:grid-cols-3 gap-8">
47
+ <div class="bg-white p-6 rounded-xl shadow-sm hover:shadow-md transition duration-200">
48
+ <div class="w-12 h-12 bg-primary-100 rounded-full flex items-center justify-center mb-4">
49
+ <i data-feather="camera" class="text-primary"></i>
50
+ </div>
51
+ <h3 class="text-lg font-medium text-gray-800 mb-2">Capture Site Photos</h3>
52
+ <p class="text-gray-600">Take photos of structural elements during your inspection.</p>
53
+ </div>
54
+ <div class="bg-white p-6 rounded-xl shadow-sm hover:shadow-md transition duration-200">
55
+ <div class="w-12 h-12 bg-secondary-100 rounded-full flex items-center justify-center mb-4">
56
+ <i data-feather="upload-cloud" class="text-secondary"></i>
57
+ </div>
58
+ <h3 class="text-lg font-medium text-gray-800 mb-2">Upload Documents</h3>
59
+ <p class="text-gray-600">Add inspection notes, measurements, and supporting documents.</p>
60
+ </div>
61
+ <div class="bg-white p-6 rounded-xl shadow-sm hover:shadow-md transition duration-200">
62
+ <div class="w-12 h-12 bg-primary-100 rounded-full flex items-center justify-center mb-4">
63
+ <i data-feather="file-text" class="text-primary"></i>
64
+ </div>
65
+ <h3 class="text-lg font-medium text-gray-800 mb-2">Generate Report</h3>
66
+ <p class="text-gray-600">Get a professionally formatted report ready for submission.</p>
67
+ </div>
68
+ </div>
69
+ </section>
70
+
71
+ <!-- Upload Section -->
72
+ <section id="upload" class="mb-16">
73
+ <div class="bg-white rounded-xl shadow-sm p-8">
74
+ <h2 class="text-2xl font-semibold text-gray-800 mb-6">Upload Your Files</h2>
75
+
76
+ <div class="border-2 border-dashed border-gray-300 rounded-xl p-8 text-center mb-6 hover:border-primary transition duration-200">
77
+ <div class="w-16 h-16 bg-primary-100 rounded-full flex items-center justify-center mx-auto mb-4">
78
+ <i data-feather="upload" class="text-primary"></i>
79
+ </div>
80
+ <h3 class="text-lg font-medium text-gray-800 mb-2">Drag & Drop Files Here</h3>
81
+ <p class="text-gray-600 mb-4">or</p>
82
+ <button class="bg-primary hover:bg-primary-600 text-white px-6 py-2 rounded-lg font-medium transition duration-200">
83
+ Browse Files
84
+ </button>
85
+ <p class="text-sm text-gray-500 mt-4">Supports JPG, PNG, PDF, DOCX (Max 50MB each)</p>
86
+ </div>
87
+
88
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-4 mb-6">
89
+ <div>
90
+ <label class="block text-gray-700 font-medium mb-2">Project Name</label>
91
+ <input type="text" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-primary focus:border-primary">
92
+ </div>
93
+ <div>
94
+ <label class="block text-gray-700 font-medium mb-2">Inspection Date</label>
95
+ <input type="date" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-primary focus:border-primary">
96
+ </div>
97
+ </div>
98
+
99
+ <div class="mb-6">
100
+ <label class="block text-gray-700 font-medium mb-2">Additional Notes</label>
101
+ <textarea rows="4" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-primary focus:border-primary"></textarea>
102
+ </div>
103
+
104
+ <button class="w-full bg-secondary hover:bg-secondary-600 text-white px-6 py-3 rounded-lg font-medium transition duration-200 flex items-center justify-center gap-2">
105
+ <i data-feather="file-plus"></i> Generate Report
106
+ </button>
107
+ </div>
108
+ </section>
109
+
110
+ <!-- Recent Reports -->
111
+ <section class="mb-12">
112
+ <h2 class="text-2xl font-semibold text-gray-800 mb-6">Recent Reports</h2>
113
+ <div class="bg-white rounded-xl shadow-sm overflow-hidden">
114
+ <div class="overflow-x-auto">
115
+ <table class="min-w-full divide-y divide-gray-200">
116
+ <thead class="bg-gray-50">
117
+ <tr>
118
+ <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Report ID</th>
119
+ <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Project</th>
120
+ <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Date</th>
121
+ <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Status</th>
122
+ <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Actions</th>
123
+ </tr>
124
+ </thead>
125
+ <tbody class="bg-white divide-y divide-gray-200">
126
+ <tr>
127
+ <td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">#RPT-2023-001</td>
128
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">Bridge Inspection - Main Span</td>
129
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">2023-10-15</td>
130
+ <td class="px-6 py-4 whitespace-nowrap">
131
+ <span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800">Completed</span>
132
+ </td>
133
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
134
+ <a href="#" class="text-primary hover:text-primary-600 mr-3"><i data-feather="download"></i></a>
135
+ <a href="#" class="text-primary hover:text-primary-600"><i data-feather="edit"></i></a>
136
+ </td>
137
+ </tr>
138
+ <tr>
139
+ <td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">#RPT-2023-002</td>
140
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">Building Facade Assessment</td>
141
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">2023-10-18</td>
142
+ <td class="px-6 py-4 whitespace-nowrap">
143
+ <span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-yellow-100 text-yellow-800">Processing</span>
144
+ </td>
145
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
146
+ <a href="#" class="text-gray-400 mr-3"><i data-feather="download"></i></a>
147
+ <a href="#" class="text-primary hover:text-primary-600"><i data-feather="edit"></i></a>
148
+ </td>
149
+ </tr>
150
+ </tbody>
151
+ </table>
152
+ </div>
153
+ </div>
154
+ </section>
155
+ </div>
156
+ </main>
157
+
158
+ <custom-footer></custom-footer>
159
+
160
+ <script src="components/navbar.js"></script>
161
+ <script src="components/footer.js"></script>
162
+ <script src="script.js"></script>
163
+ <script>feather.replace();</script>
164
+ <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
165
+ </body>
166
+ </html>
script.js ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Main application script
2
+ document.addEventListener('DOMContentLoaded', function() {
3
+ // Initialize file upload functionality
4
+ const dropzone = document.querySelector('.border-dashed');
5
+
6
+ if (dropzone) {
7
+ dropzone.addEventListener('dragover', (e) => {
8
+ e.preventDefault();
9
+ dropzone.classList.add('dropzone-active');
10
+ });
11
+
12
+ dropzone.addEventListener('dragleave', () => {
13
+ dropzone.classList.remove('dropzone-active');
14
+ });
15
+
16
+ dropzone.addEventListener('drop', (e) => {
17
+ e.preventDefault();
18
+ dropzone.classList.remove('dropzone-active');
19
+ handleFiles(e.dataTransfer.files);
20
+ });
21
+ }
22
+
23
+ function handleFiles(files) {
24
+ console.log('Files to upload:', files);
25
+ // Here you would typically handle the file upload process
26
+ // Could be an AJAX call to your backend or processing in the browser
27
+ }
28
+
29
+ // Initialize tooltips for icons
30
+ const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
31
+ tooltipTriggerList.map(function (tooltipTriggerEl) {
32
+ return new bootstrap.Tooltip(tooltipTriggerEl);
33
+ });
34
+ });
style.css CHANGED
@@ -1,28 +1,36 @@
 
 
 
1
  body {
2
- padding: 2rem;
3
- font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
 
 
 
 
 
4
  }
5
 
6
- h1 {
7
- font-size: 16px;
8
- margin-top: 0;
9
  }
10
 
11
- p {
12
- color: rgb(107, 114, 128);
13
- font-size: 15px;
14
- margin-bottom: 10px;
15
- margin-top: 5px;
16
  }
17
 
18
- .card {
19
- max-width: 620px;
20
- margin: 0 auto;
21
- padding: 16px;
22
- border: 1px solid lightgray;
23
- border-radius: 16px;
24
  }
25
 
26
- .card p:last-child {
27
- margin-bottom: 0;
 
28
  }
 
 
 
 
 
1
+ /* Custom styles that can't be easily done with Tailwind */
2
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
3
+
4
  body {
5
+ font-family: 'Inter', sans-serif;
6
+ }
7
+
8
+ /* Custom file upload dropzone */
9
+ .dropzone-active {
10
+ border-color: #3b82f6;
11
+ background-color: #f0f7ff;
12
  }
13
 
14
+ /* Smooth transitions for interactive elements */
15
+ button, a {
16
+ transition: all 0.2s ease;
17
  }
18
 
19
+ /* Custom scrollbar */
20
+ ::-webkit-scrollbar {
21
+ width: 8px;
22
+ height: 8px;
 
23
  }
24
 
25
+ ::-webkit-scrollbar-track {
26
+ background: #f1f1f1;
 
 
 
 
27
  }
28
 
29
+ ::-webkit-scrollbar-thumb {
30
+ background: #c1c1c1;
31
+ border-radius: 4px;
32
  }
33
+
34
+ ::-webkit-scrollbar-thumb:hover {
35
+ background: #a8a8a8;
36
+ }