4 Commits

  1. 15
      CHANGELOG.md
  2. 85
      assets/css/_navigation.scss
  3. 30
      assets/css/_variables.scss
  4. 387
      assets/css/app-old.scss
  5. 387
      assets/css/app.scss
  6. 12949
      assets/package-lock.json
  7. 2
      assets/package.json
  8. 7
      assets/postcss.config.js
  9. 6
      assets/static/docs/404.html
  10. 8
      assets/static/docs/Mirage.Accounts.User.html
  11. 8
      assets/static/docs/Mirage.Accounts.UserNotifier.html
  12. 8
      assets/static/docs/Mirage.Accounts.UserToken.html
  13. 94
      assets/static/docs/Mirage.Accounts.html
  14. 8
      assets/static/docs/Mirage.Links.Link.html
  15. 8
      assets/static/docs/Mirage.Links.LinkTopic.html
  16. 44
      assets/static/docs/Mirage.Links.html
  17. 8
      assets/static/docs/Mirage.Lists.List.html
  18. 46
      assets/static/docs/Mirage.Lists.html
  19. 8
      assets/static/docs/Mirage.Markdown.html
  20. 8
      assets/static/docs/Mirage.Notes.Note.html
  21. 8
      assets/static/docs/Mirage.Notes.NoteLink.html
  22. 8
      assets/static/docs/Mirage.Notes.NoteNote.html
  23. 8
      assets/static/docs/Mirage.Notes.NoteTopic.html
  24. 48
      assets/static/docs/Mirage.Notes.html
  25. 8
      assets/static/docs/Mirage.Release.html
  26. 8
      assets/static/docs/Mirage.Repo.html
  27. 8
      assets/static/docs/Mirage.Settings.Setting.html
  28. 52
      assets/static/docs/Mirage.Settings.html
  29. 8
      assets/static/docs/Mirage.Slug.html
  30. 12
      assets/static/docs/Mirage.Tags.html
  31. 8
      assets/static/docs/Mirage.Topics.Topic.html
  32. 46
      assets/static/docs/Mirage.Topics.html
  33. BIN
      assets/static/docs/Mirage.epub
  34. 8
      assets/static/docs/Mirage.html
  35. 8
      assets/static/docs/MirageWeb.BlogLive.html
  36. 8
      assets/static/docs/MirageWeb.Endpoint.html
  37. 8
      assets/static/docs/MirageWeb.ErrorHelpers.html
  38. 8
      assets/static/docs/MirageWeb.ErrorView.html
  39. 16
      assets/static/docs/MirageWeb.Gettext.html
  40. 8
      assets/static/docs/MirageWeb.GotoAnythingLive.html
  41. 8
      assets/static/docs/MirageWeb.HomeLive.html
  42. 8
      assets/static/docs/MirageWeb.InboxLive.Index.html
  43. 8
      assets/static/docs/MirageWeb.InboxLive.ItemComponent.html
  44. 8
      assets/static/docs/MirageWeb.LayoutView.html
  45. 8
      assets/static/docs/MirageWeb.LinkLive.FormComponent.html
  46. 8
      assets/static/docs/MirageWeb.LinkLive.Index.html
  47. 8
      assets/static/docs/MirageWeb.LinkLive.Show.html
  48. 8
      assets/static/docs/MirageWeb.ListLive.FormComponent.html
  49. 8
      assets/static/docs/MirageWeb.ListLive.Index.html
  50. 8
      assets/static/docs/MirageWeb.ListLive.Show.html
  51. 10
      assets/static/docs/MirageWeb.LiveHelpers.html
  52. 8
      assets/static/docs/MirageWeb.ModalComponent.html
  53. 8
      assets/static/docs/MirageWeb.NoteLive.FormComponent.html
  54. 8
      assets/static/docs/MirageWeb.NoteLive.Index.html
  55. 8
      assets/static/docs/MirageWeb.NoteLive.Show.html
  56. 8
      assets/static/docs/MirageWeb.Router.Helpers.html
  57. 8
      assets/static/docs/MirageWeb.Router.html
  58. 8
      assets/static/docs/MirageWeb.SettingController.html
  59. 8
      assets/static/docs/MirageWeb.SettingView.html
  60. 8
      assets/static/docs/MirageWeb.SharedView.html
  61. 8
      assets/static/docs/MirageWeb.Telemetry.html
  62. 8
      assets/static/docs/MirageWeb.TopicController.html
  63. 8
      assets/static/docs/MirageWeb.TopicView.html
  64. 8
      assets/static/docs/MirageWeb.UserAuth.html
  65. 8
      assets/static/docs/MirageWeb.UserConfirmationController.html
  66. 8
      assets/static/docs/MirageWeb.UserConfirmationView.html
  67. 8
      assets/static/docs/MirageWeb.UserRegistrationController.html
  68. 8
      assets/static/docs/MirageWeb.UserRegistrationView.html
  69. 8
      assets/static/docs/MirageWeb.UserResetPasswordController.html
  70. 8
      assets/static/docs/MirageWeb.UserResetPasswordView.html
  71. 8
      assets/static/docs/MirageWeb.UserSessionController.html
  72. 8
      assets/static/docs/MirageWeb.UserSessionView.html
  73. 8
      assets/static/docs/MirageWeb.UserSettingsController.html
  74. 8
      assets/static/docs/MirageWeb.UserSettingsView.html
  75. 8
      assets/static/docs/MirageWeb.UserSocket.html
  76. 8
      assets/static/docs/MirageWeb.UserView.html
  77. 8
      assets/static/docs/MirageWeb.html
  78. 8
      assets/static/docs/api-reference.html
  79. 2
      assets/static/docs/index.html
  80. 6
      assets/static/docs/readme.html
  81. 6
      assets/static/docs/search.html
  82. 1
      assets/webpack.config.js
  83. 23
      lib/mirage_web/live/blog_live.html.leex
  84. 107
      lib/mirage_web/live/note_live/show.html.leex
  85. 10
      lib/mirage_web/templates/layout/_header.html.eex
  86. 7
      lib/mirage_web/templates/layout/_sidebar.html.eex
  87. 7
      lib/mirage_web/templates/layout/_user_menu.html.eex
  88. 10
      lib/mirage_web/templates/layout/app.html.eex
  89. 22
      lib/mirage_web/templates/layout/live.html.leex
  90. 39
      lib/mirage_web/templates/layout/root.html.leex
  91. 2
      mix.exs

15
CHANGELOG.md

@ -5,6 +5,21 @@ See [Conventional Commits](Https://conventionalcommits.org) for commit guideline
<!-- changelog -->
## [v0.75.0](https://git.inhji.de/inhji/mirage/compare/v0.74.0...v0.75.0) (2021-03-16)
### Chores:
* Update Docs
### Features:
* rewrite styles
* tear down styles and layout
## [v0.74.0](https://git.inhji.de/inhji/mirage/compare/v0.73.1...v0.74.0) (2021-03-15)

85
assets/css/_navigation.scss

@ -1,84 +1,16 @@
nav[role=navigation] {
@include color-assign(background-color, navigation);
line-height: 1.5em;
&:before {
content: '';
position: absolute;
width: 100%;
left: 0;
height: 3px;
@include color-assign(background-color, primary);
}
ul {
display: flex;
margin: 0 1rem;
padding: 0;
white-space: nowrap;
overflow-x: auto;
}
li {
display: inline-block;
}
li:first-child {
font-weight: bold;
}
li {
a {
display: block;
padding: 1rem;
text-decoration: none;
transition: all 0.3s;
@include color-assign(color, on-navigation);
&:hover, &.active {
@include color-assign(background-color, primary);
@include color-assign(color, on-primary);
}
}
}
}
aside.menu {
ul {
li {
padding-left: 2rem;
margin: 0 -2rem 0 -4rem;
a {
@include color-assign(background-color, surface);
display: inline-block;
width: 100%;
padding: 1rem 2rem;
transition: all 0.3s;
text-decoration: none;
&:hover {
@include color-assign(background-color, background);
}
}
}
}
}
aside#sidebar {
nav#sidebar {
left: 0;
top: 0;
position: fixed;
width: $width-sidebar;
width: var(--width-sidebar);
height: 100vh;
box-shadow: 1px 0px 3px 0px rgba(0,0,0,0.75);
@include color-assign(background-color, navigation);
box-shadow: 1px 0px 1px 0px rgba(0,0,0,0.5);
background-color: var(--background-navigation);
ul {
li {
a {
@include color-assign(color, on-navigation);
color: #ccc;
display: inline-block;
padding: 1rem;
text-decoration: none;
@ -86,8 +18,7 @@ aside#sidebar {
transition: all 0.3s;
&:hover, &.active {
@include color-assign(background-color, primary);
@include color-assign(color, on-primary);
background-color: var(--primary);
}
svg.icon {

30
assets/css/_variables.scss

@ -0,0 +1,30 @@
:root {
--blue: #007bff;
--indigo: #6610f2;
--purple: #6f42c1;
--pink: #e83e8c;
--red: #dc3545;
--orange: #fd7e14;
--yellow: #ffc107;
--green: #28a745;
--teal: #20c997;
--cyan: #17a2b8;
--white: #fff;
--gray: #6c757d;
--gray-dark: #343a40;
--primary: #007bff;
--secondary: #6c757d;
--success: #28a745;
--info: #17a2b8;
--warning: #ffc107;
--danger: #dc3545;
--light: #f8f9fa;
--dark: #343a40;
--breakpoint-phone: 768px;
--width-main: 100%;
--width-sidebar: 15rem;
--background-navigation: var(--dark);
--color-navigation: var(--white);
}

387
assets/css/app-old.scss

@ -0,0 +1,387 @@
/* === External Dependencies === */
@import "~minireset.css/minireset.css";
@import "~bootstrap-icons/font/bootstrap-icons.css";
@import "~sass-material-colors/sass/sass-material-colors";
@import "~@yaireo/tagify/src/tagify";
/* === Color Definitions === */
$primary-color: 'blue';
$colors: (
light: (
surface: material-color('blue-grey', '50'),
surface-var: material-color('blue-grey', '200'),
surface-dark: material-color('blue-grey', '800'),
on-surface: material-color('blue-grey', '900'),
background: material-color('blue-grey', '200'),
primary: material-color($primary-color, '700'),
primary-inverse: material-color($primary-color, 'a700'),
on-primary: material-color('blue-grey', '50'),
navigation: material-color('blue-grey', '900'),
navigation-var: material-color('blue-grey', '800'),
on-navigation: material-color('blue-grey', '50')
),
dark: (
surface: material-color('blue-grey', '800'),
surface-var: material-color('blue-grey', '800'),
surface-dark: material-color('blue-grey', '800'),
on-surface: material-color('blue-grey', '50'),
background: material-color('blue-grey', '900'),
primary: material-color($primary-color, '700'),
primary-inverse: material-color($primary-color, '300'),
on-primary: material-color('blue-grey', '50'),
navigation: material-color('blue-grey', '900'),
navigation-var: material-color('blue-grey', '800'),
on-navigation: material-color('blue-grey', '50')
)
);
@import "./colors";
/* === Variables === */
$font-content: 'Open Sans', Helvetica, sans-serif;
$font-heading: $font-content;
$width-wrapper: 60rem;
$width-sidebar: 15rem;
$width-sidebar-collapsed: 3rem;
$bg-info: material-color('green', '500');
$color-info: material-color('green', '100');
$bg-warning: #8a6d3b;
$color-warning: #fcf8e3;
$bg-danger: #a94442;
$color-danger: #f2dede;
$phone: 768px;
$shadow: 1px 1px 3px 0px rgba(50, 50, 50, 0.75);
/* === Fonts ===*/
@font-face {
font-family: 'Open Sans';
src: url('../static/fonts/OpenSans-Regular-webfont.woff') format('woff');
font-weight: normal;
font-style: normal;
}
/* === Imports === */
@import "./phoenix";
@import "./nprogress";
@import "./markdown";
@import "./navigation";
@import "./forms";
@import "./tablesort";
@import "./prism";
@import "./cards";
/* === Base === */
html {
height: 100%;
}
body {
@include color-assign(background-color, background);
@include color-assign(color, on-surface);
font-family: $font-content;
font-size: 1rem;
line-height: 1.5rem;
}
h2, h3 {
margin-bottom: 1rem;
}
h1 {
font-size: 2rem;
line-height: 2rem;
}
h2 {
font-size: 1.6rem;
}
h3 {
font-size: 1.3rem;
}
a {
@include color-assign(color, on-surface);
text-decoration: none;
}
/* === Layout === */
.container { max-width: $width-wrapper; }
.grid, .flex { display: flex; }
.col, .spacer { flex: 1; }
.flex-1 {flex: 1;}
.flex-2 {flex: 2;}
.flex-3 {flex: 3;}
.flex-4 {flex: 4;}
body.logged-in {
.container {
max-width: $width-wrapper + $width-sidebar;
}
#wrapper {
margin-left: $width-sidebar;
}
}
main[role=main] {
padding: 0 2rem 2rem 2rem;
@include color-assign(background-color, background);
}
footer {
padding: 2rem;
@include color-assign(background-color, surface);
}
.width-full {
margin-left: -2rem;
margin-right: -2rem;
padding: 2rem;
}
.padding {
padding: 2rem;
}
section + section,
div + section {
margin-top: 2rem;
}
/* === Styling === */
button[type=submit], a.button {
@include color-assign(background-color, surface);
@include color-assign(color, on-surface);
display: inline-block;
font-size: 1rem;
border: 1px solid #000;
@include color-assign(border-color, on-surface);
padding: 0.5rem 1rem;
margin: 0;
&:hover {
@include color-assign(color, on-primary);
@include color-assign(background-color, primary);
}
}
header.hero {
@include color-assign(background-color, primary);
@include color-assign(color, on-primary);
margin: 0 -2rem 0;
padding: 2rem;
h1 {
font-family: $font-heading;
font-weight: bold;
margin-bottom: 0.5rem;
}
p {
font-size: 1.3rem;
margin-bottom: 0.5rem;
&:last-child {
margin-bottom: 0;
}
}
}
.buttons {
margin-top: 2rem;
}
kbd {
padding: 1px 3px;
border: 1px solid #111;
@include color-assign(border-color, on-surface);
@include color-assign(background-color, surface);
border-radius: 3px;
}
.tags {
.tag {
display: inline-block;
font-size:75%;
@include color-assign(background, surface);
@include color-assign(color, on-surface);
padding: 0 0.3rem;
margin: 0.1rem;
border-radius: 5px;
border: 1px solid white;
@include color-assign(border-color, surface-var);
}
}
.notes {
margin-top: 4rem;
.note {
header {
@include color-assign(background-color, primary);
@include color-assign(color, on-primary);
}
}
}
#goto-anything {
position: fixed;
top: 5rem;
left: 15rem;
width: 30rem;
border: 1px solid white;
box-shadow: $shadow;
@include color-assign(background-color, surface);
@include color-assign(border-color, surface);
&.closed {
display: none;
}
form { margin: 0; }
input {
padding: 1rem;
border: none;
width: 100%;
@include color-assign(background-color, surface);
&:focus-visible {
outline: none;
border: none;
}
}
.results {
.result {
padding: 1rem;
&.active {
@include color-assign(background-color, surface-var);
}
}
}
}
/* === Content === */
article {
margin-bottom: 4rem;
&.single {
margin-bottom: 2rem;
}
header {
@include color-assign(background, surface);
.title {
font-family: $font-heading;
margin-bottom: 0;
}
}
footer {
border-top: 1px solid white;
@include color-assign(border-color, surface-var);
}
&:last-child {
margin-bottom: 0;
}
}
.backlinks, .sources {
&+form {
margin-top: 1rem;
}
h4 {
margin-bottom: 1rem;
padding: 0.5rem 1rem;
font-weight: bold;
border: 1px solid white;
@include color-assign(border-color, on-surface);
@include color-assign(color, on-primary);
@include color-assign(background-color, primary);
}
.link-wrapper {
display: flex;
padding: 1rem;
border: 1px solid white;
@include color-assign(border-color, on-surface);
@include color-assign(background-color, surface);
margin-bottom: 1rem;
a.link {
flex: 1;
span:first-child {
font-weight: bold;
}
}
}
.link-wrapper:last-child {
margin-bottom: 0;
}
}
/* === Media Queries === */
@media (max-width: $phone) {
.flex-grid {
display: block;
}
#goto-anything-wrapper {
#goto-anything {
left: 5%;
width: 90%;
}
#goto-anything-button {
display: block;
}
}
aside#sidebar {
width: $width-sidebar-collapsed;
.label {
display: none;
}
}
body.logged-in {
.container {
max-width: $width-wrapper + $width-sidebar-collapsed;
}
#wrapper {
margin-left: $width-sidebar-collapsed;
}
}
}
/* === Helpers === */
.bg-content { @include color-assign(background-color, surface); }
.bg-base { @include color-assign(background-color, background); }

387
assets/css/app.scss

@ -1,387 +1,20 @@
/* === External Dependencies === */
@import "~minireset.css/minireset.css";
@import "~bootstrap-icons/font/bootstrap-icons.css";
@import "~sass-material-colors/sass/sass-material-colors";
@import "~@yaireo/tagify/src/tagify";
@import "~bootstrap-icons/font/bootstrap-icons.css";
/* === Color Definitions === */
$primary-color: 'blue';
$colors: (
light: (
surface: material-color('blue-grey', '50'),
surface-var: material-color('blue-grey', '200'),
surface-dark: material-color('blue-grey', '800'),
on-surface: material-color('blue-grey', '900'),
background: material-color('blue-grey', '200'),
primary: material-color($primary-color, '700'),
primary-inverse: material-color($primary-color, 'a700'),
on-primary: material-color('blue-grey', '50'),
navigation: material-color('blue-grey', '900'),
navigation-var: material-color('blue-grey', '800'),
on-navigation: material-color('blue-grey', '50')
),
dark: (
surface: material-color('blue-grey', '800'),
surface-var: material-color('blue-grey', '800'),
surface-dark: material-color('blue-grey', '800'),
on-surface: material-color('blue-grey', '50'),
background: material-color('blue-grey', '900'),
primary: material-color($primary-color, '700'),
primary-inverse: material-color($primary-color, '300'),
on-primary: material-color('blue-grey', '50'),
navigation: material-color('blue-grey', '900'),
navigation-var: material-color('blue-grey', '800'),
on-navigation: material-color('blue-grey', '50')
)
);
@import "./colors";
/* === Variables === */
$font-content: 'Open Sans', Helvetica, sans-serif;
$font-heading: $font-content;
$width-wrapper: 60rem;
$width-sidebar: 15rem;
$width-sidebar-collapsed: 3rem;
$bg-info: material-color('green', '500');
$color-info: material-color('green', '100');
$bg-warning: #8a6d3b;
$color-warning: #fcf8e3;
$bg-danger: #a94442;
$color-danger: #f2dede;
$phone: 768px;
$shadow: 1px 1px 3px 0px rgba(50, 50, 50, 0.75);
/* === Fonts ===*/
@font-face {
font-family: 'Open Sans';
src: url('../static/fonts/OpenSans-Regular-webfont.woff') format('woff');
font-weight: normal;
font-style: normal;
}
/* === Imports === */
@import "./phoenix";
@import "./nprogress";
@import "./markdown";
@import "./variables";
@import "./navigation";
@import "./forms";
@import "./tablesort";
@import "./prism";
@import "./cards";
/* === Base === */
html {
height: 100%;
}
body {
@include color-assign(background-color, background);
@include color-assign(color, on-surface);
font-family: $font-content;
font-size: 1rem;
line-height: 1.5rem;
}
h2, h3 {
margin-bottom: 1rem;
}
h1 {
font-size: 2rem;
line-height: 2rem;
}
h2 {
font-size: 1.6rem;
}
h3 {
font-size: 1.3rem;
}
a {
@include color-assign(color, on-surface);
text-decoration: none;
}
/* === Layout === */
.container { max-width: $width-wrapper; }
.grid, .flex { display: flex; }
.col, .spacer { flex: 1; }
.flex-1 {flex: 1;}
.flex-2 {flex: 2;}
.flex-3 {flex: 3;}
.flex-4 {flex: 4;}
body.logged-in {
.container {
max-width: $width-wrapper + $width-sidebar;
}
#wrapper {
margin-left: $width-sidebar;
}
}
main[role=main] {
padding: 0 2rem 2rem 2rem;
@include color-assign(background-color, background);
}
footer {
padding: 2rem;
@include color-assign(background-color, surface);
}
.width-full {
margin-left: -2rem;
margin-right: -2rem;
padding: 2rem;
}
.padding {
padding: 2rem;
}
section + section,
div + section {
margin-top: 2rem;
}
/* === Styling === */
button[type=submit], a.button {
@include color-assign(background-color, surface);
@include color-assign(color, on-surface);
display: inline-block;
font-size: 1rem;
border: 1px solid #000;
@include color-assign(border-color, on-surface);
padding: 0.5rem 1rem;
margin: 0;
&:hover {
@include color-assign(color, on-primary);
@include color-assign(background-color, primary);
}
}
header.hero {
@include color-assign(background-color, primary);
@include color-assign(color, on-primary);
margin: 0 -2rem 0;
padding: 2rem;
h1 {
font-family: $font-heading;
font-weight: bold;
margin-bottom: 0.5rem;
}
p {
font-size: 1.3rem;
margin-bottom: 0.5rem;
&:last-child {
margin-bottom: 0;
}
}
}
.buttons {
margin-top: 2rem;
}
kbd {
padding: 1px 3px;
border: 1px solid #111;
@include color-assign(border-color, on-surface);
@include color-assign(background-color, surface);
border-radius: 3px;
}
.tags {
.tag {
display: inline-block;
font-size:75%;
@include color-assign(background, surface);
@include color-assign(color, on-surface);
padding: 0 0.3rem;
margin: 0.1rem;
border-radius: 5px;
border: 1px solid white;
@include color-assign(border-color, surface-var);
}
}
.notes {
margin-top: 4rem;
.note {
header {
@include color-assign(background-color, primary);
@include color-assign(color, on-primary);
}
}
}
#goto-anything {
position: fixed;
top: 5rem;
left: 15rem;
width: 30rem;
border: 1px solid white;
box-shadow: $shadow;
@include color-assign(background-color, surface);
@include color-assign(border-color, surface);
&.closed {
display: none;
}
form { margin: 0; }
input {
padding: 1rem;
border: none;
width: 100%;
@include color-assign(background-color, surface);
&:focus-visible {
outline: none;
border: none;
}
}
.results {
.result {
padding: 1rem;
&.active {
@include color-assign(background-color, surface-var);
}
}
}
}
/* === Content === */
article {
margin-bottom: 4rem;
&.single {
margin-bottom: 2rem;
}
header {
@include color-assign(background, surface);
.title {
font-family: $font-heading;
margin-bottom: 0;
}
}
footer {
border-top: 1px solid white;
@include color-assign(border-color, surface-var);
}
&:last-child {
margin-bottom: 0;
}
margin-left: calc(var(--width-sidebar) + var(--ok-s-3));
}
.backlinks, .sources {
&+form {
margin-top: 1rem;
@media (max-width: 768px) {
:root {
--width-main: 100%;
--width-sidebar: 3rem;
}
h4 {
margin-bottom: 1rem;
padding: 0.5rem 1rem;
font-weight: bold;
border: 1px solid white;
@include color-assign(border-color, on-surface);
@include color-assign(color, on-primary);
@include color-assign(background-color, primary);
#sidebar {
a > .label { display: none; }
}
.link-wrapper {
display: flex;
padding: 1rem;
border: 1px solid white;
@include color-assign(border-color, on-surface);
@include color-assign(background-color, surface);
margin-bottom: 1rem;
a.link {
flex: 1;
span:first-child {
font-weight: bold;
}
}
}
.link-wrapper:last-child {
margin-bottom: 0;
}
}
/* === Media Queries === */
@media (max-width: $phone) {
.flex-grid {
display: block;
}
#goto-anything-wrapper {
#goto-anything {
left: 5%;
width: 90%;
}
#goto-anything-button {
display: block;
}
}
aside#sidebar {
width: $width-sidebar-collapsed;
.label {
display: none;
}
}
body.logged-in {
.container {
max-width: $width-wrapper + $width-sidebar-collapsed;
}
#wrapper {
margin-left: $width-sidebar-collapsed;
}
}
}
/* === Helpers === */
.bg-content { @include color-assign(background-color, surface); }
.bg-base { @include color-assign(background-color, background); }
}

12949
assets/package-lock.json
File diff suppressed because it is too large
View File

2
assets/package.json

@ -28,6 +28,8 @@
"css-minimizer-webpack-plugin": "^1.x",
"file-loader": "^6.x",
"mini-css-extract-plugin": "^1.3.6",
"postcss-loader": "^5.2.0",
"postcss-preset-env": "^6.7.0",
"sass": "^1.32.7",
"sass-loader": "^11.0.1",
"sass-material-colors": "^0.0.5",

7
assets/postcss.config.js

@ -0,0 +1,7 @@
module.exports = {
plugins: [
require('postcss-preset-env')({
browsers: 'last 2 versions',
}),
],
};

6
assets/static/docs/404.html

@ -5,11 +5,11 @@
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="ExDoc v0.23.0">
<meta name="project" content="Mirage v0.73.1">
<meta name="project" content="Mirage v0.74.0">
<meta name="author" content="Inhji">
<title>404 — Mirage v0.73.1</title>
<title>404 — Mirage v0.74.0</title>
<link rel="stylesheet" href="dist/elixir-9f91ebe876dc01d67920.css" />
<script src="dist/sidebar_items-86ebe4f0ec.js"></script>
@ -52,7 +52,7 @@
Mirage
</a>
<strong class="sidebar-projectVersion">
v0.73.1
v0.74.0
</strong>
</div>

8
assets/static/docs/Mirage.Accounts.User.html

@ -5,11 +5,11 @@
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="ExDoc v0.23.0">
<meta name="project" content="Mirage v0.73.1">
<meta name="project" content="Mirage v0.74.0">
<meta name="author" content="Inhji">
<title>Mirage.Accounts.User — Mirage v0.73.1</title>
<title>Mirage.Accounts.User — Mirage v0.74.0</title>
<link rel="stylesheet" href="dist/elixir-9f91ebe876dc01d67920.css" />
<script src="dist/sidebar_items-86ebe4f0ec.js"></script>
@ -52,7 +52,7 @@
Mirage
</a>
<strong class="sidebar-projectVersion">
v0.73.1
v0.74.0
</strong>
</div>
@ -74,7 +74,7 @@ Mirage
<div id="content" class="content-inner">
<h1>
Mirage.Accounts.User <small class="app-vsn">(Mirage v0.73.1)</small>
Mirage.Accounts.User <small class="app-vsn">(Mirage v0.74.0)</small>
<a href="https://git.inhji.de/inhji/mirage/src/branch/main/lib/mirage/accounts/user.ex#L1" title="View Source" class="view-source" rel="help">
<span class="icon-code" aria-hidden="true"></span>

8
assets/static/docs/Mirage.Accounts.UserNotifier.html

@ -5,11 +5,11 @@
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="ExDoc v0.23.0">
<meta name="project" content="Mirage v0.73.1">
<meta name="project" content="Mirage v0.74.0">
<meta name="author" content="Inhji">
<title>Mirage.Accounts.UserNotifier — Mirage v0.73.1</title>
<title>Mirage.Accounts.UserNotifier — Mirage v0.74.0</title>
<link rel="stylesheet" href="dist/elixir-9f91ebe876dc01d67920.css" />
<script src="dist/sidebar_items-86ebe4f0ec.js"></script>
@ -52,7 +52,7 @@
Mirage
</a>
<strong class="sidebar-projectVersion">
v0.73.1
v0.74.0
</strong>
</div>
@ -74,7 +74,7 @@ Mirage
<div id="content" class="content-inner">
<h1>
Mirage.Accounts.UserNotifier <small class="app-vsn">(Mirage v0.73.1)</small>
Mirage.Accounts.UserNotifier <small class="app-vsn">(Mirage v0.74.0)</small>
<a href="https://git.inhji.de/inhji/mirage/src/branch/main/lib/mirage/accounts/user_notifier.ex#L1" title="View Source" class="view-source" rel="help">
<span class="icon-code" aria-hidden="true"></span>

8
assets/static/docs/Mirage.Accounts.UserToken.html

@ -5,11 +5,11 @@
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="ExDoc v0.23.0">
<meta name="project" content="Mirage v0.73.1">
<meta name="project" content="Mirage v0.74.0">
<meta name="author" content="Inhji">
<title>Mirage.Accounts.UserToken — Mirage v0.73.1</title>
<title>Mirage.Accounts.UserToken — Mirage v0.74.0</title>
<link rel="stylesheet" href="dist/elixir-9f91ebe876dc01d67920.css" />
<script src="dist/sidebar_items-86ebe4f0ec.js"></script>
@ -52,7 +52,7 @@
Mirage
</a>
<strong class="sidebar-projectVersion">
v0.73.1
v0.74.0
</strong>
</div>
@ -74,7 +74,7 @@ Mirage
<div id="content" class="content-inner">
<h1>
Mirage.Accounts.UserToken <small class="app-vsn">(Mirage v0.73.1)</small>
Mirage.Accounts.UserToken <small class="app-vsn">(Mirage v0.74.0)</small>
<a href="https://git.inhji.de/inhji/mirage/src/branch/main/lib/mirage/accounts/user_token.ex#L1" title="View Source" class="view-source" rel="help">
<span class="icon-code" aria-hidden="true"></span>

94
assets/static/docs/Mirage.Accounts.html

@ -5,11 +5,11 @@
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="ExDoc v0.23.0">
<meta name="project" content="Mirage v0.73.1">
<meta name="project" content="Mirage v0.74.0">
<meta name="author" content="Inhji">
<title>Mirage.Accounts — Mirage v0.73.1</title>
<title>Mirage.Accounts — Mirage v0.74.0</title>
<link rel="stylesheet" href="dist/elixir-9f91ebe876dc01d67920.css" />
<script src="dist/sidebar_items-86ebe4f0ec.js"></script>
@ -52,7 +52,7 @@
Mirage
</a>
<strong class="sidebar-projectVersion">
v0.73.1
v0.74.0
</strong>
</div>
@ -74,7 +74,7 @@ Mirage
<div id="content" class="content-inner">
<h1>
Mirage.Accounts <small class="app-vsn">(Mirage v0.73.1)</small>
Mirage.Accounts <small class="app-vsn">(Mirage v0.74.0)</small>
<a href="https://git.inhji.de/inhji/mirage/src/branch/main/lib/mirage/accounts.ex#L1" title="View Source" class="view-source" rel="help">
<span class="icon-code" aria-hidden="true"></span>
@ -329,11 +329,11 @@ it in the database.</p><h2 id="apply_user_email/3-examples" class="section-headi
<a href="#apply_user_email/3-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
Examples
</h2>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="n">apply_user_email</span><span class="p" data-group-id="2481920377-1">(</span><span class="n">user</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;valid password&quot;</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="2481920377-2">%{</span><span class="ss">email</span><span class="p">:</span><span class="w"> </span><span class="n">...</span><span class="p" data-group-id="2481920377-2">}</span><span class="p" data-group-id="2481920377-1">)</span><span class="w">
</span><span class="p" data-group-id="2481920377-3">{</span><span class="ss">:ok</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="2481920377-4">%</span><span class="nc" data-group-id="2481920377-4">User</span><span class="p" data-group-id="2481920377-4">{</span><span class="p" data-group-id="2481920377-4">}</span><span class="p" data-group-id="2481920377-3">}</span><span class="w">
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="n">apply_user_email</span><span class="p" data-group-id="9352184723-1">(</span><span class="n">user</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;valid password&quot;</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="9352184723-2">%{</span><span class="ss">email</span><span class="p">:</span><span class="w"> </span><span class="n">...</span><span class="p" data-group-id="9352184723-2">}</span><span class="p" data-group-id="9352184723-1">)</span><span class="w">
</span><span class="p" data-group-id="9352184723-3">{</span><span class="ss">:ok</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="9352184723-4">%</span><span class="nc" data-group-id="9352184723-4">User</span><span class="p" data-group-id="9352184723-4">{</span><span class="p" data-group-id="9352184723-4">}</span><span class="p" data-group-id="9352184723-3">}</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="n">apply_user_email</span><span class="p" data-group-id="2481920377-5">(</span><span class="n">user</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;invalid password&quot;</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="2481920377-6">%{</span><span class="ss">email</span><span class="p">:</span><span class="w"> </span><span class="n">...</span><span class="p" data-group-id="2481920377-6">}</span><span class="p" data-group-id="2481920377-5">)</span><span class="w">
</span><span class="p" data-group-id="2481920377-7">{</span><span class="ss">:error</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="2481920377-8">%</span><span class="nc" data-group-id="2481920377-8">Ecto.Changeset</span><span class="p" data-group-id="2481920377-8">{</span><span class="p" data-group-id="2481920377-8">}</span><span class="p" data-group-id="2481920377-7">}</span></code></pre>
</span><span class="gp unselectable">iex&gt; </span><span class="n">apply_user_email</span><span class="p" data-group-id="9352184723-5">(</span><span class="n">user</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;invalid password&quot;</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="9352184723-6">%{</span><span class="ss">email</span><span class="p">:</span><span class="w"> </span><span class="n">...</span><span class="p" data-group-id="9352184723-6">}</span><span class="p" data-group-id="9352184723-5">)</span><span class="w">
</span><span class="p" data-group-id="9352184723-7">{</span><span class="ss">:error</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="9352184723-8">%</span><span class="nc" data-group-id="9352184723-8">Ecto.Changeset</span><span class="p" data-group-id="9352184723-8">{</span><span class="p" data-group-id="9352184723-8">}</span><span class="p" data-group-id="9352184723-7">}</span></code></pre>
</section>
</section>
<section class="detail" id="change_user_email/2">
@ -361,8 +361,8 @@ it in the database.</p><h2 id="apply_user_email/3-examples" class="section-headi
<a href="#change_user_email/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
Examples
</h2>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="n">change_user_email</span><span class="p" data-group-id="4006431504-1">(</span><span class="n">user</span><span class="p" data-group-id="4006431504-1">)</span><span class="w">
</span><span class="p" data-group-id="4006431504-2">%</span><span class="nc" data-group-id="4006431504-2">Ecto.Changeset</span><span class="p" data-group-id="4006431504-2">{</span><span class="ss">data</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="4006431504-3">%</span><span class="nc" data-group-id="4006431504-3">User</span><span class="p" data-group-id="4006431504-3">{</span><span class="p" data-group-id="4006431504-3">}</span><span class="p" data-group-id="4006431504-2">}</span></code></pre>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="n">change_user_email</span><span class="p" data-group-id="3500180423-1">(</span><span class="n">user</span><span class="p" data-group-id="3500180423-1">)</span><span class="w">
</span><span class="p" data-group-id="3500180423-2">%</span><span class="nc" data-group-id="3500180423-2">Ecto.Changeset</span><span class="p" data-group-id="3500180423-2">{</span><span class="ss">data</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="3500180423-3">%</span><span class="nc" data-group-id="3500180423-3">User</span><span class="p" data-group-id="3500180423-3">{</span><span class="p" data-group-id="3500180423-3">}</span><span class="p" data-group-id="3500180423-2">}</span></code></pre>
</section>
</section>
<section class="detail" id="change_user_password/2">
@ -390,8 +390,8 @@ it in the database.</p><h2 id="apply_user_email/3-examples" class="section-headi
<a href="#change_user_password/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
Examples
</h2>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="n">change_user_password</span><span class="p" data-group-id="9943082268-1">(</span><span class="n">user</span><span class="p" data-group-id="9943082268-1">)</span><span class="w">
</span><span class="p" data-group-id="9943082268-2">%</span><span class="nc" data-group-id="9943082268-2">Ecto.Changeset</span><span class="p" data-group-id="9943082268-2">{</span><span class="ss">data</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="9943082268-3">%</span><span class="nc" data-group-id="9943082268-3">User</span><span class="p" data-group-id="9943082268-3">{</span><span class="p" data-group-id="9943082268-3">}</span><span class="p" data-group-id="9943082268-2">}</span></code></pre>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="n">change_user_password</span><span class="p" data-group-id="1086646964-1">(</span><span class="n">user</span><span class="p" data-group-id="1086646964-1">)</span><span class="w">
</span><span class="p" data-group-id="1086646964-2">%</span><span class="nc" data-group-id="1086646964-2">Ecto.Changeset</span><span class="p" data-group-id="1086646964-2">{</span><span class="ss">data</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="1086646964-3">%</span><span class="nc" data-group-id="1086646964-3">User</span><span class="p" data-group-id="1086646964-3">{</span><span class="p" data-group-id="1086646964-3">}</span><span class="p" data-group-id="1086646964-2">}</span></code></pre>
</section>
</section>
<section class="detail" id="change_user_registration/2">
@ -419,8 +419,8 @@ it in the database.</p><h2 id="apply_user_email/3-examples" class="section-headi
<a href="#change_user_registration/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
Examples
</h2>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="n">change_user_registration</span><span class="p" data-group-id="2070022942-1">(</span><span class="n">user</span><span class="p" data-group-id="2070022942-1">)</span><span class="w">
</span><span class="p" data-group-id="2070022942-2">%</span><span class="nc" data-group-id="2070022942-2">Ecto.Changeset</span><span class="p" data-group-id="2070022942-2">{</span><span class="ss">data</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="2070022942-3">%</span><span class="nc" data-group-id="2070022942-3">User</span><span class="p" data-group-id="2070022942-3">{</span><span class="p" data-group-id="2070022942-3">}</span><span class="p" data-group-id="2070022942-2">}</span></code></pre>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="n">change_user_registration</span><span class="p" data-group-id="9308784095-1">(</span><span class="n">user</span><span class="p" data-group-id="9308784095-1">)</span><span class="w">
</span><span class="p" data-group-id="9308784095-2">%</span><span class="nc" data-group-id="9308784095-2">Ecto.Changeset</span><span class="p" data-group-id="9308784095-2">{</span><span class="ss">data</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="9308784095-3">%</span><span class="nc" data-group-id="9308784095-3">User</span><span class="p" data-group-id="9308784095-3">{</span><span class="p" data-group-id="9308784095-3">}</span><span class="p" data-group-id="9308784095-2">}</span></code></pre>
</section>
</section>
<section class="detail" id="confirm_user/1">
@ -491,8 +491,8 @@ and the token is deleted.</p>
<a href="#deliver_update_email_instructions/3-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
Examples
</h2>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="n">deliver_update_email_instructions</span><span class="p" data-group-id="4087628086-1">(</span><span class="n">user</span><span class="p">,</span><span class="w"> </span><span class="n">current_email</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="nc">Routes</span><span class="o">.</span><span class="n">user_update_email_url</span><span class="p" data-group-id="4087628086-2">(</span><span class="n">conn</span><span class="p">,</span><span class="w"> </span><span class="ss">:edit</span><span class="p">,</span><span class="w"> </span><span class="ni">&amp;1</span><span class="p" data-group-id="4087628086-2">)</span><span class="p" data-group-id="4087628086-1">)</span><span class="w">
</span><span class="p" data-group-id="4087628086-3">{</span><span class="ss">:ok</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="4087628086-4">%{</span><span class="ss">to</span><span class="p">:</span><span class="w"> </span><span class="n">...</span><span class="p">,</span><span class="w"> </span><span class="ss">body</span><span class="p">:</span><span class="w"> </span><span class="n">...</span><span class="p" data-group-id="4087628086-4">}</span><span class="p" data-group-id="4087628086-3">}</span></code></pre>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="n">deliver_update_email_instructions</span><span class="p" data-group-id="1178890916-1">(</span><span class="n">user</span><span class="p">,</span><span class="w"> </span><span class="n">current_email</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="nc">Routes</span><span class="o">.</span><span class="n">user_update_email_url</span><span class="p" data-group-id="1178890916-2">(</span><span class="n">conn</span><span class="p">,</span><span class="w"> </span><span class="ss">:edit</span><span class="p">,</span><span class="w"> </span><span class="ni">&amp;1</span><span class="p" data-group-id="1178890916-2">)</span><span class="p" data-group-id="1178890916-1">)</span><span class="w">
</span><span class="p" data-group-id="1178890916-3">{</span><span class="ss">:ok</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="1178890916-4">%{</span><span class="ss">to</span><span class="p">:</span><span class="w"> </span><span class="n">...</span><span class="p">,</span><span class="w"> </span><span class="ss">body</span><span class="p">:</span><span class="w"> </span><span class="n">...</span><span class="p" data-group-id="1178890916-4">}</span><span class="p" data-group-id="1178890916-3">}</span></code></pre>
</section>
</section>
<section class="detail" id="deliver_user_confirmation_instructions/2">
@ -518,11 +518,11 @@ and the token is deleted.</p>
<a href="#deliver_user_confirmation_instructions/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
Examples
</h2>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="n">deliver_user_confirmation_instructions</span><span class="p" data-group-id="5425628523-1">(</span><span class="n">user</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="nc">Routes</span><span class="o">.</span><span class="n">user_confirmation_url</span><span class="p" data-group-id="5425628523-2">(</span><span class="n">conn</span><span class="p">,</span><span class="w"> </span><span class="ss">:confirm</span><span class="p">,</span><span class="w"> </span><span class="ni">&amp;1</span><span class="p" data-group-id="5425628523-2">)</span><span class="p" data-group-id="5425628523-1">)</span><span class="w">
</span><span class="p" data-group-id="5425628523-3">{</span><span class="ss">:ok</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="5425628523-4">%{</span><span class="ss">to</span><span class="p">:</span><span class="w"> </span><span class="n">...</span><span class="p">,</span><span class="w"> </span><span class="ss">body</span><span class="p">:</span><span class="w"> </span><span class="n">...</span><span class="p" data-group-id="5425628523-4">}</span><span class="p" data-group-id="5425628523-3">}</span><span class="w">
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="n">deliver_user_confirmation_instructions</span><span class="p" data-group-id="0091592372-1">(</span><span class="n">user</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="nc">Routes</span><span class="o">.</span><span class="n">user_confirmation_url</span><span class="p" data-group-id="0091592372-2">(</span><span class="n">conn</span><span class="p">,</span><span class="w"> </span><span class="ss">:confirm</span><span class="p">,</span><span class="w"> </span><span class="ni">&amp;1</span><span class="p" data-group-id="0091592372-2">)</span><span class="p" data-group-id="0091592372-1">)</span><span class="w">
</span><span class="p" data-group-id="0091592372-3">{</span><span class="ss">:ok</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="0091592372-4">%{</span><span class="ss">to</span><span class="p">:</span><span class="w"> </span><span class="n">...</span><span class="p">,</span><span class="w"> </span><span class="ss">body</span><span class="p">:</span><span class="w"> </span><span class="n">...</span><span class="p" data-group-id="0091592372-4">}</span><span class="p" data-group-id="0091592372-3">}</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="n">deliver_user_confirmation_instructions</span><span class="p" data-group-id="5425628523-5">(</span><span class="n">confirmed_user</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="nc">Routes</span><span class="o">.</span><span class="n">user_confirmation_url</span><span class="p" data-group-id="5425628523-6">(</span><span class="n">conn</span><span class="p">,</span><span class="w"> </span><span class="ss">:confirm</span><span class="p">,</span><span class="w"> </span><span class="ni">&amp;1</span><span class="p" data-group-id="5425628523-6">)</span><span class="p" data-group-id="5425628523-5">)</span><span class="w">
</span><span class="p" data-group-id="5425628523-7">{</span><span class="ss">:error</span><span class="p">,</span><span class="w"> </span><span class="ss">:already_confirmed</span><span class="p" data-group-id="5425628523-7">}</span></code></pre>
</span><span class="gp unselectable">iex&gt; </span><span class="n">deliver_user_confirmation_instructions</span><span class="p" data-group-id="0091592372-5">(</span><span class="n">confirmed_user</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="nc">Routes</span><span class="o">.</span><span class="n">user_confirmation_url</span><span class="p" data-group-id="0091592372-6">(</span><span class="n">conn</span><span class="p">,</span><span class="w"> </span><span class="ss">:confirm</span><span class="p">,</span><span class="w"> </span><span class="ni">&amp;1</span><span class="p" data-group-id="0091592372-6">)</span><span class="p" data-group-id="0091592372-5">)</span><span class="w">
</span><span class="p" data-group-id="0091592372-7">{</span><span class="ss">:error</span><span class="p">,</span><span class="w"> </span><span class="ss">:already_confirmed</span><span class="p" data-group-id="0091592372-7">}</span></code></pre>
</section>
</section>
<section class="detail" id="deliver_user_reset_password_instructions/2">
@ -548,8 +548,8 @@ and the token is deleted.</p>
<a href="#deliver_user_reset_password_instructions/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
Examples
</h2>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="n">deliver_user_reset_password_instructions</span><span class="p" data-group-id="1310392782-1">(</span><span class="n">user</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="nc">Routes</span><span class="o">.</span><span class="n">user_reset_password_url</span><span class="p" data-group-id="1310392782-2">(</span><span class="n">conn</span><span class="p">,</span><span class="w"> </span><span class="ss">:edit</span><span class="p">,</span><span class="w"> </span><span class="ni">&amp;1</span><span class="p" data-group-id="1310392782-2">)</span><span class="p" data-group-id="1310392782-1">)</span><span class="w">
</span><span class="p" data-group-id="1310392782-3">{</span><span class="ss">:ok</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="1310392782-4">%{</span><span class="ss">to</span><span class="p">:</span><span class="w"> </span><span class="n">...</span><span class="p">,</span><span class="w"> </span><span class="ss">body</span><span class="p">:</span><span class="w"> </span><span class="n">...</span><span class="p" data-group-id="1310392782-4">}</span><span class="p" data-group-id="1310392782-3">}</span></code></pre>
<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="n">deliver_user_reset_password_instructions</span><span class="p" data-group-id="3200762356-1">(</span><span class="n">user</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="nc">Routes</span><span class="o">.</span><span class="n">user_reset_password_url</span><span class="p" data-group-id="3200762356-2">(</span><span class="n">conn</span><span class="p">,</span><span class="w"> </span><span class="ss">:edit</span><span class="p">,</span><span class="w"> </span><span class="ni">&amp;1</span><span class="p" data-group-id="3200762356-2">)</span><span class="p" data-group-id="3200762356-1">)</span><span class="w">
</span><span class="p" data-group-id="3200762356-3">{</span><span class="ss">:ok</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="3200762356-4">%{</span><span class="ss">to</span><span class="p">:</span><span class="w"> </span><span class="n">...</span><span class="p">,</span><span class="w"> </span><span class="ss">body</span><span class="p">:</span><span class="w"> </span><span class="n">...</span><span class="p" data-group-id="3200762356-4">}</span><span class="p" data-group-id="3200762356-3">}</span></code></pre>
</section>
</section>
<section class="detail" id="generate_user_session_token/1">
@ -619,10 +619,10 @@ and the token is deleted.</p>
<a href="#get_user!/1-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
Examples