glib-web 0.5.77 → 0.5.78

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/README.md +0 -0
  2. package/action.js +167 -167
  3. package/actions/analytics/logEvent.js +0 -0
  4. package/actions/cables/push.js +0 -0
  5. package/actions/dialogs/notification.js +0 -0
  6. package/actions/http/patch.js +0 -0
  7. package/actions/panels/scrollTo.js +18 -18
  8. package/actions/panels/scrollToBottom.js +0 -0
  9. package/actions/timeouts/set.js +20 -20
  10. package/actions/windows/close.js +0 -0
  11. package/actions/windows/closeAll.js +0 -0
  12. package/actions/windows/closeWithReload.js +0 -0
  13. package/actions/windows/refreshState.js +5 -5
  14. package/actions/windows/reload.js +0 -0
  15. package/actions/ws/push.js +0 -0
  16. package/app.vue +180 -180
  17. package/components/_button.vue +101 -101
  18. package/components/_dropdownMenu.vue +76 -76
  19. package/components/_icon.vue +50 -50
  20. package/components/avatar.vue +16 -16
  21. package/components/banners/alert.vue +0 -0
  22. package/components/banners/select.vue +82 -82
  23. package/components/component.vue +222 -222
  24. package/components/fields/_patternText.vue +61 -61
  25. package/components/fields/_select.vue +86 -86
  26. package/components/fields/autocomplete.vue +73 -73
  27. package/components/fields/check.vue +104 -104
  28. package/components/fields/creditCard.vue +0 -0
  29. package/components/fields/dynamicGroup.vue +0 -0
  30. package/components/fields/hidden.vue +0 -0
  31. package/components/fields/location.vue +0 -0
  32. package/components/fields/newRichText.vue +0 -0
  33. package/components/fields/phone/countries.js +315 -315
  34. package/components/fields/phone/field.vue +348 -348
  35. package/components/fields/phone/sprite.css +1071 -1071
  36. package/components/fields/radio.vue +64 -64
  37. package/components/fields/radioGroup.vue +0 -0
  38. package/components/fields/rating.vue +0 -0
  39. package/components/fields/richText.vue +0 -0
  40. package/components/fields/select.vue +17 -17
  41. package/components/fields/stripe/stripeFields.vue +93 -93
  42. package/components/fields/stripe/stripeIndividualFields.vue +207 -207
  43. package/components/fields/stripeExternalAccount.vue +135 -135
  44. package/components/fields/text.vue +0 -0
  45. package/components/fields/textarea.vue +0 -0
  46. package/components/fields/timeZone.vue +22 -22
  47. package/components/fields/timer.vue +83 -83
  48. package/components/h1.vue +28 -28
  49. package/components/h2.vue +20 -20
  50. package/components/h3.vue +22 -22
  51. package/components/h4.vue +20 -20
  52. package/components/h5.vue +20 -20
  53. package/components/h6.vue +20 -20
  54. package/components/icon.vue +25 -25
  55. package/components/label.vue +62 -62
  56. package/components/map.vue +0 -0
  57. package/components/mixins/events.js +178 -178
  58. package/components/mixins/generic.js +0 -0
  59. package/components/mixins/list/autoload.js +0 -0
  60. package/components/mixins/styles.js +221 -221
  61. package/components/mixins/table/autoload.js +0 -0
  62. package/components/mixins/text.js +20 -20
  63. package/components/mixins/ws/actionCable.js +48 -48
  64. package/components/mixins/ws/phoenixSocket.js +0 -0
  65. package/components/panels/carousel.vue +55 -55
  66. package/components/panels/flow.vue +81 -81
  67. package/components/panels/form.vue +126 -126
  68. package/components/panels/list.vue +0 -0
  69. package/components/panels/scroll.vue +0 -0
  70. package/components/panels/table.vue +0 -0
  71. package/components/panels/ul.vue +34 -34
  72. package/components/panels/vertical.vue +0 -0
  73. package/components/panels/web.vue +11 -11
  74. package/components/spacer.vue +0 -0
  75. package/components/switch.vue +42 -42
  76. package/extensions/string.js +21 -21
  77. package/index.js +195 -195
  78. package/nav/content.vue +0 -0
  79. package/nav/dialog.vue +127 -127
  80. package/nav/snackbar.vue +0 -0
  81. package/package.json +42 -42
  82. package/static/plugins/alignment/alignment.js +0 -0
  83. package/static/plugins/alignment/alignment.min.js +0 -0
  84. package/static/plugins/beyondgrammar/beyondgrammar.js +0 -0
  85. package/static/plugins/beyondgrammar/beyondgrammar.min.js +0 -0
  86. package/static/plugins/blockcode/blockcode.js +0 -0
  87. package/static/plugins/blockcode/blockcode.min.js +0 -0
  88. package/static/plugins/clips/clips.js +0 -0
  89. package/static/plugins/clips/clips.min.js +0 -0
  90. package/static/plugins/counter/counter.js +0 -0
  91. package/static/plugins/counter/counter.min.js +0 -0
  92. package/static/plugins/definedlinks/definedlinks.js +0 -0
  93. package/static/plugins/definedlinks/definedlinks.min.js +0 -0
  94. package/static/plugins/handle/handle.js +0 -0
  95. package/static/plugins/handle/handle.min.js +0 -0
  96. package/static/plugins/icons/icons.js +0 -0
  97. package/static/plugins/icons/icons.min.js +0 -0
  98. package/static/plugins/imageposition/imageposition.js +0 -0
  99. package/static/plugins/imageposition/imageposition.min.js +0 -0
  100. package/static/plugins/inlineformat/inlineformat.js +0 -0
  101. package/static/plugins/inlineformat/inlineformat.min.js +0 -0
  102. package/static/plugins/removeformat/removeformat.js +0 -0
  103. package/static/plugins/removeformat/removeformat.min.js +0 -0
  104. package/static/plugins/selector/selector.js +0 -0
  105. package/static/plugins/selector/selector.min.js +0 -0
  106. package/static/plugins/specialchars/specialchars.js +0 -0
  107. package/static/plugins/specialchars/specialchars.min.js +0 -0
  108. package/static/plugins/textdirection/textdirection.js +0 -0
  109. package/static/plugins/textdirection/textdirection.min.js +0 -0
  110. package/static/plugins/textexpander/textexpander.js +0 -0
  111. package/static/plugins/textexpander/textexpander.min.js +0 -0
  112. package/static/plugins/underline/underline.js +0 -0
  113. package/static/plugins/underline/underline.min.js +0 -0
  114. package/static/redactorx.css +0 -0
  115. package/static/redactorx.js +0 -0
  116. package/static/redactorx.min.css +0 -0
  117. package/static/redactorx.min.js +0 -0
  118. package/static/redactorx.usm.min.js +0 -0
  119. package/templates/_menu.vue +38 -38
  120. package/templates/comment.vue +202 -202
  121. package/templates/featured.vue +32 -32
  122. package/templates/thumbnail.vue +138 -138
  123. package/templates/unsupported.vue +12 -12
  124. package/utils/app.js +0 -0
  125. package/utils/hash.js +0 -0
  126. package/utils/helper.js +0 -0
  127. package/utils/history.js +70 -70
  128. package/utils/http.js +209 -209
  129. package/utils/launch.js +135 -135
  130. package/utils/private/ws.js +0 -0
File without changes
@@ -1,22 +1,22 @@
1
- <template>
2
- <fields-genericSelect :spec="spec" :default-value="defaultValue" />
3
- </template>
4
-
5
- <script>
6
- import SelectField from "./_select";
7
-
8
- export default {
9
- components: {
10
- // Need to start with `fields-` to enable jsonlogic in `styles.js#_linkFieldModels`
11
- "fields-genericSelect": SelectField
12
- },
13
- props: {
14
- spec: { type: Object, required: true }
15
- },
16
- computed: {
17
- defaultValue() {
18
- return Intl.DateTimeFormat().resolvedOptions().timeZone;
19
- }
20
- }
21
- };
22
- </script>
1
+ <template>
2
+ <fields-genericSelect :spec="spec" :default-value="defaultValue" />
3
+ </template>
4
+
5
+ <script>
6
+ import SelectField from "./_select";
7
+
8
+ export default {
9
+ components: {
10
+ // Need to start with `fields-` to enable jsonlogic in `styles.js#_linkFieldModels`
11
+ "fields-genericSelect": SelectField
12
+ },
13
+ props: {
14
+ spec: { type: Object, required: true }
15
+ },
16
+ computed: {
17
+ defaultValue() {
18
+ return Intl.DateTimeFormat().resolvedOptions().timeZone;
19
+ }
20
+ }
21
+ };
22
+ </script>
@@ -1,83 +1,83 @@
1
- <template>
2
- <div :style="$styles()" :class="classes()">
3
- <v-text-field
4
- v-model="fieldModel"
5
- :label="spec.label"
6
- :name="fieldName"
7
- :disabled="true"
8
- :outlined="$classes().includes('outlined')"
9
- :rounded="$classes().includes('rounded')"
10
- :dense="$classes().includes('dense')"
11
- />
12
- <input type="hidden" :name="fieldName" :value="fieldModel" />
13
- </div>
14
- </template>
15
-
16
- <script>
17
- import actionCableMixin from "../mixins/ws/actionCable";
18
-
19
- export default {
20
- mixins: [actionCableMixin],
21
- props: {
22
- spec: { type: Object, required: true }
23
- },
24
- data() {
25
- return {
26
- timer: null,
27
- minValue: -1000000,
28
- maxValue: 1000000
29
- };
30
- },
31
- methods: {
32
- $ready() {
33
- this.$wsInitActionCable(this.spec.actionCable);
34
-
35
- Utils.type.ifNumber(this.spec.min, value => {
36
- this.minValue = value;
37
- });
38
- Utils.type.ifNumber(this.spec.max, value => {
39
- this.maxValue = value;
40
- });
41
-
42
- Utils.type.ifNumber(this.spec.value, value => {
43
- if (value !== null) {
44
- this.fieldModel = value;
45
- }
46
-
47
- this.timer = setInterval(() => {
48
- this.adjustValue();
49
- }, 1000);
50
- });
51
- },
52
- adjustValue() {
53
- if (this.spec.forward) {
54
- if (this.fieldModel < this.maxValue) {
55
- this.fieldModel += 1;
56
- }
57
- } else {
58
- if (this.fieldModel > this.minValue) {
59
- this.fieldModel -= 1;
60
- }
61
- }
62
- },
63
- $tearDown() {
64
- console.log("Cleaning up timer...");
65
- if (this.timer != null) {
66
- clearInterval(this.timer);
67
- console.log(`Timer stopped: ${this.timer}`);
68
- this.timer == null;
69
- }
70
- },
71
- action_set(spec) {
72
- Utils.type.ifNumber(spec.value, value => {
73
- this.fieldModel = value;
74
- });
75
- },
76
- classes() {
77
- return this.$classes().concat("g-text-field--hintless");
78
- }
79
- }
80
- };
81
- </script>
82
-
83
- <style scoped></style>
1
+ <template>
2
+ <div :style="$styles()" :class="classes()">
3
+ <v-text-field
4
+ v-model="fieldModel"
5
+ :label="spec.label"
6
+ :name="fieldName"
7
+ :disabled="true"
8
+ :outlined="$classes().includes('outlined')"
9
+ :rounded="$classes().includes('rounded')"
10
+ :dense="$classes().includes('dense')"
11
+ />
12
+ <input type="hidden" :name="fieldName" :value="fieldModel" />
13
+ </div>
14
+ </template>
15
+
16
+ <script>
17
+ import actionCableMixin from "../mixins/ws/actionCable";
18
+
19
+ export default {
20
+ mixins: [actionCableMixin],
21
+ props: {
22
+ spec: { type: Object, required: true }
23
+ },
24
+ data() {
25
+ return {
26
+ timer: null,
27
+ minValue: -1000000,
28
+ maxValue: 1000000
29
+ };
30
+ },
31
+ methods: {
32
+ $ready() {
33
+ this.$wsInitActionCable(this.spec.actionCable);
34
+
35
+ Utils.type.ifNumber(this.spec.min, value => {
36
+ this.minValue = value;
37
+ });
38
+ Utils.type.ifNumber(this.spec.max, value => {
39
+ this.maxValue = value;
40
+ });
41
+
42
+ Utils.type.ifNumber(this.spec.value, value => {
43
+ if (value !== null) {
44
+ this.fieldModel = value;
45
+ }
46
+
47
+ this.timer = setInterval(() => {
48
+ this.adjustValue();
49
+ }, 1000);
50
+ });
51
+ },
52
+ adjustValue() {
53
+ if (this.spec.forward) {
54
+ if (this.fieldModel < this.maxValue) {
55
+ this.fieldModel += 1;
56
+ }
57
+ } else {
58
+ if (this.fieldModel > this.minValue) {
59
+ this.fieldModel -= 1;
60
+ }
61
+ }
62
+ },
63
+ $tearDown() {
64
+ console.log("Cleaning up timer...");
65
+ if (this.timer != null) {
66
+ clearInterval(this.timer);
67
+ console.log(`Timer stopped: ${this.timer}`);
68
+ this.timer == null;
69
+ }
70
+ },
71
+ action_set(spec) {
72
+ Utils.type.ifNumber(spec.value, value => {
73
+ this.fieldModel = value;
74
+ });
75
+ },
76
+ classes() {
77
+ return this.$classes().concat("g-text-field--hintless");
78
+ }
79
+ }
80
+ };
81
+ </script>
82
+
83
+ <style scoped></style>
package/components/h1.vue CHANGED
@@ -1,28 +1,28 @@
1
- <template>
2
- <h1
3
- :style="textStyles()"
4
- :class="$classes()"
5
- :href="$href()"
6
- :rel="$rel()"
7
- @click="$onClick()"
8
- >
9
- {{ spec.text }}
10
- </h1>
11
- </template>
12
-
13
- <script>
14
- import textMixin from "./mixins/text.js";
15
-
16
- export default {
17
- mixins: [textMixin],
18
- props: {
19
- spec: { type: Object, required: true }
20
- }
21
- };
22
- </script>
23
-
24
- <style scoped>
25
- /* h1 {
26
- line-height: 1.5;
27
- } */
28
- </style>
1
+ <template>
2
+ <h1
3
+ :style="textStyles()"
4
+ :class="$classes()"
5
+ :href="$href()"
6
+ :rel="$rel()"
7
+ @click="$onClick()"
8
+ >
9
+ {{ spec.text }}
10
+ </h1>
11
+ </template>
12
+
13
+ <script>
14
+ import textMixin from "./mixins/text.js";
15
+
16
+ export default {
17
+ mixins: [textMixin],
18
+ props: {
19
+ spec: { type: Object, required: true }
20
+ }
21
+ };
22
+ </script>
23
+
24
+ <style scoped>
25
+ /* h1 {
26
+ line-height: 1.5;
27
+ } */
28
+ </style>
package/components/h2.vue CHANGED
@@ -1,20 +1,20 @@
1
- <template>
2
- <h2 :style="textStyles()" :class="$classes()">{{ spec.text }}</h2>
3
- </template>
4
-
5
- <script>
6
- import textMixin from "./mixins/text.js";
7
-
8
- export default {
9
- mixins: [textMixin],
10
- props: {
11
- spec: { type: Object, required: true }
12
- }
13
- };
14
- </script>
15
-
16
- <style scoped>
17
- /* h2 {
18
- line-height: 1.5;
19
- } */
20
- </style>
1
+ <template>
2
+ <h2 :style="textStyles()" :class="$classes()">{{ spec.text }}</h2>
3
+ </template>
4
+
5
+ <script>
6
+ import textMixin from "./mixins/text.js";
7
+
8
+ export default {
9
+ mixins: [textMixin],
10
+ props: {
11
+ spec: { type: Object, required: true }
12
+ }
13
+ };
14
+ </script>
15
+
16
+ <style scoped>
17
+ /* h2 {
18
+ line-height: 1.5;
19
+ } */
20
+ </style>
package/components/h3.vue CHANGED
@@ -1,22 +1,22 @@
1
- <template>
2
- <h3 :id="spec.id" :style="textStyles()" :class="$classes()">
3
- {{ spec.text }}
4
- </h3>
5
- </template>
6
-
7
- <script>
8
- import textMixin from "./mixins/text.js";
9
-
10
- export default {
11
- mixins: [textMixin],
12
- props: {
13
- spec: { type: Object, required: true }
14
- }
15
- };
16
- </script>
17
-
18
- <style scoped>
19
- /* h3 {
20
- line-height: 1.5;
21
- } */
22
- </style>
1
+ <template>
2
+ <h3 :id="spec.id" :style="textStyles()" :class="$classes()">
3
+ {{ spec.text }}
4
+ </h3>
5
+ </template>
6
+
7
+ <script>
8
+ import textMixin from "./mixins/text.js";
9
+
10
+ export default {
11
+ mixins: [textMixin],
12
+ props: {
13
+ spec: { type: Object, required: true }
14
+ }
15
+ };
16
+ </script>
17
+
18
+ <style scoped>
19
+ /* h3 {
20
+ line-height: 1.5;
21
+ } */
22
+ </style>
package/components/h4.vue CHANGED
@@ -1,20 +1,20 @@
1
- <template>
2
- <h4 :style="textStyles()" :class="$classes()">{{ spec.text }}</h4>
3
- </template>
4
-
5
- <script>
6
- import textMixin from "./mixins/text.js";
7
-
8
- export default {
9
- mixins: [textMixin],
10
- props: {
11
- spec: { type: Object, required: true }
12
- }
13
- };
14
- </script>
15
-
16
- <style scoped>
17
- /* h4 {
18
- line-height: 1.5;
19
- } */
20
- </style>
1
+ <template>
2
+ <h4 :style="textStyles()" :class="$classes()">{{ spec.text }}</h4>
3
+ </template>
4
+
5
+ <script>
6
+ import textMixin from "./mixins/text.js";
7
+
8
+ export default {
9
+ mixins: [textMixin],
10
+ props: {
11
+ spec: { type: Object, required: true }
12
+ }
13
+ };
14
+ </script>
15
+
16
+ <style scoped>
17
+ /* h4 {
18
+ line-height: 1.5;
19
+ } */
20
+ </style>
package/components/h5.vue CHANGED
@@ -1,20 +1,20 @@
1
- <template>
2
- <h5 :style="textStyles()" :class="$classes()">{{ spec.text }}</h5>
3
- </template>
4
-
5
- <script>
6
- import textMixin from "./mixins/text.js";
7
-
8
- export default {
9
- mixins: [textMixin],
10
- props: {
11
- spec: { type: Object, required: true }
12
- }
13
- };
14
- </script>
15
-
16
- <style scoped>
17
- /* h4 {
18
- line-height: 1.5;
19
- } */
20
- </style>
1
+ <template>
2
+ <h5 :style="textStyles()" :class="$classes()">{{ spec.text }}</h5>
3
+ </template>
4
+
5
+ <script>
6
+ import textMixin from "./mixins/text.js";
7
+
8
+ export default {
9
+ mixins: [textMixin],
10
+ props: {
11
+ spec: { type: Object, required: true }
12
+ }
13
+ };
14
+ </script>
15
+
16
+ <style scoped>
17
+ /* h4 {
18
+ line-height: 1.5;
19
+ } */
20
+ </style>
package/components/h6.vue CHANGED
@@ -1,20 +1,20 @@
1
- <template>
2
- <h4 :style="textStyles()" :class="$classes()">{{ spec.text }}</h4>
3
- </template>
4
-
5
- <script>
6
- import textMixin from "./mixins/text.js";
7
-
8
- export default {
9
- mixins: [textMixin],
10
- props: {
11
- spec: { type: Object, required: true }
12
- }
13
- };
14
- </script>
15
-
16
- <style scoped>
17
- /* h4 {
18
- line-height: 1.5;
19
- } */
20
- </style>
1
+ <template>
2
+ <h4 :style="textStyles()" :class="$classes()">{{ spec.text }}</h4>
3
+ </template>
4
+
5
+ <script>
6
+ import textMixin from "./mixins/text.js";
7
+
8
+ export default {
9
+ mixins: [textMixin],
10
+ props: {
11
+ spec: { type: Object, required: true }
12
+ }
13
+ };
14
+ </script>
15
+
16
+ <style scoped>
17
+ /* h4 {
18
+ line-height: 1.5;
19
+ } */
20
+ </style>
@@ -1,25 +1,25 @@
1
- <template>
2
- <a v-if="$href()" :href="$href()" :rel="$rel()" @click="$onClick()">
3
- <common-icon :spec="iconSpec" />
4
- </a>
5
- <common-icon v-else :spec="iconSpec" />
6
- </template>
7
-
8
- <script>
9
- export default {
10
- props: {
11
- spec: { type: Object, required: true },
12
- isBusy: { type: Boolean }
13
- },
14
- computed: {
15
- iconSpec() {
16
- if (this.spec.spec) {
17
- return this.spec.spec;
18
- }
19
- return this.spec;
20
- }
21
- }
22
- };
23
- </script>
24
-
25
- <style scoped></style>
1
+ <template>
2
+ <a v-if="$href()" :href="$href()" :rel="$rel()" @click="$onClick()">
3
+ <common-icon :spec="iconSpec" />
4
+ </a>
5
+ <common-icon v-else :spec="iconSpec" />
6
+ </template>
7
+
8
+ <script>
9
+ export default {
10
+ props: {
11
+ spec: { type: Object, required: true },
12
+ isBusy: { type: Boolean }
13
+ },
14
+ computed: {
15
+ iconSpec() {
16
+ if (this.spec.spec) {
17
+ return this.spec.spec;
18
+ }
19
+ return this.spec;
20
+ }
21
+ }
22
+ };
23
+ </script>
24
+
25
+ <style scoped></style>
@@ -1,62 +1,62 @@
1
- <template>
2
- <a
3
- v-if="spec.onClick"
4
- :href="$href()"
5
- :rel="$rel()"
6
- :style="textStyles()"
7
- :class="$classes()"
8
- @click="$onClick()"
9
- >{{ text }}</a
10
- >
11
- <span v-else :style="$styles()" :class="$classes()">{{ text }}</span>
12
- </template>
13
-
14
- <script>
15
- import actionCableMixin from "./mixins/ws/actionCable";
16
- import textMixin from "./mixins/text.js";
17
-
18
- export default {
19
- mixins: [actionCableMixin, textMixin],
20
- props: {
21
- spec: { type: Object, required: true }
22
- },
23
- data: function() {
24
- return {
25
- text: " "
26
- };
27
- },
28
- methods: {
29
- $ready() {
30
- this.$wsInitActionCable(this.spec.actionCable);
31
-
32
- this.text = this.spec.text;
33
- },
34
- action_set(spec) {
35
- if (spec.user_id !== spec.filterKey) {
36
- this.text = spec.text;
37
- }
38
- }
39
- }
40
- };
41
- </script>
42
-
43
- <style lang="scss" scoped>
44
- span,
45
- a {
46
- /* white-space: pre-line; */
47
- white-space: pre-wrap;
48
-
49
- /* Without this, padding-top doesn't work */
50
- display: inline-block;
51
- line-height: 1;
52
- }
53
- span.muted {
54
- opacity: 0.7;
55
- }
56
- span.small {
57
- font-size: 80%;
58
- }
59
- a:hover {
60
- text-decoration: none;
61
- }
62
- </style>
1
+ <template>
2
+ <a
3
+ v-if="spec.onClick"
4
+ :href="$href()"
5
+ :rel="$rel()"
6
+ :style="textStyles()"
7
+ :class="$classes()"
8
+ @click="$onClick()"
9
+ >{{ text }}</a
10
+ >
11
+ <span v-else :style="$styles()" :class="$classes()">{{ text }}</span>
12
+ </template>
13
+
14
+ <script>
15
+ import actionCableMixin from "./mixins/ws/actionCable";
16
+ import textMixin from "./mixins/text.js";
17
+
18
+ export default {
19
+ mixins: [actionCableMixin, textMixin],
20
+ props: {
21
+ spec: { type: Object, required: true }
22
+ },
23
+ data: function() {
24
+ return {
25
+ text: " "
26
+ };
27
+ },
28
+ methods: {
29
+ $ready() {
30
+ this.$wsInitActionCable(this.spec.actionCable);
31
+
32
+ this.text = this.spec.text;
33
+ },
34
+ action_set(spec) {
35
+ if (spec.user_id !== spec.filterKey) {
36
+ this.text = spec.text;
37
+ }
38
+ }
39
+ }
40
+ };
41
+ </script>
42
+
43
+ <style lang="scss" scoped>
44
+ span,
45
+ a {
46
+ /* white-space: pre-line; */
47
+ white-space: pre-wrap;
48
+
49
+ /* Without this, padding-top doesn't work */
50
+ display: inline-block;
51
+ line-height: 1;
52
+ }
53
+ span.muted {
54
+ opacity: 0.7;
55
+ }
56
+ span.small {
57
+ font-size: 80%;
58
+ }
59
+ a:hover {
60
+ text-decoration: none;
61
+ }
62
+ </style>
File without changes