1import { el } from '../utils/dom.js'; 2 3function Field(label, control) { 4 return el('label', { class:'field' }, el('span', { class:'muted' }, label), control); 5} 6 7function CardTool(title, content) { 8 const card = el('div', { class:'card', style:'height:auto; padding:12px' }); 9 card.appendChild(el('div', { style:'font-weight:800; margin-bottom:8px' }, title)); 10 card.appendChild(content); 11 return card; 12} 13 14export function CreatePage() { 15 const page = el('div', { class:'container' }); 16 page.appendChild(el('h2', {}, 'СоздаÑÑ')); 17 const grid = el('div', { class:'grid grid-3-desktop' }); 18 grid.appendChild(CardTool('Text to Video (Sora)', el('div', {}, 19 Field('ÐÑомпÑ', el('textarea', { class:'input', rows:'3', placeholder:'ФÑÑÑÑиÑÑиÑеÑкий гоÑод в закаÑе...' })), 20 el('button', { class:'btn-primary', onclick: ()=> alert('Ðемо: job queued') }, 'СгенеÑиÑоваÑÑ') 21 ))); 22 grid.appendChild(CardTool('Video to Video (Veo)', el('div', {}, 23 Field('Ðидео', el('input', { class:'file', type:'file', accept:'video/*' })), 24 Field('ÐÑомпÑ', el('input', { class:'input', placeholder:'Сделай в ÑÑиле аниме' })), 25 el('button', { class:'btn-primary', onclick: ()=> alert('Ðемо: job queued') }, 'ÐÑеобÑазоваÑÑ') 26 ))); 27 grid.appendChild(CardTool('ÐживиÑÑ Ð¤Ð¾Ñо (ByteDance)', el('div', {}, 28 Field('ФоÑо', el('input', { class:'file', type:'file', accept:'image/*', capture:'user' })), 29 el('button', { class:'btn-primary', onclick: ()=> alert('Ðемо: job queued') }, 'ÐживиÑÑ') 30 ))); 31 return page; 32} 33
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.