clairity.css 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -81,18 +81,6 @@ STATES - these are convenience styles that go beyond defining the base elements.
81
81
  text-decoration: none;
82
82
  }
83
83
 
84
- /* #mailto #tel #sms #file #external #bookmark #download - special link icons -
85
- this uses the svg mask technique to place & color icons on hover; as such, it
86
- must be in a separate pseudo-element so masking doesn't bleed out to text */
87
- /* #icons - set --icon to an svg from icons.css, set color with --icon-color */
88
- [href^="tel:"] { --icon: var(--i-phone); }
89
- [href^="sms:"] { --icon: var(--i-message-2); }
90
- [href^="file:"] { --icon: var(--i-file); }
91
- [download] { --icon: var(--i-file-download); }
92
- [href^="mailto:"] { --icon: var(--i-mail); }
93
- [rel~="external"] { --icon: var(--i-external-link); }
94
- [rel~="bookmark"] { --icon: var(--i-bookmark); }
95
-
96
84
  /* chrome still needs prefixed -webkit-mask as of 20221001 */
97
85
  :where([href^="tel:"], [href^="sms:"], [href^="file:"], [download])::before,
98
86
  :where([href^="mailto:"], [rel~="external"], [rel~="bookmark"])::after {
@@ -113,9 +101,6 @@ a:where([href^="mailto:"], [href^="tel:"], [href^="sms:"], [href^="file:"],
113
101
  --icon-color: var(--active);
114
102
  }
115
103
 
116
- /* give followed fragment links some room at the top - [0010] specificity */
117
- [id] { scroll-margin-top: var(--l); }
118
-
119
104
  /* #:any-link matches both :link and :visited for anchors with an href; safari
120
105
  support is currently lagging, so don't use for now */
121
106
  :any-link { }
@@ -126,56 +111,22 @@ a:where([href^="mailto:"], [href^="tel:"], [href^="sms:"], [href^="file:"],
126
111
  /* -----------------------------------------------------------------------------
127
112
  // #lists - ordered and unordered lists of items
128
113
  // -------------------------------------------------------------------------- */
129
- /* #ul #ol - removes vertical gaps for lists within lists - uses :where() to get
130
- [0001] specificity rather than [0002] */
131
- :where(ul, ol) :is(ul, ol) { margin: 0; }
132
114
 
133
115
 
134
116
  /* -----------------------------------------------------------------------------
135
117
  // #tables - for tabular data
136
118
  // -------------------------------------------------------------------------- */
137
119
 
138
- /* makes the first column sticky - [0012] specificity */
139
- :not(tfoot) > tr th:first-of-type {
140
- position: sticky; /* works best w/ <table> display ≅ block */
141
- left: 0;
142
- background-color: var(--background); /* is transparent otherwise */
143
- }
144
- /* makes the table header row sticky - [0002] specificity */
145
- thead th {
146
- position: sticky;
147
- top: 0;
148
- z-index: 1; /* puts header row on top of tbody rows, including
149
- header column */
150
- background-color: var(--background); /* is transparent otherwise */
151
- }
152
- /* sticks top left box on top of both header columns/rows - [0012] specificity*/
153
- thead th:first-child { z-index: 2; }
154
-
155
- /* zebra-striping of table rows - [0013] specificity */
156
- tbody tr:nth-child(even), tbody tr:nth-child(even) th {
157
- background-color: var(--bg-contrast);
158
- }
159
- /* this is more robust because it excludes hidden rows, but only safari and
160
- chrome support this syntax - [0023] specificity */
161
- @supports selector(:nth-child(even of :not([hidden]))) {
162
- tbody tr:where(:nth-child( even of :not([hidden]) )),
163
- tbody tr:where(:nth-child( even of :not([hidden]) )) th {
164
- background-color: var(--bg-contrast);
165
- }}
166
-
167
120
  /* hover effect for table rows */
168
121
  tbody tr:hover, tbody tr:hover th {
169
122
  background-color: var(--contrast);
170
123
  }
171
- /* adds sticky borders below thead and above tfoot */
172
- thead tr:last-of-type th {box-shadow: inset 0 -2px var(--secondary, --neutral);}
173
- tfoot :where(td, th) {box-shadow: inset 0 2px var(--secondary, --neutral);}
174
124
 
175
125
 
176
126
  /* -----------------------------------------------------------------------------
177
127
  // #forms - for submitting data to the server
178
128
  // -------------------------------------------------------------------------- */
129
+
179
130
  /* #form #fieldset #focus-within - highlight whole forms & fieldsets when one of
180
131
  its contained elements is focused - [0010] specificity */
181
132
  :where(form, fieldset):focus-within {
@@ -187,103 +138,11 @@ tfoot :where(td, th) {box-shadow: inset 0 2px var(--secondary, --neutral);}
187
138
  border-color: var(--border);
188
139
  }
189
140
 
190
- /* #form #ul - since lists in forms typically list out form controls, remove
191
- the bullet styling from them - [0002] specificity */
192
- form ul { list-style: none; }
193
-
194
- /* #form #section #p #div - subgrid is firefox 71+ & safari 16+ only 20221001 */
195
- @supports (grid-template-columns: subgrid) {
196
- /* :where() can be used here, since @supports is also a recent addition */
197
- form :where(section, p, div) { /* [0001] specificity */
198
- grid-column: full;
199
- display: grid;
200
- grid-template-columns: subgrid;
201
- gap: inherit;
202
- }}
203
- /*form section :where(h1,h2,h3,h4,h5,h6) + p { display: block; }*/
204
-
205
- /* chrome/edge doesn't support subgrid yet but does support :has() & :where() */
206
- @supports selector(:has(*)) {
207
- fieldset:where(:has(label, input, button, textarea, select, fieldset)) {
208
- margin: 0;
209
- display: grid;
210
- grid-template-columns:[labels full-start] 3fr [elements] 7fr [full-end];
211
- gap: var(--m);
212
- }
213
- fieldset:where(:has(p :is([type='checkbox'], [type='radio'])):not(:has(select,
214
- textarea, [type="text"], [type="date"], [type="email"], [type="password"],
215
- [type="datetime-local"], [type="search"]))) {
216
- row-gap: 0;
217
- }
218
- /* since grid properties fall through p tags, assign margin-top to first child
219
- elements to get a gap between paragraphs of different input types */
220
- fieldset p:has([type='checkbox'], [type='radio']) + p:has([type='radio'],
221
- [type='checkbox']) :is([type='radio'], [type='checkbox'],
222
- label):first-of-type {
223
- margin-top: var(--m);
224
- }
225
- /* chrome/edge doesn't support subgrid, so pierce the grid barrier instead */
226
- fieldset :where(p:has(label, input, button, textarea, select, fieldset)) {
227
- display: contents;
228
- }
229
- /* labels go on the labels gridline */
230
- :where(fieldset :is(p, div)) label {
231
- grid-column: labels;
232
- }
233
- /* lists that contain radios/checkboxes go on the elements gridline */
234
- form:has(fieldset :where(select, textarea, [type="text"], [type="date"],
235
- [type="email"], [type="password"], [type="datetime-local"],
236
- [type="search"])) fieldset ul:has(li label :where([type='radio'],
237
- [type='checkbox'])) {
238
- grid-column: elements;
239
- }
240
-
241
- /* inputs on the elements gridline; pad right side away from fieldset line */
242
- :where(fieldset) :where(p):has(input, button, textarea, select, fieldset)
243
- :where(input:not(:is([type='checkbox'],[type='radio']), button,
244
- textarea, select, fieldset)) {
245
- grid-column: elements;
246
- margin-right: var(--m);
247
- }
248
- /* for radios & checks, invert the placement of the input and label */
249
- :where(fieldset) :where(p):has(label) :where([type='checkbox'],
250
- [type='radio']):has(+ label) {
251
- grid-column: labels;
252
- align-self: center;
253
- justify-self: end;
254
- }
255
- :where(fieldset p:has(label) :is([type='checkbox'],
256
- [type='radio']):has(+ label)) + label {
257
- grid-column: elements;
258
- justify-self: start;
259
- }
260
- /* for paragraph tags that aren't form element containers, span the grid */
261
- :where(fieldset) :where(p, div, h2, h3, h4, h5, h6):not(:has(label, input,
262
- button, textarea, select, fieldset)) {
263
- display: block;
264
- grid-column: full;
265
- }
266
- }
267
- /*form :where(fieldset, input, select, button, input[type="button"]) {
268
- grid-column: elements;
269
- }*/
270
-
271
- fieldset > :last-child {
272
- margin-bottom: 0;
273
- }
274
-
275
141
 
276
142
  /* -----------------------------------------------------------------------------
277
143
  // #inputs - standard form input elements
278
144
  // -------------------------------------------------------------------------- */
279
145
 
280
- /* if [size] is set on an input, respect that choice - [0011] specificity */
281
- input[size] {
282
- width: fit-content;
283
- min-width: unset;
284
- max-width: unset;
285
- }
286
-
287
146
  /* #input #optgroup #option #textarea #select #read-only #focus - bg field icons
288
147
  are Field system color by default, and --icon-color on focus/hover */
289
148
  :where(input, optgroup, option, textarea, select):focus {
@@ -291,48 +150,6 @@ input[size] {
291
150
  --icon-color: var(--primary);
292
151
  }
293
152
 
294
- /* input images */
295
- [type="date"], [type="time"], [type="datetime"], [type="datetime-local"],
296
- [type="month"], [type="week"], [type="url"], [type="email"],
297
- [type="number"], [type="tel"], [type="password"], [type="search"] {
298
- padding-left: var(--height);
299
- background-blend-mode: var(--icon-blend-mode);
300
- }
301
- [type="date"], [type="month"], [type="week"] {
302
- background-image: var(--colorize-icon), var(--i-calendar); }
303
- [type="datetime"], [type="datetime-local"], [type="time"] {
304
- background-image: var(--colorize-icon), var(--i-calendar-time); }
305
- [type="url"] { background-image: var(--colorize-icon), var(--i-browser); }
306
- [type="email"] { background-image: var(--colorize-icon), var(--i-mail); }
307
- [type="number"] { background-image: var(--colorize-icon), var(--i-numbers); }
308
- [type="tel"] { background-image: var(--colorize-icon), var(--i-phone); }
309
- [type="password"]{ background-image: var(--colorize-icon), var(--i-lock); }
310
- [type="search"] { background-image: var(--colorize-icon), var(--i-search); }
311
-
312
- /*@media (prefers-color-scheme: dark) {
313
- [type="date"], [type="time"], [type="datetime"], [type="datetime-local"],
314
- [type="week"], [type="month"], [type="url"], [type="email"],
315
- [type="number"], [type="tel"], [type="password"], [type="search"] {
316
- mask: var(--icon) no-repeat center left / var(--field-icon);
317
- background-color: var(--icon-color);
318
- mask-repeat: no-repeat;
319
- background-image: unset;
320
- }
321
- [type="date"], [type="month"], [type="week"] { --icon: var(--i-calendar); }
322
- [type="datetime"], [type="datetime-local"], [type="time"] {
323
- --icon: var(--i-calendar-time); }
324
- [type="url"] { --icon: var(--i-browser); }
325
- [type="email"] { --icon: var(--i-mail); }
326
- [type="number"] { --icon: var(--i-numbers); }
327
- [type="tel"] { --icon: var(--i-phone); }
328
- [type="password"]{ --icon: var(--i-lock); }
329
- [type="search"] { --icon: var(--i-search); }
330
- }*/
331
-
332
- /* hide nav search's placeholder text if the background icon is present; opacity
333
- is used here because other methods are disallowed on ::placeholder - [0001]*/
334
- :where(nav) :where([type="search"])::placeholder { opacity: 0; }
335
-
336
153
  :where(input, optgroup, option, textarea, select):required:is(:valid,:in-range){
337
154
  border-color: var(--success-high, forestgreen);
338
155
  }
@@ -345,7 +162,7 @@ input[size] {
345
162
  :where(textarea, [type="text"], [type="date"], [type="time"], [type="datetime"],
346
163
  [type="datetime-local"], [type="month"],[type="week"], [type="email"],
347
164
  [type="password"], [type="url"], [type="tel"], [type="number"],
348
- [type="search"]):read-only:enabled {
165
+ [type="search"], input:not([type])):read-only:enabled {
349
166
  border-style: none;
350
167
  }
351
168
 
@@ -395,7 +212,7 @@ input[size] {
395
212
  border-color: var(--highlighted);
396
213
  }
397
214
  */
398
- /* #:user-invalid - experimental - firefox only for now */
215
+ /* #:user-invalid - firefox only for now - EXPERIMENTAL */
399
216
  :where(input, optgroup, option, textarea, select):user-invalid {
400
217
  border-color: var(--error-high, firebrick);
401
218
  }
@@ -442,12 +259,6 @@ input[size] {
442
259
  background-color: var(--deactivated); /* greyed-out "check" */
443
260
  }
444
261
 
445
- /* if radios/checkboxes are inline, insert a gap between them for readability */
446
- :where([type="radio"] + label, [type="checkbox"] + label) +
447
- :is([type="radio"], [type="checkbox"]) { /* [0010] specificity */
448
- margin-left: var(--m);
449
- }
450
-
451
262
  /* inputs are (somewhat unspecified as) "replaced elements" & therefore can't
452
263
  have ::before or ::after pseudo-elements on itself; use on label instead */
453
264
  /* mark required fields' labels; labels usually follow checkboxes & radios */
@@ -471,19 +282,6 @@ input[size] {
471
282
  }
472
283
 
473
284
 
474
- /* -----------------------------------------------------------------------------
475
- // specialized inputs - #date #time #datetime-local #month #week #datetime
476
- // #email #password #search #file #image #url #tel #color
477
- // #range #number #hidden
478
- // -------------------------------------------------------------------------- */
479
-
480
- /* search decorations - [0011] specificity */
481
- [type="search"]::-webkit-search-cancel-button,
482
- [type="search"]::-webkit-search-decoration {
483
- appearance: none; /* needed? */
484
- }
485
-
486
-
487
285
  /* -----------------------------------------------------------------------------
488
286
  // #buttons - <button>s and <input>s of type=button, reset, and submit
489
287
  // -------------------------------------------------------------------------- */
@@ -588,14 +386,6 @@ select:not(:disabled, [disabled]):hover, select:active { /* dropdown chevron */
588
386
  var(--checked, LinkText) 0%, var(--checked, LinkText) 100%);
589
387
  }
590
388
 
591
- /* #label for taller #multiple #textarea should align top - firefox 106 still
592
- doesn't properly support :has() with combinator selectors */
593
- @supports selector(:has(*)) {
594
- label:where(:has(+ [multiple],+ textarea,+ select[size])){/*[0001] specificity*/
595
- vertical-align: top;
596
- align-self: start;
597
- }}
598
-
599
389
 
600
390
  /* -----------------------------------------------------------------------------
601
391
  // #outputs - informational output/display
@@ -613,34 +403,11 @@ progress:hover { border-color: revert; }
613
403
  // #block text elements - elements that contain text blocks
614
404
  // -------------------------------------------------------------------------- */
615
405
 
616
- blockquote::before { /* [0002] specificity is the least possible here */
617
- content: open-quote;
618
- color: var(--pale);
619
- font-size: 5rem;
620
- font-family: var(--serif);
621
- left: var(--xs);
622
- line-height: 1;
623
- position: absolute;
624
- top: 0;
625
- z-index: -1;
626
- }
627
- blockquote > :first-child { /* [0011] specificity */
628
- margin-top: 0;
629
- text-indent: var(--m);
630
- }
631
- blockquote > :last-child { /* [0011] specificity */
632
- margin-bottom: 0;
633
- }
634
-
635
406
 
636
407
  /* -----------------------------------------------------------------------------
637
408
  // #inline elements - elements that occur principally within text blocks
638
409
  // -------------------------------------------------------------------------- */
639
410
 
640
- /* #q - inline quotations -note that you must add the closing smart quote as
641
- <q>'s automatic quotes are added via pseudo elements */
642
- q[cite]::after { content: "” (cf. " attr(cite) ") "; }
643
-
644
411
  /* #kbd #hover - remove default :hover styles - [0011] specificity */
645
412
  kbd:hover { border: var(--solid) var(--distinguished); }
646
413
 
@@ -655,28 +422,6 @@ kbd:hover { border: var(--solid) var(--distinguished); }
655
422
 
656
423
  /* #figure */
657
424
  figure:hover { border-color: var(--border); }
658
- /* #figure #headings - #h1 #h2 #h3 #h4 #h5 #h6 ~*/
659
- figure > :where(h1,h2,h3,h4,h5,h6):first-child { margin-top: 0; }
660
-
661
- /* #blockquote inside #figure - safari only for now - :where is older than :has
662
- so it can be used here to reduce specificity - [0001] specificity */
663
- figure:where(:has(blockquote)) {
664
- background-color: revert;
665
- }
666
- /* fix doubled margin of a blockquote in a figure - [0002] specificity */
667
- figure > blockquote {
668
- text-align: start;
669
- margin: var(--ms);
670
- padding: var(--ms);
671
- max-width: calc(var(--line-length) - (var(--ms) * 2));
672
- }
673
-
674
- /* #svg - [0001] specificity */
675
- svg:not(:where(:root)) {
676
- width: var(--m);
677
- /*max-width: 100%;*/
678
- overflow: hidden;
679
- }
680
425
 
681
426
  /* #audio - audio w/p controls shouldn't take up space - [0011] specificity */
682
427
  audio:not([controls]) {
@@ -699,28 +444,6 @@ audio:not([controls]) {
699
444
  // #interactive - built-in interactive components
700
445
  // -------------------------------------------------------------------------- */
701
446
 
702
- /* #dialog - built-in modal overlay - comes with 'Esc' support with no js! */
703
- /* wrap long dialogs in a container to scroll the body content sans button */
704
- dialog > :where(div, section, article) {
705
- overflow-y: auto; /* scrolls as necessary w/ height set */
706
- max-height: calc(80vh * 0.8); /* container queries needed! */
707
- }
708
-
709
- dialog button {
710
- margin-top: var(--ms);
711
- }
712
-
713
- dialog :where(h1, h2, h3, h4, h5, h6) {
714
- border-bottom: var(--solid) var(--border);
715
- border-radius: var(--radius) var(--radius) 0 0;
716
- color: var(--distinct); /* differentiate dialog headings */
717
- font-size: var(--large); /* dialogs typically only need 1 heading
718
- level, so make it all the same size */
719
- margin: 0 0 0 calc(-1 * var(--m)); /* negative left margin
720
- lines up heading with paragraph text */
721
- padding: 0 var(--m) var(--m); /* top padding provided by dialog
722
- padding so remove it here */
723
- }
724
447
 
725
448
  /* #details - an accordion-like widget for question & answer style layouts */
726
449
  /* #summary - the 'question' sub-element of details */
@@ -728,21 +451,6 @@ details:where([open]) summary {
728
451
  border-bottom: var(--solid) var(--border);
729
452
  }
730
453
 
731
- details + details {
732
- border-top: 0;
733
- border-radius: 0;
734
- }
735
-
736
- details:first-of-type {
737
- border-top-left-radius: var(--radius);
738
- border-top-right-radius: var(--radius);
739
- }
740
-
741
- details:last-of-type {
742
- border-bottom-left-radius: var(--radius);
743
- border-bottom-right-radius: var(--radius);
744
- }
745
-
746
454
 
747
455
  /* -----------------------------------------------------------------------------
748
456
  // #breaks - spacing elements
@@ -7,7 +7,7 @@
7
7
  /* #visually-hidden - provide non-visual information semantically & accessibly*/
8
8
  /* :not() with a selection list has poor backwards compatibility as of 2022, so
9
9
  use separate :not() clauses for now */
10
- .visually-hidden:not(:focus):not(:active):not(:focus-within) { /* ie9+ */
10
+ .visually-hidden:not(:focus):not(:active):not(:focus-within) { /* ie9+ */
11
11
  position: absolute;
12
12
  width: 1px;
13
13
  height: 1px;
@@ -36,6 +36,8 @@
36
36
  /* override display mode to be block */
37
37
  .block { display: block; }
38
38
 
39
+ /*.center { margin-inline: auto; }*/
40
+
39
41
  /* horizontally center text and menu items */
40
42
  .centered { text-align: center; }
41
43
  .centered menu { justify-content: center; } /* [0011] specificity */
@@ -52,13 +54,22 @@
52
54
  .shadow { box-shadow: var(--shadow) var(--300); }
53
55
 
54
56
 
55
- form.button_to {
56
- width: min-content;
57
- }
57
+ /* -----------------------------------------------------------------------------
58
+ // #colors - utility classes for setting the --color variable - EXPERIMENTAL
59
+ // -------------------------------------------------------------------------- */
60
+
61
+ .red { --color: var(--error); }
62
+ .orange { --color: var(--error); }
63
+ .yellow { --color: var(--warning); }
64
+ .lime { --color: var(--error); }
65
+ .green { --color: var(--success); }
66
+ .aqua { --color: var(--error); }
67
+ .blue { --color: var(--info); }
68
+ .indigo { --color: var(--error); }
69
+ .purple { --color: var(--error); }
70
+ .violet { --color: var(--error); }
71
+ .magenta { --color: var(--error); }
58
72
 
59
- form.button_to > [type="submit"] {
60
- width: max-content;
61
- }
62
73
 
63
74
  /* -----------------------------------------------------------------------------
64
75
  // #clairity - special font just for fun
@@ -66,3 +77,24 @@ form.button_to > [type="submit"] {
66
77
  .clairity { font-family: Corbel, "Lucida Grande", "Lucida Sans Unicode",
67
78
  "Lucida Sans", "DejaVu Sans", "Bitstream Vera Sans",
68
79
  "Liberation Sans", Verdana, "Verdana Ref",sans-serif;}
80
+
81
+
82
+ /* -----------------------------------------------------------------------------
83
+ // #accessibility - support user accessibility preferences where feasible
84
+ // -------------------------------------------------------------------------- */
85
+
86
+ /* see https://css-tricks.com/a-complete-guide-to-css-media-queries/
87
+ and https://web.dev/prefers-reduced-motion/
88
+ // .......................................................................... */
89
+ @media screen and (prefers-reduced-motion: reduce) {
90
+ *, ::before, ::after {
91
+ /* Very short durations means JavaScript that relies on events still works */
92
+ animation-delay: 1ms !important;
93
+ animation-duration: 1ms !important;
94
+ transition-delay: 1ms !important;
95
+ transition-duration: 1ms !important;
96
+ animation-iteration-count: 1 !important;
97
+ scroll-behavior: auto !important;
98
+ background-attachment: initial !important;
99
+ }
100
+ }
@@ -103,7 +103,10 @@
103
103
 
104
104
  /* shims - supports certain common markup patterns that are less semantic.
105
105
  Import these when adding clairity.css to older sites. [OPTIONAL] */
106
- /*@import "clairity/shims.css" layer(clairity.utilities);*/
106
+ @import "clairity/shims.css"/* layer(clairity.utilities);*/
107
107
 
108
108
  /* legacy - provides graceful degradation for older browsers. [OPTIONAL] */
109
109
  /*@import "clairity/legacy.css" layer(clairity.utilities);*/
110
+
111
+ /* TODO: print - stylesheet for adjusting pages for print. [OPTIONAL] */
112
+ /*@import "clairity/print.css" print;*/
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ClairityCss
4
- VERSION = '0.1.2'
4
+ VERSION = '0.2.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clairity.css
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - clairity
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-21 00:00:00.000000000 Z
11
+ date: 2023-05-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -81,12 +81,14 @@ files:
81
81
  - lib/assets/css/clairity/cosmetic.css
82
82
  - lib/assets/css/clairity/functions.css
83
83
  - lib/assets/css/clairity/icons.css
84
+ - lib/assets/css/clairity/legacy.css
84
85
  - lib/assets/css/clairity/normalize.css
85
86
  - lib/assets/css/clairity/palette.css
86
87
  - lib/assets/css/clairity/shims.css
87
88
  - lib/assets/css/clairity/states.css
88
89
  - lib/assets/css/clairity/utilities.css
89
90
  - lib/assets/css/clairity/variables.css
91
+ - lib/assets/images/fiery_sunburst.jpg
90
92
  - lib/assets/images/input-image.png
91
93
  - lib/assets/images/logo.png
92
94
  - lib/assets/images/profile-avatar.png