d}}function ce(e){return window.getComputedStyle(e).direction}class le{constructor(e){this.datepicker=e;const t=J.replace(/%buttonClass%/g,e.config.buttonClass),i=this.element=Y(t).firstChild,[s,a,n]=i.firstChild.children,r=s.firstElementChild,[d,o,l]=s.lastElementChild.children,[h,u]=n.firstChild.children,f={title:r,prevBtn:d,viewSwitch:o,nextBtn:l,todayBtn:h,clearBtn:u};this.main=a,this.controls=f;const p=e.inline?"inline":"dropdown";i.classList.add(`datepicker-${p}`),re(this,e.config),this.viewDate=de(e),F(e,[[i,"click",function(e){e.inline||e.config.disableTouchKeyboard||e.inputField.focus()}.bind(null,e),{capture:!0}],[a,"click",function(e,t){const i=N(t,".datepicker-cell");if(!i||i.classList.contains("disabled"))return;const{id:s,isMinView:a}=e.picker.currentView;a?e.setDate(Number(i.dataset.date)):ne(e,1===s?Number(i.dataset.month):Number(i.dataset.year))}.bind(null,e)],[f.viewSwitch,"click",function(e){se(e)}.bind(null,e)],[f.prevBtn,"click",function(e){ie(e,-1)}.bind(null,e)],[f.nextBtn,"click",function(e){ie(e,1)}.bind(null,e)],[f.todayBtn,"click",function(e){const t=e.picker,i=c();if(1===e.config.todayBtnMode){if(e.config.autohide)return void e.setDate(i);e.setDate(i,{render:!1}),t.update()}t.viewDate!==i&&t.changeFocus(i),t.changeView(0).render()}.bind(null,e)],[f.clearBtn,"click",function(e){e.setDate({clear:!0})}.bind(null,e)]]),this.views=[new G(this),new Z(this),new ee(this,{id:2,name:"years",cellClass:"year",step:1}),new ee(this,{id:3,name:"decades",cellClass:"decade",step:10})],this.currentView=this.views[e.config.startView],this.currentView.render(),this.main.appendChild(this.currentView.element),e.config.container.appendChild(this.element)}setOptions(e){re(this,e),this.views.forEach(t=>{t.init(e,!1)}),this.currentView.render()}detach(){this.datepicker.config.container.removeChild(this.element)}show(){if(this.active)return;this.element.classList.add("active"),this.active=!0;const e=this.datepicker;if(!e.inline){const t=ce(e.inputField);t!==ce(e.config.container)?this.element.dir=t:this.element.dir&&this.element.removeAttribute("dir"),this.place(),e.config.disableTouchKeyboard&&e.inputField.blur()}te(e,"show")}hide(){this.active&&(this.datepicker.exitEditMode(),this.element.classList.remove("active"),this.active=!1,te(this.datepicker,"hide"))}place(){const{classList:e,style:t}=this.element,{config:i,inputField:s}=this.datepicker,a=i.container,{width:n,height:r}=this.element.getBoundingClientRect(),{left:d,top:o,width:c}=a.getBoundingClientRect(),{left:l,top:h,width:u,height:f}=s.getBoundingClientRect();let p,g,m,{x:w,y:y}=i.orientation;a===document.body?(p=window.scrollY,g=l+window.scrollX,m=h+p):(g=l-d,m=h-o+(p=a.scrollTop)),"auto"===w&&(g<0?(w="left",g=10):w=g+n>c?"right":"rtl"===ce(s)?"right":"left"),"right"===w&&(g-=n-u),"auto"===y&&(y=m-r{e.updateFocus()}),this}update(){const e=de(this.datepicker);return this._renderMethod=oe(this,e)?"render":"refresh",this.views.forEach(e=>{e.updateFocus(),e.updateSelection()}),this}render(e=!0){const t=e&&this._renderMethod||"render";delete this._renderMethod,this.currentView[t]()}}function he(e,t,i,s){const n=e.picker,r=n.currentView,d=r.step||1;let o,c,l=n.viewDate;switch(r.id){case 0:l=s?h(l,7*i):t.ctrlKey||t.metaKey?f(l,i):h(l,i),o=h,c=(e=>r.disabled.includes(e));break;case 1:l=u(l,s?4*i:i),o=u,c=(e=>{const t=new Date(e),{year:i,disabled:s}=r;return t.getFullYear()===i&&s.includes(t.getMonth())});break;default:l=f(l,i*(s?4:1)*d),o=f,c=(e=>r.disabled.includes(m(e,d)))}void 0!==(l=function e(t,i,s,n,r,d){if(a(t,r,d))return n(t)?e(i(t,s),i,s,n,r,d):t}(l,o,i<0?-d:d,c,r.minDate,r.maxDate))&&n.changeFocus(l).render()}function ue(e,t){return e.map(e=>S(e,t.format,t.locale)).join(t.dateDelimiter)}function fe(e,t,i=!1){const{config:s,dates:n,rangepicker:r}=e;if(0===t.length)return i?[]:void 0;const d=r&&e===r.datepickers[1];let o=t.reduce((e,t)=>{let i=M(t,s.format,s.locale);if(void 0===i)return e;if(s.pickLevel>0){const e=new Date(i);i=1===s.pickLevel?d?e.setMonth(e.getMonth()+1,0):e.setDate(1):d?e.setFullYear(e.getFullYear()+1,0,0):e.setMonth(0,1)}return!a(i,s.minDate,s.maxDate)||e.includes(i)||s.datesDisabled.includes(i)||s.daysOfWeekDisabled.includes(new Date(i).getDay())||e.push(i),e},[]);return 0!==o.length?(s.multidate&&!i&&(o=o.reduce((e,t)=>(n.includes(t)||e.push(t),e),n.filter(e=>!o.includes(e)))),s.maxNumberOfDates&&o.length>s.maxNumberOfDates?o.slice(-1*s.maxNumberOfDates):o):void 0}function pe(e,t=3,i=!0){const{config:s,picker:a,inputField:n}=e;if(2&t){const e=a.active?s.pickLevel:s.startView;a.update().changeView(e).render(i)}1&t&&n&&(n.value=ue(e.dates,s))}function ge(e,t,i){let{clear:s,render:a,autohide:n}=i;void 0===a&&(a=!0),a?void 0===n&&(n=e.config.autohide):n=!1;const r=fe(e,t,s);r&&(r.toString()!==e.dates.toString()?(e.dates=r,pe(e,a?3:1),te(e,"changeDate")):pe(e,1),n&&e.hide())}class me{constructor(e,t={},i){e.datepicker=this,this.element=e;const a=this.config=Object.assign({buttonClass:t.buttonClass&&String(t.buttonClass)||"button",container:document.body,defaultViewDate:c(),maxDate:void 0,minDate:void 0},q(B,this));this._options=t,Object.assign(a,q(t,this));const n=this.inline="INPUT"!==e.tagName;let r,d;if(n)a.container=e,d=s(e.dataset.date,a.dateDelimiter),delete e.dataset.date;else{const i=t.container?document.querySelector(t.container):null;i&&(a.container=i),(r=this.inputField=e).classList.add("datepicker-input"),d=s(r.value,a.dateDelimiter)}if(i){const e=i.inputs.indexOf(r),t=i.datepickers;if(e<0||e>1||!Array.isArray(t))throw Error("Invalid rangepicker object.");t[e]=this,Object.defineProperty(this,"rangepicker",{get:()=>i})}this.dates=[];const o=fe(this,d);o&&o.length>0&&(this.dates=o),r&&(r.value=ue(this.dates,a));const l=this.picker=new le(this);if(n)this.show();else{const e=function(e,t){const i=e.element;if(i!==document.activeElement)return;const s=e.picker.element;N(t,e=>e===i||e===s)||ae(e)}.bind(null,this);F(this,[[r,"keydown",function(e,t){if("Tab"===t.key)return void ae(e);const i=e.picker,{id:s,isMinView:a}=i.currentView;if(i.active)if(e.editMode)switch(t.key){case"Escape":i.hide();break;case"Enter":e.exitEditMode({update:!0,autohide:e.config.autohide});break;default:return}else switch(t.key){case"Escape":i.hide();break;case"ArrowLeft":if(t.ctrlKey||t.metaKey)ie(e,-1);else{if(t.shiftKey)return void e.enterEditMode();he(e,t,-1,!1)}break;case"ArrowRight":if(t.ctrlKey||t.metaKey)ie(e,1);else{if(t.shiftKey)return void e.enterEditMode();he(e,t,1,!1)}break;case"ArrowUp":if(t.ctrlKey||t.metaKey)se(e);else{if(t.shiftKey)return void e.enterEditMode();he(e,t,-1,!0)}break;case"ArrowDown":if(t.shiftKey&&!t.ctrlKey&&!t.metaKey)return void e.enterEditMode();he(e,t,1,!0);break;case"Enter":a?e.setDate(i.viewDate):i.changeView(s-1).render();break;case"Backspace":case"Delete":return void e.enterEditMode();default:return void(1!==t.key.length||t.ctrlKey||t.metaKey||e.enterEditMode())}else switch(t.key){case"ArrowDown":case"Escape":i.show();break;case"Enter":e.update();break;default:return}t.preventDefault(),t.stopPropagation()}.bind(null,this)],[r,"focus",function(e){e.config.showOnFocus&&!e._showing&&e.show()}.bind(null,this)],[r,"mousedown",function(e,t){const i=t.target;(e.picker.active||e.config.showOnClick)&&(i._active=i===document.activeElement,i._clicking=setTimeout(()=>{delete i._active,delete i._clicking},2e3))}.bind(null,this)],[r,"click",function(e,t){const i=t.target;i._clicking&&(clearTimeout(i._clicking),delete i._clicking,i._active&&e.enterEditMode(),delete i._active,e.config.showOnClick&&e.show())}.bind(null,this)],[r,"paste",function(e,t){t.clipboardData.types.includes("text/plain")&&e.enterEditMode()}.bind(null,this)],[document,"mousedown",e],[document,"touchstart",e],[window,"resize",l.place.bind(l)]])}}static formatDate(e,t,i){return S(e,t,i&&L[i]||L.en)}static parseDate(e,t,i){return M(e,t,i&&L[i]||L.en)}static get locales(){return L}get active(){return!(!this.picker||!this.picker.active)}get pickerElement(){return this.picker?this.picker.element:void 0}setOptions(e){const t=this.picker,i=q(e,this);Object.assign(this._options,e),Object.assign(this.config,i),t.setOptions(i),pe(this,3)}show(){if(this.inputField){if(this.inputField.disabled)return;this.inputField!==document.activeElement&&(this._showing=!0,this.inputField.focus(),delete this._showing)}this.picker.show()}hide(){this.inline||(this.picker.hide(),this.picker.update().changeView(this.config.startView).render())}destroy(){return this.hide(),V(this),this.picker.detach(),this.inline||this.inputField.classList.remove("datepicker-input"),delete this.element.datepicker,this}getDate(e){const t=e?t=>S(t,e,this.config.locale):e=>new Date(e);return this.config.multidate?this.dates.map(t):this.dates.length>0?t(this.dates[0]):void 0}setDate(...e){const i=[...e],s={},a=t(e);"object"!=typeof a||Array.isArray(a)||a instanceof Date||!a||Object.assign(s,i.pop()),ge(this,Array.isArray(i[0])?i[0]:i,s)}update(e){if(this.inline)return;const t={clear:!0,autohide:!(!e||!e.autohide)};ge(this,s(this.inputField.value,this.config.dateDelimiter),t)}refresh(e,t=!1){let i;e&&"string"!=typeof e&&(t=e,e=void 0),pe(this,i="picker"===e?2:"input"===e?1:3,!t)}enterEditMode(){this.inline||!this.picker.active||this.editMode||(this.editMode=!0,this.inputField.classList.add("in-edit"))}exitEditMode(e){if(this.inline||!this.editMode)return;const t=Object.assign({update:!1},e);delete this.editMode,this.inputField.classList.remove("in-edit"),t.update&&this.update(t)}}function we(e){const t=Object.assign({},e);return delete t.inputs,delete t.allowOneSidedRange,delete t.maxNumberOfDates,t}function ye(e,t,i,s){F(e,[[i,"changeDate",t]]),new me(i,s,e)}function ke(e,t){if(e._updating)return;e._updating=!0;const i=t.target;if(void 0===i.datepicker)return;const s=e.datepickers,a={render:!1},n=e.inputs.indexOf(i),r=0===n?1:0,d=s[n].dates[0],o=s[r].dates[0];void 0!==d&&void 0!==o?0===n&&d>o?(s[0].setDate(o,a),s[1].setDate(d,a)):1===n&&dn}),ye(this,s,this.inputs[0],a),ye(this,s,this.inputs[1],a),Object.freeze(n),n[0].dates.length>0?ke(this,{target:this.inputs[0]}):n[1].dates.length>0&&ke(this,{target:this.inputs[1]})}get dates(){return 2===this.datepickers.length?[this.datepickers[0].dates[0],this.datepickers[1].dates[0]]:void 0}setOptions(e){this.allowOneSidedRange=!!e.allowOneSidedRange;const t=we(e);this.datepickers[0].setOptions(t),this.datepickers[1].setOptions(t)}destroy(){this.datepickers[0].destroy(),this.datepickers[1].destroy(),V(this),delete this.element.rangepicker}getDates(e){const t=e?t=>S(t,e,this.datepickers[0].config.locale):e=>new Date(e);return this.dates.map(e=>void 0===e?e:t(e))}setDates(e,t){const[i,s]=this.datepickers,a=this.dates;this._updating=!0,i.setDate(e),s.setDate(t),delete this._updating,s.dates[0]!==a[1]?ke(this,{target:this.inputs[1]}):i.dates[0]!==a[0]&&ke(this,{target:this.inputs[0]})}}}();
\ No newline at end of file
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/datepicker.min.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/datepicker.min.js
new file mode 100644
index 00000000..84fe808a
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/datepicker.min.js
@@ -0,0 +1 @@
+var Datepicker=function(){"use strict";function e(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function t(e){return e[e.length-1]}function i(e,...t){return t.forEach(t=>{e.includes(t)||e.push(t)}),e}function s(e,t){return e?e.split(t):[]}function a(e,t,i){return(void 0===t||e>=t)&&(void 0===i||e<=i)}function n(e,t,i){return ei?i:e}function r(e,t,i={},s=0,a=""){a+=`<${Object.keys(i).reduce((e,t)=>{let a=i[t];return"function"==typeof a&&(a=a(s)),`${e} ${t}="${a}"`},e)}>${e}>`;const n=s+1;return n \s+/g,">").replace(/\s+,"<")}function o(e){return new Date(e).setHours(0,0,0,0)}function c(){return(new Date).setHours(0,0,0,0)}function l(...e){switch(e.length){case 0:return c();case 1:return o(e[0])}const t=new Date(0);return t.setFullYear(...e),t.setHours(0,0,0,0)}function h(e,t){const i=new Date(e);return i.setDate(i.getDate()+t)}function u(e,t){const i=new Date(e),s=i.getMonth()+t;let a=s%12;a<0&&(a+=12);const n=i.setMonth(s);return i.getMonth()!==a?i.setDate(0):n}function f(e,t){const i=new Date(e),s=i.getMonth(),a=i.setFullYear(i.getFullYear()+t);return 1===s&&2===i.getMonth()?i.setDate(0):a}function p(e,t){return(e-t+7)%7}function m(e,t,i=0){const s=new Date(e).getDay();return h(e,p(t,i)-p(s,i))}function g(e,t){const i=new Date(e).getFullYear();return Math.floor(i/t)*t}const w=/dd?|DD?|mm?|MM?|yy?(?:yy)?/,y=/[\s!-/:-@[-`{-~年月日]+/;let k={};const D={y:(e,t)=>new Date(e).setFullYear(parseInt(t,10)),m(e,t,i){const s=new Date(e);let a=parseInt(t,10)-1;if(isNaN(a)){if(!t)return NaN;const e=t.toLowerCase(),s=t=>t.toLowerCase().startsWith(e);if((a=i.monthsShort.findIndex(s))<0&&(a=i.months.findIndex(s)),a<0)return NaN}return s.setMonth(a),s.getMonth()!==function e(t){return t>-1?t%12:e(t+12)}(a)?s.setDate(0):s.getTime()},d:(e,t)=>new Date(e).setDate(parseInt(t,10))},v={d:e=>e.getDate(),dd:e=>b(e.getDate(),2),D:(e,t)=>t.daysShort[e.getDay()],DD:(e,t)=>t.days[e.getDay()],m:e=>e.getMonth()+1,mm:e=>b(e.getMonth()+1,2),M:(e,t)=>t.monthsShort[e.getMonth()],MM:(e,t)=>t.months[e.getMonth()],y:e=>e.getFullYear(),yy:e=>b(e.getFullYear(),2).slice(-2),yyyy:e=>b(e.getFullYear(),4)};function b(e,t){return e.toString().padStart(t,"0")}function x(e){if("string"!=typeof e)throw new Error("Invalid date format.");if(e in k)return k[e];const i=e.split(w),s=e.match(new RegExp(w,"g"));if(0===i.length||!s)throw new Error("Invalid date format.");const a=s.map(e=>v[e]),n=Object.keys(D).reduce((e,t)=>{return s.find(e=>"D"!==e[0]&&e[0].toLowerCase()===t)&&e.push(t),e},[]);return k[e]={parser(e,t){const i=e.split(y).reduce((e,t,i)=>{if(t.length>0&&s[i]){const a=s[i][0];"M"===a?e.m=t:"D"!==a&&(e[a]=t)}return e},{});return n.reduce((e,s)=>{const a=D[s](e,i[s],t);return isNaN(a)?e:a},c())},formatter:(e,s)=>a.reduce((t,a,n)=>t+`${i[n]}${a(e,s)}`,"")+t(i)}}function M(e,t,i){if(e instanceof Date||"number"==typeof e){const t=o(e);return isNaN(t)?void 0:t}if(e){if("today"===e)return c();if(t&&t.toValue){const s=t.toValue(e,t,i);return isNaN(s)?void 0:o(s)}return x(t).parser(e,i)}}function S(e,t,i){if(isNaN(e)||!e&&0!==e)return"";const s="number"==typeof e?new Date(e):e;return t.toDisplay?t.toDisplay(s,t,i):x(t).formatter(s,i)}const C=new WeakMap,{addEventListener:O,removeEventListener:E}=EventTarget.prototype;function F(e,t){let i=C.get(e);i||(i=[],C.set(e,i)),t.forEach(e=>{O.call(...e),i.push(e)})}if(!Event.prototype.composedPath){const e=(t,i=[])=>{let s;return i.push(t),t.parentNode?s=t.parentNode:t.host?s=t.host:t.defaultView&&(s=t.defaultView),s?e(s,i):i};Event.prototype.composedPath=function(){return e(this.target)}}function V(e,t){const i="function"==typeof t?t:e=>e.matches(t);return function e(t,i,s,a=0){const n=t[a];return i(n)?n:n!==s&&n.parentElement?e(t,i,s,a+1):void 0}(e.composedPath(),i,e.currentTarget)}const N={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",titleFormat:"MM y"}},L={autohide:!1,beforeShowDay:null,beforeShowDecade:null,beforeShowMonth:null,beforeShowYear:null,calendarWeeks:!1,clearBtn:!1,dateDelimiter:",",datesDisabled:[],daysOfWeekDisabled:[],daysOfWeekHighlighted:[],defaultViewDate:void 0,disableTouchKeyboard:!1,format:"mm/dd/yyyy",language:"en",maxDate:null,maxNumberOfDates:1,maxView:3,minDate:null,nextArrow:"»",orientation:"auto",pickLevel:0,prevArrow:"«",showDaysOfWeek:!0,showOnClick:!0,showOnFocus:!0,startView:0,title:"",todayBtn:!1,todayBtnMode:0,todayHighlight:!1,updateOnBlur:!0,weekStart:0},B=document.createRange();function A(e){return B.createContextualFragment(e)}function Y(e){"none"!==e.style.display&&(e.style.display&&(e.dataset.styleDisplay=e.style.display),e.style.display="none")}function W(e){"none"===e.style.display&&(e.dataset.styleDisplay?(e.style.display=e.dataset.styleDisplay,delete e.dataset.styleDisplay):e.style.display="")}function K(e){e.firstChild&&(e.removeChild(e.firstChild),K(e))}const{language:T,format:H,weekStart:$}=L;function _(e,t){return e.length<6&&t>=0&&t<7?i(e,t):e}function j(e){return(e+6)%7}function I(e,t,i,s){const a=M(e,t,i);return void 0!==a?a:s}function P(e,t,i=3){const s=parseInt(e,10);return s>=0&&s<=i?s:t}function q(t,s){const a=Object.assign({},t),n={},r=s.constructor.locales;let{format:d,language:o,locale:c,maxDate:h,maxView:u,minDate:f,pickLevel:p,startView:m,weekStart:g}=s.config||{};if(a.language){let e;if(a.language!==o&&(r[a.language]?e=a.language:void 0===r[e=a.language.split("-")[0]]&&(e=!1)),delete a.language,e){o=n.language=e;const t=c||r[T];c=Object.assign({format:H,weekStart:$},r[T]),o!==T&&Object.assign(c,r[o]),n.locale=c,d===t.format&&(d=n.format=c.format),g===t.weekStart&&(g=n.weekStart=c.weekStart,n.weekEnd=j(c.weekStart))}}if(a.format){const e="function"==typeof a.format.toDisplay,t="function"==typeof a.format.toValue,i=w.test(a.format);(e&&t||i)&&(d=n.format=a.format),delete a.format}let y=f,k=h;if(void 0!==a.minDate&&(y=null===a.minDate?l(0,0,1):I(a.minDate,d,c,y),delete a.minDate),void 0!==a.maxDate&&(k=null===a.maxDate?void 0:I(a.maxDate,d,c,k),delete a.maxDate),k{const s=M(t,d,c);return void 0!==s?i(e,s):e},[]),delete a.datesDisabled),void 0!==a.defaultViewDate){const e=M(a.defaultViewDate,d,c);void 0!==e&&(n.defaultViewDate=e),delete a.defaultViewDate}if(void 0!==a.weekStart){const e=Number(a.weekStart)%7;isNaN(e)||(g=n.weekStart=e,n.weekEnd=j(e)),delete a.weekStart}if(a.daysOfWeekDisabled&&(n.daysOfWeekDisabled=a.daysOfWeekDisabled.reduce(_,[]),delete a.daysOfWeekDisabled),a.daysOfWeekHighlighted&&(n.daysOfWeekHighlighted=a.daysOfWeekHighlighted.reduce(_,[]),delete a.daysOfWeekHighlighted),void 0!==a.maxNumberOfDates){const e=parseInt(a.maxNumberOfDates,10);e>=0&&(n.maxNumberOfDates=e,n.multidate=1!==e),delete a.maxNumberOfDates}a.dateDelimiter&&(n.dateDelimiter=String(a.dateDelimiter),delete a.dateDelimiter);let D=p;void 0!==a.pickLevel&&(D=P(a.pickLevel,2),delete a.pickLevel),D!==p&&(p=n.pickLevel=D);let v=u;void 0!==a.maxView&&(v=P(a.maxView,u),delete a.maxView),(v=p>v?p:v)!==u&&(u=n.maxView=v);let b=m;if(void 0!==a.startView&&(b=P(a.startView,b),delete a.startView),bu&&(b=u),b!==m&&(n.startView=b),a.prevArrow){const e=A(a.prevArrow);e.childNodes.length>0&&(n.prevArrow=e.childNodes),delete a.prevArrow}if(a.nextArrow){const e=A(a.nextArrow);e.childNodes.length>0&&(n.nextArrow=e.childNodes),delete a.nextArrow}if(void 0!==a.disableTouchKeyboard&&(n.disableTouchKeyboard="ontouchstart"in document&&!!a.disableTouchKeyboard,delete a.disableTouchKeyboard),a.orientation){const e=a.orientation.toLowerCase().split(/\s+/g);n.orientation={x:e.find(e=>"left"===e||"right"===e)||"auto",y:e.find(e=>"top"===e||"bottom"===e)||"auto"},delete a.orientation}if(void 0!==a.todayBtnMode){switch(a.todayBtnMode){case 0:case 1:n.todayBtnMode=a.todayBtnMode}delete a.todayBtnMode}return Object.keys(a).forEach(t=>{void 0!==a[t]&&e(L,t)&&(n[t]=a[t])}),n}const J=d('
'),R=d(`\n
${r("span",7,{class:"dow"})}
\n
${r("span",42)}
\n
`),U=d(`\n
\n
${r("span",6,{class:"week"})}
\n
`);class z{constructor(e,t){Object.assign(this,t,{picker:e,element:A('
').firstChild,selected:[]}),this.init(this.picker.datepicker.config)}init(e){void 0!==e.pickLevel&&(this.isMinView=this.id===e.pickLevel),this.setOptions(e),this.updateFocus(),this.updateSelection()}performBeforeHook(e,t,s){let a=this.beforeShow(new Date(s));switch(typeof a){case"boolean":a={enabled:a};break;case"string":a={classes:a}}if(a){if(!1===a.enabled&&(e.classList.add("disabled"),i(this.disabled,t)),a.classes){const s=a.classes.split(/\s+/);e.classList.add(...s),s.includes("disabled")&&i(this.disabled,t)}a.content&&function(e,t){K(e),t instanceof DocumentFragment?e.appendChild(t):"string"==typeof t?e.appendChild(A(t)):"function"==typeof t.forEach&&t.forEach(t=>{e.appendChild(t)})}(e,a.content)}}}class X extends z{constructor(e){super(e,{id:0,name:"days",cellClass:"day"})}init(e,t=!0){if(t){const e=A(R).firstChild;this.dow=e.firstChild,this.grid=e.lastChild,this.element.appendChild(e)}super.init(e)}setOptions(t){let i;if(e(t,"minDate")&&(this.minDate=t.minDate),e(t,"maxDate")&&(this.maxDate=t.maxDate),t.datesDisabled&&(this.datesDisabled=t.datesDisabled),t.daysOfWeekDisabled&&(this.daysOfWeekDisabled=t.daysOfWeekDisabled,i=!0),t.daysOfWeekHighlighted&&(this.daysOfWeekHighlighted=t.daysOfWeekHighlighted),void 0!==t.todayHighlight&&(this.todayHighlight=t.todayHighlight),void 0!==t.weekStart&&(this.weekStart=t.weekStart,this.weekEnd=t.weekEnd,i=!0),t.locale){const e=this.locale=t.locale;this.dayNames=e.daysMin,this.switchLabelFormat=e.titleFormat,i=!0}if(void 0!==t.beforeShowDay&&(this.beforeShow="function"==typeof t.beforeShowDay?t.beforeShowDay:void 0),void 0!==t.calendarWeeks)if(t.calendarWeeks&&!this.calendarWeeks){const e=A(U).firstChild;this.calendarWeeks={element:e,dow:e.firstChild,weeks:e.lastChild},this.element.insertBefore(e,this.element.firstChild)}else this.calendarWeeks&&!t.calendarWeeks&&(this.element.removeChild(this.calendarWeeks.element),this.calendarWeeks=null);void 0!==t.showDaysOfWeek&&(t.showDaysOfWeek?(W(this.dow),this.calendarWeeks&&W(this.calendarWeeks.dow)):(Y(this.dow),this.calendarWeeks&&Y(this.calendarWeeks.dow))),i&&Array.from(this.dow.children).forEach((e,t)=>{const i=(this.weekStart+t)%7;e.textContent=this.dayNames[i],e.className=this.daysOfWeekDisabled.includes(i)?"dow disabled":"dow"})}updateFocus(){const e=new Date(this.picker.viewDate),t=e.getFullYear(),i=e.getMonth(),s=l(t,i,1),a=m(s,this.weekStart,this.weekStart);this.first=s,this.last=l(t,i+1,0),this.start=a,this.focused=this.picker.viewDate}updateSelection(){const{dates:e,rangepicker:t}=this.picker.datepicker;this.selected=e,t&&(this.range=t.dates)}render(){this.today=this.todayHighlight?c():void 0,this.disabled=[...this.datesDisabled];const e=S(this.focused,this.switchLabelFormat,this.locale);if(this.picker.setViewSwitchLabel(e),this.picker.setPrevBtnDisabled(this.first<=this.minDate),this.picker.setNextBtnDisabled(this.last>=this.maxDate),this.calendarWeeks){const e=m(this.first,1,1);Array.from(this.calendarWeeks.weeks.children).forEach((t,i)=>{t.textContent=function(e){const t=m(e,4,1),i=m(new Date(t).setMonth(0,4),4,1);return Math.round((t-i)/6048e5)+1}(h(e,7*i))})}Array.from(this.grid.children).forEach((e,t)=>{const s=e.classList,a=h(this.start,t),n=new Date(a),r=n.getDay();if(e.className=`datepicker-cell ${this.cellClass}`,e.dataset.date=a,e.textContent=n.getDate(),athis.last&&s.add("next"),this.today===a&&s.add("today"),(athis.maxDate||this.disabled.includes(a))&&s.add("disabled"),this.daysOfWeekDisabled.includes(r)&&(s.add("disabled"),i(this.disabled,a)),this.daysOfWeekHighlighted.includes(r)&&s.add("highlighted"),this.range){const[e,t]=this.range;a>e&&a{e.classList.remove("range","range-start","range-end","selected","focused")}),Array.from(this.grid.children).forEach(i=>{const s=Number(i.dataset.date),a=i.classList;s>e&&s{e.classList.remove("focused")}),this.grid.children[e].classList.add("focused")}}function G(e,t){if(!e||!e[0]||!e[1])return;const[[i,s],[a,n]]=e;return i>t||ae})))),super.init(e)}setOptions(t){if(t.locale&&(this.monthNames=t.locale.monthsShort),e(t,"minDate"))if(void 0===t.minDate)this.minYear=this.minMonth=this.minDate=void 0;else{const e=new Date(t.minDate);this.minYear=e.getFullYear(),this.minMonth=e.getMonth(),this.minDate=e.setDate(1)}if(e(t,"maxDate"))if(void 0===t.maxDate)this.maxYear=this.maxMonth=this.maxDate=void 0;else{const e=new Date(t.maxDate);this.maxYear=e.getFullYear(),this.maxMonth=e.getMonth(),this.maxDate=l(this.maxYear,this.maxMonth+1,0)}void 0!==t.beforeShowMonth&&(this.beforeShow="function"==typeof t.beforeShowMonth?t.beforeShowMonth:void 0)}updateFocus(){const e=new Date(this.picker.viewDate);this.year=e.getFullYear(),this.focused=e.getMonth()}updateSelection(){const{dates:e,rangepicker:t}=this.picker.datepicker;this.selected=e.reduce((e,t)=>{const s=new Date(t),a=s.getFullYear(),n=s.getMonth();return void 0===e[a]?e[a]=[n]:i(e[a],n),e},{}),t&&t.dates&&(this.range=t.dates.map(e=>{const t=new Date(e);return isNaN(t)?void 0:[t.getFullYear(),t.getMonth()]}))}render(){this.disabled=[],this.picker.setViewSwitchLabel(this.year),this.picker.setPrevBtnDisabled(this.year<=this.minYear),this.picker.setNextBtnDisabled(this.year>=this.maxYear);const e=this.selected[this.year]||[],t=this.yearthis.maxYear,i=this.year===this.minYear,s=this.year===this.maxYear,a=G(this.range,this.year);Array.from(this.grid.children).forEach((n,r)=>{const d=n.classList,o=l(this.year,r,1);if(n.className=`datepicker-cell ${this.cellClass}`,this.isMinView&&(n.dataset.date=o),n.textContent=this.monthNames[r],(t||i&&rthis.maxMonth)&&d.add("disabled"),a){const[e,t]=a;r>e&&r{e.classList.remove("range","range-start","range-end","selected","focused")}),Array.from(this.grid.children).forEach((s,a)=>{const n=s.classList;a>t&&a{e.classList.remove("focused")}),this.grid.children[this.focused].classList.add("focused")}}class Z extends z{constructor(e,t){super(e,t)}init(e,t=!0){var i;t&&(this.navStep=10*this.step,this.beforeShowOption=`beforeShow${i=this.cellClass,[...i].reduce((e,t,i)=>e+=i?t:t.toUpperCase(),"")}`,this.grid=this.element,this.element.classList.add(this.name,"datepicker-grid"),this.grid.appendChild(A(r("span",12)))),super.init(e)}setOptions(t){if(e(t,"minDate")&&(void 0===t.minDate?this.minYear=this.minDate=void 0:(this.minYear=g(t.minDate,this.step),this.minDate=l(this.minYear,0,1))),e(t,"maxDate")&&(void 0===t.maxDate?this.maxYear=this.maxDate=void 0:(this.maxYear=g(t.maxDate,this.step),this.maxDate=l(this.maxYear,11,31))),void 0!==t[this.beforeShowOption]){const e=t[this.beforeShowOption];this.beforeShow="function"==typeof e?e:void 0}}updateFocus(){const e=new Date(this.picker.viewDate),t=g(e,this.navStep),i=t+9*this.step;this.first=t,this.last=i,this.start=t-this.step,this.focused=g(e,this.step)}updateSelection(){const{dates:e,rangepicker:t}=this.picker.datepicker;this.selected=e.reduce((e,t)=>i(e,g(t,this.step)),[]),t&&t.dates&&(this.range=t.dates.map(e=>{if(void 0!==e)return g(e,this.step)}))}render(){this.disabled=[],this.picker.setViewSwitchLabel(`${this.first}-${this.last}`),this.picker.setPrevBtnDisabled(this.first<=this.minYear),this.picker.setNextBtnDisabled(this.last>=this.maxYear),Array.from(this.grid.children).forEach((e,t)=>{const i=e.classList,s=this.start+t*this.step,a=l(s,0,1);if(e.className=`datepicker-cell ${this.cellClass}`,this.isMinView&&(e.dataset.date=a),e.textContent=e.dataset.year=s,0===t?i.add("prev"):11===t&&i.add("next"),(sthis.maxYear)&&i.add("disabled"),this.range){const[e,t]=this.range;s>e&&s{e.classList.remove("range","range-start","range-end","selected","focused")}),Array.from(this.grid.children).forEach(i=>{const s=Number(i.textContent),a=i.classList;s>e&&s{e.classList.remove("focused")}),this.grid.children[e].classList.add("focused")}}function ee(e,t){const i={date:e.getDate(),viewDate:new Date(e.picker.viewDate),viewId:e.picker.currentView.id,datepicker:e};e.element.dispatchEvent(new CustomEvent(t,{detail:i}))}function te(e,t){const{minDate:i,maxDate:s}=e.config,{currentView:a,viewDate:r}=e.picker;let d;switch(a.id){case 0:d=u(r,t);break;case 1:d=f(r,t);break;default:d=f(r,t*a.navStep)}d=n(d,i,s),e.picker.changeFocus(d).render()}function ie(e){const t=e.picker.currentView.id;t!==e.config.maxView&&e.picker.changeView(t+1).render()}function se(e){e.config.updateOnBlur?e.update({autohide:!0}):(e.refresh("input"),e.hide())}function ae(e,t){const i=e.picker,s=new Date(i.viewDate),a=i.currentView.id,n=1===a?u(s,t-s.getMonth()):f(s,t-s.getFullYear());i.changeFocus(n).changeView(a-1).render()}function ne(t,i){if(void 0!==i.title&&(i.title?(t.controls.title.textContent=i.title,W(t.controls.title)):(t.controls.title.textContent="",Y(t.controls.title))),i.prevArrow){const e=t.controls.prevBtn;K(e),i.prevArrow.forEach(t=>{e.appendChild(t.cloneNode(!0))})}if(i.nextArrow){const e=t.controls.nextBtn;K(e),i.nextArrow.forEach(t=>{e.appendChild(t.cloneNode(!0))})}if(i.locale&&(t.controls.todayBtn.textContent=i.locale.today,t.controls.clearBtn.textContent=i.locale.clear),void 0!==i.todayBtn&&(i.todayBtn?W(t.controls.todayBtn):Y(t.controls.todayBtn)),e(i,"minDate")||e(i,"maxDate")){const{minDate:e,maxDate:i}=t.datepicker.config;t.controls.todayBtn.disabled=!a(c(),e,i)}void 0!==i.clearBtn&&(i.clearBtn?W(t.controls.clearBtn):Y(t.controls.clearBtn))}function re(e){const{dates:i,config:s}=e;return n(i.length>0?t(i):s.defaultViewDate,s.minDate,s.maxDate)}function de(e,t){const i=new Date(e.viewDate),s=new Date(t),{id:a,year:n,first:r,last:d}=e.currentView,o=s.getFullYear();switch(e.viewDate=t,o!==i.getFullYear()&&ee(e.datepicker,"changeYear"),s.getMonth()!==i.getMonth()&&ee(e.datepicker,"changeMonth"),a){case 0:return td;case 1:return o!==n;default:return od}}function oe(e){return window.getComputedStyle(e).direction}class ce{constructor(e){this.datepicker=e;const t=J.replace(/%buttonClass%/g,e.config.buttonClass),i=this.element=A(t).firstChild,[s,a,n]=i.firstChild.children,r=s.firstElementChild,[d,o,l]=s.lastElementChild.children,[h,u]=n.firstChild.children,f={title:r,prevBtn:d,viewSwitch:o,nextBtn:l,todayBtn:h,clearBtn:u};this.main=a,this.controls=f;const p=e.inline?"inline":"dropdown";i.classList.add(`datepicker-${p}`),ne(this,e.config),this.viewDate=re(e),F(e,[[i,"click",function(e){e.inline||e.config.disableTouchKeyboard||e.inputField.focus()}.bind(null,e),{capture:!0}],[a,"click",function(e,t){const i=V(t,".datepicker-cell");if(!i||i.classList.contains("disabled"))return;const{id:s,isMinView:a}=e.picker.currentView;a?e.setDate(Number(i.dataset.date)):ae(e,1===s?Number(i.dataset.month):Number(i.dataset.year))}.bind(null,e)],[f.viewSwitch,"click",function(e){ie(e)}.bind(null,e)],[f.prevBtn,"click",function(e){te(e,-1)}.bind(null,e)],[f.nextBtn,"click",function(e){te(e,1)}.bind(null,e)],[f.todayBtn,"click",function(e){const t=e.picker,i=c();if(1===e.config.todayBtnMode){if(e.config.autohide)return void e.setDate(i);e.setDate(i,{render:!1}),t.update()}t.viewDate!==i&&t.changeFocus(i),t.changeView(0).render()}.bind(null,e)],[f.clearBtn,"click",function(e){e.setDate({clear:!0})}.bind(null,e)]]),this.views=[new X(this),new Q(this),new Z(this,{id:2,name:"years",cellClass:"year",step:1}),new Z(this,{id:3,name:"decades",cellClass:"decade",step:10})],this.currentView=this.views[e.config.startView],this.currentView.render(),this.main.appendChild(this.currentView.element),e.config.container.appendChild(this.element)}setOptions(e){ne(this,e),this.views.forEach(t=>{t.init(e,!1)}),this.currentView.render()}detach(){this.datepicker.config.container.removeChild(this.element)}show(){if(this.active)return;this.element.classList.add("active"),this.active=!0;const e=this.datepicker;if(!e.inline){const t=oe(e.inputField);t!==oe(e.config.container)?this.element.dir=t:this.element.dir&&this.element.removeAttribute("dir"),this.place(),e.config.disableTouchKeyboard&&e.inputField.blur()}ee(e,"show")}hide(){this.active&&(this.datepicker.exitEditMode(),this.element.classList.remove("active"),this.active=!1,ee(this.datepicker,"hide"))}place(){const{classList:e,style:t}=this.element,{config:i,inputField:s}=this.datepicker,a=i.container,{width:n,height:r}=this.element.getBoundingClientRect(),{left:d,top:o,width:c}=a.getBoundingClientRect(),{left:l,top:h,width:u,height:f}=s.getBoundingClientRect();let p,m,g,{x:w,y:y}=i.orientation;a===document.body?(p=window.scrollY,m=l+window.scrollX,g=h+p):(m=l-d,g=h-o+(p=a.scrollTop)),"auto"===w&&(m<0?(w="left",m=10):w=m+n>c?"right":"rtl"===oe(s)?"right":"left"),"right"===w&&(m-=n-u),"auto"===y&&(y=g-r{e.updateFocus()}),this}update(){const e=re(this.datepicker);return this._renderMethod=de(this,e)?"render":"refresh",this.views.forEach(e=>{e.updateFocus(),e.updateSelection()}),this}render(e=!0){const t=e&&this._renderMethod||"render";delete this._renderMethod,this.currentView[t]()}}function le(e,t,i,s){const n=e.picker,r=n.currentView,d=r.step||1;let o,c,l=n.viewDate;switch(r.id){case 0:l=s?h(l,7*i):t.ctrlKey||t.metaKey?f(l,i):h(l,i),o=h,c=(e=>r.disabled.includes(e));break;case 1:l=u(l,s?4*i:i),o=u,c=(e=>{const t=new Date(e),{year:i,disabled:s}=r;return t.getFullYear()===i&&s.includes(t.getMonth())});break;default:l=f(l,i*(s?4:1)*d),o=f,c=(e=>r.disabled.includes(g(e,d)))}void 0!==(l=function e(t,i,s,n,r,d){if(a(t,r,d))return n(t)?e(i(t,s),i,s,n,r,d):t}(l,o,i<0?-d:d,c,r.minDate,r.maxDate))&&n.changeFocus(l).render()}function he(e,t){return e.map(e=>S(e,t.format,t.locale)).join(t.dateDelimiter)}function ue(e,t,i=!1){const{config:s,dates:n,rangepicker:r}=e;if(0===t.length)return i?[]:void 0;const d=r&&e===r.datepickers[1];let o=t.reduce((e,t)=>{let i=M(t,s.format,s.locale);if(void 0===i)return e;if(s.pickLevel>0){const e=new Date(i);i=1===s.pickLevel?d?e.setMonth(e.getMonth()+1,0):e.setDate(1):d?e.setFullYear(e.getFullYear()+1,0,0):e.setMonth(0,1)}return!a(i,s.minDate,s.maxDate)||e.includes(i)||s.datesDisabled.includes(i)||s.daysOfWeekDisabled.includes(new Date(i).getDay())||e.push(i),e},[]);return 0!==o.length?(s.multidate&&!i&&(o=o.reduce((e,t)=>(n.includes(t)||e.push(t),e),n.filter(e=>!o.includes(e)))),s.maxNumberOfDates&&o.length>s.maxNumberOfDates?o.slice(-1*s.maxNumberOfDates):o):void 0}function fe(e,t=3,i=!0){const{config:s,picker:a,inputField:n}=e;if(2&t){const e=a.active?s.pickLevel:s.startView;a.update().changeView(e).render(i)}1&t&&n&&(n.value=he(e.dates,s))}function pe(e,t,i){let{clear:s,render:a,autohide:n}=i;void 0===a&&(a=!0),a?void 0===n&&(n=e.config.autohide):n=!1;const r=ue(e,t,s);r&&(r.toString()!==e.dates.toString()?(e.dates=r,fe(e,a?3:1),ee(e,"changeDate")):fe(e,1),n&&e.hide())}return class{constructor(e,t={},i){e.datepicker=this,this.element=e;const a=this.config=Object.assign({buttonClass:t.buttonClass&&String(t.buttonClass)||"button",container:document.body,defaultViewDate:c(),maxDate:void 0,minDate:void 0},q(L,this));this._options=t,Object.assign(a,q(t,this));const n=this.inline="INPUT"!==e.tagName;let r,d;if(n)a.container=e,d=s(e.dataset.date,a.dateDelimiter),delete e.dataset.date;else{const i=t.container?document.querySelector(t.container):null;i&&(a.container=i),(r=this.inputField=e).classList.add("datepicker-input"),d=s(r.value,a.dateDelimiter)}if(i){const e=i.inputs.indexOf(r),t=i.datepickers;if(e<0||e>1||!Array.isArray(t))throw Error("Invalid rangepicker object.");t[e]=this,Object.defineProperty(this,"rangepicker",{get:()=>i})}this.dates=[];const o=ue(this,d);o&&o.length>0&&(this.dates=o),r&&(r.value=he(this.dates,a));const l=this.picker=new ce(this);if(n)this.show();else{const e=function(e,t){const i=e.element;if(i!==document.activeElement)return;const s=e.picker.element;V(t,e=>e===i||e===s)||se(e)}.bind(null,this);F(this,[[r,"keydown",function(e,t){if("Tab"===t.key)return void se(e);const i=e.picker,{id:s,isMinView:a}=i.currentView;if(i.active)if(e.editMode)switch(t.key){case"Escape":i.hide();break;case"Enter":e.exitEditMode({update:!0,autohide:e.config.autohide});break;default:return}else switch(t.key){case"Escape":i.hide();break;case"ArrowLeft":if(t.ctrlKey||t.metaKey)te(e,-1);else{if(t.shiftKey)return void e.enterEditMode();le(e,t,-1,!1)}break;case"ArrowRight":if(t.ctrlKey||t.metaKey)te(e,1);else{if(t.shiftKey)return void e.enterEditMode();le(e,t,1,!1)}break;case"ArrowUp":if(t.ctrlKey||t.metaKey)ie(e);else{if(t.shiftKey)return void e.enterEditMode();le(e,t,-1,!0)}break;case"ArrowDown":if(t.shiftKey&&!t.ctrlKey&&!t.metaKey)return void e.enterEditMode();le(e,t,1,!0);break;case"Enter":a?e.setDate(i.viewDate):i.changeView(s-1).render();break;case"Backspace":case"Delete":return void e.enterEditMode();default:return void(1!==t.key.length||t.ctrlKey||t.metaKey||e.enterEditMode())}else switch(t.key){case"ArrowDown":case"Escape":i.show();break;case"Enter":e.update();break;default:return}t.preventDefault(),t.stopPropagation()}.bind(null,this)],[r,"focus",function(e){e.config.showOnFocus&&!e._showing&&e.show()}.bind(null,this)],[r,"mousedown",function(e,t){const i=t.target;(e.picker.active||e.config.showOnClick)&&(i._active=i===document.activeElement,i._clicking=setTimeout(()=>{delete i._active,delete i._clicking},2e3))}.bind(null,this)],[r,"click",function(e,t){const i=t.target;i._clicking&&(clearTimeout(i._clicking),delete i._clicking,i._active&&e.enterEditMode(),delete i._active,e.config.showOnClick&&e.show())}.bind(null,this)],[r,"paste",function(e,t){t.clipboardData.types.includes("text/plain")&&e.enterEditMode()}.bind(null,this)],[document,"mousedown",e],[document,"touchstart",e],[window,"resize",l.place.bind(l)]])}}static formatDate(e,t,i){return S(e,t,i&&N[i]||N.en)}static parseDate(e,t,i){return M(e,t,i&&N[i]||N.en)}static get locales(){return N}get active(){return!(!this.picker||!this.picker.active)}get pickerElement(){return this.picker?this.picker.element:void 0}setOptions(e){const t=this.picker,i=q(e,this);Object.assign(this._options,e),Object.assign(this.config,i),t.setOptions(i),fe(this,3)}show(){if(this.inputField){if(this.inputField.disabled)return;this.inputField!==document.activeElement&&(this._showing=!0,this.inputField.focus(),delete this._showing)}this.picker.show()}hide(){this.inline||(this.picker.hide(),this.picker.update().changeView(this.config.startView).render())}destroy(){return this.hide(),function(e){let t=C.get(e);t&&(t.forEach(e=>{E.call(...e)}),C.delete(e))}(this),this.picker.detach(),this.inline||this.inputField.classList.remove("datepicker-input"),delete this.element.datepicker,this}getDate(e){const t=e?t=>S(t,e,this.config.locale):e=>new Date(e);return this.config.multidate?this.dates.map(t):this.dates.length>0?t(this.dates[0]):void 0}setDate(...e){const i=[...e],s={},a=t(e);"object"!=typeof a||Array.isArray(a)||a instanceof Date||!a||Object.assign(s,i.pop()),pe(this,Array.isArray(i[0])?i[0]:i,s)}update(e){if(this.inline)return;const t={clear:!0,autohide:!(!e||!e.autohide)};pe(this,s(this.inputField.value,this.config.dateDelimiter),t)}refresh(e,t=!1){let i;e&&"string"!=typeof e&&(t=e,e=void 0),fe(this,i="picker"===e?2:"input"===e?1:3,!t)}enterEditMode(){this.inline||!this.picker.active||this.editMode||(this.editMode=!0,this.inputField.classList.add("in-edit"))}exitEditMode(e){if(this.inline||!this.editMode)return;const t=Object.assign({update:!1},e);delete this.editMode,this.inputField.classList.remove("in-edit"),t.update&&this.update(t)}}}();
\ No newline at end of file
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ar-tn.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ar-tn.js
new file mode 100644
index 00000000..d94df17a
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ar-tn.js
@@ -0,0 +1,15 @@
+/**
+ * Arabic-Tunisia translation for bootstrap-datepicker
+ * Souhaieb Besbes
+ */
+(function () {
+ Datepicker.locales['ar-tn'] = {
+ days: ["الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت", "الأحد"],
+ daysShort: ["أحد", "اثنين", "ثلاثاء", "أربعاء", "خميس", "جمعة", "سبت", "أحد"],
+ daysMin: ["ح", "ن", "ث", "ع", "خ", "ج", "س", "ح"],
+ months: ["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويليه","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],
+ monthsShort: ["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويليه","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],
+ today: "هذا اليوم",
+ rtl: true
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ar.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ar.js
new file mode 100644
index 00000000..608fe0d3
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ar.js
@@ -0,0 +1,15 @@
+/**
+ * Arabic translation for bootstrap-datepicker
+ * Mohammed Alshehri
+ */
+(function () {
+ Datepicker.locales.ar = {
+ days: ["الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت", "الأحد"],
+ daysShort: ["أحد", "اثنين", "ثلاثاء", "أربعاء", "خميس", "جمعة", "سبت", "أحد"],
+ daysMin: ["ح", "ن", "ث", "ع", "خ", "ج", "س", "ح"],
+ months: ["يناير", "فبراير", "مارس", "أبريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"],
+ monthsShort: ["يناير", "فبراير", "مارس", "أبريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"],
+ today: "هذا اليوم",
+ rtl: true
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/az.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/az.js
new file mode 100644
index 00000000..ae3d4def
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/az.js
@@ -0,0 +1,14 @@
+// Azerbaijani
+(function () {
+ Datepicker.locales.az = {
+ days: ["Bazar", "Bazar ertəsi", "Çərşənbə axşamı", "Çərşənbə", "Cümə axşamı", "Cümə", "Şənbə"],
+ daysShort: ["B.", "B.e", "Ç.a", "Ç.", "C.a", "C.", "Ş."],
+ daysMin: ["B.", "B.e", "Ç.a", "Ç.", "C.a", "C.", "Ş."],
+ months: ["Yanvar", "Fevral", "Mart", "Aprel", "May", "İyun", "İyul", "Avqust", "Sentyabr", "Oktyabr", "Noyabr", "Dekabr"],
+ monthsShort: ["Yan", "Fev", "Mar", "Apr", "May", "İyun", "İyul", "Avq", "Sen", "Okt", "Noy", "Dek"],
+ today: "Bu gün",
+ weekStart: 1,
+ clear: "Təmizlə",
+ monthsTitle: 'Aylar'
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/bg.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/bg.js
new file mode 100644
index 00000000..81d649ef
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/bg.js
@@ -0,0 +1,14 @@
+/**
+ * Bulgarian translation for bootstrap-datepicker
+ * Apostol Apostolov
+ */
+(function () {
+ Datepicker.locales.bg = {
+ days: ["Неделя", "Понеделник", "Вторник", "Сряда", "Четвъртък", "Петък", "Събота"],
+ daysShort: ["Нед", "Пон", "Вто", "Сря", "Чет", "Пет", "Съб"],
+ daysMin: ["Н", "П", "В", "С", "Ч", "П", "С"],
+ months: ["Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември"],
+ monthsShort: ["Ян", "Фев", "Мар", "Апр", "Май", "Юни", "Юли", "Авг", "Сеп", "Окт", "Ное", "Дек"],
+ today: "днес"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/bm.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/bm.js
new file mode 100644
index 00000000..57550b8f
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/bm.js
@@ -0,0 +1,18 @@
+/**
+ * Bamanankan (bm) translation for bootstrap-datepicker
+ * Fatou Fall
+ */
+(function () {
+ Datepicker.locales.bm = {
+ days: ["Kari","Ntɛnɛn","Tarata","Araba","Alamisa","Juma","Sibiri"],
+ daysShort: ["Kar","Ntɛ","Tar","Ara","Ala","Jum","Sib"],
+ daysMin: ["Ka","Nt","Ta","Ar","Al","Ju","Si"],
+ months: ["Zanwuyekalo","Fewuruyekalo","Marisikalo","Awirilikalo","Mɛkalo","Zuwɛnkalo","Zuluyekalo","Utikalo","Sɛtanburukalo","ɔkutɔburukalo","Nowanburukalo","Desanburukalo"],
+ monthsShort: ["Zan","Few","Mar","Awi","Mɛ","Zuw","Zul","Uti","Sɛt","ɔku","Now","Des"],
+ today: "Bi",
+ monthsTitle: "Kalo",
+ clear: "Ka jɔsi",
+ weekStart: 1,
+ format: "dd/mm/yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/bn.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/bn.js
new file mode 100644
index 00000000..6143362a
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/bn.js
@@ -0,0 +1,19 @@
+/**
+ * Bengali (Bangla) translation for bootstrap-datepicker
+ * Karim Khan
+ * Orif N. Jr.
+ */
+(function () {
+ Datepicker.locales.bn = {
+ days: ["রবিবার","সোমবার","মঙ্গলবার","বুধবার","বৃহস্পতিবার","শুক্রবার","শনিবার"],
+ daysShort: ["রবিবার","সোমবার","মঙ্গলবার","বুধবার","বৃহস্পতিবার","শুক্রবার","শনিবার"],
+ daysMin: ["রবি","সোম","মঙ্গল","বুধ","বৃহস্পতি","শুক্র","শনি"],
+ months: ["জানুয়ারী","ফেব্রুয়ারি","মার্চ","এপ্রিল","মে","জুন","জুলাই","অগাস্ট","সেপ্টেম্বর","অক্টোবর","নভেম্বর","ডিসেম্বর"],
+ monthsShort: ["জানুয়ারী","ফেব্রুয়ারি","মার্চ","এপ্রিল","মে","জুন","জুলাই","অগাস্ট","সেপ্টেম্বর","অক্টোবর","নভেম্বর","ডিসেম্বর"],
+ today: "আজ",
+ monthsTitle: "মাস",
+ clear: "পরিষ্কার",
+ weekStart: 0,
+ format: "mm/dd/yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/br.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/br.js
new file mode 100644
index 00000000..f6419a58
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/br.js
@@ -0,0 +1,18 @@
+/**
+ * Breton translation for bootstrap-datepicker
+ * Gwenn Meynier
+ */
+(function () {
+ Datepicker.locales.br = {
+ days: ["Sul", "Lun", "Meurzh", "Merc'her", "Yaou", "Gwener", "Sadorn"],
+ daysShort: ["Sul", "Lun", "Meu.", "Mer.", "Yao.", "Gwe.", "Sad."],
+ daysMin: ["Su", "L", "Meu", "Mer", "Y", "G", "Sa"],
+ months: ["Genver", "C'hwevrer", "Meurzh", "Ebrel", "Mae", "Mezheven", "Gouere", "Eost", "Gwengolo", "Here", "Du", "Kerzu"],
+ monthsShort: ["Genv.", "C'hw.", "Meur.", "Ebre.", "Mae", "Mezh.", "Goue.", "Eost", "Gwen.", "Here", "Du", "Kerz."],
+ today: "Hiziv",
+ monthsTitle: "Miz",
+ clear: "Dilemel",
+ weekStart: 1,
+ format: "dd/mm/yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/bs.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/bs.js
new file mode 100644
index 00000000..306f163d
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/bs.js
@@ -0,0 +1,15 @@
+/**
+ * Bosnian translation for bootstrap-datepicker
+ */
+(function () {
+ Datepicker.locales.bs = {
+ days: ["Nedjelja","Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota"],
+ daysShort: ["Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub"],
+ daysMin: ["N", "Po", "U", "Sr", "Č", "Pe", "Su"],
+ months: ["Januar", "Februar", "Mart", "April", "Maj", "Juni", "Juli", "August", "Septembar", "Oktobar", "Novembar", "Decembar"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
+ today: "Danas",
+ weekStart: 1,
+ format: "dd.mm.yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ca.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ca.js
new file mode 100644
index 00000000..93e130b7
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ca.js
@@ -0,0 +1,18 @@
+/**
+ * Catalan translation for bootstrap-datepicker
+ * J. Garcia
+ */
+(function () {
+ Datepicker.locales.ca = {
+ days: ["Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte"],
+ daysShort: ["Diu", "Dil", "Dmt", "Dmc", "Dij", "Div", "Dis"],
+ daysMin: ["dg", "dl", "dt", "dc", "dj", "dv", "ds"],
+ months: ["Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre"],
+ monthsShort: ["Gen", "Feb", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Oct", "Nov", "Des"],
+ today: "Avui",
+ monthsTitle: "Mesos",
+ clear: "Esborrar",
+ weekStart: 1,
+ format: "dd/mm/yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/cs.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/cs.js
new file mode 100644
index 00000000..7531dda8
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/cs.js
@@ -0,0 +1,19 @@
+/**
+ * Czech translation for bootstrap-datepicker
+ * Matěj Koubík
+ * Fixes by Michal Remiš
+ */
+(function () {
+ Datepicker.locales.cs = {
+ days: ["Neděle", "Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota"],
+ daysShort: ["Ned", "Pon", "Úte", "Stř", "Čtv", "Pát", "Sob"],
+ daysMin: ["Ne", "Po", "Út", "St", "Čt", "Pá", "So"],
+ months: ["Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"],
+ monthsShort: ["Led", "Úno", "Bře", "Dub", "Kvě", "Čer", "Čnc", "Srp", "Zář", "Říj", "Lis", "Pro"],
+ today: "Dnes",
+ clear: "Vymazat",
+ monthsTitle: "Měsíc",
+ weekStart: 1,
+ format: "dd.mm.yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/cy.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/cy.js
new file mode 100644
index 00000000..7c609992
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/cy.js
@@ -0,0 +1,14 @@
+/**
+ * Welsh translation for bootstrap-datepicker
+ * S. Morris
+ */
+(function () {
+ Datepicker.locales.cy = {
+ days: ["Sul", "Llun", "Mawrth", "Mercher", "Iau", "Gwener", "Sadwrn"],
+ daysShort: ["Sul", "Llu", "Maw", "Mer", "Iau", "Gwe", "Sad"],
+ daysMin: ["Su", "Ll", "Ma", "Me", "Ia", "Gwe", "Sa"],
+ months: ["Ionawr", "Chewfror", "Mawrth", "Ebrill", "Mai", "Mehefin", "Gorfennaf", "Awst", "Medi", "Hydref", "Tachwedd", "Rhagfyr"],
+ monthsShort: ["Ion", "Chw", "Maw", "Ebr", "Mai", "Meh", "Gor", "Aws", "Med", "Hyd", "Tach", "Rha"],
+ today: "Heddiw"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/da.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/da.js
new file mode 100644
index 00000000..fb7a1896
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/da.js
@@ -0,0 +1,19 @@
+/**
+ * Danish translation for bootstrap-datepicker
+ * Christian Pedersen
+ * Ivan Mylyanyk
+ */
+(function () {
+ Datepicker.locales.da = {
+ days: ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag"],
+ daysShort: ["Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør"],
+ daysMin: ["Sø", "Ma", "Ti", "On", "To", "Fr", "Lø"],
+ months: ["Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
+ today: "I Dag",
+ weekStart: 1,
+ clear: "Nulstil",
+ format: "dd/mm/yyyy",
+ monthsTitle: "Måneder"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/de.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/de.js
new file mode 100644
index 00000000..60c87be5
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/de.js
@@ -0,0 +1,18 @@
+/**
+ * German translation for bootstrap-datepicker
+ * Sam Zurcher
+ */
+(function () {
+ Datepicker.locales.de = {
+ days: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"],
+ daysShort: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"],
+ daysMin: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"],
+ months: ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"],
+ monthsShort: ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"],
+ today: "Heute",
+ monthsTitle: "Monate",
+ clear: "Löschen",
+ weekStart: 1,
+ format: "dd.mm.yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/el.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/el.js
new file mode 100644
index 00000000..a65a21dc
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/el.js
@@ -0,0 +1,16 @@
+/**
+ * Greek translation for bootstrap-datepicker
+ */
+(function () {
+ Datepicker.locales.el = {
+ days: ["Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο"],
+ daysShort: ["Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ"],
+ daysMin: ["Κυ", "Δε", "Τρ", "Τε", "Πε", "Πα", "Σα"],
+ months: ["Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάιος", "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος"],
+ monthsShort: ["Ιαν", "Φεβ", "Μαρ", "Απρ", "Μάι", "Ιουν", "Ιουλ", "Αυγ", "Σεπ", "Οκτ", "Νοε", "Δεκ"],
+ today: "Σήμερα",
+ clear: "Καθαρισμός",
+ weekStart: 1,
+ format: "d/m/yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/en-AU.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/en-AU.js
new file mode 100644
index 00000000..6d845561
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/en-AU.js
@@ -0,0 +1,18 @@
+/**
+ * Australian English translation for bootstrap-datepicker
+ * Steve Chapman
+ */
+(function () {
+ Datepicker.locales['en-AU'] = {
+ days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
+ daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
+ daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
+ months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+ today: "Today",
+ monthsTitle: "Months",
+ clear: "Clear",
+ weekStart: 1,
+ format: "d/mm/yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/en-CA.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/en-CA.js
new file mode 100644
index 00000000..3a35c32d
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/en-CA.js
@@ -0,0 +1,18 @@
+/**
+ * Canadian English translation for bootstrap-datepicker
+ * Mike Nacey
+ */
+(function () {
+ Datepicker.locales['en-CA'] = {
+ days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
+ daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
+ daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
+ months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+ today: "Today",
+ monthsTitle: "Months",
+ clear: "Clear",
+ weekStart: 0,
+ format: "yyyy-mm-dd"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/en-GB.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/en-GB.js
new file mode 100644
index 00000000..da848f97
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/en-GB.js
@@ -0,0 +1,18 @@
+/**
+ * British English translation for bootstrap-datepicker
+ * Xavier Dutreilh
+ */
+(function () {
+ Datepicker.locales['en-GB'] = {
+ days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
+ daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
+ daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
+ months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+ today: "Today",
+ monthsTitle: "Months",
+ clear: "Clear",
+ weekStart: 1,
+ format: "dd/mm/yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/en-IE.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/en-IE.js
new file mode 100644
index 00000000..1a41302c
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/en-IE.js
@@ -0,0 +1,17 @@
+/**
+ * Irish English translation for bootstrap-datepicker
+ */
+(function () {
+ Datepicker.locales['en-IE'] = {
+ days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
+ daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
+ daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
+ months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+ today: "Today",
+ monthsTitle: "Months",
+ clear: "Clear",
+ weekStart: 1,
+ format: "dd/mm/yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/en-NZ.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/en-NZ.js
new file mode 100644
index 00000000..dd34ac41
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/en-NZ.js
@@ -0,0 +1,17 @@
+/**
+ * New Zealand English translation for bootstrap-datepicker
+ */
+(function () {
+ Datepicker.locales['en-NZ'] = {
+ days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
+ daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
+ daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
+ months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+ today: "Today",
+ monthsTitle: "Months",
+ clear: "Clear",
+ weekStart: 1,
+ format: "d/mm/yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/en-ZA.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/en-ZA.js
new file mode 100644
index 00000000..6455097d
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/en-ZA.js
@@ -0,0 +1,17 @@
+/**
+ * South African English translation for bootstrap-datepicker
+ */
+(function () {
+ Datepicker.locales['en-ZA'] = {
+ days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
+ daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
+ daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
+ months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+ today: "Today",
+ monthsTitle: "Months",
+ clear: "Clear",
+ weekStart: 1,
+ format: "yyyy/mm/d"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/eo.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/eo.js
new file mode 100644
index 00000000..f6830655
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/eo.js
@@ -0,0 +1,17 @@
+/**
+ * Esperanto translation for bootstrap-datepicker
+ * Emmanuel Debanne
+ */
+(function () {
+ Datepicker.locales.eo = {
+ days: ["dimanĉo", "lundo", "mardo", "merkredo", "ĵaŭdo", "vendredo", "sabato"],
+ daysShort: ["dim.", "lun.", "mar.", "mer.", "ĵaŭ.", "ven.", "sam."],
+ daysMin: ["d", "l", "ma", "me", "ĵ", "v", "s"],
+ months: ["januaro", "februaro", "marto", "aprilo", "majo", "junio", "julio", "aŭgusto", "septembro", "oktobro", "novembro", "decembro"],
+ monthsShort: ["jan.", "feb.", "mar.", "apr.", "majo", "jun.", "jul.", "aŭg.", "sep.", "okt.", "nov.", "dec."],
+ today: "Hodiaŭ",
+ clear: "Nuligi",
+ weekStart: 1,
+ format: "yyyy-mm-dd"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/es.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/es.js
new file mode 100644
index 00000000..d2be3f87
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/es.js
@@ -0,0 +1,18 @@
+/**
+ * Spanish translation for bootstrap-datepicker
+ * Bruno Bonamin
+ */
+(function () {
+ Datepicker.locales.es = {
+ days: ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"],
+ daysShort: ["Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb"],
+ daysMin: ["Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa"],
+ months: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"],
+ monthsShort: ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"],
+ today: "Hoy",
+ monthsTitle: "Meses",
+ clear: "Borrar",
+ weekStart: 1,
+ format: "dd/mm/yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/et.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/et.js
new file mode 100644
index 00000000..35a71def
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/et.js
@@ -0,0 +1,18 @@
+/**
+ * Estonian translation for bootstrap-datepicker
+ * Ando Roots
+ * Fixes by Illimar Tambek <
+ */
+(function () {
+ Datepicker.locales.et = {
+ days: ["Pühapäev", "Esmaspäev", "Teisipäev", "Kolmapäev", "Neljapäev", "Reede", "Laupäev"],
+ daysShort: ["Pühap", "Esmasp", "Teisip", "Kolmap", "Neljap", "Reede", "Laup"],
+ daysMin: ["P", "E", "T", "K", "N", "R", "L"],
+ months: ["Jaanuar", "Veebruar", "Märts", "Aprill", "Mai", "Juuni", "Juuli", "August", "September", "Oktoober", "November", "Detsember"],
+ monthsShort: ["Jaan", "Veebr", "Märts", "Apr", "Mai", "Juuni", "Juuli", "Aug", "Sept", "Okt", "Nov", "Dets"],
+ today: "Täna",
+ clear: "Tühjenda",
+ weekStart: 1,
+ format: "dd.mm.yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/eu.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/eu.js
new file mode 100644
index 00000000..fd664f20
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/eu.js
@@ -0,0 +1,18 @@
+/**
+ * Basque translation for bootstrap-datepicker
+ * Arkaitz Etxeberria
+ */
+(function () {
+ Datepicker.locales.eu = {
+ days: ['Igandea', 'Astelehena', 'Asteartea', 'Asteazkena', 'Osteguna', 'Ostirala', 'Larunbata'],
+ daysShort: ['Ig', 'Al', 'Ar', 'Az', 'Og', 'Ol', 'Lr'],
+ daysMin: ['Ig', 'Al', 'Ar', 'Az', 'Og', 'Ol', 'Lr'],
+ months: ['Urtarrila', 'Otsaila', 'Martxoa', 'Apirila', 'Maiatza', 'Ekaina', 'Uztaila', 'Abuztua', 'Iraila', 'Urria', 'Azaroa', 'Abendua'],
+ monthsShort: ['Urt', 'Ots', 'Mar', 'Api', 'Mai', 'Eka', 'Uzt', 'Abu', 'Ira', 'Urr', 'Aza', 'Abe'],
+ today: "Gaur",
+ monthsTitle: "Hilabeteak",
+ clear: "Ezabatu",
+ weekStart: 1,
+ format: "yyyy/mm/dd"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/fa.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/fa.js
new file mode 100644
index 00000000..3e1e43e8
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/fa.js
@@ -0,0 +1,17 @@
+/**
+ * Persian translation for bootstrap-datepicker
+ * Mostafa Rokooie
+ */
+(function () {
+ Datepicker.locales.fa = {
+ days: ["یکشنبه", "دوشنبه", "سهشنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه", "یکشنبه"],
+ daysShort: ["یک", "دو", "سه", "چهار", "پنج", "جمعه", "شنبه", "یک"],
+ daysMin: ["ی", "د", "س", "چ", "پ", "ج", "ش", "ی"],
+ months: ["ژانویه", "فوریه", "مارس", "آوریل", "مه", "ژوئن", "ژوئیه", "اوت", "سپتامبر", "اکتبر", "نوامبر", "دسامبر"],
+ monthsShort: ["ژان", "فور", "مار", "آور", "مه", "ژون", "ژوی", "اوت", "سپت", "اکت", "نوا", "دسا"],
+ today: "امروز",
+ clear: "پاک کن",
+ weekStart: 1,
+ format: "yyyy/mm/dd"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/fi.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/fi.js
new file mode 100644
index 00000000..c5e35cf1
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/fi.js
@@ -0,0 +1,17 @@
+/**
+ * Finnish translation for bootstrap-datepicker
+ * Jaakko Salonen
+ */
+(function () {
+ Datepicker.locales.fi = {
+ days: ["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai"],
+ daysShort: ["sun", "maa", "tii", "kes", "tor", "per", "lau"],
+ daysMin: ["su", "ma", "ti", "ke", "to", "pe", "la"],
+ months: ["tammikuu", "helmikuu", "maaliskuu", "huhtikuu", "toukokuu", "kesäkuu", "heinäkuu", "elokuu", "syyskuu", "lokakuu", "marraskuu", "joulukuu"],
+ monthsShort: ["tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mar", "jou"],
+ today: "tänään",
+ clear: "Tyhjennä",
+ weekStart: 1,
+ format: "d.m.yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/fo.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/fo.js
new file mode 100644
index 00000000..18d19491
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/fo.js
@@ -0,0 +1,15 @@
+/**
+ * Faroese translation for bootstrap-datepicker
+ * Theodor Johannesen
+ */
+(function () {
+ Datepicker.locales.fo = {
+ days: ["Sunnudagur", "Mánadagur", "Týsdagur", "Mikudagur", "Hósdagur", "Fríggjadagur", "Leygardagur"],
+ daysShort: ["Sun", "Mán", "Týs", "Mik", "Hós", "Frí", "Ley"],
+ daysMin: ["Su", "Má", "Tý", "Mi", "Hó", "Fr", "Le"],
+ months: ["Januar", "Februar", "Marts", "Apríl", "Mei", "Juni", "Juli", "August", "Septembur", "Oktobur", "Novembur", "Desembur"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des"],
+ today: "Í Dag",
+ clear: "Reinsa"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/fr-CH.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/fr-CH.js
new file mode 100644
index 00000000..278a638b
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/fr-CH.js
@@ -0,0 +1,21 @@
+/**
+ * French (Switzerland) translation for bootstrap-datepicker
+ * Christoph Jossi
+ * Based on
+ * French translation for bootstrap-datepicker
+ * Nico Mollet
+ */
+(function () {
+ Datepicker.locales['fr-CH'] = {
+ days: ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"],
+ daysShort: ["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam"],
+ daysMin: ["D", "L", "Ma", "Me", "J", "V", "S"],
+ months: ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"],
+ monthsShort: ["Jan", "Fév", "Mar", "Avr", "Mai", "Jui", "Jul", "Aou", "Sep", "Oct", "Nov", "Déc"],
+ today: "Aujourd'hui",
+ monthsTitle: "Mois",
+ clear: "Effacer",
+ weekStart: 1,
+ format: "dd.mm.yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/fr.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/fr.js
new file mode 100644
index 00000000..86323f88
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/fr.js
@@ -0,0 +1,18 @@
+/**
+ * French translation for bootstrap-datepicker
+ * Nico Mollet
+ */
+(function () {
+ Datepicker.locales.fr = {
+ days: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"],
+ daysShort: ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."],
+ daysMin: ["d", "l", "ma", "me", "j", "v", "s"],
+ months: ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"],
+ monthsShort: ["janv.", "févr.", "mars", "avril", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc."],
+ today: "Aujourd'hui",
+ monthsTitle: "Mois",
+ clear: "Effacer",
+ weekStart: 1,
+ format: "dd/mm/yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/gl.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/gl.js
new file mode 100644
index 00000000..1b52b5a4
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/gl.js
@@ -0,0 +1,16 @@
+/**
+ * Galician translation
+ */
+(function () {
+ Datepicker.locales.gl = {
+ days: ["Domingo", "Luns", "Martes", "Mércores", "Xoves", "Venres", "Sábado"],
+ daysShort: ["Dom", "Lun", "Mar", "Mér", "Xov", "Ven", "Sáb"],
+ daysMin: ["Do", "Lu", "Ma", "Me", "Xo", "Ve", "Sa"],
+ months: ["Xaneiro", "Febreiro", "Marzo", "Abril", "Maio", "Xuño", "Xullo", "Agosto", "Setembro", "Outubro", "Novembro", "Decembro"],
+ monthsShort: ["Xan", "Feb", "Mar", "Abr", "Mai", "Xun", "Xul", "Ago", "Sep", "Out", "Nov", "Dec"],
+ today: "Hoxe",
+ clear: "Limpar",
+ weekStart: 1,
+ format: "dd/mm/yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/he.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/he.js
new file mode 100644
index 00000000..4c1138f7
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/he.js
@@ -0,0 +1,15 @@
+/**
+ * Hebrew translation for bootstrap-datepicker
+ * Sagie Maoz
+ */
+(function () {
+ Datepicker.locales.he = {
+ days: ["ראשון", "שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת", "ראשון"],
+ daysShort: ["א", "ב", "ג", "ד", "ה", "ו", "ש", "א"],
+ daysMin: ["א", "ב", "ג", "ד", "ה", "ו", "ש", "א"],
+ months: ["ינואר", "פברואר", "מרץ", "אפריל", "מאי", "יוני", "יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר"],
+ monthsShort: ["ינו", "פבר", "מרץ", "אפר", "מאי", "יונ", "יול", "אוג", "ספט", "אוק", "נוב", "דצמ"],
+ today: "היום",
+ rtl: true
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/hi.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/hi.js
new file mode 100644
index 00000000..48e41cc3
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/hi.js
@@ -0,0 +1,18 @@
+/**
+ * Hindi translation for bootstrap-datepicker
+ * Visar Uruqi
+ */
+(function () {
+ Datepicker.locales.hi = {
+ days: ["रविवार", "सोमवार", "मंगलवार", "बुधवार", "गुरुवार", "शुक्रवार", "शनिवार"],
+ daysShort: ["सूर्य", "सोम", "मंगल", "बुध", "गुरु", "शुक्र", "शनि"],
+ daysMin: ["र", "सो", "मं", "बु", "गु", "शु", "श"],
+ months: ["जनवरी", "फ़रवरी", "मार्च", "अप्रैल", "मई", "जून", "जुलाई", "अगस्त", "सितम्बर", "अक्टूबर", "नवंबर", "दिसम्बर"],
+ monthsShort: ["जन", "फ़रवरी", "मार्च", "अप्रैल", "मई", "जून", "जुलाई", "अगस्त", "सितं", "अक्टूबर", "नवं", "दिसम्बर"],
+ today: "आज",
+ monthsTitle: "महीने",
+ clear: "साफ",
+ weekStart: 1,
+ format: "dd / mm / yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/hr.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/hr.js
new file mode 100644
index 00000000..18544a0e
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/hr.js
@@ -0,0 +1,13 @@
+/**
+ * Croatian localisation
+ */
+(function () {
+ Datepicker.locales.hr = {
+ days: ["Nedjelja", "Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota"],
+ daysShort: ["Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub"],
+ daysMin: ["Ne", "Po", "Ut", "Sr", "Če", "Pe", "Su"],
+ months: ["Siječanj", "Veljača", "Ožujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac"],
+ monthsShort: ["Sij", "Velj", "Ožu", "Tra", "Svi", "Lip", "Srp", "Kol", "Ruj", "Lis", "Stu", "Pro"],
+ today: "Danas"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/hu.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/hu.js
new file mode 100644
index 00000000..5eaffa61
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/hu.js
@@ -0,0 +1,18 @@
+/**
+ * Hungarian translation for bootstrap-datepicker
+ * Sotus László
+ */
+(function () {
+ Datepicker.locales.hu = {
+ days: ["vasárnap", "hétfő", "kedd", "szerda", "csütörtök", "péntek", "szombat"],
+ daysShort: ["vas", "hét", "ked", "sze", "csü", "pén", "szo"],
+ daysMin: ["V", "H", "K", "Sze", "Cs", "P", "Szo"],
+ months: ["január", "február", "március", "április", "május", "június", "július", "augusztus", "szeptember", "október", "november", "december"],
+ monthsShort: ["jan", "feb", "már", "ápr", "máj", "jún", "júl", "aug", "sze", "okt", "nov", "dec"],
+ today: "ma",
+ weekStart: 1,
+ clear: "töröl",
+ titleFormat: "y. MM",
+ format: "yyyy.mm.dd"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/hy.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/hy.js
new file mode 100644
index 00000000..dd662d0d
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/hy.js
@@ -0,0 +1,18 @@
+/**
+ * Armenian translation for bootstrap-datepicker
+ * Hayk Chamyan
+ */
+(function () {
+ Datepicker.locales.hy = {
+ days: ["Կիրակի", "Երկուշաբթի", "Երեքշաբթի", "Չորեքշաբթի", "Հինգշաբթի", "Ուրբաթ", "Շաբաթ"],
+ daysShort: ["Կիր", "Երկ", "Երե", "Չոր", "Հին", "Ուրբ", "Շաբ"],
+ daysMin: ["Կի", "Եկ", "Եք", "Չո", "Հի", "Ու", "Շա"],
+ months: ["Հունվար", "Փետրվար", "Մարտ", "Ապրիլ", "Մայիս", "Հունիս", "Հուլիս", "Օգոստոս", "Սեպտեմբեր", "Հոկտեմբեր", "Նոյեմբեր", "Դեկտեմբեր"],
+ monthsShort: ["Հնվ", "Փետ", "Մար", "Ապր", "Մայ", "Հուն", "Հուլ", "Օգս", "Սեպ", "Հոկ", "Նոյ", "Դեկ"],
+ today: "Այսօր",
+ clear: "Ջնջել",
+ format: "dd.mm.yyyy",
+ weekStart: 1,
+ monthsTitle: 'Ամիսնէր'
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/id.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/id.js
new file mode 100644
index 00000000..c19beb1c
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/id.js
@@ -0,0 +1,15 @@
+/**
+ * Bahasa translation for bootstrap-datepicker
+ * Azwar Akbar
+ */
+(function () {
+ Datepicker.locales.id = {
+ days: ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"],
+ daysShort: ["Mgu", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"],
+ daysMin: ["Mg", "Sn", "Sl", "Ra", "Ka", "Ju", "Sa"],
+ months: ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Ags", "Sep", "Okt", "Nov", "Des"],
+ today: "Hari Ini",
+ clear: "Kosongkan"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/is.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/is.js
new file mode 100644
index 00000000..18f818dc
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/is.js
@@ -0,0 +1,14 @@
+/**
+ * Icelandic translation for bootstrap-datepicker
+ * Hinrik Örn Sigurðsson
+ */
+(function () {
+ Datepicker.locales.is = {
+ days: ["Sunnudagur", "Mánudagur", "Þriðjudagur", "Miðvikudagur", "Fimmtudagur", "Föstudagur", "Laugardagur"],
+ daysShort: ["Sun", "Mán", "Þri", "Mið", "Fim", "Fös", "Lau"],
+ daysMin: ["Su", "Má", "Þr", "Mi", "Fi", "Fö", "La"],
+ months: ["Janúar", "Febrúar", "Mars", "Apríl", "Maí", "Júní", "Júlí", "Ágúst", "September", "Október", "Nóvember", "Desember"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maí", "Jún", "Júl", "Ágú", "Sep", "Okt", "Nóv", "Des"],
+ today: "Í Dag"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/it-CH.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/it-CH.js
new file mode 100644
index 00000000..b1081cd4
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/it-CH.js
@@ -0,0 +1,20 @@
+/**
+ * Italian (Switzerland) translation for bootstrap-datepicker
+ * Christoph Jossi
+ * Based on
+ * Italian translation for bootstrap-datepicker
+ * Enrico Rubboli
+ */
+(function () {
+ Datepicker.locales['it-CH'] = {
+ days: ["Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"],
+ daysShort: ["Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab"],
+ daysMin: ["Do", "Lu", "Ma", "Me", "Gi", "Ve", "Sa"],
+ months: ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"],
+ monthsShort: ["Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic"],
+ today: "Oggi",
+ clear: "Cancella",
+ weekStart: 1,
+ format: "dd.mm.yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/it.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/it.js
new file mode 100644
index 00000000..70d98ab7
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/it.js
@@ -0,0 +1,18 @@
+/**
+ * Italian translation for bootstrap-datepicker
+ * Enrico Rubboli
+ */
+(function () {
+ Datepicker.locales.it = {
+ days: ["Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"],
+ daysShort: ["Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab"],
+ daysMin: ["Do", "Lu", "Ma", "Me", "Gi", "Ve", "Sa"],
+ months: ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"],
+ monthsShort: ["Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic"],
+ today: "Oggi",
+ monthsTitle: "Mesi",
+ clear: "Cancella",
+ weekStart: 1,
+ format: "dd/mm/yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ja.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ja.js
new file mode 100644
index 00000000..f1c1b303
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ja.js
@@ -0,0 +1,17 @@
+/**
+ * Japanese translation for bootstrap-datepicker
+ * Norio Suzuki
+ */
+(function () {
+ Datepicker.locales.ja = {
+ days: ["日曜", "月曜", "火曜", "水曜", "木曜", "金曜", "土曜"],
+ daysShort: ["日", "月", "火", "水", "木", "金", "土"],
+ daysMin: ["日", "月", "火", "水", "木", "金", "土"],
+ months: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
+ monthsShort: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
+ today: "今日",
+ format: "yyyy/mm/dd",
+ titleFormat: "y年mm月",
+ clear: "クリア"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ka.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ka.js
new file mode 100644
index 00000000..b0cd474a
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ka.js
@@ -0,0 +1,17 @@
+/**
+ * Georgian translation for bootstrap-datepicker
+ * Levan Melikishvili
+ */
+(function () {
+ Datepicker.locales.ka = {
+ days: ["კვირა", "ორშაბათი", "სამშაბათი", "ოთხშაბათი", "ხუთშაბათი", "პარასკევი", "შაბათი"],
+ daysShort: ["კვი", "ორშ", "სამ", "ოთხ", "ხუთ", "პარ", "შაბ"],
+ daysMin: ["კვ", "ორ", "სა", "ოთ", "ხუ", "პა", "შა"],
+ months: ["იანვარი", "თებერვალი", "მარტი", "აპრილი", "მაისი", "ივნისი", "ივლისი", "აგვისტო", "სექტემბერი", "ოქტომბერი", "ნოემბერი", "დეკემბერი"],
+ monthsShort: ["იან", "თებ", "მარ", "აპრ", "მაი", "ივნ", "ივლ", "აგვ", "სექ", "ოქტ", "ნოე", "დეკ"],
+ today: "დღეს",
+ clear: "გასუფთავება",
+ weekStart: 1,
+ format: "dd.mm.yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/kk.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/kk.js
new file mode 100644
index 00000000..9b85f8cf
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/kk.js
@@ -0,0 +1,15 @@
+/**
+ * Kazakh translation for bootstrap-datepicker
+ * Yerzhan Tolekov
+ */
+(function () {
+ Datepicker.locales.kk = {
+ days: ["Жексенбі", "Дүйсенбі", "Сейсенбі", "Сәрсенбі", "Бейсенбі", "Жұма", "Сенбі"],
+ daysShort: ["Жек", "Дүй", "Сей", "Сәр", "Бей", "Жұм", "Сен"],
+ daysMin: ["Жк", "Дс", "Сс", "Ср", "Бс", "Жм", "Сн"],
+ months: ["Қаңтар", "Ақпан", "Наурыз", "Сәуір", "Мамыр", "Маусым", "Шілде", "Тамыз", "Қыркүйек", "Қазан", "Қараша", "Желтоқсан"],
+ monthsShort: ["Қаң", "Ақп", "Нау", "Сәу", "Мам", "Мау", "Шіл", "Там", "Қыр", "Қаз", "Қар", "Жел"],
+ today: "Бүгін",
+ weekStart: 1
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/km.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/km.js
new file mode 100644
index 00000000..71e294cd
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/km.js
@@ -0,0 +1,15 @@
+/**
+ * Khmer translation for bootstrap-datepicker
+ * This is the Updated Version of: https: //github.com/uxsolutions/bootstrap-datepicker/blob/71308d42cce9524284c50c6fac50422d1790ac0f/js/locales/bootstrap-datepicker.kh.js
+ */
+(function () {
+ Datepicker.locales.km = {
+ days: ["អាទិត្យ", "ចន្ទ", "អង្គារ", "ពុធ", "ព្រហស្បតិ៍", "សុក្រ", "សៅរ៍"],
+ daysShort: ["អា.ទិ", "ចន្ទ", "អង្គារ", "ពុធ", "ព្រ.ហ", "សុក្រ", "សៅរ៍"],
+ daysMin: ["អា.ទិ", "ចន្ទ", "អង្គារ", "ពុធ", "ព្រ.ហ", "សុក្រ", "សៅរ៍"],
+ months: ["មករា", "កុម្ភះ", "មិនា", "មេសា", "ឧសភា", "មិថុនា", "កក្កដា", "សីហា", "កញ្ញា", "តុលា", "វិច្ឆិកា", "ធ្នូ"],
+ monthsShort: ["មករា", "កុម្ភះ", "មិនា", "មេសា", "ឧសភា", "មិថុនា", "កក្កដា", "សីហា", "កញ្ញា", "តុលា", "វិច្ឆិកា", "ធ្នូ"],
+ today: "ថ្ងៃនេះ",
+ clear: "សំអាត"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ko.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ko.js
new file mode 100644
index 00000000..3be9400b
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ko.js
@@ -0,0 +1,18 @@
+/**
+ * Korean translation for bootstrap-datepicker
+ * This is a port from https: //github.com/moment/moment/blob/develop/src/locale/ko.js
+ */
+(function () {
+ Datepicker.locales.ko = {
+ days: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"],
+ daysShort: ["일", "월", "화", "수", "목", "금", "토"],
+ daysMin: ["일", "월", "화", "수", "목", "금", "토"],
+ months: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
+ monthsShort: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
+ today: "오늘",
+ clear: "삭제",
+ format: "yyyy-mm-dd",
+ titleFormat: "y년mm월",
+ weekStart: 0
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/lt.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/lt.js
new file mode 100644
index 00000000..894e8cbc
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/lt.js
@@ -0,0 +1,19 @@
+/**
+ * Lithuanian translation for bootstrap-datepicker
+ * Šarūnas Gliebus
+ */
+
+(function () {
+ Datepicker.locales.lt = {
+ days: ["Sekmadienis", "Pirmadienis", "Antradienis", "Trečiadienis", "Ketvirtadienis", "Penktadienis", "Šeštadienis"],
+ daysShort: ["S", "Pr", "A", "T", "K", "Pn", "Š"],
+ daysMin: ["Sk", "Pr", "An", "Tr", "Ke", "Pn", "Št"],
+ months: ["Sausis", "Vasaris", "Kovas", "Balandis", "Gegužė", "Birželis", "Liepa", "Rugpjūtis", "Rugsėjis", "Spalis", "Lapkritis", "Gruodis"],
+ monthsShort: ["Sau", "Vas", "Kov", "Bal", "Geg", "Bir", "Lie", "Rugp", "Rugs", "Spa", "Lap", "Gru"],
+ today: "Šiandien",
+ monthsTitle: "Mėnesiai",
+ clear: "Išvalyti",
+ weekStart: 1,
+ format: "yyyy-mm-dd"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/lv.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/lv.js
new file mode 100644
index 00000000..109014b9
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/lv.js
@@ -0,0 +1,18 @@
+/**
+ * Latvian translation for bootstrap-datepicker
+ * Artis Avotins
+ */
+
+(function () {
+ Datepicker.locales.lv = {
+ days: ["Svētdiena", "Pirmdiena", "Otrdiena", "Trešdiena", "Ceturtdiena", "Piektdiena", "Sestdiena"],
+ daysShort: ["Sv", "P", "O", "T", "C", "Pk", "S"],
+ daysMin: ["Sv", "Pr", "Ot", "Tr", "Ce", "Pk", "Se"],
+ months: ["Janvāris", "Februāris", "Marts", "Aprīlis", "Maijs", "Jūnijs", "Jūlijs", "Augusts", "Septembris", "Oktobris", "Novembris", "Decembris"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jūn", "Jūl", "Aug", "Sep", "Okt", "Nov", "Dec"],
+ monthsTitle: "Mēneši",
+ today: "Šodien",
+ clear: "Nodzēst",
+ weekStart: 1
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/me.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/me.js
new file mode 100644
index 00000000..6ecc0972
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/me.js
@@ -0,0 +1,17 @@
+/**
+ * Montenegrin translation for bootstrap-datepicker
+ * Miodrag Nikač
+ */
+(function () {
+ Datepicker.locales.me = {
+ days: ["Nedjelja","Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota"],
+ daysShort: ["Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub"],
+ daysMin: ["Ne", "Po", "Ut", "Sr", "Če", "Pe", "Su"],
+ months: ["Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Avg", "Sep", "Okt", "Nov", "Dec"],
+ today: "Danas",
+ weekStart: 1,
+ clear: "Izbriši",
+ format: "dd.mm.yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/mk.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/mk.js
new file mode 100644
index 00000000..df87e2d1
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/mk.js
@@ -0,0 +1,15 @@
+/**
+ * Macedonian translation for bootstrap-datepicker
+ * Marko Aleksic
+ */
+(function () {
+ Datepicker.locales.mk = {
+ days: ["Недела", "Понеделник", "Вторник", "Среда", "Четврток", "Петок", "Сабота"],
+ daysShort: ["Нед", "Пон", "Вто", "Сре", "Чет", "Пет", "Саб"],
+ daysMin: ["Не", "По", "Вт", "Ср", "Че", "Пе", "Са"],
+ months: ["Јануари", "Февруари", "Март", "Април", "Мај", "Јуни", "Јули", "Август", "Септември", "Октомври", "Ноември", "Декември"],
+ monthsShort: ["Јан", "Фев", "Мар", "Апр", "Мај", "Јун", "Јул", "Авг", "Сеп", "Окт", "Ное", "Дек"],
+ today: "Денес",
+ format: "dd.mm.yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/mn.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/mn.js
new file mode 100644
index 00000000..c080280b
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/mn.js
@@ -0,0 +1,17 @@
+/**
+ * Mongolian translation for bootstrap-datepicker
+ * Andrey Torsunov
+ */
+(function () {
+ Datepicker.locales.mn = {
+ days: ["Ням", "Даваа", "Мягмар", "Лхагва", "Пүрэв", "Баасан", "Бямба"],
+ daysShort: ["Ням", "Дав", "Мяг", "Лха", "Пүр", "Баа", "Бям"],
+ daysMin: ["Ня", "Да", "Мя", "Лх", "Пү", "Ба", "Бя"],
+ months: ["Хулгана", "Үхэр", "Бар", "Туулай", "Луу", "Могой", "Морь", "Хонь", "Бич", "Тахиа", "Нохой", "Гахай"],
+ monthsShort: ["Хул", "Үхэ", "Бар", "Туу", "Луу", "Мог", "Мор", "Хон", "Бич", "Тах", "Нох", "Гах"],
+ today: "Өнөөдөр",
+ clear: "Тодорхой",
+ format: "yyyy.mm.dd",
+ weekStart: 1
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/mr.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/mr.js
new file mode 100644
index 00000000..67289df2
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/mr.js
@@ -0,0 +1,18 @@
+/**
+ * Marathi translation for bootstrap-datepicker
+ * Sushant Pimple
+ */
+(function () {
+ Datepicker.locales.mr = {
+ days: ["रविवार", "सोमवार", "मंगळवार", "बुधवार", "गुरुवार", "शुक्रवार", "शनिवार"],
+ daysShort: ["रवि", "सोम", "मंगळ", "बुध", "गुरु", "शुक्र", "शनि"],
+ daysMin: ["र", "सो", "मं", "बु", "गु", "शु", "श"],
+ months: ["जानेवारी", "फेब्रुवारी", "मार्च", "एप्रिल", "मे", "जून", "जुलै", "ऑगस्ट", "सप्टेंबर", "ऑक्टोबर", "नोव्हेंबर", "डिसेंबर"],
+ monthsShort: ["जाने.", "फेब्रु.", "मार्च", "एप्रिल", "मे", "जून", "जुलै", "ऑगस्ट", "सप्टें.", "ऑक्टो.", "नोव्हें.", "डिसें."],
+ today: "आज",
+ monthsTitle: "महीने",
+ clear: "हटवा",
+ weekStart: 1,
+ format: "dd / mm / yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ms.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ms.js
new file mode 100644
index 00000000..20283bd4
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ms.js
@@ -0,0 +1,15 @@
+/**
+ * Malay translation for bootstrap-datepicker
+ * Ateman Faiz
+ */
+(function () {
+ Datepicker.locales.ms = {
+ days: ["Ahad", "Isnin", "Selasa", "Rabu", "Khamis", "Jumaat", "Sabtu"],
+ daysShort: ["Aha", "Isn", "Sel", "Rab", "Kha", "Jum", "Sab"],
+ daysMin: ["Ah", "Is", "Se", "Ra", "Kh", "Ju", "Sa"],
+ months: ["Januari", "Februari", "Mac", "April", "Mei", "Jun", "Julai", "Ogos", "September", "Oktober", "November", "Disember"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Ogo", "Sep", "Okt", "Nov", "Dis"],
+ today: "Hari Ini",
+ clear: "Bersihkan"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/nl-BE.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/nl-BE.js
new file mode 100644
index 00000000..6cf3d565
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/nl-BE.js
@@ -0,0 +1,18 @@
+/**
+ * Belgium-Dutch translation for bootstrap-datepicker
+ * Julien Poulin
+ */
+(function () {
+ Datepicker.locales['nl-BE'] = {
+ days: ["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"],
+ daysShort: ["zo", "ma", "di", "wo", "do", "vr", "za"],
+ daysMin: ["zo", "ma", "di", "wo", "do", "vr", "za"],
+ months: ["januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"],
+ monthsShort: ["jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec"],
+ today: "Vandaag",
+ monthsTitle: "Maanden",
+ clear: "Leegmaken",
+ weekStart: 1,
+ format: "dd/mm/yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/nl.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/nl.js
new file mode 100644
index 00000000..1bc12ea1
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/nl.js
@@ -0,0 +1,18 @@
+/**
+ * Dutch translation for bootstrap-datepicker
+ * Reinier Goltstein
+ */
+(function () {
+ Datepicker.locales.nl = {
+ days: ["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"],
+ daysShort: ["zo", "ma", "di", "wo", "do", "vr", "za"],
+ daysMin: ["zo", "ma", "di", "wo", "do", "vr", "za"],
+ months: ["januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"],
+ monthsShort: ["jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec"],
+ today: "Vandaag",
+ monthsTitle: "Maanden",
+ clear: "Wissen",
+ weekStart: 1,
+ format: "dd-mm-yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/no.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/no.js
new file mode 100644
index 00000000..d9c55fe4
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/no.js
@@ -0,0 +1,18 @@
+/**
+ * Norwegian translation for bootstrap-datepicker
+ * George Gooding
+ */
+(function () {
+ Datepicker.locales.no = {
+ days: ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'],
+ daysShort: ['søn', 'man', 'tir', 'ons', 'tor', 'fre', 'lør'],
+ daysMin: ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'],
+ months: ['januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember'],
+ monthsShort: ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'],
+ today: 'i dag',
+ monthsTitle: 'Måneder',
+ clear: 'Nullstill',
+ weekStart: 1,
+ format: 'dd.mm.yyyy'
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/oc.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/oc.js
new file mode 100644
index 00000000..c1d60074
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/oc.js
@@ -0,0 +1,17 @@
+/**
+ * Occitan translation for bootstrap-datepicker
+ */
+(function () {
+ Datepicker.locales.oc = {
+ days: ["Dimenge", "Diluns", "Dimars", "Dimècres", "Dijòus", "Divendres", "Dissabte"],
+ daysShort: ["Dim", "Dil", "Dmr", "Dmc", "Dij", "Div", "Dis"],
+ daysMin: ["dg", "dl", "dr", "dc", "dj", "dv", "ds"],
+ months: ["Genièr", "Febrièr", "Març", "Abrial", "Mai", "Junh", "Julhet", "Agost", "Setembre", "Octobre", "Novembre", "Decembre"],
+ monthsShort: ["Gen", "Feb", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Oct", "Nov", "Dec"],
+ today: "Uèi",
+ monthsTitle: "Meses",
+ clear: "Escafar",
+ weekStart: 1,
+ format: "dd/mm/yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/pl.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/pl.js
new file mode 100644
index 00000000..55444afd
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/pl.js
@@ -0,0 +1,17 @@
+/**
+ * Polish translation for bootstrap-datepicker
+ * Robert
+ */
+(function () {
+ Datepicker.locales.pl = {
+ days: ["Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota"],
+ daysShort: ["Niedz.", "Pon.", "Wt.", "Śr.", "Czw.", "Piąt.", "Sob."],
+ daysMin: ["Ndz.", "Pn.", "Wt.", "Śr.", "Czw.", "Pt.", "Sob."],
+ months: ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"],
+ monthsShort: ["Sty.", "Lut.", "Mar.", "Kwi.", "Maj", "Cze.", "Lip.", "Sie.", "Wrz.", "Paź.", "Lis.", "Gru."],
+ today: "Dzisiaj",
+ weekStart: 1,
+ clear: "Wyczyść",
+ format: "dd.mm.yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/pt-BR.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/pt-BR.js
new file mode 100644
index 00000000..fb855c90
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/pt-BR.js
@@ -0,0 +1,17 @@
+/**
+ * Brazilian translation for bootstrap-datepicker
+ * Cauan Cabral
+ */
+(function () {
+ Datepicker.locales['pt-BR'] = {
+ days: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"],
+ daysShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb"],
+ daysMin: ["Do", "Se", "Te", "Qu", "Qu", "Se", "Sa"],
+ months: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"],
+ monthsShort: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"],
+ today: "Hoje",
+ monthsTitle: "Meses",
+ clear: "Limpar",
+ format: "dd/mm/yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/pt.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/pt.js
new file mode 100644
index 00000000..f25cf9b4
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/pt.js
@@ -0,0 +1,18 @@
+/**
+ * Portuguese translation for bootstrap-datepicker
+ * Original code: Cauan Cabral
+ * Tiago Melo
+ */
+(function () {
+ Datepicker.locales.pt = {
+ days: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"],
+ daysShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb"],
+ daysMin: ["Do", "Se", "Te", "Qu", "Qu", "Se", "Sa"],
+ months: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"],
+ monthsShort: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"],
+ today: "Hoje",
+ monthsTitle: "Meses",
+ clear: "Limpar",
+ format: "dd/mm/yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ro.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ro.js
new file mode 100644
index 00000000..0b98838e
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ro.js
@@ -0,0 +1,17 @@
+/**
+ * Romanian translation for bootstrap-datepicker
+ * Cristian Vasile
+ */
+(function () {
+ Datepicker.locales.ro = {
+ days: ["Duminică", "Luni", "Marţi", "Miercuri", "Joi", "Vineri", "Sâmbătă"],
+ daysShort: ["Dum", "Lun", "Mar", "Mie", "Joi", "Vin", "Sâm"],
+ daysMin: ["Du", "Lu", "Ma", "Mi", "Jo", "Vi", "Sâ"],
+ months: ["Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", "Iulie", "August", "Septembrie", "Octombrie", "Noiembrie", "Decembrie"],
+ monthsShort: ["Ian", "Feb", "Mar", "Apr", "Mai", "Iun", "Iul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+ today: "Astăzi",
+ clear: "Șterge",
+ weekStart: 1,
+ format: "dd/mm/yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ru.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ru.js
new file mode 100644
index 00000000..f85cc51e
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ru.js
@@ -0,0 +1,18 @@
+/**
+ * Russian translation for bootstrap-datepicker
+ * Victor Taranenko
+ */
+(function () {
+ Datepicker.locales.ru = {
+ days: ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"],
+ daysShort: ["Вск", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Суб"],
+ daysMin: ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"],
+ months: ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"],
+ monthsShort: ["Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"],
+ today: "Сегодня",
+ clear: "Очистить",
+ format: "dd.mm.yyyy",
+ weekStart: 1,
+ monthsTitle: 'Месяцы'
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/si.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/si.js
new file mode 100644
index 00000000..04bf43f0
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/si.js
@@ -0,0 +1,18 @@
+/**
+ * Sinhala translation for bootstrap-datepicker
+ * Chanaka Fernando
+ */
+(function () {
+ Datepicker.locales.si = {
+ days: ["ඉරිදා", "සඳුදා", "අඟහරුවාදා", "බදාදා", "බ්රහස්පතින්දා", "සිකුරාදා", "සෙනසුරාදා"],
+ daysShort: ["ඉරි", "සඳු", "අඟ", "බදා", "බ්රහ", "සිකු", "සෙන"],
+ daysMin: ["ඉ", "ස", "අ", "බ", "බ්ර", "සි", "සෙ"],
+ months: ["ජනවාරි", "පෙබරවාරි", "මාර්තු", "අප්රේල්", "මැයි", "ජුනි", "ජූලි", "අගෝස්තු", "සැප්තැම්බර්", "ඔක්තෝබර්", "නොවැම්බර්", "දෙසැම්බර්"],
+ monthsShort: ["ජන", "පෙබ", "මාර්", "අප්රේ", "මැයි", "ජුනි", "ජූලි", "අගෝ", "සැප්", "ඔක්", "නොවැ", "දෙසැ"],
+ today: "අද",
+ monthsTitle: "මාස",
+ clear: "මකන්න",
+ weekStart: 0,
+ format: "yyyy-mm-dd"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/sk.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/sk.js
new file mode 100644
index 00000000..0f813abf
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/sk.js
@@ -0,0 +1,18 @@
+/**
+ * Slovak translation for bootstrap-datepicker
+ * Marek Lichtner
+ * Fixes by Michal Remiš
+ */
+(function () {
+ Datepicker.locales.sk = {
+ days: ["Nedeľa", "Pondelok", "Utorok", "Streda", "Štvrtok", "Piatok", "Sobota"],
+ daysShort: ["Ned", "Pon", "Uto", "Str", "Štv", "Pia", "Sob"],
+ daysMin: ["Ne", "Po", "Ut", "St", "Št", "Pia", "So"],
+ months: ["Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Október", "November", "December"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Máj", "Jún", "Júl", "Aug", "Sep", "Okt", "Nov", "Dec"],
+ today: "Dnes",
+ clear: "Vymazať",
+ weekStart: 1,
+ format: "d.m.yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/sl.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/sl.js
new file mode 100644
index 00000000..6fae7fd2
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/sl.js
@@ -0,0 +1,15 @@
+/**
+ * Slovene translation for bootstrap-datepicker
+ * Gregor Rudolf
+ */
+(function () {
+ Datepicker.locales.sl = {
+ days: ["Nedelja", "Ponedeljek", "Torek", "Sreda", "Četrtek", "Petek", "Sobota"],
+ daysShort: ["Ned", "Pon", "Tor", "Sre", "Čet", "Pet", "Sob"],
+ daysMin: ["Ne", "Po", "To", "Sr", "Če", "Pe", "So"],
+ months: ["Januar", "Februar", "Marec", "April", "Maj", "Junij", "Julij", "Avgust", "September", "Oktober", "November", "December"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Avg", "Sep", "Okt", "Nov", "Dec"],
+ today: "Danes",
+ weekStart: 1
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/sq.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/sq.js
new file mode 100644
index 00000000..32b2f1d6
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/sq.js
@@ -0,0 +1,18 @@
+/**
+ * Albanian translation for bootstrap-datepicker
+ * Tomor Pupovci
+ */
+(function () {
+ Datepicker.locales.sq = {
+ days: ["E Diel", "E Hënë", "E Martē", "E Mërkurë", "E Enjte", "E Premte", "E Shtunë"],
+ daysShort: ["Die", "Hën", "Mar", "Mër", "Enj", "Pre", "Shtu"],
+ daysMin: ["Di", "Hë", "Ma", "Më", "En", "Pr", "Sht"],
+ months: ["Janar", "Shkurt", "Mars", "Prill", "Maj", "Qershor", "Korrik", "Gusht", "Shtator", "Tetor", "Nëntor", "Dhjetor"],
+ monthsShort: ["Jan", "Shk", "Mar", "Pri", "Maj", "Qer", "Korr", "Gu", "Sht", "Tet", "Nën", "Dhjet"],
+ monthsTitle: "Muaj",
+ today: "Sot",
+ weekStart: 1,
+ format: "dd/mm/yyyy",
+ clear: "Pastro"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/sr-latn.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/sr-latn.js
new file mode 100644
index 00000000..65281d43
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/sr-latn.js
@@ -0,0 +1,16 @@
+/**
+ * Serbian latin translation for bootstrap-datepicker
+ * Bojan Milosavlević
+ */
+(function () {
+ Datepicker.locales['sr-latn'] = {
+ days: ["Nedelja","Ponedeljak", "Utorak", "Sreda", "Četvrtak", "Petak", "Subota"],
+ daysShort: ["Ned", "Pon", "Uto", "Sre", "Čet", "Pet", "Sub"],
+ daysMin: ["N", "Po", "U", "Sr", "Č", "Pe", "Su"],
+ months: ["Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"],
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Avg", "Sep", "Okt", "Nov", "Dec"],
+ today: "Danas",
+ weekStart: 1,
+ format: "dd.mm.yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/sr.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/sr.js
new file mode 100644
index 00000000..275edd7d
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/sr.js
@@ -0,0 +1,16 @@
+/**
+ * Serbian cyrillic translation for bootstrap-datepicker
+ * Bojan Milosavlević
+ */
+(function () {
+ Datepicker.locales.sr = {
+ days: ["Недеља","Понедељак", "Уторак", "Среда", "Четвртак", "Петак", "Субота"],
+ daysShort: ["Нед", "Пон", "Уто", "Сре", "Чет", "Пет", "Суб"],
+ daysMin: ["Н", "По", "У", "Ср", "Ч", "Пе", "Су"],
+ months: ["Јануар", "Фебруар", "Март", "Април", "Мај", "Јун", "Јул", "Август", "Септембар", "Октобар", "Новембар", "Децембар"],
+ monthsShort: ["Јан", "Феб", "Мар", "Апр", "Мај", "Јун", "Јул", "Авг", "Сеп", "Окт", "Нов", "Дец"],
+ today: "Данас",
+ weekStart: 1,
+ format: "dd.mm.yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/sv.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/sv.js
new file mode 100644
index 00000000..955ff67d
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/sv.js
@@ -0,0 +1,17 @@
+/**
+ * Swedish translation for bootstrap-datepicker
+ * Patrik Ragnarsson
+ */
+(function () {
+ Datepicker.locales.sv = {
+ days: ["söndag", "måndag", "tisdag", "onsdag", "torsdag", "fredag", "lördag"],
+ daysShort: ["sön", "mån", "tis", "ons", "tor", "fre", "lör"],
+ daysMin: ["sö", "må", "ti", "on", "to", "fr", "lö"],
+ months: ["januari", "februari", "mars", "april", "maj", "juni", "juli", "augusti", "september", "oktober", "november", "december"],
+ monthsShort: ["jan", "feb", "mar", "apr", "maj", "jun", "jul", "aug", "sep", "okt", "nov", "dec"],
+ today: "Idag",
+ format: "yyyy-mm-dd",
+ weekStart: 1,
+ clear: "Rensa"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/sw.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/sw.js
new file mode 100644
index 00000000..e67b01f7
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/sw.js
@@ -0,0 +1,15 @@
+/**
+ * Swahili translation for bootstrap-datepicker
+ * Edwin Mugendi
+ * Source: http: //scriptsource.org/cms/scripts/page.php?item_id=entry_detail&uid=xnfaqyzcku
+ */
+(function () {
+ Datepicker.locales.sw = {
+ days: ["Jumapili", "Jumatatu", "Jumanne", "Jumatano", "Alhamisi", "Ijumaa", "Jumamosi"],
+ daysShort: ["J2", "J3", "J4", "J5", "Alh", "Ij", "J1"],
+ daysMin: ["2", "3", "4", "5", "A", "I", "1"],
+ months: ["Januari", "Februari", "Machi", "Aprili", "Mei", "Juni", "Julai", "Agosti", "Septemba", "Oktoba", "Novemba", "Desemba"],
+ monthsShort: ["Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ago", "Sep", "Okt", "Nov", "Des"],
+ today: "Leo"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ta.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ta.js
new file mode 100644
index 00000000..ff338928
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/ta.js
@@ -0,0 +1,18 @@
+/**
+ * Tamil translation for bootstrap-datepicker
+ * Abubacker Siddik A
+ */
+(function () {
+ Datepicker.locales.ta = {
+ days: ["ஞாயிறு", "திங்கள்", "செவ்வாய்", "புதன்", "வியாழன்", "வெள்ளி", "சனி"],
+ daysShort: ["ஞாயி", "திங்", "செவ்", "புத", "வியா", "வெள்", "சனி"],
+ daysMin: ["ஞா", "தி", "செ", "பு", "வி", "வெ", "ச"],
+ months: ["ஜனவரி", "பிப்ரவரி", "மார்ச்", "ஏப்ரல்", "மே", "ஜூன்", "ஜூலை", "ஆகஸ்டு", "செப்டம்பர்", "அக்டோபர்", "நவம்பர்", "டிசம்பர்"],
+ monthsShort: ["ஜன", "பிப்", "மார்", "ஏப்", "மே", "ஜூன்", "ஜூலை", "ஆக", "செப்", "அக்", "நவ", "டிச"],
+ today: "இன்று",
+ monthsTitle: "மாதங்கள்",
+ clear: "நீக்கு",
+ weekStart: 1,
+ format: "dd/mm/yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/tg.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/tg.js
new file mode 100644
index 00000000..497c8371
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/tg.js
@@ -0,0 +1,19 @@
+/**
+ * Tajik (cyrillic) translation for bootstrap-datepicker
+ * Bakhtiyor Bahritidinov
+ * Orif N. Jr.
+ */
+(function () {
+ Datepicker.locales.tg = {
+ days: ["Якшанбе", "Душанбе", "Сешанбе", "Чоршанбе", "Панҷшанбе", "Ҷумъа", "Шанбе"],
+ daysShort: ["Яшб", "Дшб", "Сшб", "Чшб", "Пшб", "Ҷум", "Шнб"],
+ daysMin: ["Яш", "Дш", "Сш", "Чш", "Пш", "Ҷм", "Шб"],
+ months: ["Январ", "Феврал", "Март", "Апрел", "Май", "Июн", "Июл", "Август", "Сентябр", "Октябр", "Ноябр", "Декабр"],
+ monthsShort: ["Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"],
+ today: "Имрӯз",
+ monthsTitle: "Моҳҳо",
+ clear: "Тоза намудан",
+ weekStart: 1,
+ format: "dd.mm.yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/th.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/th.js
new file mode 100644
index 00000000..bdeb7904
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/th.js
@@ -0,0 +1,14 @@
+/**
+ * Thai translation for bootstrap-datepicker
+ * Suchau Jiraprapot
+ */
+(function () {
+ Datepicker.locales.th = {
+ days: ["อาทิตย์", "จันทร์", "อังคาร", "พุธ", "พฤหัส", "ศุกร์", "เสาร์", "อาทิตย์"],
+ daysShort: ["อา", "จ", "อ", "พ", "พฤ", "ศ", "ส", "อา"],
+ daysMin: ["อา", "จ", "อ", "พ", "พฤ", "ศ", "ส", "อา"],
+ months: ["มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม"],
+ monthsShort: ["ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค."],
+ today: "วันนี้"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/tk.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/tk.js
new file mode 100644
index 00000000..4c8affd4
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/tk.js
@@ -0,0 +1,18 @@
+/**
+ * Turkmen translation for bootstrap-datepicker
+ * N'Bayramberdiyev
+ */
+(function () {
+ Datepicker.locales.tk = {
+ days: ["Ýekşenbe", "Duşenbe", "Sişenbe", "Çarşenbe", "Penşenbe", "Anna", "Şenbe"],
+ daysShort: ["Ýek", "Duş", "Siş", "Çar", "Pen", "Ann", "Şen"],
+ daysMin: ["Ýe", "Du", "Si", "Ça", "Pe", "An", "Şe"],
+ months: ["Ýanwar", "Fewral", "Mart", "Aprel", "Maý", "Iýun", "Iýul", "Awgust", "Sentýabr", "Oktýabr", "Noýabr", "Dekabr"],
+ monthsShort: ["Ýan", "Few", "Mar", "Apr", "Maý", "Iýn", "Iýl", "Awg", "Sen", "Okt", "Noý", "Dek"],
+ today: "Bu gün",
+ monthsTitle: "Aýlar",
+ clear: "Aýyr",
+ weekStart: 1,
+ format: "dd.mm.yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/tr.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/tr.js
new file mode 100644
index 00000000..5a97ed77
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/tr.js
@@ -0,0 +1,17 @@
+/**
+ * Turkish translation for bootstrap-datepicker
+ * Serkan Algur
+ */
+(function () {
+ Datepicker.locales.tr = {
+ days: ["Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi"],
+ daysShort: ["Pz", "Pzt", "Sal", "Çrş", "Prş", "Cu", "Cts"],
+ daysMin: ["Pz", "Pzt", "Sa", "Çr", "Pr", "Cu", "Ct"],
+ months: ["Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"],
+ monthsShort: ["Oca", "Şub", "Mar", "Nis", "May", "Haz", "Tem", "Ağu", "Eyl", "Eki", "Kas", "Ara"],
+ today: "Bugün",
+ clear: "Temizle",
+ weekStart: 1,
+ format: "dd.mm.yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/uk.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/uk.js
new file mode 100644
index 00000000..38210352
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/uk.js
@@ -0,0 +1,17 @@
+/**
+ * Ukrainian translation for bootstrap-datepicker
+ * Igor Polynets
+ */
+(function () {
+ Datepicker.locales.uk = {
+ days: ["Неділя", "Понеділок", "Вівторок", "Середа", "Четвер", "П'ятниця", "Субота"],
+ daysShort: ["Нед", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Суб"],
+ daysMin: ["Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"],
+ months: ["Cічень", "Лютий", "Березень", "Квітень", "Травень", "Червень", "Липень", "Серпень", "Вересень", "Жовтень", "Листопад", "Грудень"],
+ monthsShort: ["Січ", "Лют", "Бер", "Кві", "Тра", "Чер", "Лип", "Сер", "Вер", "Жов", "Лис", "Гру"],
+ today: "Сьогодні",
+ clear: "Очистити",
+ format: "dd.mm.yyyy",
+ weekStart: 1
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/uz-cyrl.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/uz-cyrl.js
new file mode 100644
index 00000000..3dd8dde7
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/uz-cyrl.js
@@ -0,0 +1,18 @@
+/**
+ * Uzbek cyrillic translation for bootstrap-datepicker
+ * Kakhramonov Javlonbek
+ */
+(function () {
+ Datepicker.locales['uz-cyrl'] = {
+ days: ["Якшанба", "Душанба", "Сешанба", "Чоршанба", "Пайшанба", "Жума", "Шанба"],
+ daysShort: ["Якш", "Ду", "Се", "Чор", "Пай", "Жу", "Ша"],
+ daysMin: ["Як", "Ду", "Се", "Чо", "Па", "Жу", "Ша"],
+ months: ["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],
+ monthsShort: ["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],
+ today: "Бугун",
+ clear: "Ўчириш",
+ format: "dd.mm.yyyy",
+ weekStart: 1,
+ monthsTitle: 'Ойлар'
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/uz-latn.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/uz-latn.js
new file mode 100644
index 00000000..8f18dac6
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/uz-latn.js
@@ -0,0 +1,18 @@
+/**
+ * Uzbek latin translation for bootstrap-datepicker
+ * Kakhramonov Javlonbek
+ */
+(function () {
+ Datepicker.locales['uz-latn'] = {
+ days: ["Yakshanba", "Dushanba", "Seshanba", "Chorshanba", "Payshanba", "Juma", "Shanba"],
+ daysShort: ["Yak", "Du", "Se", "Chor", "Pay", "Ju", "Sha"],
+ daysMin: ["Ya", "Du", "Se", "Cho", "Pa", "Ju", "Sha"],
+ months: ["Yanvar", "Fevral", "Mart", "Aprel", "May", "Iyun", "Iyul", "Avgust", "Sentabr", "Oktabr", "Noyabr", "Dekabr"],
+ monthsShort: ["Yan", "Fev", "Mar", "Apr", "May", "Iyn", "Iyl", "Avg", "Sen", "Okt", "Noy", "Dek"],
+ today: "Bugun",
+ clear: "O'chirish",
+ format: "dd.mm.yyyy",
+ weekStart: 1,
+ monthsTitle: 'Oylar'
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/vi.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/vi.js
new file mode 100644
index 00000000..90b5cb8a
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/vi.js
@@ -0,0 +1,16 @@
+/**
+ * Vietnamese translation for bootstrap-datepicker
+ * An Vo
+ */
+(function () {
+ Datepicker.locales.vi = {
+ days: ["Chủ nhật", "Thứ hai", "Thứ ba", "Thứ tư", "Thứ năm", "Thứ sáu", "Thứ bảy"],
+ daysShort: ["CN", "Thứ 2", "Thứ 3", "Thứ 4", "Thứ 5", "Thứ 6", "Thứ 7"],
+ daysMin: ["CN", "T2", "T3", "T4", "T5", "T6", "T7"],
+ months: ["Tháng 1", "Tháng 2", "Tháng 3", "Tháng 4", "Tháng 5", "Tháng 6", "Tháng 7", "Tháng 8", "Tháng 9", "Tháng 10", "Tháng 11", "Tháng 12"],
+ monthsShort: ["Th1", "Th2", "Th3", "Th4", "Th5", "Th6", "Th7", "Th8", "Th9", "Th10", "Th11", "Th12"],
+ today: "Hôm nay",
+ clear: "Xóa",
+ format: "dd/mm/yyyy"
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/zh-CN.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/zh-CN.js
new file mode 100644
index 00000000..adec7d20
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/zh-CN.js
@@ -0,0 +1,19 @@
+/**
+ * Simplified Chinese translation for bootstrap-datepicker
+ * Yuan Cheung
+ */
+(function () {
+ Datepicker.locales['zh-CN'] = {
+ days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"],
+ daysShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"],
+ daysMin: ["日", "一", "二", "三", "四", "五", "六"],
+ months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
+ monthsShort: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
+ today: "今天",
+ monthsTitle: "选择月份",
+ clear: "清除",
+ format: "yyyy-mm-dd",
+ titleFormat: "y年mm月",
+ weekStart: 1
+ };
+}());
diff --git a/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/zh-TW.js b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/zh-TW.js
new file mode 100644
index 00000000..d8e249a1
--- /dev/null
+++ b/apps/static/assets/vendor/vanillajs-datepicker/dist/js/locales/zh-TW.js
@@ -0,0 +1,18 @@
+/**
+ * Traditional Chinese translation for bootstrap-datepicker
+ * Rung-Sheng Jang
+ * FrankWu Fix more appropriate use of Traditional Chinese habit
+ */
+(function () {
+ Datepicker.locales['zh-TW'] = {
+ days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"],
+ daysShort: ["週日", "週一", "週二", "週三", "週四", "週五", "週六"],
+ daysMin: ["日", "一", "二", "三", "四", "五", "六"],
+ months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
+ monthsShort: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
+ today: "今天",
+ format: "yyyy年mm月dd日",
+ weekStart: 1,
+ clear: "清除"
+ };
+}());
diff --git a/apps/static/assets/vendor/vivus/dist/vivus.min.js b/apps/static/assets/vendor/vivus/dist/vivus.min.js
new file mode 100644
index 00000000..ccc1092c
--- /dev/null
+++ b/apps/static/assets/vendor/vivus/dist/vivus.min.js
@@ -0,0 +1 @@
+!function(){"use strict";function r(t){if(void 0===t)throw new Error('Pathformer [constructor]: "element" parameter is required');if(t.constructor===String&&!(t=document.getElementById(t)))throw new Error('Pathformer [constructor]: "element" parameter is not related to an existing ID');if(!(t instanceof window.SVGElement||t instanceof window.SVGGElement||/^svg$/i.test(t.nodeName)))throw new Error('Pathformer [constructor]: "element" parameter must be a string or a SVGelement');this.el=t,this.scan(t)}var n,e,t,h;function i(t,e,r){n(),this.isReady=!1,this.setElement(t,e),this.setOptions(e),this.setCallback(r),this.isReady&&this.init()}r.prototype.TYPES=["line","ellipse","circle","polygon","polyline","rect"],r.prototype.ATTR_WATCH=["cx","cy","points","r","rx","ry","x","x1","x2","y","y1","y2"],r.prototype.scan=function(t){for(var e,r,n,i=t.querySelectorAll(this.TYPES.join(",")),a=0;a=this.duration)throw new Error("Vivus [constructor]: delay must be shorter than duration")},i.prototype.setCallback=function(t){if(t&&t.constructor!==Function)throw new Error('Vivus [constructor]: "callback" parameter must be a function');this.callback=t||function(){}},i.prototype.mapping=function(){var t,e,r,n,i,a,o,s;for(s=a=o=0,e=this.el.querySelectorAll("path"),t=0;t=this.frameLength))return this.trace(),void(this.handle=e(function(){t.drawer()}));this.stop(),this.currentFrame=this.frameLength,this.trace(),this.selfDestroy&&this.destroy()}this.callback(this),this.instanceCallback&&(this.instanceCallback(this),this.instanceCallback=null)},i.prototype.trace=function(){var t,e,r,n;for(n=this.animTimingFunction(this.currentFrame/this.frameLength)*this.frameLength,t=0;tn;n++)e[n][t]()},t.destroyAll=function(){t.invokeAll("destroy")},t.disableAll=function(){t.invokeAll("disable")},t.enableAll=function(){t.Context.refreshAll();for(var e in i)i[e].enabled=!0;return this},t.refreshAll=function(){t.Context.refreshAll()},t.viewportHeight=function(){return window.innerHeight||document.documentElement.clientHeight},t.viewportWidth=function(){return document.documentElement.clientWidth},t.adapters=[],t.defaults={context:window,continuous:!0,enabled:!0,group:"default",horizontal:!1,offset:0},t.offsetAliases={"bottom-in-view":function(){return this.context.innerHeight()-this.adapter.outerHeight()},"right-in-view":function(){return this.context.innerWidth()-this.adapter.outerWidth()}},window.Waypoint=t}(),function(){"use strict";function t(t){window.setTimeout(t,1e3/60)}function e(t){this.element=t,this.Adapter=n.Adapter,this.adapter=new this.Adapter(t),this.key="waypoint-context-"+i,this.didScroll=!1,this.didResize=!1,this.oldScroll={x:this.adapter.scrollLeft(),y:this.adapter.scrollTop()},this.waypoints={vertical:{},horizontal:{}},t.waypointContextKey=this.key,o[t.waypointContextKey]=this,i+=1,n.windowContext||(n.windowContext=!0,n.windowContext=new e(window)),this.createThrottledScrollHandler(),this.createThrottledResizeHandler()}var i=0,o={},n=window.Waypoint,r=window.onload;e.prototype.add=function(t){var e=t.options.horizontal?"horizontal":"vertical";this.waypoints[e][t.key]=t,this.refresh()},e.prototype.checkEmpty=function(){var t=this.Adapter.isEmptyObject(this.waypoints.horizontal),e=this.Adapter.isEmptyObject(this.waypoints.vertical),i=this.element==this.element.window;t&&e&&!i&&(this.adapter.off(".waypoints"),delete o[this.key])},e.prototype.createThrottledResizeHandler=function(){function t(){e.handleResize(),e.didResize=!1}var e=this;this.adapter.on("resize.waypoints",function(){e.didResize||(e.didResize=!0,n.requestAnimationFrame(t))})},e.prototype.createThrottledScrollHandler=function(){function t(){e.handleScroll(),e.didScroll=!1}var e=this;this.adapter.on("scroll.waypoints",function(){(!e.didScroll||n.isTouch)&&(e.didScroll=!0,n.requestAnimationFrame(t))})},e.prototype.handleResize=function(){n.Context.refreshAll()},e.prototype.handleScroll=function(){var t={},e={horizontal:{newScroll:this.adapter.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.adapter.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};for(var i in e){var o=e[i],n=o.newScroll>o.oldScroll,r=n?o.forward:o.backward;for(var s in this.waypoints[i]){var a=this.waypoints[i][s];if(null!==a.triggerPoint){var l=o.oldScroll=a.triggerPoint,p=l&&h,u=!l&&!h;(p||u)&&(a.queueTrigger(r),t[a.group.id]=a.group)}}}for(var c in t)t[c].flushTriggers();this.oldScroll={x:e.horizontal.newScroll,y:e.vertical.newScroll}},e.prototype.innerHeight=function(){return this.element==this.element.window?n.viewportHeight():this.adapter.innerHeight()},e.prototype.remove=function(t){delete this.waypoints[t.axis][t.key],this.checkEmpty()},e.prototype.innerWidth=function(){return this.element==this.element.window?n.viewportWidth():this.adapter.innerWidth()},e.prototype.destroy=function(){var t=[];for(var e in this.waypoints)for(var i in this.waypoints[e])t.push(this.waypoints[e][i]);for(var o=0,n=t.length;n>o;o++)t[o].destroy()},e.prototype.refresh=function(){var t,e=this.element==this.element.window,i=e?void 0:this.adapter.offset(),o={};this.handleScroll(),t={horizontal:{contextOffset:e?0:i.left,contextScroll:e?0:this.oldScroll.x,contextDimension:this.innerWidth(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:e?0:i.top,contextScroll:e?0:this.oldScroll.y,contextDimension:this.innerHeight(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}};for(var r in t){var s=t[r];for(var a in this.waypoints[r]){var l,h,p,u,c,d=this.waypoints[r][a],f=d.options.offset,w=d.triggerPoint,y=0,g=null==w;d.element!==d.element.window&&(y=d.adapter.offset()[s.offsetProp]),"function"==typeof f?f=f.apply(d):"string"==typeof f&&(f=parseFloat(f),d.options.offset.indexOf("%")>-1&&(f=Math.ceil(s.contextDimension*f/100))),l=s.contextScroll-s.contextOffset,d.triggerPoint=Math.floor(y+l-f),h=w=s.oldScroll,u=h&&p,c=!h&&!p,!g&&u?(d.queueTrigger(s.backward),o[d.group.id]=d.group):!g&&c?(d.queueTrigger(s.forward),o[d.group.id]=d.group):g&&s.oldScroll>=d.triggerPoint&&(d.queueTrigger(s.forward),o[d.group.id]=d.group)}}return n.requestAnimationFrame(function(){for(var t in o)o[t].flushTriggers()}),this},e.findOrCreateByElement=function(t){return e.findByElement(t)||new e(t)},e.refreshAll=function(){for(var t in o)o[t].refresh()},e.findByElement=function(t){return o[t.waypointContextKey]},window.onload=function(){r&&r(),e.refreshAll()},n.requestAnimationFrame=function(e){var i=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||t;i.call(window,e)},n.Context=e}(),function(){"use strict";function t(t,e){return t.triggerPoint-e.triggerPoint}function e(t,e){return e.triggerPoint-t.triggerPoint}function i(t){this.name=t.name,this.axis=t.axis,this.id=this.name+"-"+this.axis,this.waypoints=[],this.clearTriggerQueues(),o[this.axis][this.name]=this}var o={vertical:{},horizontal:{}},n=window.Waypoint;i.prototype.add=function(t){this.waypoints.push(t)},i.prototype.clearTriggerQueues=function(){this.triggerQueues={up:[],down:[],left:[],right:[]}},i.prototype.flushTriggers=function(){for(var i in this.triggerQueues){var o=this.triggerQueues[i],n="up"===i||"left"===i;o.sort(n?e:t);for(var r=0,s=o.length;s>r;r+=1){var a=o[r];(a.options.continuous||r===o.length-1)&&a.trigger([i])}}this.clearTriggerQueues()},i.prototype.next=function(e){this.waypoints.sort(t);var i=n.Adapter.inArray(e,this.waypoints),o=i===this.waypoints.length-1;return o?null:this.waypoints[i+1]},i.prototype.previous=function(e){this.waypoints.sort(t);var i=n.Adapter.inArray(e,this.waypoints);return i?this.waypoints[i-1]:null},i.prototype.queueTrigger=function(t,e){this.triggerQueues[e].push(t)},i.prototype.remove=function(t){var e=n.Adapter.inArray(t,this.waypoints);e>-1&&this.waypoints.splice(e,1)},i.prototype.first=function(){return this.waypoints[0]},i.prototype.last=function(){return this.waypoints[this.waypoints.length-1]},i.findOrCreate=function(t){return o[t.axis][t.name]||new i(t)},n.Group=i}(),function(){"use strict";function t(t){this.$element=e(t)}var e=window.jQuery,i=window.Waypoint;e.each(["innerHeight","innerWidth","off","offset","on","outerHeight","outerWidth","scrollLeft","scrollTop"],function(e,i){t.prototype[i]=function(){var t=Array.prototype.slice.call(arguments);return this.$element[i].apply(this.$element,t)}}),e.each(["extend","inArray","isEmptyObject"],function(i,o){t[o]=e[o]}),i.adapters.push({name:"jquery",Adapter:t}),i.Adapter=t}(),function(){"use strict";function t(t){return function(){var i=[],o=arguments[0];return t.isFunction(arguments[0])&&(o=t.extend({},arguments[1]),o.handler=arguments[0]),this.each(function(){var n=t.extend({},o,{element:this});"string"==typeof n.context&&(n.context=t(this).closest(n.context)[0]),i.push(new e(n))}),i}}var e=window.Waypoint;window.jQuery&&(window.jQuery.fn.waypoint=t(window.jQuery)),window.Zepto&&(window.Zepto.fn.waypoint=t(window.Zepto))}();
\ No newline at end of file
diff --git a/apps/static/assets/vendor/waypoints/lib/noframework.waypoints.min.js b/apps/static/assets/vendor/waypoints/lib/noframework.waypoints.min.js
new file mode 100644
index 00000000..edfacb57
--- /dev/null
+++ b/apps/static/assets/vendor/waypoints/lib/noframework.waypoints.min.js
@@ -0,0 +1,7 @@
+/*!
+Waypoints - 4.0.1
+Copyright © 2011-2016 Caleb Troughton
+Licensed under the MIT license.
+https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
+*/
+!function(){"use strict";function t(n){if(!n)throw new Error("No options passed to Waypoint constructor");if(!n.element)throw new Error("No element option passed to Waypoint constructor");if(!n.handler)throw new Error("No handler option passed to Waypoint constructor");this.key="waypoint-"+e,this.options=t.Adapter.extend({},t.defaults,n),this.element=this.options.element,this.adapter=new t.Adapter(this.element),this.callback=n.handler,this.axis=this.options.horizontal?"horizontal":"vertical",this.enabled=this.options.enabled,this.triggerPoint=null,this.group=t.Group.findOrCreate({name:this.options.group,axis:this.axis}),this.context=t.Context.findOrCreateByElement(this.options.context),t.offsetAliases[this.options.offset]&&(this.options.offset=t.offsetAliases[this.options.offset]),this.group.add(this),this.context.add(this),i[this.key]=this,e+=1}var e=0,i={};t.prototype.queueTrigger=function(t){this.group.queueTrigger(this,t)},t.prototype.trigger=function(t){this.enabled&&this.callback&&this.callback.apply(this,t)},t.prototype.destroy=function(){this.context.remove(this),this.group.remove(this),delete i[this.key]},t.prototype.disable=function(){return this.enabled=!1,this},t.prototype.enable=function(){return this.context.refresh(),this.enabled=!0,this},t.prototype.next=function(){return this.group.next(this)},t.prototype.previous=function(){return this.group.previous(this)},t.invokeAll=function(t){var e=[];for(var n in i)e.push(i[n]);for(var o=0,r=e.length;r>o;o++)e[o][t]()},t.destroyAll=function(){t.invokeAll("destroy")},t.disableAll=function(){t.invokeAll("disable")},t.enableAll=function(){t.Context.refreshAll();for(var e in i)i[e].enabled=!0;return this},t.refreshAll=function(){t.Context.refreshAll()},t.viewportHeight=function(){return window.innerHeight||document.documentElement.clientHeight},t.viewportWidth=function(){return document.documentElement.clientWidth},t.adapters=[],t.defaults={context:window,continuous:!0,enabled:!0,group:"default",horizontal:!1,offset:0},t.offsetAliases={"bottom-in-view":function(){return this.context.innerHeight()-this.adapter.outerHeight()},"right-in-view":function(){return this.context.innerWidth()-this.adapter.outerWidth()}},window.Waypoint=t}(),function(){"use strict";function t(t){window.setTimeout(t,1e3/60)}function e(t){this.element=t,this.Adapter=o.Adapter,this.adapter=new this.Adapter(t),this.key="waypoint-context-"+i,this.didScroll=!1,this.didResize=!1,this.oldScroll={x:this.adapter.scrollLeft(),y:this.adapter.scrollTop()},this.waypoints={vertical:{},horizontal:{}},t.waypointContextKey=this.key,n[t.waypointContextKey]=this,i+=1,o.windowContext||(o.windowContext=!0,o.windowContext=new e(window)),this.createThrottledScrollHandler(),this.createThrottledResizeHandler()}var i=0,n={},o=window.Waypoint,r=window.onload;e.prototype.add=function(t){var e=t.options.horizontal?"horizontal":"vertical";this.waypoints[e][t.key]=t,this.refresh()},e.prototype.checkEmpty=function(){var t=this.Adapter.isEmptyObject(this.waypoints.horizontal),e=this.Adapter.isEmptyObject(this.waypoints.vertical),i=this.element==this.element.window;t&&e&&!i&&(this.adapter.off(".waypoints"),delete n[this.key])},e.prototype.createThrottledResizeHandler=function(){function t(){e.handleResize(),e.didResize=!1}var e=this;this.adapter.on("resize.waypoints",function(){e.didResize||(e.didResize=!0,o.requestAnimationFrame(t))})},e.prototype.createThrottledScrollHandler=function(){function t(){e.handleScroll(),e.didScroll=!1}var e=this;this.adapter.on("scroll.waypoints",function(){(!e.didScroll||o.isTouch)&&(e.didScroll=!0,o.requestAnimationFrame(t))})},e.prototype.handleResize=function(){o.Context.refreshAll()},e.prototype.handleScroll=function(){var t={},e={horizontal:{newScroll:this.adapter.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.adapter.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};for(var i in e){var n=e[i],o=n.newScroll>n.oldScroll,r=o?n.forward:n.backward;for(var s in this.waypoints[i]){var l=this.waypoints[i][s];if(null!==l.triggerPoint){var a=n.oldScroll=l.triggerPoint,p=a&&h,u=!a&&!h;(p||u)&&(l.queueTrigger(r),t[l.group.id]=l.group)}}}for(var d in t)t[d].flushTriggers();this.oldScroll={x:e.horizontal.newScroll,y:e.vertical.newScroll}},e.prototype.innerHeight=function(){return this.element==this.element.window?o.viewportHeight():this.adapter.innerHeight()},e.prototype.remove=function(t){delete this.waypoints[t.axis][t.key],this.checkEmpty()},e.prototype.innerWidth=function(){return this.element==this.element.window?o.viewportWidth():this.adapter.innerWidth()},e.prototype.destroy=function(){var t=[];for(var e in this.waypoints)for(var i in this.waypoints[e])t.push(this.waypoints[e][i]);for(var n=0,o=t.length;o>n;n++)t[n].destroy()},e.prototype.refresh=function(){var t,e=this.element==this.element.window,i=e?void 0:this.adapter.offset(),n={};this.handleScroll(),t={horizontal:{contextOffset:e?0:i.left,contextScroll:e?0:this.oldScroll.x,contextDimension:this.innerWidth(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:e?0:i.top,contextScroll:e?0:this.oldScroll.y,contextDimension:this.innerHeight(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}};for(var r in t){var s=t[r];for(var l in this.waypoints[r]){var a,h,p,u,d,f=this.waypoints[r][l],c=f.options.offset,w=f.triggerPoint,y=0,g=null==w;f.element!==f.element.window&&(y=f.adapter.offset()[s.offsetProp]),"function"==typeof c?c=c.apply(f):"string"==typeof c&&(c=parseFloat(c),f.options.offset.indexOf("%")>-1&&(c=Math.ceil(s.contextDimension*c/100))),a=s.contextScroll-s.contextOffset,f.triggerPoint=Math.floor(y+a-c),h=w=s.oldScroll,u=h&&p,d=!h&&!p,!g&&u?(f.queueTrigger(s.backward),n[f.group.id]=f.group):!g&&d?(f.queueTrigger(s.forward),n[f.group.id]=f.group):g&&s.oldScroll>=f.triggerPoint&&(f.queueTrigger(s.forward),n[f.group.id]=f.group)}}return o.requestAnimationFrame(function(){for(var t in n)n[t].flushTriggers()}),this},e.findOrCreateByElement=function(t){return e.findByElement(t)||new e(t)},e.refreshAll=function(){for(var t in n)n[t].refresh()},e.findByElement=function(t){return n[t.waypointContextKey]},window.onload=function(){r&&r(),e.refreshAll()},o.requestAnimationFrame=function(e){var i=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||t;i.call(window,e)},o.Context=e}(),function(){"use strict";function t(t,e){return t.triggerPoint-e.triggerPoint}function e(t,e){return e.triggerPoint-t.triggerPoint}function i(t){this.name=t.name,this.axis=t.axis,this.id=this.name+"-"+this.axis,this.waypoints=[],this.clearTriggerQueues(),n[this.axis][this.name]=this}var n={vertical:{},horizontal:{}},o=window.Waypoint;i.prototype.add=function(t){this.waypoints.push(t)},i.prototype.clearTriggerQueues=function(){this.triggerQueues={up:[],down:[],left:[],right:[]}},i.prototype.flushTriggers=function(){for(var i in this.triggerQueues){var n=this.triggerQueues[i],o="up"===i||"left"===i;n.sort(o?e:t);for(var r=0,s=n.length;s>r;r+=1){var l=n[r];(l.options.continuous||r===n.length-1)&&l.trigger([i])}}this.clearTriggerQueues()},i.prototype.next=function(e){this.waypoints.sort(t);var i=o.Adapter.inArray(e,this.waypoints),n=i===this.waypoints.length-1;return n?null:this.waypoints[i+1]},i.prototype.previous=function(e){this.waypoints.sort(t);var i=o.Adapter.inArray(e,this.waypoints);return i?this.waypoints[i-1]:null},i.prototype.queueTrigger=function(t,e){this.triggerQueues[e].push(t)},i.prototype.remove=function(t){var e=o.Adapter.inArray(t,this.waypoints);e>-1&&this.waypoints.splice(e,1)},i.prototype.first=function(){return this.waypoints[0]},i.prototype.last=function(){return this.waypoints[this.waypoints.length-1]},i.findOrCreate=function(t){return n[t.axis][t.name]||new i(t)},o.Group=i}(),function(){"use strict";function t(t){return t===t.window}function e(e){return t(e)?e:e.defaultView}function i(t){this.element=t,this.handlers={}}var n=window.Waypoint;i.prototype.innerHeight=function(){var e=t(this.element);return e?this.element.innerHeight:this.element.clientHeight},i.prototype.innerWidth=function(){var e=t(this.element);return e?this.element.innerWidth:this.element.clientWidth},i.prototype.off=function(t,e){function i(t,e,i){for(var n=0,o=e.length-1;o>n;n++){var r=e[n];i&&i!==r||t.removeEventListener(r)}}var n=t.split("."),o=n[0],r=n[1],s=this.element;if(r&&this.handlers[r]&&o)i(s,this.handlers[r][o],e),this.handlers[r][o]=[];else if(o)for(var l in this.handlers)i(s,this.handlers[l][o]||[],e),this.handlers[l][o]=[];else if(r&&this.handlers[r]){for(var a in this.handlers[r])i(s,this.handlers[r][a],e);this.handlers[r]={}}},i.prototype.offset=function(){if(!this.element.ownerDocument)return null;var t=this.element.ownerDocument.documentElement,i=e(this.element.ownerDocument),n={top:0,left:0};return this.element.getBoundingClientRect&&(n=this.element.getBoundingClientRect()),{top:n.top+i.pageYOffset-t.clientTop,left:n.left+i.pageXOffset-t.clientLeft}},i.prototype.on=function(t,e){var i=t.split("."),n=i[0],o=i[1]||"__default",r=this.handlers[o]=this.handlers[o]||{},s=r[n]=r[n]||[];s.push(e),this.element.addEventListener(n,e)},i.prototype.outerHeight=function(e){var i,n=this.innerHeight();return e&&!t(this.element)&&(i=window.getComputedStyle(this.element),n+=parseInt(i.marginTop,10),n+=parseInt(i.marginBottom,10)),n},i.prototype.outerWidth=function(e){var i,n=this.innerWidth();return e&&!t(this.element)&&(i=window.getComputedStyle(this.element),n+=parseInt(i.marginLeft,10),n+=parseInt(i.marginRight,10)),n},i.prototype.scrollLeft=function(){var t=e(this.element);return t?t.pageXOffset:this.element.scrollLeft},i.prototype.scrollTop=function(){var t=e(this.element);return t?t.pageYOffset:this.element.scrollTop},i.extend=function(){function t(t,e){if("object"==typeof t&&"object"==typeof e)for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t}for(var e=Array.prototype.slice.call(arguments),i=1,n=e.length;n>i;i++)t(e[0],e[i]);return e[0]},i.inArray=function(t,e,i){return null==e?-1:e.indexOf(t,i)},i.isEmptyObject=function(t){for(var e in t)return!1;return!0},n.adapters.push({name:"noframework",Adapter:i}),n.Adapter=i}();
\ No newline at end of file
diff --git a/apps/static/assets/vendor/waypoints/lib/shortcuts/infinite.min.js b/apps/static/assets/vendor/waypoints/lib/shortcuts/infinite.min.js
new file mode 100644
index 00000000..d429cfb5
--- /dev/null
+++ b/apps/static/assets/vendor/waypoints/lib/shortcuts/infinite.min.js
@@ -0,0 +1,7 @@
+/*!
+Waypoints Infinite Scroll Shortcut - 4.0.1
+Copyright © 2011-2016 Caleb Troughton
+Licensed under the MIT license.
+https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
+*/
+!function(){"use strict";function t(n){this.options=i.extend({},t.defaults,n),this.container=this.options.element,"auto"!==this.options.container&&(this.container=this.options.container),this.$container=i(this.container),this.$more=i(this.options.more),this.$more.length&&(this.setupHandler(),this.waypoint=new o(this.options))}var i=window.jQuery,o=window.Waypoint;t.prototype.setupHandler=function(){this.options.handler=i.proxy(function(){this.options.onBeforePageLoad(),this.destroy(),this.$container.addClass(this.options.loadingClass),i.get(i(this.options.more).attr("href"),i.proxy(function(t){var n=i(i.parseHTML(t)),e=n.find(this.options.more),s=n.find(this.options.items);s.length||(s=n.filter(this.options.items)),this.$container.append(s),this.$container.removeClass(this.options.loadingClass),e.length||(e=n.filter(this.options.more)),e.length?(this.$more.replaceWith(e),this.$more=e,this.waypoint=new o(this.options)):this.$more.remove(),this.options.onAfterPageLoad(s)},this))},this)},t.prototype.destroy=function(){this.waypoint&&this.waypoint.destroy()},t.defaults={container:"auto",items:".infinite-item",more:".infinite-more-link",offset:"bottom-in-view",loadingClass:"infinite-loading",onBeforePageLoad:i.noop,onAfterPageLoad:i.noop},o.Infinite=t}();
\ No newline at end of file
diff --git a/apps/static/assets/vendor/waypoints/lib/shortcuts/inview.min.js b/apps/static/assets/vendor/waypoints/lib/shortcuts/inview.min.js
new file mode 100644
index 00000000..7c2675ce
--- /dev/null
+++ b/apps/static/assets/vendor/waypoints/lib/shortcuts/inview.min.js
@@ -0,0 +1,7 @@
+/*!
+Waypoints Inview Shortcut - 4.0.1
+Copyright © 2011-2016 Caleb Troughton
+Licensed under the MIT license.
+https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
+*/
+!function(){"use strict";function t(){}function e(t){this.options=i.Adapter.extend({},e.defaults,t),this.axis=this.options.horizontal?"horizontal":"vertical",this.waypoints=[],this.element=this.options.element,this.createWaypoints()}var i=window.Waypoint;e.prototype.createWaypoints=function(){for(var t={vertical:[{down:"enter",up:"exited",offset:"100%"},{down:"entered",up:"exit",offset:"bottom-in-view"},{down:"exit",up:"entered",offset:0},{down:"exited",up:"enter",offset:function(){return-this.adapter.outerHeight()}}],horizontal:[{right:"enter",left:"exited",offset:"100%"},{right:"entered",left:"exit",offset:"right-in-view"},{right:"exit",left:"entered",offset:0},{right:"exited",left:"enter",offset:function(){return-this.adapter.outerWidth()}}]},e=0,i=t[this.axis].length;i>e;e++){var n=t[this.axis][e];this.createWaypoint(n)}},e.prototype.createWaypoint=function(t){var e=this;this.waypoints.push(new i({context:this.options.context,element:this.options.element,enabled:this.options.enabled,handler:function(t){return function(i){e.options[t[i]].call(e,i)}}(t),offset:t.offset,horizontal:this.options.horizontal}))},e.prototype.destroy=function(){for(var t=0,e=this.waypoints.length;e>t;t++)this.waypoints[t].destroy();this.waypoints=[]},e.prototype.disable=function(){for(var t=0,e=this.waypoints.length;e>t;t++)this.waypoints[t].disable()},e.prototype.enable=function(){for(var t=0,e=this.waypoints.length;e>t;t++)this.waypoints[t].enable()},e.defaults={context:window,enabled:!0,enter:t,entered:t,exit:t,exited:t},i.Inview=e}();
\ No newline at end of file
diff --git a/apps/static/assets/vendor/waypoints/lib/shortcuts/sticky.min.js b/apps/static/assets/vendor/waypoints/lib/shortcuts/sticky.min.js
new file mode 100644
index 00000000..20578171
--- /dev/null
+++ b/apps/static/assets/vendor/waypoints/lib/shortcuts/sticky.min.js
@@ -0,0 +1,7 @@
+/*!
+Waypoints Sticky Element Shortcut - 4.0.1
+Copyright © 2011-2016 Caleb Troughton
+Licensed under the MIT license.
+https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
+*/
+!function(){"use strict";function t(s){this.options=e.extend({},i.defaults,t.defaults,s),this.element=this.options.element,this.$element=e(this.element),this.createWrapper(),this.createWaypoint()}var e=window.jQuery,i=window.Waypoint;t.prototype.createWaypoint=function(){var t=this.options.handler;this.waypoint=new i(e.extend({},this.options,{element:this.wrapper,handler:e.proxy(function(e){var i=this.options.direction.indexOf(e)>-1,s=i?this.$element.outerHeight(!0):"";this.$wrapper.height(s),this.$element.toggleClass(this.options.stuckClass,i),t&&t.call(this,e)},this)}))},t.prototype.createWrapper=function(){this.options.wrapper&&this.$element.wrap(this.options.wrapper),this.$wrapper=this.$element.parent(),this.wrapper=this.$wrapper[0]},t.prototype.destroy=function(){this.$element.parent()[0]===this.wrapper&&(this.waypoint.destroy(),this.$element.removeClass(this.options.stuckClass),this.options.wrapper&&this.$element.unwrap())},t.defaults={wrapper:'
',stuckClass:"stuck",direction:"down right"},i.Sticky=t}();
\ No newline at end of file
diff --git a/apps/static/assets/vendor/waypoints/lib/waypoints.debug.js b/apps/static/assets/vendor/waypoints/lib/waypoints.debug.js
new file mode 100644
index 00000000..df6256bc
--- /dev/null
+++ b/apps/static/assets/vendor/waypoints/lib/waypoints.debug.js
@@ -0,0 +1,46 @@
+/*!
+Waypoints Debug - 4.0.1
+Copyright © 2011-2016 Caleb Troughton
+Licensed under the MIT license.
+https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
+*/
+(function() {
+ 'use strict'
+
+ var displayNoneMessage = [
+ 'You have a Waypoint element with display none. For more information on ',
+ 'why this is a bad idea read ',
+ 'http://imakewebthings.com/waypoints/guides/debugging/#display-none'
+ ].join('')
+ var fixedMessage = [
+ 'You have a Waypoint element with fixed positioning. For more ',
+ 'information on why this is a bad idea read ',
+ 'http://imakewebthings.com/waypoints/guides/debugging/#fixed-position'
+ ].join('')
+
+ function checkWaypointStyles() {
+ var originalRefresh = window.Waypoint.Context.prototype.refresh
+
+ window.Waypoint.Context.prototype.refresh = function() {
+ for (var axis in this.waypoints) {
+ for (var key in this.waypoints[axis]) {
+ var waypoint = this.waypoints[axis][key]
+ var style = window.getComputedStyle(waypoint.element)
+ if (!waypoint.enabled) {
+ continue
+ }
+ if (style && style.display === 'none') {
+ console.error(displayNoneMessage)
+ }
+ if (style && style.position === 'fixed') {
+ console.error(fixedMessage)
+ }
+ }
+ }
+ return originalRefresh.call(this)
+ }
+ }
+
+ checkWaypointStyles()
+}())
+;
\ No newline at end of file
diff --git a/apps/static/assets/vendor/waypoints/lib/zepto.waypoints.min.js b/apps/static/assets/vendor/waypoints/lib/zepto.waypoints.min.js
new file mode 100644
index 00000000..32fd5fba
--- /dev/null
+++ b/apps/static/assets/vendor/waypoints/lib/zepto.waypoints.min.js
@@ -0,0 +1,7 @@
+/*!
+Waypoints - 4.0.1
+Copyright © 2011-2016 Caleb Troughton
+Licensed under the MIT license.
+https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
+*/
+!function(){"use strict";function t(o){if(!o)throw new Error("No options passed to Waypoint constructor");if(!o.element)throw new Error("No element option passed to Waypoint constructor");if(!o.handler)throw new Error("No handler option passed to Waypoint constructor");this.key="waypoint-"+e,this.options=t.Adapter.extend({},t.defaults,o),this.element=this.options.element,this.adapter=new t.Adapter(this.element),this.callback=o.handler,this.axis=this.options.horizontal?"horizontal":"vertical",this.enabled=this.options.enabled,this.triggerPoint=null,this.group=t.Group.findOrCreate({name:this.options.group,axis:this.axis}),this.context=t.Context.findOrCreateByElement(this.options.context),t.offsetAliases[this.options.offset]&&(this.options.offset=t.offsetAliases[this.options.offset]),this.group.add(this),this.context.add(this),i[this.key]=this,e+=1}var e=0,i={};t.prototype.queueTrigger=function(t){this.group.queueTrigger(this,t)},t.prototype.trigger=function(t){this.enabled&&this.callback&&this.callback.apply(this,t)},t.prototype.destroy=function(){this.context.remove(this),this.group.remove(this),delete i[this.key]},t.prototype.disable=function(){return this.enabled=!1,this},t.prototype.enable=function(){return this.context.refresh(),this.enabled=!0,this},t.prototype.next=function(){return this.group.next(this)},t.prototype.previous=function(){return this.group.previous(this)},t.invokeAll=function(t){var e=[];for(var o in i)e.push(i[o]);for(var n=0,r=e.length;r>n;n++)e[n][t]()},t.destroyAll=function(){t.invokeAll("destroy")},t.disableAll=function(){t.invokeAll("disable")},t.enableAll=function(){t.Context.refreshAll();for(var e in i)i[e].enabled=!0;return this},t.refreshAll=function(){t.Context.refreshAll()},t.viewportHeight=function(){return window.innerHeight||document.documentElement.clientHeight},t.viewportWidth=function(){return document.documentElement.clientWidth},t.adapters=[],t.defaults={context:window,continuous:!0,enabled:!0,group:"default",horizontal:!1,offset:0},t.offsetAliases={"bottom-in-view":function(){return this.context.innerHeight()-this.adapter.outerHeight()},"right-in-view":function(){return this.context.innerWidth()-this.adapter.outerWidth()}},window.Waypoint=t}(),function(){"use strict";function t(t){window.setTimeout(t,1e3/60)}function e(t){this.element=t,this.Adapter=n.Adapter,this.adapter=new this.Adapter(t),this.key="waypoint-context-"+i,this.didScroll=!1,this.didResize=!1,this.oldScroll={x:this.adapter.scrollLeft(),y:this.adapter.scrollTop()},this.waypoints={vertical:{},horizontal:{}},t.waypointContextKey=this.key,o[t.waypointContextKey]=this,i+=1,n.windowContext||(n.windowContext=!0,n.windowContext=new e(window)),this.createThrottledScrollHandler(),this.createThrottledResizeHandler()}var i=0,o={},n=window.Waypoint,r=window.onload;e.prototype.add=function(t){var e=t.options.horizontal?"horizontal":"vertical";this.waypoints[e][t.key]=t,this.refresh()},e.prototype.checkEmpty=function(){var t=this.Adapter.isEmptyObject(this.waypoints.horizontal),e=this.Adapter.isEmptyObject(this.waypoints.vertical),i=this.element==this.element.window;t&&e&&!i&&(this.adapter.off(".waypoints"),delete o[this.key])},e.prototype.createThrottledResizeHandler=function(){function t(){e.handleResize(),e.didResize=!1}var e=this;this.adapter.on("resize.waypoints",function(){e.didResize||(e.didResize=!0,n.requestAnimationFrame(t))})},e.prototype.createThrottledScrollHandler=function(){function t(){e.handleScroll(),e.didScroll=!1}var e=this;this.adapter.on("scroll.waypoints",function(){(!e.didScroll||n.isTouch)&&(e.didScroll=!0,n.requestAnimationFrame(t))})},e.prototype.handleResize=function(){n.Context.refreshAll()},e.prototype.handleScroll=function(){var t={},e={horizontal:{newScroll:this.adapter.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.adapter.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};for(var i in e){var o=e[i],n=o.newScroll>o.oldScroll,r=n?o.forward:o.backward;for(var s in this.waypoints[i]){var a=this.waypoints[i][s];if(null!==a.triggerPoint){var l=o.oldScroll=a.triggerPoint,p=l&&h,u=!l&&!h;(p||u)&&(a.queueTrigger(r),t[a.group.id]=a.group)}}}for(var c in t)t[c].flushTriggers();this.oldScroll={x:e.horizontal.newScroll,y:e.vertical.newScroll}},e.prototype.innerHeight=function(){return this.element==this.element.window?n.viewportHeight():this.adapter.innerHeight()},e.prototype.remove=function(t){delete this.waypoints[t.axis][t.key],this.checkEmpty()},e.prototype.innerWidth=function(){return this.element==this.element.window?n.viewportWidth():this.adapter.innerWidth()},e.prototype.destroy=function(){var t=[];for(var e in this.waypoints)for(var i in this.waypoints[e])t.push(this.waypoints[e][i]);for(var o=0,n=t.length;n>o;o++)t[o].destroy()},e.prototype.refresh=function(){var t,e=this.element==this.element.window,i=e?void 0:this.adapter.offset(),o={};this.handleScroll(),t={horizontal:{contextOffset:e?0:i.left,contextScroll:e?0:this.oldScroll.x,contextDimension:this.innerWidth(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:e?0:i.top,contextScroll:e?0:this.oldScroll.y,contextDimension:this.innerHeight(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}};for(var r in t){var s=t[r];for(var a in this.waypoints[r]){var l,h,p,u,c,d=this.waypoints[r][a],f=d.options.offset,w=d.triggerPoint,y=0,g=null==w;d.element!==d.element.window&&(y=d.adapter.offset()[s.offsetProp]),"function"==typeof f?f=f.apply(d):"string"==typeof f&&(f=parseFloat(f),d.options.offset.indexOf("%")>-1&&(f=Math.ceil(s.contextDimension*f/100))),l=s.contextScroll-s.contextOffset,d.triggerPoint=Math.floor(y+l-f),h=w=s.oldScroll,u=h&&p,c=!h&&!p,!g&&u?(d.queueTrigger(s.backward),o[d.group.id]=d.group):!g&&c?(d.queueTrigger(s.forward),o[d.group.id]=d.group):g&&s.oldScroll>=d.triggerPoint&&(d.queueTrigger(s.forward),o[d.group.id]=d.group)}}return n.requestAnimationFrame(function(){for(var t in o)o[t].flushTriggers()}),this},e.findOrCreateByElement=function(t){return e.findByElement(t)||new e(t)},e.refreshAll=function(){for(var t in o)o[t].refresh()},e.findByElement=function(t){return o[t.waypointContextKey]},window.onload=function(){r&&r(),e.refreshAll()},n.requestAnimationFrame=function(e){var i=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||t;i.call(window,e)},n.Context=e}(),function(){"use strict";function t(t,e){return t.triggerPoint-e.triggerPoint}function e(t,e){return e.triggerPoint-t.triggerPoint}function i(t){this.name=t.name,this.axis=t.axis,this.id=this.name+"-"+this.axis,this.waypoints=[],this.clearTriggerQueues(),o[this.axis][this.name]=this}var o={vertical:{},horizontal:{}},n=window.Waypoint;i.prototype.add=function(t){this.waypoints.push(t)},i.prototype.clearTriggerQueues=function(){this.triggerQueues={up:[],down:[],left:[],right:[]}},i.prototype.flushTriggers=function(){for(var i in this.triggerQueues){var o=this.triggerQueues[i],n="up"===i||"left"===i;o.sort(n?e:t);for(var r=0,s=o.length;s>r;r+=1){var a=o[r];(a.options.continuous||r===o.length-1)&&a.trigger([i])}}this.clearTriggerQueues()},i.prototype.next=function(e){this.waypoints.sort(t);var i=n.Adapter.inArray(e,this.waypoints),o=i===this.waypoints.length-1;return o?null:this.waypoints[i+1]},i.prototype.previous=function(e){this.waypoints.sort(t);var i=n.Adapter.inArray(e,this.waypoints);return i?this.waypoints[i-1]:null},i.prototype.queueTrigger=function(t,e){this.triggerQueues[e].push(t)},i.prototype.remove=function(t){var e=n.Adapter.inArray(t,this.waypoints);e>-1&&this.waypoints.splice(e,1)},i.prototype.first=function(){return this.waypoints[0]},i.prototype.last=function(){return this.waypoints[this.waypoints.length-1]},i.findOrCreate=function(t){return o[t.axis][t.name]||new i(t)},n.Group=i}(),function(){"use strict";function t(t){this.element=t,this.$element=e(t)}var e=window.Zepto,i=window.Waypoint;e.each(["off","on","scrollLeft","scrollTop"],function(e,i){t.prototype[i]=function(){var t=Array.prototype.slice.call(arguments);return this.$element[i].apply(this.$element,t)}}),t.prototype.offset=function(){return this.element!==this.element.window?this.$element.offset():void 0},e.each(["width","height"],function(i,o){function n(t,i){return function(t){var n=this.$element,r=n[o](),s={width:["left","right"],height:["top","bottom"]};return e.each(s[o],function(e,o){r+=parseInt(n.css("padding-"+o),10),i&&(r+=parseInt(n.css("border-"+o+"-width"),10)),t&&(r+=parseInt(n.css("margin-"+o),10))}),r}}var r=e.camelCase("inner-"+o),s=e.camelCase("outer-"+o);t.prototype[r]=n(!1),t.prototype[s]=n(!0)}),e.each(["extend","inArray"],function(i,o){t[o]=e[o]}),t.isEmptyObject=function(t){for(var e in t)return!1;return!0},i.adapters.push({name:"zepto",Adapter:t}),i.Adapter=t}(),function(){"use strict";function t(t){return function(){var i=[],o=arguments[0];return t.isFunction(arguments[0])&&(o=t.extend({},arguments[1]),o.handler=arguments[0]),this.each(function(){var n=t.extend({},o,{element:this});"string"==typeof n.context&&(n.context=t(this).closest(n.context)[0]),i.push(new e(n))}),i}}var e=window.Waypoint;window.jQuery&&(window.jQuery.fn.waypoint=t(window.jQuery)),window.Zepto&&(window.Zepto.fn.waypoint=t(window.Zepto))}();
\ No newline at end of file
diff --git a/apps/static/assets/vendor/waypoints/licenses.txt b/apps/static/assets/vendor/waypoints/licenses.txt
new file mode 100644
index 00000000..b63744db
--- /dev/null
+++ b/apps/static/assets/vendor/waypoints/licenses.txt
@@ -0,0 +1,23 @@
+Copyright (c) 2011-2012 Caleb Troughton
+
+-----------------------------------------------------------------------
+
+The MIT License
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
\ No newline at end of file
diff --git a/apps/static/assets/vendor/waypoints/testem.json b/apps/static/assets/vendor/waypoints/testem.json
new file mode 100644
index 00000000..21f89a03
--- /dev/null
+++ b/apps/static/assets/vendor/waypoints/testem.json
@@ -0,0 +1,24 @@
+{
+ "framework": "jasmine",
+ "launch_in_dev": [
+ "PhantomJS"
+ ],
+ "launch_in_ci": [
+ "PhantomJS"
+ ],
+ "src_files": [
+ "bower_components/jquery/dist/jquery.js",
+ "bower_components/jasmine-jquery/lib/jasmine-jquery.js",
+ "bower_components/zepto/zepto.js",
+
+ "src/waypoint.js",
+ "src/context.js",
+ "src/group.js",
+ "src/debug.js",
+ "src/adapters/*.js",
+ "src/shortcuts/*.js",
+
+ "test/settings.js",
+ "test/*-spec.js"
+ ]
+}
diff --git a/apps/static/favicon.ico b/apps/static/favicon.ico
new file mode 100644
index 00000000..3e0a76f4
Binary files /dev/null and b/apps/static/favicon.ico differ
diff --git a/apps/static/sitemap.xml b/apps/static/sitemap.xml
new file mode 100644
index 00000000..1c6f5064
--- /dev/null
+++ b/apps/static/sitemap.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+ https://django-dashboard-dattaable.appseed.us
+ 1
+ monthly
+
+
+
+
diff --git a/apps/templates/.gitkeep b/apps/templates/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/apps/templates/accounts/login.html b/apps/templates/accounts/login.html
new file mode 100644
index 00000000..1c09cc6d
--- /dev/null
+++ b/apps/templates/accounts/login.html
@@ -0,0 +1,91 @@
+{% extends "layouts/base-fullscreen.html" %}
+
+{% block title %} Sign IN {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
+
+
+ {% if msg %}
+ {{ msg | safe }}
+ {% else %}
+ Add your credentials
+ {% endif %}
+
+
+
+
+
+
+
+
+ © Themesberg - coded by
+ AppSeed
+
+
+
+
+
+
+
+
+
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/accounts/register.html b/apps/templates/accounts/register.html
new file mode 100644
index 00000000..14e2ce93
--- /dev/null
+++ b/apps/templates/accounts/register.html
@@ -0,0 +1,121 @@
+{% extends "layouts/base-fullscreen.html" %}
+
+{% block title %} Sign UP {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
+
+
+ {% if msg %}
+ {{ msg | safe }}
+ {% else %}
+ Add your credentials
+ {% endif %}
+
+
+
+ {% if not success %}
+
+
+
+ {% else %}
+
+
+ Sign IN
+
+
+ {% endif %}
+
+
+
+
+
+ © Themesberg - coded by
+ AppSeed
+
+
+
+
+
+
+
+
+
+
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/home/about.html b/apps/templates/home/about.html
new file mode 100644
index 00000000..2da1efdc
--- /dev/null
+++ b/apps/templates/home/about.html
@@ -0,0 +1,349 @@
+{% extends "layouts/base.html" %}
+
+{% block title %} About {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
All challenges accepted.
+
Themesberg is an experienced and passionate group of designers, developers, project managers, writers and artists. Every client we work with becomes a part of the team. Together we face the challenges and celebrate the victories.
+
With a culture of collaboration, a roster of talent, and several office pooches, the Themesberg team is active in the creative community, endlessly interested in what’s next, and generally pleasant to be around.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Team Members
+
500
+
+
+
+
+
+
+
+
+
+
Projects Published
+
2400
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Present
+
Now over seven years old, Bootstrap is an established and widely-used HTML, CSS, and JavaScript framework. It can be used as a basis for creating responsive web and mobile sites and web applications.
+
+
+
+
Our first products
+
+
+
+
+
+
+
Bootstrap. Build responsive, mobile-first projects on the web with the world's most popular front-end component library. Bootstrap is an open source toolkit for developing with HTML, CSS, and JS. Quickly prototype your
+ ideas.
+
+
+
+
+
Our office
+
+
AngularJS is a JavaScript-based open-source front-end web application framework mainly maintained by Google and by a community of individuals and corporations to address many of the challenges encountered in developing
+ single-page applications.
+
+
+
+
+
An ideea becomes a business
+
AngularJS is a JavaScript-based open-source front-end web application framework mainly maintained by Google and by a community of individuals and corporations to address many of the challenges encountered in developing
+ single-page applications.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Funny & Creative Team
+
We have developed a multi-discipline portfolio as a digital marketing agency, we also have roots in print media and even photography.
+
+
+
+
+
+
+
+
+
Joseph Garth
+
Co-Founder
+
Some quick example text to build on the card title and make up the bulk of the card's content.
+
+
+
+
+
+
+
+
+
Bonnie Green
+
Web Developer
+
Some quick example text to build on the card title and make up the bulk of the card's content.
+
+
+
+
+
+
+
+
+
Jose Leos
+
Web publications designer
+
Some quick example text to build on the card title and make up the bulk of the card's content.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Become one of us
+
+ Do you want to join our team and work remotely from anywhere you’d like? We can’t wait to hear from you!
+
+
+
+
+
+ Check Careers
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% include 'includes/footer-about.html' %}
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/home/blank.html b/apps/templates/home/blank.html
new file mode 100644
index 00000000..6e2176c1
--- /dev/null
+++ b/apps/templates/home/blank.html
@@ -0,0 +1,33 @@
+{% extends "layouts/base.html" %}
+
+{% block title %} Blank Page {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+ {% include 'includes/footer.html' %}
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/home/contact.html b/apps/templates/home/contact.html
new file mode 100644
index 00000000..06c7a4cc
--- /dev/null
+++ b/apps/templates/home/contact.html
@@ -0,0 +1,197 @@
+{% extends "layouts/base.html" %}
+
+{% block title %} Contact {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Your Message
+
+
+
+
+ Send message
+
+
+
+
+
+
+
+
+
+
Our support team
+
+
+
+
+
+
Sales
+
Christopher Wood
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Marketing
+
Bonnie Green
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Invoice
+
Neil Sims
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% include 'includes/footer.html' %}
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/home/index.html b/apps/templates/home/index.html
new file mode 100644
index 00000000..591e9b58
--- /dev/null
+++ b/apps/templates/home/index.html
@@ -0,0 +1,2758 @@
+
+
+
+
+
+
+
+
+
+
+ Django Pixel Lite - Presentation | AppSeed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% include 'includes/navigation.html' %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
80
+
Bootstrap 5 elements
+
+
+
+
+
+
5
+
Example Pages
+
+
+
+
+
+
Workflow
+
Sass & Gulp
+
+
+
+
+
+
Vanilla
+
Javascript
+
+
+
+
+
Bootstrap 5
+
Latest version of Bootstrap without jQuery
+
Pixel is built using the latest version of Bootstrap 5 and we only used Vanilla
+ Javascript for everything including the plugins
+
Product Docs
+
+
+
+
+
+
+
+
Modular sections Pro
+
+
More than 50 website sections
+
Using the sections in Pixel Pro you can easily build new pages by adding them
+ together
+
+
+ See Premium Version
+
+
+
+
+
+
+
+
+
User Dashboard Pro
+
+
9 dashboard pages
+
Quickly set up a user settings panel with the advanced dashboard pages including
+ billing, settings, messaging
+
Explore
+ dashboard
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This is the first item's accordion body. It is hidden by default, until
+ the collapse plugin adds the appropriate classes that we use to style each element.
+ These classes control the overall appearance, as well as the showing and hiding via CSS
+ transitions. You can modify any of this with custom CSS or overriding our default
+ variables. It's also worth noting that just about any HTML can go within the
+ .accordion-body
, though the transition does limit overflow.
+
+
+
+
+
+
+
+ This is the second item's accordion body. It is hidden by default,
+ until the collapse plugin adds the appropriate classes that we use to style each
+ element. These classes control the overall appearance, as well as the showing and hiding
+ via CSS transitions. You can modify any of this with custom CSS or overriding our
+ default variables. It's also worth noting that just about any HTML can go within the
+ .accordion-body
, though the transition does limit overflow.
+
+
+
+
+
+
+
+ This is the third item's accordion body. It is hidden by default, until
+ the collapse plugin adds the appropriate classes that we use to style each element.
+ These classes control the overall appearance, as well as the showing and hiding via CSS
+ transitions. You can modify any of this with custom CSS or overriding our default
+ variables. It's also worth noting that just about any HTML can go within the
+ .accordion-body
, though the transition does limit overflow.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A simple primary alert—check it out!
+
+
+ A simple tertiary alert—check it out!
+
+
+ A simple success alert—check it out!
+
+
+ A simple danger alert—check it out!
+
+
+ A simple warning alert—check it out!
+
+
+ A simple info alert—check it out!
+
+
+ A simple light alert—check it out!
+
+
+ A simple dark alert—check it out!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Awards
+
We partnered up with Google
+
Some quick example text to build on the card title and make up the bulk of
+ the card's content.
+
Learn More
+
+
+
+
+
+
+
+
+
+
Neil D. Sims
+
New York,
+ USA
+
Neil drives the technical strategy of the platform and brand.
+
+
+
+ Follow
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1 free domain
+ Storage space: 5GB
+ 100k monthly visitors
+ One-click staging site
+ Search engine wizard
+ Community support
+
+
+
+
+
+
+
+
+
+
+
+
Get in touch
+
+ If you need any help with our products or services, choose one of the following ways
+ to contact us.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Main Buttons
+
+
Button
+
+
+ Icon Left
+
+
+ Icon Right
+
+
+
+
+
+
+
+
Outline Buttons
+
+
+
Outline-primary
+
+
+ Icon Left
+
+
+ Icon Right
+
+
+
+
+
+
+
+
Sizes
+
+
+
Small
+
Regular
+
Large Button
+
+
+
+
Choose your color
+
+
+
Main
+
+
+
Primary
+
Secondary
+
Tertiary
+
Info
+
Success
+
Warning
+
Danger
+
Dark
+
Gray
+
Light
+
White
+
+
+
Outline
+
+
+
Primary
+
Secondary
+
Tertiary
+
Info
+
Success
+
Danger
+
Dark
+
Gray
+
+
+
+
+
+
+
Social Buttons
+
+
+
+ Login with Facebook
+
+
+
+
+
+
+ Share on Instagram
+
+
+
+
+ Login with dribbble
+
+
+
+
+ Chat on Slack
+
+
+
+
+ Smart Sync
+
+
+
+
+ Login with GitHub
+
+
+
+
+
+
Round Social Buttons
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Button dropdowns
+
+
+ Primary
+
+
+ Toggle Dropdown
+
+
+
+
+
+
+ Toggle Dropdown
+
+
+
+
+
+
+ Choose your size
+
+
+ Small
+
+
+ Toggle Dropdown
+
+
+
+
+ Default
+
+
+ Toggle Dropdown
+
+
+
+
+ Large
+
+
+ Toggle Dropdown
+
+
+
+
+
+
+ Dropdown button directions
+
+
+ Up
+
+
+ Toggle Dropdown
+
+
+
+
+ Right
+
+
+ Toggle Dropdown
+
+
+
+
+ Down
+
+
+ Toggle Dropdown
+
+
+
+
+ Left
+
+
+ Toggle Dropdown
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Email address
+
+ We'll never share your email with anyone
+ else.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name
+
+
+
+ Disabled select menu
+
+ Disabled select
+
+
+
+
+
+ Country
+
+ Open this select menu
+ One
+ Two
+ Three
+
+
+
+
+
+ Example textarea
+
+
+
+
+
+
+
+
First name
+
+
+ Looks good!
+
+
+
+
+
+
Username
+
+
+ Please choose a username.
+
+
+
+
+
+ Default file input example
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default
+
+
+
+
+
+
+
+
With less than a month to go before the European Union enacts new consumer privacy
+ laws for its citizens, companies around the world are updating their terms of
+ service agreements to comply.
+
The European Union’s General Data Protection Regulation (G.D.P.R.) goes into effect
+ on May 25 and is meant to ensure a common set of data rights in the European Union.
+ It requires organizations to notify users as
+ soon as possible of high-risk data breaches that could personally affect them.
+
+
+
+
+
+
+
+
+
+
+ Notification
+
+
+
+
+
+
+
+
+
+
Important message!
+
Do you know that you can assign status and relation to a company
+ right in the visit list?.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Pagination with icon-nav
+
+
+
+
+
+
+
+
Pagination with text-nav
+
+
+
+
+
+
+
+
+
+
Disabled and active states
+
+
+
+
+
+
+
+
Choose your size
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Popover on top
+
+
+
+ Popover on left
+
+
+
+ Popover on bottom
+
+
+
+ Popover on right
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Primary Color
+
+
+ 50%
+
+
+
+
+
+
+
+ Secondary Color
+
+
+ 60%
+
+
+
+
+
+
+
+ Tertiary Color
+
+
+ 60%
+
+
+
+
+
+
+
+ Dark Color
+
+
+ 60%
+
+
+
+
+
+
+
+ Success Bar
+
+
+ 60%
+
+
+
+
+
+
+
+ Info Bar
+
+
+ 60%
+
+
+
+
+
+
+
+ Danger Bar
+
+
+ 60%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Exercitation photo booth stumptown tote bag Banksy, elit small batch freegan sed.
+ Craft beer elit seitan exercitation, photo booth et 8-bit kale chips proident
+ chillwave deep v laborum. Aliquip veniam delectus,
+ Marfa eiusmod Pinterest in do umami readymade swag.
+
Day handsome addition horrible sensible goodness two contempt. Evening for married
+ his account removal. Estimable me disposing of be moonlight cordially curiosity.
+
+
+
Photo booth stumptown tote bag Banksy, elit small batch freegan sed. Craft beer elit
+ seitan exercitation, photo booth et 8-bit kale chips proident chillwave deep v
+ laborum. Aliquip veniam delectus, Marfa eiusmod
+ Pinterest in do umami readymade swag.
+
Day handsome addition horrible sensible goodness two contempt. Evening for married
+ his account removal. Estimable me disposing of be moonlight cordially curiosity.
+
+
+
Exercitation photo booth stumptown tote bag Banksy, elit small batch freegan sed.
+ Craft beer elit seitan exercitation, photo booth et 8-bit kale chips proident
+ chillwave deep v laborum. Aliquip veniam delectus,
+ Marfa eiusmod Pinterest in do umami readymade swag.
+
Day handsome addition horrible sensible goodness two contempt. Evening for married
+ his account removal. Estimable me disposing of be moonlight cordially curiosity.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Hello, world! This is a toast message.
+
+
+
+
+
+
+
+ Hello, world! This is a toast message.
+
+
+
+
+
+
+
+ Hello, world! This is a toast message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tooltip on top
+
+
+ Tooltip on right
+
+
+ Tooltip on bottom
+
+
+ Tooltip on left
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
h1. Themesberg heading
+ h2. Themesberg heading
+ h3. Themesberg heading
+ h4. Themesberg heading
+ h5. Themesberg heading
+ h6. Themesberg heading
+
+
+
+
+
+
+ Customizing headings
+
+
+
+
+
+
+
+ Fancy display heading
+ With faded secondary text
+
+
+ Fancy display heading
+ With faded secondary text
+
+
+ Fancy display heading
+ With faded secondary text
+
+
+ Fancy display heading
+ With faded secondary text
+
+
+ Fancy display heading
+ With faded secondary text
+
+
+ Fancy display heading
+ With faded secondary text
+
+
+
+
+
+
+
+
+
Display 1
+ Display 2
+ Display 3
+ Display 4
+
+
+
+
+
+
+
+
+ Simple paragraph
+
+
Start your development with a Pixel Design System for Themesberg 4.Themesberg makes beautiful
+ products to help people with creative ideas succeed.Our company empowers millions of people.
+
+
+
+
+ Lead paragraph
+
+
Start your development with a Pixel Design System for Themesberg 4.Themesberg makes
+ beautiful products to help people with creative ideas succeed.Our company empowers millions of
+ people.
+
+
+
+
+ Dark text
+
+
+
Design is not just what it looks like and feels like. Design is how it works.
+
+
+
+
+
+ Primary text
+
+
+
Design is not just what it looks like and feels like. Design is how it
+ works.
+
+
+
+
+ Secondary text
+
+
+
Design is not just what it looks like and feels like. Design is how it
+ works.
+
+
+
+
+ Tertiary text
+
+
+
Design is not just what it looks like and feels like. Design is how it
+ works.
+
+
+
+
+ Info text
+
+
+
Design is not just what it looks like and feels like. Design is how it works.
+
+
+
+
+
+ Danger text
+
+
+
Design is not just what it looks like and feels like. Design is how it
+ works.
+
+
+
+
+ Success text
+
+
+
Design is not just what it looks like and feels like. Design is how it
+ works.
+
+
+
+
+
+
+
+
+ Themesberg makes beautiful products to help people with creative ideas succeed. Our company empowers
+ millions of people.
+
+
+
+
+
+
+
+
+
+
+ Unordered
+
+
+ Minutes of the last meeting
+ Do we need yet more meetings?
+ Any other business
+
+ Programming
+ Web Design
+ Database
+
+
+ Something funny
+
+
+
+
+ Ordered
+
+
+ Minutes of the last meeting
+ Do we need yet more meetings?
+ Any other business
+
+ Programming
+ Web Design
+ Database
+
+
+ Something funny
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default table
+
+
+
+
+ Class
+ Teacher
+ Males
+ Females
+
+
+ First Year
+ D. Bolter
+ 5
+ 4
+
+
+ A. Cheetham
+ 7
+ 9
+
+
+ Second Year
+ M. Lam
+ 3
+ 9
+
+
+ S. Crossy
+ 4
+ 3
+
+
+ A. Forsyth
+ 6
+ 9
+
+
+
+
+
+ Dark table
+
+
+
+ Year
+ Teacher
+ Males
+ Females
+
+
+ First Year
+ D. Bolter
+ 5
+ 4
+
+
+ A. Cheetham
+ 7
+ 9
+
+
+ Second Year
+ M. Lam
+ 3
+ 9
+
+
+ S. Crossy
+ 4
+ 3
+
+
+ A. Forsyth
+ 6
+ 9
+
+
+
+
+
+ Hoverable rows
+
+
+
+ Class
+ Teacher
+ Males
+ Females
+
+
+ First Year
+ D. Bolter
+ 5
+ 4
+
+
+ A. Cheetham
+ 7
+ 9
+
+
+ Second Year
+ M. Lam
+ 3
+ 9
+
+
+ S. Crossy
+ 4
+ 3
+
+
+ A. Forsyth
+ 6
+ 9
+
+
+
+
+
+ Responsive Table
+
+
+
+
+ Class
+ Teacher
+ Males
+ Females
+
+
+ First Year
+ D. Bolter
+ 5
+ 4
+
+
+ A. Cheetham
+ 7
+ 9
+
+
+ Second Year
+ M. Lam
+ 3
+ 9
+
+
+ S. Crossy
+ 4
+ 3
+
+
+ A. Forsyth
+ 6
+ 9
+
+
+
+
+
+
+
+
+
+
+
+
+
+
5 hand-crafted example pages
+
+
+
+
+
+
+
+
+
+
+
+
Notable features
+
You get all Bootstrap components fully customized. Besides, you receive numerous
+ plugins out of the box and ready to use
+
+
+
+
+
+
+
+
+
+
Bootstrap 5
+
A responsive and mobile-first theme built with the world's most popular CSS framework
+
+
+
+
+
+
+
+
+
+
Build with Sass
+
Change one variable and the theme adapts. Colors, fonts, sizes, buttons... you name it
+
+
+
+
+
+
+
+
+
+
+
Responsive Design
+
Did you know 53% of the world web traffic is mobile? Pixel is fully responsive and mobile
+ first
+
+
+
+
+
+
+
+
+
+
Modular approach
+
Nicely customized components that can be reused anytime and anywhere in your project
+
+
+
+
+
+
+
+
+
+
Gulp & BrowserSync
+
With our custom Gulp commands & BrowserSync we offer a seemless and fast workflow for
+ your project
+
+
+
+
+
+
+
+
+
+
Well documented
+
Our kit is delivered with very detailed documentation, describing all components, styles
+ and usages
+
+
+
+
+
+
+
+
+
+
Google PageSpeed
+
Pixel has 80+ scores on Google PageSpeed Insights to offer you and your clients a fast
+ website
+
+
+
+
+
+
+
+
+
+
+
SVG illustrations
+
Photography and Illustration SVGs are included in the download package and are free to
+ use
+
+
+
+
+
+
+
+
+
+
+
Every pixel matters
+
We crafted each component with great care so that no rouge pixel is left behind
+
+
+
+
+
+
+
+
+
+
+
+
What's inside?
+
We have carefully crafted the perfect folder structure to ensure that
+ finding the files you're looking for are easily reachable and well organized.
+
+
+
+
+
+
You need only HTML, CSS and Javascript?
+
Don't worry, we got you covered. We have a folder called html&css
which includes only the basic HTML5, CSS3 and
+ Javascript technologies.
+
Docs v5.3
+
+
+
+
+ src
+
+
+ assets
+ html
+
+ partials
+
+
+ scss
+
+ index.html
+
+
+ html&css
+ .temp
+ dist
+ node_modules
+
+ gulpfile.js
+ package.json
+ README.md
+
+ .gitignore
+
+
+
+
+
You need only HTML, CSS and Javascript?
+
Don't worry, we got you covered. We have a folder called html&css
which includes only the basic HTML5, CSS3 and
+ Javascript technologies.
+
+
+
+
+
+
+
+
+
+
WCAG 2.1 accessible color scheme
+
+ We've enhanced Bootstrap’s color settings to comply with the latest accessibility
+ standards
+
+
+
+
+
+
+
+
+
Primary:
+ #174F84
+
+
+
+
+
+
+
+
Secondary:
+ #10AB7C
+
+
+
+
+
+
+
+
Tertiary:
+ #FF7F66
+
+
+
+
+
+
+
+
Info:
+ #1E90FF
+
+
+
+
+
+
+
+
Warning:
+ #F5B759
+
+
+
+
+
+
+
+
Success:
+ #00BF9A
+
+
+
+
+
+
+
+
Danger:
+ #FA5252
+
+
+
+
+
+
+
+
Dark:
+ #2A354F
+
+
+
+
+
+
+
+
Light:
+ #DDE1ED
+
+
+
+
+
+
+
+
Soft:
+ #EFF2F5
+
+
+
+
+
+
+
+
+
+
+
+
Less work , more flow .
+
+ Boost productivity with BrowserSync. SCSS changes are reflected instantly and pages scroll
+ and refresh on devices as you work.
+
+
+
+
+
+
+
+
+
> $ npm install
+
Everything’s installed!
+
+
+
> $ gulp
+
SCSS watching
+
LiveReload started
+
Opening localhost:3000
+
+
+
> $ that's it?
+
It's that simple!
+
+
+
+
Looks unfamiliar? Don’t worry! Our
documentation has got you covered.
+
+
+
+
+
+
+
+
+
+
Open source project
+
Pixel is an open source Bootstrap 5 UI Kit that is licensed under the very permissive MIT
+ License. Consider giving us a star on the official Github repository to spread the news!
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 80 Components
+ 6 Example Pages
+ Uncoventional cards
+ Timelines
+ E-commerce
+ Charts
+ Premium Support
+
+
+
+ See Product
+
+
+
+
+
+
+
+
+
+
+
+ 1000+ Components
+ 35 Example Pages
+ Dashboard included
+ Uncoventional cards
+ Timelines
+ E-commerce
+ Premium charts
+ Premium
+ Support
+
+
+
See Product
+
+
+
+
+
+
+
+
+
+ {% include 'includes/footer.html' %}
+
+ {% include 'includes/scripts.html' %}
+
+
+
diff --git a/apps/templates/home/landing-freelancer.html b/apps/templates/home/landing-freelancer.html
new file mode 100644
index 00000000..8de7fac5
--- /dev/null
+++ b/apps/templates/home/landing-freelancer.html
@@ -0,0 +1,457 @@
+{% extends "layouts/base.html" %}
+
+{% block title %} Freelancer Page {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Prototyping
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Development
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Team Lead
+
+
+
+
+
I work at the intersection of design, brand, code, strategy and content; helping organisations bring their concepts and products to life… to make people’s lives better.
+
+
+
With more than a decade of experience I tackle a broad variety of disciplines in the process of creating meaningful products that make a real difference. With carefully selected tools and skills I express my visions ranging from product design to the creation of user experience up to development and delivery.
+
My distinctive strategic thinking helps me to pinpoint the holistic scope of a product and evolve it by adding new business ideas, innovations and values that meet user needs as well as business objectives. Besides building user flows, information architecture and wireframes, tailor-made interactive prototypes
+
+
+
are constantly putting concepts and ideas to the test and emphasize the user-centered approach in my work. I work with the latest techniques in web development and my agile workflow is the result of the precisely combined tools and strategies that include object oriented patterns, build scripts, pre-processors and minification, source code management, testing as well as deployment.
+
+
+
+
+
+
+
+
+
+
+
+ Experience
+
+
And if it’s not listed here, I learn incredibly quickly
+
+
+
+
+
+
+
+
+
Google Inc.
+
+
+
Senior Architect
+
Collaborate with creative and development teams on the execution of ideas.
+
+
2021 - Present
+
+
+
+
+
+
Facebook Inc.
+
+
+
Front-end Developer
+
Collaborate with creative and development teams on the execution of ideas.
+
+
2016 - 2019
+
+
+
+
+
+
Themesberg LLC.
+
+
+
UI/UX Engineer
+
Collaborate with creative and development teams on the execution of ideas.
+
+
2014 - 2016
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skills
+
+
And if it’s not listed here, I learn incredibly quickly
+
+
+
+
+
+ Design
+ Product Design
+ UX Design
+ Visual Design (UI)
+ Wire-framing + Prototyping
+ Journey-Mapping
+ UX Research
+ Logo and Branding
+ Creative Direction
+
+
+
+
+ Development
+ HTML
+ SASS + CSS
+ Javascript + jQuery
+ ReactJS
+ API Integrations
+ Working within SDKs
+
+
+
+
+ Software
+ Postman
+ Sketch
+ Adobe Illustrator
+ Adobe Photoshop
+ Figma
+ InVision
+ Visual Studio Code
+
+
+
+
+
+
+
+
+
+
+
+ Testimonials
+
+
Hear more from companies like yours
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Some quick example text to build on the card title and make up the bulk of the card's content.
+
See story
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Some quick example text to build on the card title and make up the bulk of the card's content.
+
See story
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Some quick example text to build on the card title and make up the bulk of the card's content.
+
See story
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Some quick example text to build on the card title and make up the bulk of the card's content.
+
See story
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Some quick example text to build on the card title and make up the bulk of the card's content.
+
See story
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Some quick example text to build on the card title and make up the bulk of the card's content.
+
See story
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Visit me
+
+ 27 Silicon Valley
+ USA, California
+
+
+
+
+
+
+
+
+
+
+
Call
+
+3912345678
+
+ Mon - Fri, 8am - 4pm
+
+
+
+
+
+
+
+
+
Want to work with me?
+
Cool! Let’s talk about your project
+
+
+
+
+
+
+
+
+
+
+ Your Message
+
+
+
+
+ Send message
+
+
+
+
+
+
+
+
+
+ {% include 'includes/footer.html' %}
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/home/page-404.html b/apps/templates/home/page-404.html
new file mode 100644
index 00000000..9904a5d7
--- /dev/null
+++ b/apps/templates/home/page-404.html
@@ -0,0 +1,47 @@
+{% extends "layouts/base-fullscreen.html" %}
+
+{% block title %} Error 404 {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
+
+ Error 404
+
+
+
+ Page not found
+
+
+
+
+
+ Home - Contact Support .
+
+
+
+
+
+
+
+
+
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/home/page-500.html b/apps/templates/home/page-500.html
new file mode 100644
index 00000000..69a88e18
--- /dev/null
+++ b/apps/templates/home/page-500.html
@@ -0,0 +1,47 @@
+{% extends "layouts/base-fullscreen.html" %}
+
+{% block title %} Error 500 {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
+
+ Error 500
+
+
+
+ Server error
+
+
+
+
+
+ Home - Contact Support .
+
+
+
+
+
+
+
+
+
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/home/sign-in.html b/apps/templates/home/sign-in.html
new file mode 100644
index 00000000..f8560b86
--- /dev/null
+++ b/apps/templates/home/sign-in.html
@@ -0,0 +1,88 @@
+{% extends "layouts/base-fullscreen.html" %}
+
+{% block title %} Sign IN {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
Sign in to our platform
+
+
+
+
+
+
+
+ Sign in
+
+
+
+ or login with
+
+
+
+
+ Not registered?
+ Create account
+
+
+
+
+
+
+
+
+
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/home/sign-up.html b/apps/templates/home/sign-up.html
new file mode 100644
index 00000000..a1f83a84
--- /dev/null
+++ b/apps/templates/home/sign-up.html
@@ -0,0 +1,94 @@
+{% extends "layouts/base-fullscreen.html" %}
+
+{% block title %} Sign UP {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
Create an account
+
+
+
+
+
+
+
+ Sign up
+
+
+
+ or
+
+
+
+
+ Already have an account?
+ Login here
+
+
+
+
+
+
+
+
+
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/home/ui-accordions.html b/apps/templates/home/ui-accordions.html
new file mode 100644
index 00000000..f0eca755
--- /dev/null
+++ b/apps/templates/home/ui-accordions.html
@@ -0,0 +1,107 @@
+{% extends "layouts/base.html" %}
+
+{% block title %} UI Accordions {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This is the first item's accordion body. It is hidden by default, until
+ the collapse plugin adds the appropriate classes that we use to style each element.
+ These classes control the overall appearance, as well as the showing and hiding via CSS
+ transitions. You can modify any of this with custom CSS or overriding our default
+ variables. It's also worth noting that just about any HTML can go within the
+ .accordion-body
, though the transition does limit overflow.
+
+
+
+
+
+
+
+ This is the second item's accordion body. It is hidden by default,
+ until the collapse plugin adds the appropriate classes that we use to style each
+ element. These classes control the overall appearance, as well as the showing and hiding
+ via CSS transitions. You can modify any of this with custom CSS or overriding our
+ default variables. It's also worth noting that just about any HTML can go within the
+ .accordion-body
, though the transition does limit overflow.
+
+
+
+
+
+
+
+ This is the third item's accordion body. It is hidden by default, until
+ the collapse plugin adds the appropriate classes that we use to style each element.
+ These classes control the overall appearance, as well as the showing and hiding via CSS
+ transitions. You can modify any of this with custom CSS or overriding our default
+ variables. It's also worth noting that just about any HTML can go within the
+ .accordion-body
, though the transition does limit overflow.
+
+
+
+
+
+
+
+
+
+
+
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/home/ui-alerts.html b/apps/templates/home/ui-alerts.html
new file mode 100644
index 00000000..d7e06f8b
--- /dev/null
+++ b/apps/templates/home/ui-alerts.html
@@ -0,0 +1,71 @@
+{% extends "layouts/base.html" %}
+
+{% block title %} UI Alerts {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
+
+
+ A simple primary alert—check it out!
+
+
+ A simple tertiary alert—check it out!
+
+
+ A simple success alert—check it out!
+
+
+ A simple danger alert—check it out!
+
+
+ A simple warning alert—check it out!
+
+
+ A simple info alert—check it out!
+
+
+ A simple light alert—check it out!
+
+
+ A simple dark alert—check it out!
+
+
+
+
+
+
+
+
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/home/ui-badges.html b/apps/templates/home/ui-badges.html
new file mode 100644
index 00000000..aeccf3b7
--- /dev/null
+++ b/apps/templates/home/ui-badges.html
@@ -0,0 +1,55 @@
+{% extends "layouts/base.html" %}
+
+{% block title %} UI Badges {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
+
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/home/ui-bootstrap-carousels.html b/apps/templates/home/ui-bootstrap-carousels.html
new file mode 100644
index 00000000..4d13b59f
--- /dev/null
+++ b/apps/templates/home/ui-bootstrap-carousels.html
@@ -0,0 +1,68 @@
+{% extends "layouts/base.html" %}
+
+{% block title %} UI Bootstrap Carousels {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
+
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/home/ui-breadcrumbs.html b/apps/templates/home/ui-breadcrumbs.html
new file mode 100644
index 00000000..e5d40043
--- /dev/null
+++ b/apps/templates/home/ui-breadcrumbs.html
@@ -0,0 +1,76 @@
+{% extends "layouts/base.html" %}
+
+{% block title %} UI Breadcrumbs {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
+
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/home/ui-buttons.html b/apps/templates/home/ui-buttons.html
new file mode 100644
index 00000000..24578ae0
--- /dev/null
+++ b/apps/templates/home/ui-buttons.html
@@ -0,0 +1,216 @@
+{% extends "layouts/base.html" %}
+
+{% block title %} UI Buttons {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
+
+
+
Main Buttons
+
+
Button
+
+
+ Icon Left
+
+
+ Icon Right
+
+
+
+
+
+
+
+
Outline Buttons
+
+
+
Outline-primary
+
+
+ Icon Left
+
+
+ Icon Right
+
+
+
+
+
+
+
+
Sizes
+
+
+
Small
+
Regular
+
Large Button
+
+
+
+
Choose your color
+
+
+
Main
+
+
+
Primary
+
Secondary
+
Tertiary
+
Info
+
Success
+
Warning
+
Danger
+
Dark
+
Gray
+
Light
+
White
+
+
+
Outline
+
+
+
Primary
+
Secondary
+
Tertiary
+
Info
+
Success
+
Danger
+
Dark
+
Gray
+
+
+
+
+
+
+
Social Buttons
+
+
+
+ Login with Facebook
+
+
+
+
+
+
+ Share on Instagram
+
+
+
+
+ Login with dribbble
+
+
+
+
+ Chat on Slack
+
+
+
+
+ Smart Sync
+
+
+
+
+ Login with GitHub
+
+
+
+
+
+
Round Social Buttons
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{% endblock content %}
+
+
+{% block javascripts %}
+
+
+
+{% endblock javascripts %}
diff --git a/apps/templates/home/ui-cards.html b/apps/templates/home/ui-cards.html
new file mode 100644
index 00000000..cf37c4ca
--- /dev/null
+++ b/apps/templates/home/ui-cards.html
@@ -0,0 +1,132 @@
+{% extends "layouts/base.html" %}
+
+{% block title %} UI Cards {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Awards
+
We partnered up with Google
+
Some quick example text to build on the card title and make up the bulk of
+ the card's content.
+
Learn More
+
+
+
+
+
+
+
+
+
+
Neil D. Sims
+
New York,
+ USA
+
Neil drives the technical strategy of the platform and brand.
+
+
+
+ Follow
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1 free domain
+ Storage space: 5GB
+ 100k monthly visitors
+ One-click staging site
+ Search engine wizard
+ Community support
+
+
+
+
+
+
+
+
+
+
+
+
Get in touch
+
+ If you need any help with our products or services, choose one of the following ways
+ to contact us.
+
+
+
+
+
+
+
+
+
+
+
+
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/home/ui-dropdowns.html b/apps/templates/home/ui-dropdowns.html
new file mode 100644
index 00000000..190c3014
--- /dev/null
+++ b/apps/templates/home/ui-dropdowns.html
@@ -0,0 +1,185 @@
+{% extends "layouts/base.html" %}
+
+{% block title %} UI Dropdowns {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
+
+
+ Button dropdowns
+
+
+ Primary
+
+
+ Toggle Dropdown
+
+
+
+
+
+
+ Toggle Dropdown
+
+
+
+
+
+
+ Choose your size
+
+
+ Small
+
+
+ Toggle Dropdown
+
+
+
+
+ Default
+
+
+ Toggle Dropdown
+
+
+
+
+ Large
+
+
+ Toggle Dropdown
+
+
+
+
+
+
+ Dropdown button directions
+
+
+ Up
+
+
+ Toggle Dropdown
+
+
+
+
+ Right
+
+
+ Toggle Dropdown
+
+
+
+
+ Down
+
+
+ Toggle Dropdown
+
+
+
+
+ Left
+
+
+ Toggle Dropdown
+
+
+
+
+
+
+
+
+
+
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/home/ui-forms.html b/apps/templates/home/ui-forms.html
new file mode 100644
index 00000000..b5b569fc
--- /dev/null
+++ b/apps/templates/home/ui-forms.html
@@ -0,0 +1,282 @@
+{% extends "layouts/base.html" %}
+
+{% block title %} UI Forms {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Email address
+
+ We'll never share your email with anyone
+ else.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name
+
+
+
+ Disabled select menu
+
+ Disabled select
+
+
+
+
+
+ Country
+
+ Open this select menu
+ One
+ Two
+ Three
+
+
+
+
+
+ Example textarea
+
+
+
+
+
+
+
+
First name
+
+
+ Looks good!
+
+
+
+
+
+
Username
+
+
+ Please choose a username.
+
+
+
+
+
+ Default file input example
+
+
+
+
+
+
+
+
+
+
+
+
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/home/ui-modals.html b/apps/templates/home/ui-modals.html
new file mode 100644
index 00000000..8793ba57
--- /dev/null
+++ b/apps/templates/home/ui-modals.html
@@ -0,0 +1,112 @@
+{% extends "layouts/base.html" %}
+
+{% block title %} UI Modals {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
+
+
+
+ Default
+
+
+
+
+
+
+
+
With less than a month to go before the European Union enacts new consumer privacy
+ laws for its citizens, companies around the world are updating their terms of
+ service agreements to comply.
+
The European Union’s General Data Protection Regulation (G.D.P.R.) goes into effect
+ on May 25 and is meant to ensure a common set of data rights in the European Union.
+ It requires organizations to notify users as
+ soon as possible of high-risk data breaches that could personally affect them.
+
+
+
+
+
+
+
+
+
+
+ Notification
+
+
+
+
+
+
+
+
+
+
Important message!
+
Do you know that you can assign status and relation to a company
+ right in the visit list?.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/home/ui-navs.html b/apps/templates/home/ui-navs.html
new file mode 100644
index 00000000..6452bc06
--- /dev/null
+++ b/apps/templates/home/ui-navs.html
@@ -0,0 +1,131 @@
+{% extends "layouts/base.html" %}
+
+{% block title %} UI Navs {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
+
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/home/ui-pagination.html b/apps/templates/home/ui-pagination.html
new file mode 100644
index 00000000..b71c5ffd
--- /dev/null
+++ b/apps/templates/home/ui-pagination.html
@@ -0,0 +1,225 @@
+{% extends "layouts/base.html" %}
+
+{% block title %} UI Pagination {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
+
+
+
Pagination with icon-nav
+
+
+
+
+
+
+
+
Pagination with text-nav
+
+
+
+
+
+
+
+
+
+
Disabled and active states
+
+
+
+
+
+
+
+
Choose your size
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/home/ui-popovers.html b/apps/templates/home/ui-popovers.html
new file mode 100644
index 00000000..bc786228
--- /dev/null
+++ b/apps/templates/home/ui-popovers.html
@@ -0,0 +1,71 @@
+{% extends "layouts/base.html" %}
+
+{% block title %} UI Popovers {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
+
+
+
+ Popover on top
+
+
+
+ Popover on left
+
+
+
+ Popover on bottom
+
+
+
+ Popover on right
+
+
+
+
+
+
+
+
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/home/ui-progress-bars.html b/apps/templates/home/ui-progress-bars.html
new file mode 100644
index 00000000..fb89fe4b
--- /dev/null
+++ b/apps/templates/home/ui-progress-bars.html
@@ -0,0 +1,141 @@
+{% extends "layouts/base.html" %}
+
+{% block title %} UI Progress Bars {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Primary Color
+
+
+ 50%
+
+
+
+
+
+
+
+ Secondary Color
+
+
+ 60%
+
+
+
+
+
+
+
+ Tertiary Color
+
+
+ 60%
+
+
+
+
+
+
+
+ Dark Color
+
+
+ 60%
+
+
+
+
+
+
+
+ Success Bar
+
+
+ 60%
+
+
+
+
+
+
+
+ Info Bar
+
+
+ 60%
+
+
+
+
+
+
+
+ Danger Bar
+
+
+ 60%
+
+
+
+
+
+
+
+
+
+
+
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/home/ui-tables.html b/apps/templates/home/ui-tables.html
new file mode 100644
index 00000000..e3e143ef
--- /dev/null
+++ b/apps/templates/home/ui-tables.html
@@ -0,0 +1,207 @@
+{% extends "layouts/base.html" %}
+
+{% block title %} UI Tables {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
+
+ Default table
+
+
+
+
+ Class
+ Teacher
+ Males
+ Females
+
+
+ First Year
+ D. Bolter
+ 5
+ 4
+
+
+ A. Cheetham
+ 7
+ 9
+
+
+ Second Year
+ M. Lam
+ 3
+ 9
+
+
+ S. Crossy
+ 4
+ 3
+
+
+ A. Forsyth
+ 6
+ 9
+
+
+
+
+
+ Dark table
+
+
+
+ Year
+ Teacher
+ Males
+ Females
+
+
+ First Year
+ D. Bolter
+ 5
+ 4
+
+
+ A. Cheetham
+ 7
+ 9
+
+
+ Second Year
+ M. Lam
+ 3
+ 9
+
+
+ S. Crossy
+ 4
+ 3
+
+
+ A. Forsyth
+ 6
+ 9
+
+
+
+
+
+ Hoverable rows
+
+
+
+ Class
+ Teacher
+ Males
+ Females
+
+
+ First Year
+ D. Bolter
+ 5
+ 4
+
+
+ A. Cheetham
+ 7
+ 9
+
+
+ Second Year
+ M. Lam
+ 3
+ 9
+
+
+ S. Crossy
+ 4
+ 3
+
+
+ A. Forsyth
+ 6
+ 9
+
+
+
+
+
+ Responsive Table
+
+
+
+
+ Class
+ Teacher
+ Males
+ Females
+
+
+ First Year
+ D. Bolter
+ 5
+ 4
+
+
+ A. Cheetham
+ 7
+ 9
+
+
+ Second Year
+ M. Lam
+ 3
+ 9
+
+
+ S. Crossy
+ 4
+ 3
+
+
+ A. Forsyth
+ 6
+ 9
+
+
+
+
+
+
+
+
+
+
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/home/ui-tabs.html b/apps/templates/home/ui-tabs.html
new file mode 100644
index 00000000..5ee9b1ea
--- /dev/null
+++ b/apps/templates/home/ui-tabs.html
@@ -0,0 +1,102 @@
+{% extends "layouts/base.html" %}
+
+{% block title %} UI Tabs {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Exercitation photo booth stumptown tote bag Banksy, elit small batch freegan sed.
+ Craft beer elit seitan exercitation, photo booth et 8-bit kale chips proident
+ chillwave deep v laborum. Aliquip veniam delectus,
+ Marfa eiusmod Pinterest in do umami readymade swag.
+
Day handsome addition horrible sensible goodness two contempt. Evening for married
+ his account removal. Estimable me disposing of be moonlight cordially curiosity.
+
+
+
Photo booth stumptown tote bag Banksy, elit small batch freegan sed. Craft beer elit
+ seitan exercitation, photo booth et 8-bit kale chips proident chillwave deep v
+ laborum. Aliquip veniam delectus, Marfa eiusmod
+ Pinterest in do umami readymade swag.
+
Day handsome addition horrible sensible goodness two contempt. Evening for married
+ his account removal. Estimable me disposing of be moonlight cordially curiosity.
+
+
+
Exercitation photo booth stumptown tote bag Banksy, elit small batch freegan sed.
+ Craft beer elit seitan exercitation, photo booth et 8-bit kale chips proident
+ chillwave deep v laborum. Aliquip veniam delectus,
+ Marfa eiusmod Pinterest in do umami readymade swag.
+
Day handsome addition horrible sensible goodness two contempt. Evening for married
+ his account removal. Estimable me disposing of be moonlight cordially curiosity.
+
+
+
+
+
+
+
+
+
+
+
+
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/home/ui-toasts.html b/apps/templates/home/ui-toasts.html
new file mode 100644
index 00000000..5e476e08
--- /dev/null
+++ b/apps/templates/home/ui-toasts.html
@@ -0,0 +1,86 @@
+{% extends "layouts/base.html" %}
+
+{% block title %} UI Toasts {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Hello, world! This is a toast message.
+
+
+
+
+
+
+
+ Hello, world! This is a toast message.
+
+
+
+
+
+
+
+ Hello, world! This is a toast message.
+
+
+
+
+
+
+
+
+
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/home/ui-tooltips.html b/apps/templates/home/ui-tooltips.html
new file mode 100644
index 00000000..1520ad14
--- /dev/null
+++ b/apps/templates/home/ui-tooltips.html
@@ -0,0 +1,64 @@
+{% extends "layouts/base.html" %}
+
+{% block title %} UI Tooltips {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
+
+
+
+ Tooltip on top
+
+
+ Tooltip on right
+
+
+ Tooltip on bottom
+
+
+ Tooltip on left
+
+
+
+
+
+
+
+
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/home/ui-typography.html b/apps/templates/home/ui-typography.html
new file mode 100644
index 00000000..a1b297e9
--- /dev/null
+++ b/apps/templates/home/ui-typography.html
@@ -0,0 +1,260 @@
+{% extends "layouts/base.html" %}
+
+{% block title %} UI Typography {% endblock %}
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+{% block content %}
+
+
+
+ {% include 'includes/preloader.html' %}
+
+
+
+
+
+
+
+
+
+
+
h1. Themesberg heading
+ h2. Themesberg heading
+ h3. Themesberg heading
+ h4. Themesberg heading
+ h5. Themesberg heading
+ h6. Themesberg heading
+
+
+
+
+
+
+ Customizing headings
+
+
+
+
+
+
+
+ Fancy display heading
+ With faded secondary text
+
+
+ Fancy display heading
+ With faded secondary text
+
+
+ Fancy display heading
+ With faded secondary text
+
+
+ Fancy display heading
+ With faded secondary text
+
+
+ Fancy display heading
+ With faded secondary text
+
+
+ Fancy display heading
+ With faded secondary text
+
+
+
+
+
+
+
+
+
Display 1
+ Display 2
+ Display 3
+ Display 4
+
+
+
+
+
+
+
+
+ Simple paragraph
+
+
Start your development with a Pixel Design System for Themesberg 4.Themesberg makes beautiful
+ products to help people with creative ideas succeed.Our company empowers millions of people.
+
+
+
+
+ Lead paragraph
+
+
Start your development with a Pixel Design System for Themesberg 4.Themesberg makes
+ beautiful products to help people with creative ideas succeed.Our company empowers millions of
+ people.
+
+
+
+
+ Dark text
+
+
+
Design is not just what it looks like and feels like. Design is how it works.
+
+
+
+
+
+ Primary text
+
+
+
Design is not just what it looks like and feels like. Design is how it
+ works.
+
+
+
+
+ Secondary text
+
+
+
Design is not just what it looks like and feels like. Design is how it
+ works.
+
+
+
+
+ Tertiary text
+
+
+
Design is not just what it looks like and feels like. Design is how it
+ works.
+
+
+
+
+ Info text
+
+
+
Design is not just what it looks like and feels like. Design is how it works.
+
+
+
+
+
+ Danger text
+
+
+
Design is not just what it looks like and feels like. Design is how it
+ works.
+
+
+
+
+ Success text
+
+
+
Design is not just what it looks like and feels like. Design is how it
+ works.
+
+
+
+
+
+
+
+
+ Themesberg makes beautiful products to help people with creative ideas succeed. Our company empowers
+ millions of people.
+
+
+
+
+
+
+
+
+
+
+ Unordered
+
+
+ Minutes of the last meeting
+ Do we need yet more meetings?
+ Any other business
+
+ Programming
+ Web Design
+ Database
+
+
+ Something funny
+
+
+
+
+ Ordered
+
+
+ Minutes of the last meeting
+ Do we need yet more meetings?
+ Any other business
+
+ Programming
+ Web Design
+ Database
+
+
+ Something funny
+
+
+
+
+
+
+
+
+
+{% endblock content %}
+
+
+{% block javascripts %}{% endblock javascripts %}
diff --git a/apps/templates/includes/footer-about.html b/apps/templates/includes/footer-about.html
new file mode 100644
index 00000000..1be3a2bb
--- /dev/null
+++ b/apps/templates/includes/footer-about.html
@@ -0,0 +1,92 @@
+
+
+
\ No newline at end of file
diff --git a/apps/templates/includes/footer.html b/apps/templates/includes/footer.html
new file mode 100644
index 00000000..e8b7bc7b
--- /dev/null
+++ b/apps/templates/includes/footer.html
@@ -0,0 +1,92 @@
+
\ No newline at end of file
diff --git a/apps/templates/includes/navigation.html b/apps/templates/includes/navigation.html
new file mode 100644
index 00000000..564049c4
--- /dev/null
+++ b/apps/templates/includes/navigation.html
@@ -0,0 +1,143 @@
+
+
+
diff --git a/apps/templates/includes/preloader.html b/apps/templates/includes/preloader.html
new file mode 100644
index 00000000..045347f9
--- /dev/null
+++ b/apps/templates/includes/preloader.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/templates/includes/scripts.html b/apps/templates/includes/scripts.html
new file mode 100644
index 00000000..774d75d4
--- /dev/null
+++ b/apps/templates/includes/scripts.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/templates/includes/sidebar.html b/apps/templates/includes/sidebar.html
new file mode 100644
index 00000000..af971ce8
--- /dev/null
+++ b/apps/templates/includes/sidebar.html
@@ -0,0 +1 @@
+
diff --git a/apps/templates/layouts/base-fullscreen.html b/apps/templates/layouts/base-fullscreen.html
new file mode 100644
index 00000000..e90cccef
--- /dev/null
+++ b/apps/templates/layouts/base-fullscreen.html
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+
+ Django Pixel Lite - {% block title %}{% endblock %} | AppSeed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+
+
+
+ {% block content %}{% endblock content %}
+
+ {% include 'includes/scripts.html' %}
+
+
+ {% block javascripts %}{% endblock javascripts %}
+
+
+
diff --git a/apps/templates/layouts/base.html b/apps/templates/layouts/base.html
new file mode 100644
index 00000000..2404bf3c
--- /dev/null
+++ b/apps/templates/layouts/base.html
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+
+
+ Django Pixel Lite - {% block title %}{% endblock %} | AppSeed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{% block stylesheets %}{% endblock stylesheets %}
+
+
+
+
+ {% include 'includes/navigation.html' %}
+
+ {% block content %}{% endblock content %}
+
+ {% include 'includes/scripts.html' %}
+
+
+ {% block javascripts %}{% endblock javascripts %}
+
+
+
diff --git a/core/__init__.py b/core/__init__.py
new file mode 100644
index 00000000..58cca0ec
--- /dev/null
+++ b/core/__init__.py
@@ -0,0 +1,4 @@
+# -*- encoding: utf-8 -*-
+"""
+Copyright (c) 2019 - present AppSeed.us
+"""
diff --git a/core/asgi.py b/core/asgi.py
new file mode 100644
index 00000000..31e59e44
--- /dev/null
+++ b/core/asgi.py
@@ -0,0 +1,12 @@
+# -*- encoding: utf-8 -*-
+"""
+Copyright (c) 2019 - present AppSeed.us
+"""
+
+import os
+
+from django.core.asgi import get_asgi_application
+
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'core.settings')
+
+application = get_asgi_application()
diff --git a/core/settings.py b/core/settings.py
new file mode 100644
index 00000000..5012e87e
--- /dev/null
+++ b/core/settings.py
@@ -0,0 +1,148 @@
+# -*- encoding: utf-8 -*-
+"""
+Copyright (c) 2019 - present AppSeed.us
+"""
+
+import os, environ
+
+env = environ.Env(
+ # set casting, default value
+ DEBUG=(bool, True)
+)
+
+# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
+BASE_DIR = os.path.dirname(os.path.dirname(__file__))
+CORE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+
+# Take environment variables from .env file
+environ.Env.read_env(os.path.join(BASE_DIR, '.env'))
+
+# SECURITY WARNING: keep the secret key used in production secret!
+SECRET_KEY = env('SECRET_KEY', default='S#perS3crEt_007')
+
+# SECURITY WARNING: don't run with debug turned on in production!
+DEBUG = env('DEBUG')
+
+# Assets Management
+ASSETS_ROOT = os.getenv('ASSETS_ROOT', '/static/assets')
+
+# load production server from .env
+ALLOWED_HOSTS = ['localhost', 'localhost:85', '127.0.0.1', env('SERVER', default='127.0.0.1') ]
+CSRF_TRUSTED_ORIGINS = ['http://localhost:85', 'http://127.0.0.1', 'https://' + env('SERVER', default='127.0.0.1') ]
+
+# Application definition
+
+INSTALLED_APPS = [
+ 'django.contrib.admin',
+ 'django.contrib.auth',
+ 'django.contrib.contenttypes',
+ 'django.contrib.sessions',
+ 'django.contrib.messages',
+ 'django.contrib.staticfiles',
+ 'apps.home' # Enable the inner home (home)
+]
+
+MIDDLEWARE = [
+ 'django.middleware.security.SecurityMiddleware',
+ 'whitenoise.middleware.WhiteNoiseMiddleware',
+ 'django.contrib.sessions.middleware.SessionMiddleware',
+ 'django.middleware.common.CommonMiddleware',
+ 'django.middleware.csrf.CsrfViewMiddleware',
+ 'django.contrib.auth.middleware.AuthenticationMiddleware',
+ 'django.contrib.messages.middleware.MessageMiddleware',
+ 'django.middleware.clickjacking.XFrameOptionsMiddleware',
+]
+
+ROOT_URLCONF = 'core.urls'
+LOGIN_REDIRECT_URL = "home" # Route defined in home/urls.py
+LOGOUT_REDIRECT_URL = "home" # Route defined in home/urls.py
+TEMPLATE_DIR = os.path.join(CORE_DIR, "apps/templates") # ROOT dir for templates
+
+TEMPLATES = [
+ {
+ 'BACKEND': 'django.template.backends.django.DjangoTemplates',
+ 'DIRS': [TEMPLATE_DIR],
+ 'APP_DIRS': True,
+ 'OPTIONS': {
+ 'context_processors': [
+ 'django.template.context_processors.debug',
+ 'django.template.context_processors.request',
+ 'django.contrib.auth.context_processors.auth',
+ 'django.contrib.messages.context_processors.messages',
+ 'apps.context_processors.cfg_assets_root',
+ ],
+ },
+ },
+]
+
+WSGI_APPLICATION = 'core.wsgi.application'
+
+# Database
+# https://docs.djangoproject.com/en/3.0/ref/settings/#databases
+
+if os.environ.get('DB_ENGINE') and os.environ.get('DB_ENGINE') == "mysql":
+ DATABASES = {
+ 'default': {
+ 'ENGINE' : 'django.db.backends.mysql',
+ 'NAME' : os.getenv('DB_NAME' , 'appseed_db'),
+ 'USER' : os.getenv('DB_USERNAME' , 'appseed_db_usr'),
+ 'PASSWORD': os.getenv('DB_PASS' , 'pass'),
+ 'HOST' : os.getenv('DB_HOST' , 'localhost'),
+ 'PORT' : os.getenv('DB_PORT' , 3306),
+ },
+ }
+else:
+ DATABASES = {
+ 'default': {
+ 'ENGINE': 'django.db.backends.sqlite3',
+ 'NAME': 'db.sqlite3',
+ }
+ }
+
+# Password validation
+# https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validators
+
+AUTH_PASSWORD_VALIDATORS = [
+ {
+ 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
+ },
+ {
+ 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
+ },
+ {
+ 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
+ },
+ {
+ 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
+ },
+]
+
+# Internationalization
+# https://docs.djangoproject.com/en/3.0/topics/i18n/
+
+LANGUAGE_CODE = 'en-us'
+
+TIME_ZONE = 'UTC'
+
+USE_I18N = True
+
+USE_L10N = True
+
+USE_TZ = True
+
+#############################################################
+# SRC: https://devcenter.heroku.com/articles/django-assets
+
+# Static files (CSS, JavaScript, Images)
+# https://docs.djangoproject.com/en/1.9/howto/static-files/
+STATIC_ROOT = os.path.join(CORE_DIR, 'staticfiles')
+STATIC_URL = '/static/'
+
+# Extra places for collectstatic to find static files.
+STATICFILES_DIRS = (
+ os.path.join(CORE_DIR, 'apps/static'),
+)
+
+
+#############################################################
+#############################################################
diff --git a/core/staticfiles/.gitkeep b/core/staticfiles/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/core/urls.py b/core/urls.py
new file mode 100644
index 00000000..267c02d1
--- /dev/null
+++ b/core/urls.py
@@ -0,0 +1,17 @@
+# -*- encoding: utf-8 -*-
+"""
+Copyright (c) 2019 - present AppSeed.us
+"""
+
+from django.contrib import admin
+from django.urls import path, include # add this
+
+urlpatterns = [
+ path('admin/', admin.site.urls), # Django admin route
+ path("", include("apps.authentication.urls")), # Auth routes - login / register
+
+ # ADD NEW Routes HERE
+
+ # Leave `Home.Urls` as last the last line
+ path("", include("apps.home.urls"))
+]
diff --git a/core/wsgi.py b/core/wsgi.py
new file mode 100644
index 00000000..a9dab9c8
--- /dev/null
+++ b/core/wsgi.py
@@ -0,0 +1,12 @@
+# -*- encoding: utf-8 -*-
+"""
+Copyright (c) 2019 - present AppSeed.us
+"""
+
+import os
+
+from django.core.wsgi import get_wsgi_application
+
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'core.settings')
+
+application = get_wsgi_application()
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 00000000..2a58f4dc
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,28 @@
+version: '3.8'
+services:
+ appseed-app:
+ container_name: appseed_app
+ restart: always
+ env_file: .env
+ build: .
+ networks:
+ - db_network
+ - web_network
+ nginx:
+ container_name: nginx
+ restart: always
+ image: "nginx:latest"
+ ports:
+ - "5085:5085"
+ volumes:
+ - ./nginx:/etc/nginx/conf.d
+ networks:
+ - web_network
+ depends_on:
+ - appseed-app
+networks:
+ db_network:
+ driver: bridge
+ web_network:
+ driver: bridge
+
\ No newline at end of file
diff --git a/env.sample b/env.sample
new file mode 100644
index 00000000..d2a141d0
--- /dev/null
+++ b/env.sample
@@ -0,0 +1,12 @@
+DEBUG=True
+
+# Deployment SERVER address
+SERVER=.appseed.us
+
+# For MySql Persistence
+DB_ENGINE=mysql
+DB_NAME=appseed_db
+DB_HOST=localhost
+DB_PORT=3306
+DB_USERNAME=appseed_db_usr
+DB_PASS=
diff --git a/gunicorn-cfg.py b/gunicorn-cfg.py
new file mode 100644
index 00000000..3acce75a
--- /dev/null
+++ b/gunicorn-cfg.py
@@ -0,0 +1,11 @@
+# -*- encoding: utf-8 -*-
+"""
+Copyright (c) 2019 - present AppSeed.us
+"""
+
+bind = '0.0.0.0:5005'
+workers = 1
+accesslog = '-'
+loglevel = 'debug'
+capture_output = True
+enable_stdio_inheritance = True
diff --git a/log.json b/log.json
new file mode 100644
index 00000000..47e9125c
--- /dev/null
+++ b/log.json
@@ -0,0 +1,22 @@
+{
+ "backend": "django",
+ "db_name": "",
+ "db_pass": "",
+ "db_type": "sqlite",
+ "db_user": "",
+ "dbms": "1",
+ "description": "generated product",
+ "design": "pixel-bootstrap",
+ "docker": "1",
+ "err_code": 0,
+ "frontend": "",
+ "heroku": "0",
+ "pattern": "mvc",
+ "pro": "0",
+ "task_id": "36776f20-0a35-4449-8714-a649a342a8d3",
+ "task_info": "Task is running",
+ "task_result": "SUCCESS",
+ "task_state": "RUNNING",
+ "task_ts_end": "2022-05-31-08-03-51",
+ "task_ts_start": "2022-05-31-08-03-51"
+}
\ No newline at end of file
diff --git a/manage.py b/manage.py
new file mode 100644
index 00000000..ce67b496
--- /dev/null
+++ b/manage.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+"""
+Copyright (c) 2019 - present AppSeed.us
+"""
+
+import os
+import sys
+
+def main():
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'core.settings')
+ try:
+ from django.core.management import execute_from_command_line
+ except ImportError as exc:
+ raise ImportError(
+ "Couldn't import Django. Are you sure it's installed and "
+ "available on your PYTHONPATH environment variable? Did you "
+ "forget to activate a virtual environment?"
+ ) from exc
+ execute_from_command_line(sys.argv)
+
+if __name__ == '__main__':
+ main()
diff --git a/nginx/appseed-app.conf b/nginx/appseed-app.conf
new file mode 100644
index 00000000..61c7a1ea
--- /dev/null
+++ b/nginx/appseed-app.conf
@@ -0,0 +1,15 @@
+upstream webapp {
+ server appseed_app:5005;
+}
+
+server {
+ listen 5085;
+ server_name localhost;
+
+ location / {
+ proxy_pass http://webapp;
+ proxy_set_header Host $host;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ }
+
+}
diff --git a/package.json b/package.json
new file mode 100644
index 00000000..f5d187df
--- /dev/null
+++ b/package.json
@@ -0,0 +1,21 @@
+{
+ "name": "boilerplate-code-django-dashboard",
+ "mastertemplate": "boilerplate-code-django-dashboard",
+ "version": "2stable.0.1",
+ "description": "Template project - Django Boilerplate Code",
+ "scripts": {},
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/app-generator/boilerplate-code-django-dashboard"
+ },
+ "bugs": {
+ "url": "https://github.com/app-generator/boilerplate-code-django-dashboard/issues",
+ "email": "support@appseed.us"
+ },
+ "author": "AppSeed App Generator (https://appseed.us)",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "dependencies": {},
+ "devDependencies": {}
+}
\ No newline at end of file
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 00000000..9f826b6a
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,11 @@
+Django==3.2.13
+asgiref==3.4.1
+autopep8==1.6.0
+dj-database-url==0.5.0
+gunicorn==20.1.0
+pycodestyle==2.8.0
+pytz==2021.3
+sqlparse==0.4.2
+toml==0.10.2
+whitenoise==5.3.0
+django-environ==0.8.1
diff --git a/staticfiles/.gitkeep b/staticfiles/.gitkeep
new file mode 100644
index 00000000..e69de29b