I forgot towel day
Python 2, 223 210 209 204 bytes
def f(s,m):w=12*s-2;l=' |';print'[===|'+' '*w+'|====]';exec"j=(m+' ').rfind(' ',0,-~w);print l+'%*s||'%(w,m[:j]);m=m[j+1:];"*s*5;print(l+w*'='+'||\n')*2+' '*4+'"'*12*s+'|\n '+l+' '*w+'|\n ','"'*12*s
Try it online!
JavaScript (Node.js), 375 bytes
This is the worst submission you will get, but at least I tried xD half of bytes are spaces though
(s,_,w=12*s-2,h=5*s)=>`
[===|${j=' '.repeat(w)}|====]
${[...Array(h)].map((g,i)=>_.split` `.reduce((a,b)=>((l=a.split`,`)[l.length-1]+b).length>w-1?a+','+b:a+' '+b,'').split`,`[i]).map(a=>` |${a?(r=a.length)<w?a+' '.repeat(w-r):a:j}|| `).join`\n`+
`
|${'='.repeat(w)}|| `.repeat(2)}
${y='"'.repeat(w+2)}|
|${j}|
${y}
`
Try it online!
JavaScript (Node.js), 347 345 343 337 334 328 326 bytes
b=>d=>`
[===|${M=" "[X="repeat"](c=12*b-2)}|====]
${[...Array(5*b)].map((a,b)=>d[Y="split"]` `.reduce((a,b)=>((l=a[Y]`,`)[l[Z="length"]-1]+b)[Z]>c-1?a+","+b:a+" "+b)[Y]`,`[b]).map(a=>` |${a?(r=a[Z])<c?a+" "[X](c-r):a:" "[X](c)}|| `).join`
`+`
|${"="[X](c)}|| `[X](2)}
${y='"'[X](c+2)}|
|${M}|
${y}
`
Try it online!
Explanation :
b => // lambda function taking arg 1 : size
d => // arg 2 : message
` // begin string template for drawing
[===|${ // draw first part and now open literal
M = ' '[X='repeat'(c=12*b-2)] // set 3 variables, M, X , c to be used again
}|====] // close and draw the next part ====]
${[...Array(5*b)] // open and create an array of length 5 * b =width
.map(a,b=> // begin map function two args : a,b
d[Y='split']` ` // use d(message), split at whitespace, set to Y
.reduce((a,b) => // reduce to single value, arg 1 : a, arg 2 : b
((l = a[Y]`,`) // declare l and then find in l
[l[Z='length']-1] // set Z as length
+ b) // add value of b
[Z] // find the length
> c-1 ? // check if it's less than c - 1
a+','+b // then add `${a},${b}`
: a + ' ' + b // otherwise `${a} ${b}`
)[Y]`,` // close and split at comma
[b] // use b again
) // close
.map(a => // map over that arg 1 : a
` |${ // four space + | and open
a ? // if a is true or a truthy value
(r=a[Z]) // set value of r as a's length
< c ? // check if it's less than c
a+' '[X](c-r) // then draw a + space repeated c-r times
: a + ' '[X](c) // else draw a + space repeated c times
} // close
|| ` // add || and 4 spaces and close
) // end
.join`
` // and turn to string with new line as separator
+ // add to that
`
|{ // new line , 4 spaces and |
'='[X](c)} // repeat = c times
|| `[X](2)} // and repeat that 2 times
${ // new line + 4 space
y = '"'[X](c+2) // repeat " c + 2 times and set to y
}| // close and add |
|{ // add | and open
M}| // put M and close and add |
{y} // new line , 4 spaces and variable y
` // end with new line.