cv.html.heex 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css" integrity="sha512NhSC1YmyruXifcj/KFRWoC561YpHpc5Jtzgvbuzx5VozKpWvQ+4nXhPdFgmx8xqexRcpAglTj9sIBWINXa8x5w==" crossorigin="anonymous" referrerpolicy="no-referrer" />
  9. <style>
  10. @import url(https://fonts.googleapis.com/css?family=Open+Sans:400,600,700,800);
  11. @charset "utf-8";
  12. @-webkit-viewport {
  13. width: device-width;
  14. }
  15. @-moz-viewport {
  16. width: device-width;
  17. }
  18. @-ms-viewport {
  19. width: device-width;
  20. }
  21. @-o-viewport {
  22. width: device-width;
  23. }
  24. @viewport {
  25. width: device-width;
  26. }
  27. html {
  28. background-color: rgb(51, 73, 96);
  29. }
  30. * {
  31. box-sizing: border-box;
  32. }
  33. h1, h2, h3, h4, h5, h6 {
  34. font-size: 1em;
  35. }
  36. ol,
  37. ul {
  38. list-style: none;
  39. padding-inline: 0;
  40. }
  41. body {
  42. width: 80;
  43. max-width: 120ch;
  44. margin-top: 2em;
  45. margin-bottom: 2em;
  46. margin-right: auto;
  47. margin-left: auto;
  48. padding: 1em;
  49. background-color: white;
  50. font-family: 'Open Sans', Arial, Tahoma;
  51. font-weight: 400;
  52. display: grid;
  53. grid-template-areas:
  54. "basics basics"
  55. "work education"
  56. "work skills"
  57. "work languages"
  58. "work _";
  59. }
  60. dl {
  61. display: grid;
  62. grid-template-columns: auto 1fr;
  63. }
  64. dt {
  65. grid-column: 1/2;
  66. }
  67. dd {
  68. grid-column: 2/3;
  69. }
  70. #basics {
  71. grid-area: basics;
  72. display: grid;
  73. justify-items: center;
  74. }
  75. #work {
  76. grid-area: work;
  77. }
  78. #basics>h1,
  79. #basics>h2 {
  80. text-transform: uppercase;
  81. }
  82. data.name::after {
  83. content: attr(value);
  84. }
  85. data.position[lang="fr"]::after {
  86. content: 'Poste: ' attr(value);
  87. }
  88. data.position[lang="en"]::after {
  89. display: none;
  90. }
  91. dt.work_location+dd::before,
  92. data.work_location::after {
  93. content: '🏢 ' attr(value);
  94. }
  95. dt.location::after,
  96. data.location::after {
  97. content: '🏠 ' attr(value);
  98. }
  99. li h1,
  100. li h2,
  101. li h3 {
  102. font-weight: 500;
  103. }
  104. #skills .tools::after {
  105. content: "Outils";
  106. }
  107. </style>
  108. </head>
  109. <body>
  110. <div id="basics">
  111. <h1><%= @basics.name %></h1>
  112. <h2><%= @basics.label %></h2>
  113. <dl>
  114. <dt class="location">Lieu</dt>
  115. <dd><%= @basics.location.city %></dd>
  116. </dl>
  117. </div>
  118. <div id="work">
  119. <h1>Expériences professionnelles</h1>
  120. <ol>
  121. <%= for work <- @work do %>
  122. <li>
  123. <div>
  124. <h1><%= work.name %></h1>
  125. <dl>
  126. <dt class="position" lang="fr">Poste</dt>
  127. <dd lang="fr"><%= work.position %></dd>
  128. <dt class="start_date">Date début</dt>
  129. <dd><.date class="start_date" date={work.startDate}/></dd>
  130. <%= unless is_nil(work[:endDate]) do %>
  131. <dt class="end_date">Date fin</dt>
  132. <dd><.date class="end_date" date={work.endDate}/></dd>
  133. <% end %>
  134. <dt class="work_location"></dt>
  135. <dd>Paris</dd>
  136. </dl>
  137. <p class="summary" lang="en"><%= work.summary %></p>
  138. <ul class="highlights">
  139. <%= for highlight <- work.highlights do %>
  140. <li><%= highlight %></li>
  141. <% end %>
  142. </ul>
  143. </div>
  144. </li>
  145. <% end %>
  146. </ol>
  147. </div>
  148. <div id="skills">
  149. <h1>Compétences</h1>
  150. <ul>
  151. <%= for skill <- @skills do %>
  152. <li>
  153. <h1><%= skill.name %></h1>
  154. <ul>
  155. <%= for kw <- skill.keywords do %>
  156. <li><%= kw %></li>
  157. <% end %>
  158. </ul>
  159. </li>
  160. <% end %>
  161. </ul>
  162. </div>
  163. <div id="education">
  164. <h1>Formation</h1>
  165. <ol>
  166. <%= for educ <- @education do %>
  167. <li>
  168. <h1><%= educ.institution %></h1>
  169. <dl>
  170. <dt class="location"></dt>
  171. <dd><%= educ[:location] %></dd>
  172. <dt class="start_date">Date début</dt>
  173. <dd><.date class="start_date" date={educ.startDate}/></dd>
  174. <dt class="end_date">Date fin</dt>
  175. <dd><.date class="end_date" date={educ.endDate}/></dd>
  176. </dl>
  177. </li>
  178. <% end %>
  179. </ol>
  180. </div>
  181. <div id="languages">
  182. <h1>Langues</h1>
  183. <ul>
  184. <%= for lang <- @languages do %>
  185. <li><%= lang.language %> (<%= lang.fluency %>)</li>
  186. <% end %>
  187. </ul>
  188. </div>
  189. </body>
  190. </html>