` all receive top and bottom margins. We nuke the top
81 | // margin for easier control within type scales as it avoids margin collapsing.
82 | h1, h2, h3, h4, h5, h6 {
83 | margin-top: 0;
84 | margin-bottom: .5rem;
85 | }
86 |
87 | // Reset margins on paragraphs
88 | //
89 | // Similarly, the top margin on `
`s get reset. However, we also reset the
90 | // bottom margin to use `rem` units instead of `em`.
91 | p {
92 | margin-top: 0;
93 | margin-bottom: 1rem;
94 | }
95 |
96 | // Abbreviations
97 | //
98 | // 1. Remove the bottom border in Firefox 39-.
99 | // 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
100 | // 3. Add explicit cursor to indicate changed behavior.
101 | // 4. Duplicate behavior to the data-* attribute for our tooltip plugin
102 |
103 | abbr[title],
104 | abbr[data-original-title] { // 4
105 | text-decoration: underline; // 2
106 | text-decoration: underline dotted; // 2
107 | cursor: help; // 3
108 | border-bottom: 0; // 1
109 | }
110 |
111 | address {
112 | margin-bottom: 1rem;
113 | font-style: normal;
114 | line-height: inherit;
115 | }
116 |
117 | ol,
118 | ul,
119 | dl {
120 | margin-top: 0;
121 | margin-bottom: 1rem;
122 | }
123 |
124 | ol ol,
125 | ul ul,
126 | ol ul,
127 | ul ol {
128 | margin-bottom: 0;
129 | }
130 |
131 | dd {
132 | margin-bottom: .5rem;
133 | margin-left: 0; // Undo browser default
134 | }
135 |
136 | blockquote {
137 | margin: 0 0 1rem;
138 | }
139 |
140 | dfn {
141 | font-style: italic; // Add the correct font style in Android 4.3-
142 | }
143 |
144 | b,
145 | strong {
146 | font-weight: bolder; // Add the correct font weight in Chrome, Edge, and Safari
147 | }
148 |
149 | small {
150 | font-size: 80%; // Add the correct font size in all browsers
151 | }
152 |
153 | //
154 | // Prevent `sub` and `sup` elements from affecting the line height in
155 | // all browsers.
156 | //
157 |
158 | sub,
159 | sup {
160 | position: relative;
161 | font-size: 75%;
162 | line-height: 0;
163 | vertical-align: baseline;
164 | }
165 |
166 | sub { bottom: -.25em; }
167 | sup { top: -.5em; }
168 |
169 |
170 | //
171 | // Links
172 | //
173 |
174 | a {
175 | cursor: pointer;
176 | text-decoration: none;;
177 | background-color: transparent; // Remove the gray background on active links in IE 10.
178 | -webkit-text-decoration-skip: objects; // Remove gaps in links underline in iOS 8+ and Safari 8+.
179 | }
180 |
181 | // And undo these styles for placeholder links/named anchors (without href)
182 | // which have not been made explicitly keyboard-focusable (without tabindex).
183 | // It would be more straightforward to just use a[href] in previous block, but that
184 | // causes specificity issues in many other styles that are too complex to fix.
185 | // See https://github.com/twbs/bootstrap/issues/19402
186 |
187 | a:not([href]):not([tabindex]) {
188 | color: inherit;
189 | text-decoration: none;
190 | &:focus {
191 | outline: 0;
192 | }
193 | }
194 |
195 |
196 | //
197 | // Code
198 | //
199 |
200 | pre,
201 | code,
202 | kbd,
203 | samp {
204 | font-family: monospace, monospace; // Correct the inheritance and scaling of font size in all browsers.
205 | font-size: 1em; // Correct the odd `em` font sizing in all browsers.
206 | }
207 |
208 | pre {
209 | // Remove browser default top margin
210 | margin-top: 0;
211 | // Reset browser default of `1em` to use `rem`s
212 | margin-bottom: 1rem;
213 | // Don't allow content to break outside
214 | overflow: auto;
215 | }
216 |
217 |
218 | //
219 | // Figures
220 | //
221 |
222 | figure {
223 | // Apply a consistent margin strategy (matches our type styles).
224 | margin: 0 0 1rem;
225 | }
226 |
227 |
228 | //
229 | // Images and content
230 | //
231 |
232 | img {
233 | vertical-align: middle;
234 | border-style: none; // Remove the border on images inside links in IE 10-.
235 | max-width: 100%;
236 | }
237 |
238 | svg:not(:root) {
239 | overflow: hidden; // Hide the overflow in IE
240 | }
241 |
242 |
243 | // Avoid 300ms click delay on touch devices that support the `touch-action` CSS property.
244 | //
245 | // In particular, unlike most other browsers, IE11+Edge on Windows 10 on touch devices and IE Mobile 10-11
246 | // DON'T remove the click delay when `` is present.
247 | // However, they DO support removing the click delay via `touch-action: manipulation`.
248 | // See:
249 | // * https://v4-alpha.getbootstrap.com/content/reboot/#click-delay-optimization-for-touch
250 | // * http://caniuse.com/#feat=css-touch-action
251 | // * https://patrickhlauke.github.io/touch/tests/results/#suppressing-300ms-delay
252 |
253 | a,
254 | area,
255 | button,
256 | [role="button"],
257 | input,
258 | label,
259 | select,
260 | summary,
261 | textarea {
262 | touch-action: manipulation;
263 | }
264 |
265 |
266 | //
267 | // Tables
268 | //
269 |
270 | table {
271 | border-collapse: collapse; // Prevent double borders
272 | }
273 |
274 | th {
275 | // Matches default `
` alignment
276 | text-align: left;
277 | }
278 |
279 |
280 | //
281 | // Forms
282 | //
283 |
284 | label {
285 | // Allow labels to use `margin` for spacing.
286 | display: inline-block;
287 | margin-bottom: .5rem;
288 | }
289 |
290 | // Work around a Firefox/IE bug where the transparent `button` background
291 | // results in a loss of the default `button` focus styles.
292 | //
293 | // Credit: https://github.com/suitcss/base/
294 | button:focus {
295 | outline: 1px dotted;
296 | outline: 5px auto -webkit-focus-ring-color;
297 | }
298 |
299 | input,
300 | button,
301 | select,
302 | optgroup,
303 | textarea {
304 | margin: 0; // Remove the margin in Firefox and Safari
305 | font-family: inherit;
306 | font-size: inherit;
307 | line-height: inherit;
308 | }
309 |
310 | button,
311 | input {
312 | overflow: visible; // Show the overflow in Edge
313 | }
314 |
315 | button,
316 | select {
317 | text-transform: none; // Remove the inheritance of text transform in Firefox
318 | }
319 |
320 | // 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
321 | // controls in Android 4.
322 | // 2. Correct the inability to style clickable types in iOS and Safari.
323 | button,
324 | html [type="button"], // 1
325 | [type="reset"],
326 | [type="submit"] {
327 | -webkit-appearance: button; // 2
328 | }
329 |
330 | // Remove inner border and padding from Firefox, but don't restore the outline like Normalize.
331 | button::-moz-focus-inner,
332 | [type="button"]::-moz-focus-inner,
333 | [type="reset"]::-moz-focus-inner,
334 | [type="submit"]::-moz-focus-inner {
335 | padding: 0;
336 | border-style: none;
337 | }
338 |
339 | input[type="radio"],
340 | input[type="checkbox"] {
341 | box-sizing: border-box; // 1. Add the correct box sizing in IE 10-
342 | padding: 0; // 2. Remove the padding in IE 10-
343 |
344 | // Apply a disabled cursor for radios and checkboxes.
345 | //
346 | // Note: Neither radios nor checkboxes can be readonly.
347 | &:disabled {
348 | cursor: not-allowed;;
349 | }
350 | }
351 |
352 |
353 | input[type="date"],
354 | input[type="time"],
355 | input[type="datetime-local"],
356 | input[type="month"] {
357 | // Remove the default appearance of temporal inputs to avoid a Mobile Safari
358 | // bug where setting a custom line-height prevents text from being vertically
359 | // centered within the input.
360 | // See https://bugs.webkit.org/show_bug.cgi?id=139848
361 | // and https://github.com/twbs/bootstrap/issues/11266
362 | -webkit-appearance: listbox;
363 | }
364 |
365 | textarea {
366 | overflow: auto; // Remove the default vertical scrollbar in IE.
367 | // Textareas should really only resize vertically so they don't break their (horizontal) containers.
368 | resize: vertical;
369 | }
370 |
371 | fieldset {
372 | // Browsers set a default `min-width: min-content;` on fieldsets,
373 | // unlike e.g. `
`s, which have `min-width: 0;` by default.
374 | // So we reset that to ensure fieldsets behave more like a standard block element.
375 | // See https://github.com/twbs/bootstrap/issues/12359
376 | // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements
377 | min-width: 0;
378 | // Reset the default outline behavior of fieldsets so they don't affect page layout.
379 | padding: 0;
380 | margin: 0;
381 | border: 0;
382 | }
383 |
384 | // 1. Correct the text wrapping in Edge and IE.
385 | // 2. Correct the color inheritance from `fieldset` elements in IE.
386 | legend {
387 | display: block;
388 | width: 100%;
389 | max-width: 100%; // 1
390 | padding: 0;
391 | margin-bottom: .5rem;
392 | font-size: 1.5rem;
393 | line-height: inherit;
394 | color: inherit; // 2
395 | white-space: normal; // 1
396 | }
397 |
398 | progress {
399 | vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.
400 | }
401 |
402 | // Correct the cursor style of increment and decrement buttons in Chrome.
403 | [type="number"]::-webkit-inner-spin-button,
404 | [type="number"]::-webkit-outer-spin-button {
405 | height: auto;
406 | }
407 |
408 | [type="search"] {
409 | // This overrides the extra rounded corners on search inputs in iOS so that our
410 | // `.form-control` class can properly style them. Note that this cannot simply
411 | // be added to `.form-control` as it's not specific enough. For details, see
412 | // https://github.com/twbs/bootstrap/issues/11586.
413 | outline-offset: -2px; // 2. Correct the outline style in Safari.
414 | -webkit-appearance: none;
415 | }
416 |
417 | //
418 | // Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
419 | //
420 |
421 | [type="search"]::-webkit-search-cancel-button,
422 | [type="search"]::-webkit-search-decoration {
423 | -webkit-appearance: none;
424 | }
425 |
426 | //
427 | // 1. Correct the inability to style clickable types in iOS and Safari.
428 | // 2. Change font properties to `inherit` in Safari.
429 | //
430 |
431 | ::-webkit-file-upload-button {
432 | font: inherit; // 2
433 | -webkit-appearance: button; // 1
434 | }
435 |
436 | //
437 | // Correct element displays
438 | //
439 |
440 | output {
441 | display: inline-block;
442 | }
443 |
444 | summary {
445 | display: list-item; // Add the correct display in all browsers
446 | }
447 |
448 | template {
449 | display: none; // Add the correct display in IE
450 | }
451 |
452 | // Always hide an element with the `hidden` HTML attribute (from PureCSS).
453 | // Needed for proper display in IE 10-.
454 | [hidden] {
455 | display: none !important;
456 | }
457 |
--------------------------------------------------------------------------------
/resources/assets/sass/_variables.scss:
--------------------------------------------------------------------------------
1 | // Colors
2 |
3 | $pink: #FF469C;
4 | $blue: #08A3D7;
5 | $black: #070000;
--------------------------------------------------------------------------------
/resources/assets/sass/app.scss:
--------------------------------------------------------------------------------
1 | @import "reset";
2 | @import "variables";
3 | @import "mixins";
4 | @import "base";
5 | @import "components";
6 | @import "layouts";
7 |
--------------------------------------------------------------------------------
/resources/lang/en/auth.php:
--------------------------------------------------------------------------------
1 | 'These credentials do not match our records.',
17 | 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
18 |
19 | ];
20 |
--------------------------------------------------------------------------------
/resources/lang/en/pagination.php:
--------------------------------------------------------------------------------
1 | '« Previous',
17 | 'next' => 'Next »',
18 |
19 | ];
20 |
--------------------------------------------------------------------------------
/resources/lang/en/passwords.php:
--------------------------------------------------------------------------------
1 | 'Passwords must be at least six characters and match the confirmation.',
17 | 'reset' => 'Your password has been reset!',
18 | 'sent' => 'We have e-mailed your password reset link!',
19 | 'token' => 'This password reset token is invalid.',
20 | 'user' => "We can't find a user with that e-mail address.",
21 |
22 | ];
23 |
--------------------------------------------------------------------------------
/resources/lang/en/validation.php:
--------------------------------------------------------------------------------
1 | 'The :attribute must be accepted.',
17 | 'active_url' => 'The :attribute is not a valid URL.',
18 | 'after' => 'The :attribute must be a date after :date.',
19 | 'after_or_equal' => 'The :attribute must be a date after or equal to :date.',
20 | 'alpha' => 'The :attribute may only contain letters.',
21 | 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.',
22 | 'alpha_num' => 'The :attribute may only contain letters and numbers.',
23 | 'array' => 'The :attribute must be an array.',
24 | 'before' => 'The :attribute must be a date before :date.',
25 | 'before_or_equal' => 'The :attribute must be a date before or equal to :date.',
26 | 'between' => [
27 | 'numeric' => 'The :attribute must be between :min and :max.',
28 | 'file' => 'The :attribute must be between :min and :max kilobytes.',
29 | 'string' => 'The :attribute must be between :min and :max characters.',
30 | 'array' => 'The :attribute must have between :min and :max items.',
31 | ],
32 | 'boolean' => 'The :attribute field must be true or false.',
33 | 'confirmed' => 'The :attribute confirmation does not match.',
34 | 'date' => 'The :attribute is not a valid date.',
35 | 'date_format' => 'The :attribute does not match the format :format.',
36 | 'different' => 'The :attribute and :other must be different.',
37 | 'digits' => 'The :attribute must be :digits digits.',
38 | 'digits_between' => 'The :attribute must be between :min and :max digits.',
39 | 'dimensions' => 'The :attribute has invalid image dimensions.',
40 | 'distinct' => 'The :attribute field has a duplicate value.',
41 | 'email' => 'The :attribute must be a valid email address.',
42 | 'exists' => 'The selected :attribute is invalid.',
43 | 'file' => 'The :attribute must be a file.',
44 | 'filled' => 'The :attribute field must have a value.',
45 | 'image' => 'The :attribute must be an image.',
46 | 'in' => 'The selected :attribute is invalid.',
47 | 'in_array' => 'The :attribute field does not exist in :other.',
48 | 'integer' => 'The :attribute must be an integer.',
49 | 'ip' => 'The :attribute must be a valid IP address.',
50 | 'json' => 'The :attribute must be a valid JSON string.',
51 | 'max' => [
52 | 'numeric' => 'The :attribute may not be greater than :max.',
53 | 'file' => 'The :attribute may not be greater than :max kilobytes.',
54 | 'string' => 'The :attribute may not be greater than :max characters.',
55 | 'array' => 'The :attribute may not have more than :max items.',
56 | ],
57 | 'mimes' => 'The :attribute must be a file of type: :values.',
58 | 'mimetypes' => 'The :attribute must be a file of type: :values.',
59 | 'min' => [
60 | 'numeric' => 'The :attribute must be at least :min.',
61 | 'file' => 'The :attribute must be at least :min kilobytes.',
62 | 'string' => 'The :attribute must be at least :min characters.',
63 | 'array' => 'The :attribute must have at least :min items.',
64 | ],
65 | 'not_in' => 'The selected :attribute is invalid.',
66 | 'numeric' => 'The :attribute must be a number.',
67 | 'present' => 'The :attribute field must be present.',
68 | 'regex' => 'The :attribute format is invalid.',
69 | 'required' => 'The :attribute field is required.',
70 | 'required_if' => 'The :attribute field is required when :other is :value.',
71 | 'required_unless' => 'The :attribute field is required unless :other is in :values.',
72 | 'required_with' => 'The :attribute field is required when :values is present.',
73 | 'required_with_all' => 'The :attribute field is required when :values is present.',
74 | 'required_without' => 'The :attribute field is required when :values is not present.',
75 | 'required_without_all' => 'The :attribute field is required when none of :values are present.',
76 | 'same' => 'The :attribute and :other must match.',
77 | 'size' => [
78 | 'numeric' => 'The :attribute must be :size.',
79 | 'file' => 'The :attribute must be :size kilobytes.',
80 | 'string' => 'The :attribute must be :size characters.',
81 | 'array' => 'The :attribute must contain :size items.',
82 | ],
83 | 'string' => 'The :attribute must be a string.',
84 | 'timezone' => 'The :attribute must be a valid zone.',
85 | 'unique' => 'The :attribute has already been taken.',
86 | 'uploaded' => 'The :attribute failed to upload.',
87 | 'url' => 'The :attribute format is invalid.',
88 |
89 | /*
90 | |--------------------------------------------------------------------------
91 | | Custom Validation Language Lines
92 | |--------------------------------------------------------------------------
93 | |
94 | | Here you may specify custom validation messages for attributes using the
95 | | convention "attribute.rule" to name the lines. This makes it quick to
96 | | specify a specific custom language line for a given attribute rule.
97 | |
98 | */
99 |
100 | 'custom' => [
101 | 'attribute-name' => [
102 | 'rule-name' => 'custom-message',
103 | ],
104 | ],
105 |
106 | /*
107 | |--------------------------------------------------------------------------
108 | | Custom Validation Attributes
109 | |--------------------------------------------------------------------------
110 | |
111 | | The following language lines are used to swap attribute place-holders
112 | | with something more reader friendly such as E-Mail Address instead
113 | | of "email". This simply helps us make messages a little cleaner.
114 | |
115 | */
116 |
117 | 'attributes' => [],
118 |
119 | ];
120 |
--------------------------------------------------------------------------------
/resources/views/auth/login.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.custom')
2 | @section('title', "Login")
3 |
4 | @section('content')
5 |
This is the RSS Reader built for the rest of us. Simple and easy to use, it's like Netflix for your feeds and uses the new new JSON format. XML is dead. Long live RSS.