lesli 5.0.2 → 5.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (166) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/config/lesli_manifest.js +2 -1
  3. data/app/assets/javascripts/lesli/users/confirmations.js +32 -0
  4. data/app/assets/javascripts/lesli/users/passwords.js +3 -3
  5. data/app/assets/javascripts/lesli/users/registrations.js +2 -2
  6. data/app/assets/javascripts/lesli/users/sessions.js +2 -2
  7. data/app/assets/stylesheets/lesli/users/confirmations.scss +28 -6
  8. data/app/controllers/lesli/abouts_controller.rb +66 -0
  9. data/app/controllers/lesli/interfaces/application/authorization.rb +2 -2
  10. data/app/controllers/lesli/interfaces/application/logger.rb +14 -38
  11. data/app/controllers/lesli/roles_controller.rb +3 -1
  12. data/app/controllers/users/confirmations_controller.rb +63 -27
  13. data/app/controllers/users/passwords_controller.rb +70 -30
  14. data/app/controllers/users/sessions_controller.rb +2 -4
  15. data/app/lib/lesli/system.rb +13 -5
  16. data/app/mailers/lesli/application_lesli_mailer.rb +8 -19
  17. data/app/mailers/lesli/devise_mailer.rb +29 -3
  18. data/app/models/concerns/account_initializer.rb +91 -0
  19. data/app/models/concerns/{user_guard.rb → user_security.rb} +7 -8
  20. data/app/models/lesli/account.rb +8 -26
  21. data/app/models/lesli/application_lesli_record.rb +1 -0
  22. data/app/models/lesli/descriptor/privilege.rb +38 -0
  23. data/app/models/lesli/descriptor.rb +18 -1
  24. data/app/models/lesli/role/power.rb +70 -0
  25. data/app/models/lesli/role/privilege.rb +38 -0
  26. data/app/models/lesli/role.rb +20 -15
  27. data/app/models/lesli/user/{role.rb → power.rb} +1 -1
  28. data/app/{services/lesli/role_service.rb → models/lesli/user/setting.rb} +10 -9
  29. data/app/models/lesli/user.rb +11 -20
  30. data/app/operators/lesli/descriptor_privilege_operator.rb +75 -0
  31. data/app/operators/lesli/role_power_operator.rb +108 -0
  32. data/app/operators/lesli/user_registration_operator.rb +121 -0
  33. data/app/services/lesli/user_service.rb +2 -4
  34. data/app/services/lesli/{user/session_service.rb → user_session_service.rb} +11 -4
  35. data/app/views/devise/confirmations/new.html.erb +0 -14
  36. data/app/views/devise/confirmations/show.html.erb +63 -0
  37. data/app/views/devise/passwords/edit.html.erb +78 -24
  38. data/app/views/devise/passwords/new.html.erb +1 -2
  39. data/app/views/lesli/emails/devise_mailer/confirmation_instructions.html.erb +1 -1
  40. data/app/views/lesli/emails/devise_mailer/reset_password_instructions.html.erb +23 -0
  41. data/app/views/lesli/partials/_application-lesli-header.html.erb +3 -1
  42. data/config/initializers/devise.rb +2 -0
  43. data/config/routes.rb +2 -0
  44. data/db/migrate/v1.0/0010000110_create_lesli_accounts.rb +2 -0
  45. data/db/{tables/0010001010_create_account_settings.rb → migrate/v1.0/0010001010_create_lesli_account_settings.rb} +5 -5
  46. data/db/{tables/0010003110_create_user_settings.rb → migrate/v1.0/0010003110_create_lesli_user_settings.rb} +4 -4
  47. data/db/migrate/v1.0/0010003210_create_lesli_user_sessions.rb +6 -2
  48. data/db/migrate/v1.0/{0010003410_create_lesli_user_roles.rb → 0010003410_create_lesli_user_powers.rb} +4 -4
  49. data/db/migrate/v1.0/0010005010_create_lesli_descriptors.rb +1 -1
  50. data/db/migrate/v1.0/{0010003910_create_lesli_user_agents.rb → 0010005510_create_lesli_role_powers.rb} +7 -9
  51. data/db/{tables/0010005710_create_role_privileges.rb → migrate/v1.0/0010005710_create_lesli_role_privileges.rb} +6 -6
  52. data/db/seed/development/users.rb +4 -4
  53. data/db/seed/tools.rb +4 -4
  54. data/lib/lesli/engine.rb +33 -10
  55. data/lib/lesli/version.rb +1 -1
  56. data/lib/sass/lesli/bulma/loader.scss +3 -0
  57. data/lib/sass/lesli/pages/devise-simple.scss +2 -1
  58. data/lib/tasks/lesli/controllers.rake +3 -6
  59. data/lib/tasks/lesli/db.rake +11 -1
  60. data/lib/tasks/lesli/role.rake +54 -0
  61. data/lib/vue/application.js +9 -2
  62. data/lib/vue/devise/passwords.js +3 -3
  63. data/lib/vue/layouts/application-header.vue +10 -3
  64. data/lib/webpack/core.js +2 -1
  65. data/readme.md +23 -7
  66. data/vendor/bulma/LICENSE +21 -0
  67. data/vendor/bulma/bulma.sass +10 -0
  68. data/vendor/bulma/css/bulma-rtl.css +11851 -0
  69. data/vendor/bulma/css/bulma-rtl.min.css +1 -0
  70. data/vendor/bulma/css/bulma.css +11851 -0
  71. data/vendor/bulma/css/bulma.min.css +1 -0
  72. data/vendor/bulma/sass/base/_all.sass +6 -0
  73. data/vendor/bulma/sass/base/animations.sass +5 -0
  74. data/vendor/bulma/sass/base/generic.sass +145 -0
  75. data/vendor/bulma/sass/base/helpers.sass +1 -0
  76. data/vendor/bulma/sass/base/minireset.sass +79 -0
  77. data/vendor/bulma/sass/components/_all.sass +15 -0
  78. data/vendor/bulma/sass/components/breadcrumb.sass +77 -0
  79. data/vendor/bulma/sass/components/card.sass +103 -0
  80. data/vendor/bulma/sass/components/dropdown.sass +83 -0
  81. data/vendor/bulma/sass/components/level.sass +79 -0
  82. data/vendor/bulma/sass/components/media.sass +59 -0
  83. data/vendor/bulma/sass/components/menu.sass +59 -0
  84. data/vendor/bulma/sass/components/message.sass +101 -0
  85. data/vendor/bulma/sass/components/modal.sass +117 -0
  86. data/vendor/bulma/sass/components/navbar.sass +446 -0
  87. data/vendor/bulma/sass/components/pagination.sass +167 -0
  88. data/vendor/bulma/sass/components/panel.sass +121 -0
  89. data/vendor/bulma/sass/components/tabs.sass +176 -0
  90. data/vendor/bulma/sass/elements/_all.sass +16 -0
  91. data/vendor/bulma/sass/elements/box.sass +26 -0
  92. data/vendor/bulma/sass/elements/button.sass +357 -0
  93. data/vendor/bulma/sass/elements/container.sass +29 -0
  94. data/vendor/bulma/sass/elements/content.sass +162 -0
  95. data/vendor/bulma/sass/elements/form.sass +1 -0
  96. data/vendor/bulma/sass/elements/icon.sass +46 -0
  97. data/vendor/bulma/sass/elements/image.sass +73 -0
  98. data/vendor/bulma/sass/elements/notification.sass +52 -0
  99. data/vendor/bulma/sass/elements/other.sass +31 -0
  100. data/vendor/bulma/sass/elements/progress.sass +73 -0
  101. data/vendor/bulma/sass/elements/table.sass +134 -0
  102. data/vendor/bulma/sass/elements/tag.sass +140 -0
  103. data/vendor/bulma/sass/elements/title.sass +70 -0
  104. data/vendor/bulma/sass/form/_all.sass +9 -0
  105. data/vendor/bulma/sass/form/checkbox-radio.sass +22 -0
  106. data/vendor/bulma/sass/form/file.sass +184 -0
  107. data/vendor/bulma/sass/form/input-textarea.sass +66 -0
  108. data/vendor/bulma/sass/form/select.sass +88 -0
  109. data/vendor/bulma/sass/form/shared.sass +60 -0
  110. data/vendor/bulma/sass/form/tools.sass +215 -0
  111. data/vendor/bulma/sass/grid/_all.sass +5 -0
  112. data/vendor/bulma/sass/grid/columns.sass +513 -0
  113. data/vendor/bulma/sass/grid/tiles.sass +36 -0
  114. data/vendor/bulma/sass/helpers/_all.sass +12 -0
  115. data/vendor/bulma/sass/helpers/color.sass +39 -0
  116. data/vendor/bulma/sass/helpers/flexbox.sass +35 -0
  117. data/vendor/bulma/sass/helpers/float.sass +10 -0
  118. data/vendor/bulma/sass/helpers/other.sass +14 -0
  119. data/vendor/bulma/sass/helpers/overflow.sass +2 -0
  120. data/vendor/bulma/sass/helpers/position.sass +7 -0
  121. data/vendor/bulma/sass/helpers/spacing.sass +31 -0
  122. data/vendor/bulma/sass/helpers/typography.sass +103 -0
  123. data/vendor/bulma/sass/helpers/visibility.sass +122 -0
  124. data/vendor/bulma/sass/layout/_all.sass +6 -0
  125. data/vendor/bulma/sass/layout/footer.sass +11 -0
  126. data/vendor/bulma/sass/layout/hero.sass +153 -0
  127. data/vendor/bulma/sass/layout/section.sass +17 -0
  128. data/vendor/bulma/sass/utilities/_all.sass +9 -0
  129. data/vendor/bulma/sass/utilities/animations.sass +1 -0
  130. data/vendor/bulma/sass/utilities/controls.sass +49 -0
  131. data/vendor/bulma/sass/utilities/derived-variables.sass +114 -0
  132. data/vendor/bulma/sass/utilities/extends.sass +25 -0
  133. data/vendor/bulma/sass/utilities/functions.sass +135 -0
  134. data/vendor/bulma/sass/utilities/initial-variables.sass +79 -0
  135. data/vendor/bulma/sass/utilities/mixins.sass +303 -0
  136. data/vendor/lesli-css/_index.scss +34 -0
  137. data/vendor/lesli-css/lesli.scss +51 -0
  138. data/vendor/lesli-css/license +28 -0
  139. data/vendor/lesli-css/src/base/fonts.scss +50 -0
  140. data/vendor/lesli-css/src/base/normalize.scss +118 -0
  141. data/vendor/lesli-css/src/components/blockquote.scss +61 -0
  142. data/vendor/lesli-css/src/components/columns.scss +92 -0
  143. data/vendor/lesli-css/src/components/container.scss +47 -0
  144. data/vendor/lesli-css/src/components/grid.scss +0 -0
  145. data/vendor/lesli-css/src/components/navigation.scss +59 -0
  146. data/vendor/lesli-css/src/functions/colors.scss +184 -0
  147. data/vendor/lesli-css/src/helpers/units.scss +44 -0
  148. data/vendor/lesli-css/src/mixins/breakpoint.scss +184 -0
  149. data/vendor/lesli-css/src/mixins/flex.scss +80 -0
  150. data/vendor/lesli-css/src/mixins/scrollbar.scss +46 -0
  151. data/vendor/lesli-css/src/settings/variables.scss +26 -0
  152. data/vendor/lesli-css/tests/base/normalize.spec.scss +125 -0
  153. data/vendor/lesli-css/tests/functions/colors.spec.scss +117 -0
  154. data/vendor/lesli-css/tests/mixins/breakpoint.spec.scss +429 -0
  155. data/vendor/lesli-css/tests/mixins/scrollbar.spec.scss +82 -0
  156. data/vendor/lesli-css/vendor/normalize.scss +351 -0
  157. data/vendor/remixicon/License +201 -0
  158. data/vendor/remixicon/fonts/remixicon.css +2583 -0
  159. metadata +116 -18
  160. data/app/models/concerns/account_engines.rb +0 -249
  161. data/app/models/concerns/user_polyfill.rb +0 -134
  162. data/config/locales/translations.en.yml +0 -7
  163. data/config/locales/translations.es.yml +0 -7
  164. data/db/migrate/v1.0/0010001510_create_lesli_account_requests.rb +0 -45
  165. data/db/migrate/v1.0/0010003810_create_lesli_user_requests.rb +0 -44
  166. data/db/tables/0010005510_create_role_descriptors.rb +0 -44
@@ -0,0 +1,135 @@
1
+ @function mergeColorMaps($bulma-colors, $custom-colors)
2
+ // We return at least Bulma's hard-coded colors
3
+ $merged-colors: $bulma-colors
4
+
5
+ // We want a map as input
6
+ @if type-of($custom-colors) == 'map'
7
+ @each $name, $components in $custom-colors
8
+ // The color name should be a string
9
+ // and the components either a single color
10
+ // or a colors list with at least one element
11
+ @if type-of($name) == 'string' and (type-of($components) == 'list' or type-of($components) == 'color') and length($components) >= 1
12
+ $color-base: null
13
+ $color-invert: null
14
+ $color-light: null
15
+ $color-dark: null
16
+ $value: null
17
+
18
+ // The param can either be a single color
19
+ // or a list of 2 colors
20
+ @if type-of($components) == 'color'
21
+ $color-base: $components
22
+ $color-invert: findColorInvert($color-base)
23
+ $color-light: findLightColor($color-base)
24
+ $color-dark: findDarkColor($color-base)
25
+ @else if type-of($components) == 'list'
26
+ $color-base: nth($components, 1)
27
+ // If Invert, Light and Dark are provided
28
+ @if length($components) > 3
29
+ $color-invert: nth($components, 2)
30
+ $color-light: nth($components, 3)
31
+ $color-dark: nth($components, 4)
32
+ // If only Invert and Light are provided
33
+ @else if length($components) > 2
34
+ $color-invert: nth($components, 2)
35
+ $color-light: nth($components, 3)
36
+ $color-dark: findDarkColor($color-base)
37
+ // If only Invert is provided
38
+ @else
39
+ $color-invert: nth($components, 2)
40
+ $color-light: findLightColor($color-base)
41
+ $color-dark: findDarkColor($color-base)
42
+
43
+ $value: ($color-base, $color-invert, $color-light, $color-dark)
44
+
45
+ // We only want to merge the map if the color base is an actual color
46
+ @if type-of($color-base) == 'color'
47
+ // We merge this colors elements as map with Bulma's colors map
48
+ // (we can override them this way, no multiple definition for the same name)
49
+ // $merged-colors: map_merge($merged-colors, ($name: ($color-base, $color-invert, $color-light, $color-dark)))
50
+ $merged-colors: map_merge($merged-colors, ($name: $value))
51
+
52
+ @return $merged-colors
53
+
54
+ @function powerNumber($number, $exp)
55
+ $value: 1
56
+ @if $exp > 0
57
+ @for $i from 1 through $exp
58
+ $value: $value * $number
59
+ @else if $exp < 0
60
+ @for $i from 1 through -$exp
61
+ $value: divide($value, $number)
62
+ @return $value
63
+
64
+ @function colorLuminance($color)
65
+ @if type-of($color) != 'color'
66
+ @return 0.55
67
+ $color-rgb: ('red': red($color),'green': green($color),'blue': blue($color))
68
+ @each $name, $value in $color-rgb
69
+ $adjusted: 0
70
+ $value: divide($value, 255)
71
+ @if $value < 0.03928
72
+ $value: divide($value, 12.92)
73
+ @else
74
+ $value: divide(($value + .055), 1.055)
75
+ $value: powerNumber($value, 2)
76
+ $color-rgb: map-merge($color-rgb, ($name: $value))
77
+ @return (map-get($color-rgb, 'red') * .2126) + (map-get($color-rgb, 'green') * .7152) + (map-get($color-rgb, 'blue') * .0722)
78
+
79
+ @function findColorInvert($color)
80
+ @if (colorLuminance($color) > 0.55)
81
+ @return rgba(#000, 0.7)
82
+ @else
83
+ @return #fff
84
+
85
+ @function findLightColor($color, $l: 96%)
86
+ @if type-of($color) == 'color'
87
+ $l: 96%
88
+ @if lightness($color) > 96%
89
+ $l: lightness($color)
90
+ @return change-color($color, $lightness: $l)
91
+ @return $background
92
+
93
+ @function findDarkColor($color, $base-l: 29%)
94
+ @if type-of($color) == 'color'
95
+ $luminance: colorLuminance($color)
96
+ $luminance-delta: (0.53 - $luminance)
97
+ $target-l: round($base-l + ($luminance-delta * 53))
98
+ @return change-color($color, $lightness: max($base-l, $target-l))
99
+ @return $text-strong
100
+
101
+ @function bulmaRgba($color, $alpha)
102
+ @if type-of($color) != 'color'
103
+ @return $color
104
+ @return rgba($color, $alpha)
105
+
106
+ @function bulmaDarken($color, $amount)
107
+ @if type-of($color) != 'color'
108
+ @return $color
109
+ @return darken($color, $amount)
110
+
111
+ @function bulmaLighten($color, $amount)
112
+ @if type-of($color) != 'color'
113
+ @return $color
114
+ @return lighten($color, $amount)
115
+
116
+ // Custom divide function by @mdo from https://github.com/twbs/bootstrap/pull/34245
117
+ // Replaces old slash division deprecated in Dart Sass
118
+ @function divide($dividend, $divisor, $precision: 10)
119
+ $sign: if($dividend > 0 and $divisor > 0, 1, -1)
120
+ $dividend: abs($dividend)
121
+ $divisor: abs($divisor)
122
+ $quotient: 0
123
+ $remainder: $dividend
124
+ @if $dividend == 0
125
+ @return 0
126
+ @if $divisor == 0
127
+ @error "Cannot divide by 0"
128
+ @if $divisor == 1
129
+ @return $dividend
130
+ @while $remainder >= $divisor
131
+ $quotient: $quotient + 1
132
+ $remainder: $remainder - $divisor
133
+ @if $remainder > 0 and $precision > 0
134
+ $remainder: divide($remainder * 10, $divisor, $precision - 1) * .1
135
+ @return ($quotient + $remainder) * $sign
@@ -0,0 +1,79 @@
1
+ // Colors
2
+
3
+ $black: hsl(0, 0%, 4%) !default
4
+ $black-bis: hsl(0, 0%, 7%) !default
5
+ $black-ter: hsl(0, 0%, 14%) !default
6
+
7
+ $grey-darker: hsl(0, 0%, 21%) !default
8
+ $grey-dark: hsl(0, 0%, 29%) !default
9
+ $grey: hsl(0, 0%, 48%) !default
10
+ $grey-light: hsl(0, 0%, 71%) !default
11
+ $grey-lighter: hsl(0, 0%, 86%) !default
12
+ $grey-lightest: hsl(0, 0%, 93%) !default
13
+
14
+ $white-ter: hsl(0, 0%, 96%) !default
15
+ $white-bis: hsl(0, 0%, 98%) !default
16
+ $white: hsl(0, 0%, 100%) !default
17
+
18
+ $orange: hsl(14, 100%, 53%) !default
19
+ $yellow: hsl(44, 100%, 77%) !default
20
+ $green: hsl(153, 53%, 53%) !default
21
+ $turquoise: hsl(171, 100%, 41%) !default
22
+ $cyan: hsl(207, 61%, 53%) !default
23
+ $blue: hsl(229, 53%, 53%) !default
24
+ $purple: hsl(271, 100%, 71%) !default
25
+ $red: hsl(348, 86%, 61%) !default
26
+
27
+ // Typography
28
+
29
+ $family-sans-serif: BlinkMacSystemFont, -apple-system, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif !default
30
+ $family-monospace: monospace !default
31
+ $render-mode: optimizeLegibility !default
32
+
33
+ $size-1: 3rem !default
34
+ $size-2: 2.5rem !default
35
+ $size-3: 2rem !default
36
+ $size-4: 1.5rem !default
37
+ $size-5: 1.25rem !default
38
+ $size-6: 1rem !default
39
+ $size-7: 0.75rem !default
40
+
41
+ $weight-light: 300 !default
42
+ $weight-normal: 400 !default
43
+ $weight-medium: 500 !default
44
+ $weight-semibold: 600 !default
45
+ $weight-bold: 700 !default
46
+
47
+ // Spacing
48
+
49
+ $block-spacing: 1.5rem !default
50
+
51
+ // Responsiveness
52
+
53
+ // The container horizontal gap, which acts as the offset for breakpoints
54
+ $gap: 32px !default
55
+ // 960, 1152, and 1344 have been chosen because they are divisible by both 12 and 16
56
+ $tablet: 769px !default
57
+ // 960px container + 4rem
58
+ $desktop: 960px + (2 * $gap) !default
59
+ // 1152px container + 4rem
60
+ $widescreen: 1152px + (2 * $gap) !default
61
+ $widescreen-enabled: true !default
62
+ // 1344px container + 4rem
63
+ $fullhd: 1344px + (2 * $gap) !default
64
+ $fullhd-enabled: true !default
65
+ $breakpoints: ("mobile": ("until": $tablet), "tablet": ("from": $tablet), "tablet-only": ("from": $tablet, "until": $desktop), "touch": ("from": $desktop), "desktop": ("from": $desktop), "desktop-only": ("from": $desktop, "until": $widescreen), "until-widescreen": ("until": $widescreen), "widescreen": ("from": $widescreen), "widescreen-only": ("from": $widescreen, "until": $fullhd), "until-fullhd": ("until": $fullhd), "fullhd": ("from": $fullhd)) !default
66
+
67
+ // Miscellaneous
68
+
69
+ $easing: ease-out !default
70
+ $radius-small: 2px !default
71
+ $radius: 4px !default
72
+ $radius-large: 6px !default
73
+ $radius-rounded: 9999px !default
74
+ $speed: 86ms !default
75
+
76
+ // Flags
77
+
78
+ $variable-columns: true !default
79
+ $rtl: false !default
@@ -0,0 +1,303 @@
1
+ @import "derived-variables"
2
+
3
+ =clearfix
4
+ &::after
5
+ clear: both
6
+ content: " "
7
+ display: table
8
+
9
+ =center($width, $height: 0)
10
+ position: absolute
11
+ @if $height != 0
12
+ left: calc(50% - (#{$width} * 0.5))
13
+ top: calc(50% - (#{$height} * 0.5))
14
+ @else
15
+ left: calc(50% - (#{$width} * 0.5))
16
+ top: calc(50% - (#{$width} * 0.5))
17
+
18
+ =fa($size, $dimensions)
19
+ display: inline-block
20
+ font-size: $size
21
+ height: $dimensions
22
+ line-height: $dimensions
23
+ text-align: center
24
+ vertical-align: top
25
+ width: $dimensions
26
+
27
+ =hamburger($dimensions)
28
+ -moz-appearance: none
29
+ -webkit-appearance: none
30
+ appearance: none
31
+ background: none
32
+ border: none
33
+ cursor: pointer
34
+ display: block
35
+ height: $dimensions
36
+ position: relative
37
+ width: $dimensions
38
+ span
39
+ background-color: currentColor
40
+ display: block
41
+ height: 1px
42
+ left: calc(50% - 8px)
43
+ position: absolute
44
+ transform-origin: center
45
+ transition-duration: $speed
46
+ transition-property: background-color, opacity, transform
47
+ transition-timing-function: $easing
48
+ width: 16px
49
+ &:nth-child(1)
50
+ top: calc(50% - 6px)
51
+ &:nth-child(2)
52
+ top: calc(50% - 1px)
53
+ &:nth-child(3)
54
+ top: calc(50% + 4px)
55
+ &:hover
56
+ background-color: bulmaRgba(black, 0.05)
57
+ // Modifers
58
+ &.is-active
59
+ span
60
+ &:nth-child(1)
61
+ transform: translateY(5px) rotate(45deg)
62
+ &:nth-child(2)
63
+ opacity: 0
64
+ &:nth-child(3)
65
+ transform: translateY(-5px) rotate(-45deg)
66
+
67
+ =overflow-touch
68
+ -webkit-overflow-scrolling: touch
69
+
70
+ =placeholder
71
+ $placeholders: ':-moz' ':-webkit-input' '-moz' '-ms-input'
72
+ @each $placeholder in $placeholders
73
+ &:#{$placeholder}-placeholder
74
+ @content
75
+
76
+ =reset
77
+ -moz-appearance: none
78
+ -webkit-appearance: none
79
+ appearance: none
80
+ background: none
81
+ border: none
82
+ color: currentColor
83
+ font-family: inherit
84
+ font-size: 1em
85
+ margin: 0
86
+ padding: 0
87
+
88
+ // Responsiveness
89
+
90
+ =from($device)
91
+ @media screen and (min-width: $device)
92
+ @content
93
+
94
+ =until($device)
95
+ @media screen and (max-width: $device - 1px)
96
+ @content
97
+
98
+ =between($from, $until)
99
+ @media screen and (min-width: $from) and (max-width: $until - 1px)
100
+ @content
101
+
102
+ =mobile
103
+ @media screen and (max-width: $tablet - 1px)
104
+ @content
105
+
106
+ =tablet
107
+ @media screen and (min-width: $tablet), print
108
+ @content
109
+
110
+ =tablet-only
111
+ @media screen and (min-width: $tablet) and (max-width: $desktop - 1px)
112
+ @content
113
+
114
+ =touch
115
+ @media screen and (max-width: $desktop - 1px)
116
+ @content
117
+
118
+ =desktop
119
+ @media screen and (min-width: $desktop)
120
+ @content
121
+
122
+ =desktop-only
123
+ @if $widescreen-enabled
124
+ @media screen and (min-width: $desktop) and (max-width: $widescreen - 1px)
125
+ @content
126
+
127
+ =until-widescreen
128
+ @if $widescreen-enabled
129
+ @media screen and (max-width: $widescreen - 1px)
130
+ @content
131
+
132
+ =widescreen
133
+ @if $widescreen-enabled
134
+ @media screen and (min-width: $widescreen)
135
+ @content
136
+
137
+ =widescreen-only
138
+ @if $widescreen-enabled and $fullhd-enabled
139
+ @media screen and (min-width: $widescreen) and (max-width: $fullhd - 1px)
140
+ @content
141
+
142
+ =until-fullhd
143
+ @if $fullhd-enabled
144
+ @media screen and (max-width: $fullhd - 1px)
145
+ @content
146
+
147
+ =fullhd
148
+ @if $fullhd-enabled
149
+ @media screen and (min-width: $fullhd)
150
+ @content
151
+
152
+ =breakpoint($name)
153
+ $breakpoint: map-get($breakpoints, $name)
154
+ @if $breakpoint
155
+ $from: map-get($breakpoint, "from")
156
+ $until: map-get($breakpoint, "until")
157
+ @if $from and $until
158
+ +between($from, $until)
159
+ @content
160
+ @else if $from
161
+ +from($from)
162
+ @content
163
+ @else if $until
164
+ +until($until)
165
+ @content
166
+
167
+ =ltr
168
+ @if not $rtl
169
+ @content
170
+
171
+ =rtl
172
+ @if $rtl
173
+ @content
174
+
175
+ =ltr-property($property, $spacing, $right: true)
176
+ $normal: if($right, "right", "left")
177
+ $opposite: if($right, "left", "right")
178
+ @if $rtl
179
+ #{$property}-#{$opposite}: $spacing
180
+ @else
181
+ #{$property}-#{$normal}: $spacing
182
+
183
+ =ltr-position($spacing, $right: true)
184
+ $normal: if($right, "right", "left")
185
+ $opposite: if($right, "left", "right")
186
+ @if $rtl
187
+ #{$opposite}: $spacing
188
+ @else
189
+ #{$normal}: $spacing
190
+
191
+ // Placeholders
192
+
193
+ =unselectable
194
+ -webkit-touch-callout: none
195
+ -webkit-user-select: none
196
+ -moz-user-select: none
197
+ -ms-user-select: none
198
+ user-select: none
199
+
200
+ =arrow($color: transparent)
201
+ border: 3px solid $color
202
+ border-radius: 2px
203
+ border-right: 0
204
+ border-top: 0
205
+ content: " "
206
+ display: block
207
+ height: 0.625em
208
+ margin-top: -0.4375em
209
+ pointer-events: none
210
+ position: absolute
211
+ top: 50%
212
+ transform: rotate(-45deg)
213
+ transform-origin: center
214
+ width: 0.625em
215
+
216
+ =block($spacing: $block-spacing)
217
+ &:not(:last-child)
218
+ margin-bottom: $spacing
219
+
220
+ =delete
221
+ +unselectable
222
+ -moz-appearance: none
223
+ -webkit-appearance: none
224
+ background-color: bulmaRgba($scheme-invert, 0.2)
225
+ border: none
226
+ border-radius: $radius-rounded
227
+ cursor: pointer
228
+ pointer-events: auto
229
+ display: inline-block
230
+ flex-grow: 0
231
+ flex-shrink: 0
232
+ font-size: 0
233
+ height: 20px
234
+ max-height: 20px
235
+ max-width: 20px
236
+ min-height: 20px
237
+ min-width: 20px
238
+ outline: none
239
+ position: relative
240
+ vertical-align: top
241
+ width: 20px
242
+ &::before,
243
+ &::after
244
+ background-color: $scheme-main
245
+ content: ""
246
+ display: block
247
+ left: 50%
248
+ position: absolute
249
+ top: 50%
250
+ transform: translateX(-50%) translateY(-50%) rotate(45deg)
251
+ transform-origin: center center
252
+ &::before
253
+ height: 2px
254
+ width: 50%
255
+ &::after
256
+ height: 50%
257
+ width: 2px
258
+ &:hover,
259
+ &:focus
260
+ background-color: bulmaRgba($scheme-invert, 0.3)
261
+ &:active
262
+ background-color: bulmaRgba($scheme-invert, 0.4)
263
+ // Sizes
264
+ &.is-small
265
+ height: 16px
266
+ max-height: 16px
267
+ max-width: 16px
268
+ min-height: 16px
269
+ min-width: 16px
270
+ width: 16px
271
+ &.is-medium
272
+ height: 24px
273
+ max-height: 24px
274
+ max-width: 24px
275
+ min-height: 24px
276
+ min-width: 24px
277
+ width: 24px
278
+ &.is-large
279
+ height: 32px
280
+ max-height: 32px
281
+ max-width: 32px
282
+ min-height: 32px
283
+ min-width: 32px
284
+ width: 32px
285
+
286
+ =loader
287
+ animation: spinAround 500ms infinite linear
288
+ border: 2px solid $grey-lighter
289
+ border-radius: $radius-rounded
290
+ border-right-color: transparent
291
+ border-top-color: transparent
292
+ content: ""
293
+ display: block
294
+ height: 1em
295
+ position: relative
296
+ width: 1em
297
+
298
+ =overlay($offset: 0)
299
+ bottom: $offset
300
+ left: $offset
301
+ position: absolute
302
+ right: $offset
303
+ top: $offset
@@ -0,0 +1,34 @@
1
+ /*
2
+ Lesli
3
+
4
+ Copyright (c) 2022, Lesli Technologies, S. A.
5
+
6
+ This program is free software: you can redistribute it and/or modify
7
+ it under the terms of the GNU General Public License as published by
8
+ the Free Software Foundation, either version 3 of the License, or
9
+ (at your option) any later version.
10
+
11
+ This program is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU General Public License for more details.
15
+
16
+ You should have received a copy of the GNU General Public License
17
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
18
+
19
+ LesliCSS - SCSS Utilities for websites, apps and web applications
20
+
21
+ Powered by https://www.lesli.tech
22
+ Building a better future, one line of code at a time.
23
+
24
+ @contact <hello@lesli.tech>
25
+ @website <https://lesli.tech>
26
+ @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
27
+
28
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
29
+ // ·
30
+ */
31
+
32
+
33
+ // ·
34
+ @import "lesli";
@@ -0,0 +1,51 @@
1
+ /*
2
+ Lesli
3
+
4
+ Copyright (c) 2022, Lesli Technologies, S. A.
5
+
6
+ This program is free software: you can redistribute it and/or modify
7
+ it under the terms of the GNU General Public License as published by
8
+ the Free Software Foundation, either version 3 of the License, or
9
+ (at your option) any later version.
10
+
11
+ This program is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU General Public License for more details.
15
+
16
+ You should have received a copy of the GNU General Public License
17
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
18
+
19
+ LesliCSS - SCSS Utilities for websites, apps and web applications
20
+
21
+ Powered by https://www.lesli.tech
22
+ Building a better future, one line of code at a time.
23
+
24
+ @contact <hello@lesli.tech>
25
+ @website <https://lesli.tech>
26
+ @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
27
+
28
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
29
+ // ·
30
+ */
31
+
32
+
33
+ // ·
34
+ @import "./src/base/fonts";
35
+ @import "./src/base/normalize";
36
+
37
+
38
+ // · include components
39
+ @import "./src/components/columns.scss";
40
+ @import "./src/components/container.scss";
41
+ @import "./src/components/navigation.scss";
42
+
43
+
44
+ // · include functions
45
+ @import "./src/functions/colors";
46
+
47
+
48
+ // · include mixins
49
+ @import "./src/mixins/breakpoint";
50
+ @import "./src/mixins/scrollbar";
51
+ @import "./src/mixins/flex";
@@ -0,0 +1,28 @@
1
+ Lesli
2
+
3
+ Copyright (c) 2022, Lesli Technologies, S. A.
4
+
5
+ This program is free software: you can redistribute it and/or modify
6
+ it under the terms of the GNU General Public License as published by
7
+ the Free Software Foundation, either version 3 of the License, or
8
+ (at your option) any later version.
9
+
10
+ This program is distributed in the hope that it will be useful,
11
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ GNU General Public License for more details.
14
+
15
+ You should have received a copy of the GNU General Public License
16
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+
18
+ LesliCSS - SCSS Utilities for websites, apps and web applications
19
+
20
+ Powered by https://www.lesli.tech
21
+ Building a better future, one line of code at a time.
22
+
23
+ @contact <hello@lesli.tech>
24
+ @website <https://lesli.tech>
25
+ @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
26
+
27
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
28
+ // ·
@@ -0,0 +1,50 @@
1
+ /*
2
+ Lesli
3
+
4
+ Copyright (c) 2020, Lesli Technologies, S. A.
5
+
6
+ This program is free software: you can redistribute it and/or modify
7
+ it under the terms of the GNU General Public License as published by
8
+ the Free Software Foundation, either version 3 of the License, or
9
+ (at your option) any later version.
10
+
11
+ This program is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU General Public License for more details.
15
+
16
+ You should have received a copy of the GNU General Public License
17
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
18
+
19
+ LesliCSS - SCSS Utilities for websites, apps and web applications
20
+
21
+ Powered by https://www.lesli.tech
22
+ Building a better future, one line of code at a time.
23
+
24
+ @contact <hello@lesli.tech>
25
+ @website <https://lesli.tech>
26
+ @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
27
+
28
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
29
+ // ·
30
+ */
31
+
32
+
33
+
34
+ // ·
35
+ @mixin lesli-css-fonts-standard() {
36
+
37
+
38
+ // · title font
39
+ h1, h2, h3, h4, h5, h6 {
40
+ font-family: "Montserrat", "Helvetica Neue", "Helvetica", "Arial", "sans-serif", sans-serif;
41
+ }
42
+
43
+
44
+ // · body font
45
+ body,
46
+ html {
47
+ font-family: "Open Sans", "Helvetica Neue", "Helvetica", "Arial", "sans-serif", sans-serif;
48
+ }
49
+
50
+ }