Changes to modernlogin.scroll.pub

root
root
14 days ago
Initial commit
body.html
Changed around line 1
+
+
+
+
+
+
+
+
+

Welcome Back

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Login
+
+
+
+
+
index.scroll
Changed around line 1
+ buildHtml
+ baseUrl https://modernlogin.scroll.pub
+ metaTags
+ editButton /edit.html
+ title Modern Login Experience
+ style.css
+ body.html
+ script.js
prompt.json
Changed around line 1
+ {
+ "id": "msg_01Vytib1jjeTUbz5NfwtAmgV",
+ "type": "message",
+ "role": "assistant",
+ "model": "claude-3-5-sonnet-20241022",
+ "content": [
+ {
+ "type": "text",
+ "text": "I'll create a modern login system with effects and icons. For the domain, I suggest:\n\n---domain---\nmodernlogin.scroll.pub\n\n---index.scroll---\nbuildHtml\nbaseUrl https://modernlogin.scroll.pub\nmetaTags\neditButton /edit.html\ntitle Modern Login Experience\nstyle.css\nbody.html\nscript.js\n\n---body.html---\n
\n
\n
\n
\n \n \n \n
\n

Welcome Back

\n
\n
\n
\n \n \n
\n \n \n \n
\n
\n
\n \n \n
\n \n \n \n
\n
\n \n
\n
\n
\n\n---style.css---\n:root {\n --primary: #6c63ff;\n --secondary: #f5f5f5;\n --text: #333;\n --transition: 0.3s ease;\n}\n\n* {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n}\n\nbody {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n min-height: 100vh;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.container {\n width: 100%;\n padding: 20px;\n}\n\n.login-box {\n background: rgba(255, 255, 255, 0.9);\n backdrop-filter: blur(10px);\n border-radius: 20px;\n padding: 40px;\n max-width: 400px;\n margin: 0 auto;\n box-shadow: 0 15px 35px rgba(0, 0, 0, 0.2);\n transform: translateY(0);\n transition: transform var(--transition);\n}\n\n.login-box:hover {\n transform: translateY(-5px);\n}\n\n.login-header {\n text-align: center;\n margin-bottom: 40px;\n}\n\n.icon-container {\n background: var(--primary);\n width: 80px;\n height: 80px;\n border-radius: 50%;\n margin: 0 auto 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.icon {\n width: 40px;\n height: 40px;\n fill: white;\n}\n\nh1 {\n color: var(--text);\n font-size: 24px;\n font-weight: 600;\n}\n\n.input-group {\n position: relative;\n margin-bottom: 30px;\n}\n\ninput {\n width: 100%;\n padding: 15px;\n padding-right: 45px;\n border: 2px solid #ddd;\n border-radius: 10px;\n font-size: 16px;\n transition: var(--transition);\n}\n\ninput:focus {\n border-color: var(--primary);\n outline: none;\n}\n\nlabel {\n position: absolute;\n left: 15px;\n top: 50%;\n transform: translateY(-50%);\n color: #999;\n pointer-events: none;\n transition: var(--transition);\n}\n\ninput:focus ~ label,\ninput:valid ~ label {\n top: -10px;\n left: 10px;\n font-size: 14px;\n background: white;\n padding: 0 5px;\n color: var(--primary);\n}\n\n.input-icon {\n position: absolute;\n right: 15px;\n top: 50%;\n transform: translateY(-50%);\n width: 20px;\n height: 20px;\n}\n\n.input-icon svg {\n fill: #999;\n transition: var(--transition);\n}\n\ninput:focus ~ .input-icon svg {\n fill: var(--primary);\n}\n\n.login-btn {\n width: 100%;\n padding: 15px;\n background: var(--primary);\n color: white;\n border: none;\n border-radius: 10px;\n font-size: 16px;\n font-weight: 600;\n cursor: pointer;\n position: relative;\n overflow: hidden;\n transition: var(--transition);\n}\n\n.login-btn:hover {\n background: #5651e5;\n}\n\n.ripple {\n position: absolute;\n background: rgba(255, 255, 255, 0.3);\n border-radius: 50%;\n transform: scale(0);\n animation: ripple 0.6s linear;\n pointer-events: none;\n}\n\n@keyframes ripple {\n to {\n transform: scale(4);\n opacity: 0;\n }\n}\n\n@media (max-width: 480px) {\n .login-box {\n padding: 20px;\n }\n \n .icon-container {\n width: 60px;\n height: 60px;\n }\n \n .icon {\n width: 30px;\n height: 30px;\n }\n \n h1 {\n font-size: 20px;\n }\n}\n\n---script.js---\ndocument.addEventListener('DOMContentLoaded', () => {\n const loginForm = document.getElementById('loginForm');\n const loginBtn = document.querySelector('.login-btn');\n\n // Ripple effect\n loginBtn.addEventListener('click', function(e) {\n const ripple = document.createElement('div');\n ripple.classList.add('ripple');\n \n const rect = this.getBoundingClientRect();\n const size = Math.max(rect.width, rect.height);\n \n ripple.style.width = ripple.style.height = `${size}px`;\n ripple.style.left = `${e.clientX - rect.left - size/2}px`;\n ripple.style.top = `${e.clientY - rect.top - size/2}px`;\n \n this.appendChild(ripple);\n \n setTimeout(() => ripple.remove(), 600);\n });\n\n // Form submission\n loginForm.addEventListener('submit', (e) => {\n e.preventDefault();\n \n const email = document.getElementById('email').value;\n const password = document.getElementById('password').value;\n \n // Add your login logic here\n console.log('Login attempt:', { email, password });\n \n // Animate button\n loginBtn.classList.add('loading');\n \n // Simulate API call\n setTimeout(() => {\n loginBtn.classList.remove('loading');\n // Add success/error handling here\n }, 1500);\n });\n\n // Float label animation\n const inputs = document.querySelectorAll('input');\n inputs.forEach(input => {\n input.addEventListener('focus', () => {\n input.parentElement.classList.add('focused');\n });\n \n input.addEventListener('blur', () => {\n if (!input.value) {\n input.parentElement.classList.remove('focused');\n }\n });\n });\n});\n\n---end---\n\nThis creates a beautiful, modern login system with:\n- Smooth animations and transitions\n- Floating labels\n- Ripple effect on button click\n- SVG icons\n- Glassmorphism design\n- Responsive layout\n- Input validation\n- Hover effects\n- Modern gradient background\n- Clean, accessible markup\n- Form handling\n\nThe design is mobile-responsive and follows accessibility best practices. The CSS uses modern features like CSS variables, flexbox, and transforms. The JavaScript includes smooth animations and form handling."
+ }
+ ],
+ "stop_reason": "end_turn",
+ "stop_sequence": null,
+ "usage": {
+ "input_tokens": 286,
+ "cache_creation_input_tokens": 0,
+ "cache_read_input_tokens": 0,
+ "output_tokens": 2675
+ }
+ }
readme.scroll
Changed around line 1
+ # modernlogin.scroll.pub
+
+ website generated by Claude from prompt: um sistema de login super moderno, com efeitos, e icones
script.js
Changed around line 1
+ document.addEventListener('DOMContentLoaded', () => {
+ const loginForm = document.getElementById('loginForm');
+ const loginBtn = document.querySelector('.login-btn');
+
+ // Ripple effect
+ loginBtn.addEventListener('click', function(e) {
+ const ripple = document.createElement('div');
+ ripple.classList.add('ripple');
+
+ const rect = this.getBoundingClientRect();
+ const size = Math.max(rect.width, rect.height);
+
+ ripple.style.width = ripple.style.height = `${size}px`;
+ ripple.style.left = `${e.clientX - rect.left - size/2}px`;
+ ripple.style.top = `${e.clientY - rect.top - size/2}px`;
+
+ this.appendChild(ripple);
+
+ setTimeout(() => ripple.remove(), 600);
+ });
+
+ // Form submission
+ loginForm.addEventListener('submit', (e) => {
+ e.preventDefault();
+
+ const email = document.getElementById('email').value;
+ const password = document.getElementById('password').value;
+
+ // Add your login logic here
+ console.log('Login attempt:', { email, password });
+
+ // Animate button
+ loginBtn.classList.add('loading');
+
+ // Simulate API call
+ setTimeout(() => {
+ loginBtn.classList.remove('loading');
+ // Add success/error handling here
+ }, 1500);
+ });
+
+ // Float label animation
+ const inputs = document.querySelectorAll('input');
+ inputs.forEach(input => {
+ input.addEventListener('focus', () => {
+ input.parentElement.classList.add('focused');
+ });
+
+ input.addEventListener('blur', () => {
+ if (!input.value) {
+ input.parentElement.classList.remove('focused');
+ }
+ });
+ });
+ });
style.css
Changed around line 1
+ :root {
+ --primary: #6c63ff;
+ --secondary: #f5f5f5;
+ --text: #333;
+ --transition: 0.3s ease;
+ }
+
+ * {
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+ }
+
+ body {
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ min-height: 100vh;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .container {
+ width: 100%;
+ padding: 20px;
+ }
+
+ .login-box {
+ background: rgba(255, 255, 255, 0.9);
+ backdrop-filter: blur(10px);
+ border-radius: 20px;
+ padding: 40px;
+ max-width: 400px;
+ margin: 0 auto;
+ box-shadow: 0 15px 35px rgba(0, 0, 0, 0.2);
+ transform: translateY(0);
+ transition: transform var(--transition);
+ }
+
+ .login-box:hover {
+ transform: translateY(-5px);
+ }
+
+ .login-header {
+ text-align: center;
+ margin-bottom: 40px;
+ }
+
+ .icon-container {
+ background: var(--primary);
+ width: 80px;
+ height: 80px;
+ border-radius: 50%;
+ margin: 0 auto 20px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .icon {
+ width: 40px;
+ height: 40px;
+ fill: white;
+ }
+
+ h1 {
+ color: var(--text);
+ font-size: 24px;
+ font-weight: 600;
+ }
+
+ .input-group {
+ position: relative;
+ margin-bottom: 30px;
+ }
+
+ input {
+ width: 100%;
+ padding: 15px;
+ padding-right: 45px;
+ border: 2px solid #ddd;
+ border-radius: 10px;
+ font-size: 16px;
+ transition: var(--transition);
+ }
+
+ input:focus {
+ border-color: var(--primary);
+ outline: none;
+ }
+
+ label {
+ position: absolute;
+ left: 15px;
+ top: 50%;
+ transform: translateY(-50%);
+ color: #999;
+ pointer-events: none;
+ transition: var(--transition);
+ }
+
+ input:focus ~ label,
+ input:valid ~ label {
+ top: -10px;
+ left: 10px;
+ font-size: 14px;
+ background: white;
+ padding: 0 5px;
+ color: var(--primary);
+ }
+
+ .input-icon {
+ position: absolute;
+ right: 15px;
+ top: 50%;
+ transform: translateY(-50%);
+ width: 20px;
+ height: 20px;
+ }
+
+ .input-icon svg {
+ fill: #999;
+ transition: var(--transition);
+ }
+
+ input:focus ~ .input-icon svg {
+ fill: var(--primary);
+ }
+
+ .login-btn {
+ width: 100%;
+ padding: 15px;
+ background: var(--primary);
+ color: white;
+ border: none;
+ border-radius: 10px;
+ font-size: 16px;
+ font-weight: 600;
+ cursor: pointer;
+ position: relative;
+ overflow: hidden;
+ transition: var(--transition);
+ }
+
+ .login-btn:hover {
+ background: #5651e5;
+ }
+
+ .ripple {
+ position: absolute;
+ background: rgba(255, 255, 255, 0.3);
+ border-radius: 50%;
+ transform: scale(0);
+ animation: ripple 0.6s linear;
+ pointer-events: none;
+ }
+
+ @keyframes ripple {
+ to {
+ transform: scale(4);
+ opacity: 0;
+ }
+ }
+
+ @media (max-width: 480px) {
+ .login-box {
+ padding: 20px;
+ }
+
+ .icon-container {
+ width: 60px;
+ height: 60px;
+ }
+
+ .icon {
+ width: 30px;
+ height: 30px;
+ }
+
+ h1 {
+ font-size: 20px;
+ }
+ }