@saooti/octopus-sdk 33.1.3 → 33.2.1

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 (69) hide show
  1. package/README.md +1 -0
  2. package/index.ts +5 -0
  3. package/package.json +1 -3
  4. package/src/App.vue +1 -1
  5. package/src/assets/_utilities.scss +532 -0
  6. package/src/assets/bootstrap.scss +231 -0
  7. package/src/assets/form.scss +3 -46
  8. package/src/assets/general.scss +10 -58
  9. package/src/assets/multiselect.scss +8 -3
  10. package/src/assets/octopus-library.scss +2 -4
  11. package/src/components/display/categories/CategoryChooser.vue +2 -2
  12. package/src/components/display/categories/CategoryFilter.vue +60 -46
  13. package/src/components/display/categories/CategoryList.vue +22 -19
  14. package/src/components/display/comments/AddCommentModal.vue +60 -67
  15. package/src/components/display/comments/CommentBasicView.vue +3 -4
  16. package/src/components/display/comments/CommentInput.vue +4 -4
  17. package/src/components/display/comments/CommentItem.vue +2 -2
  18. package/src/components/display/comments/CommentPlayer.vue +2 -2
  19. package/src/components/display/emission/EmissionChooser.vue +1 -1
  20. package/src/components/display/emission/EmissionItem.vue +2 -1
  21. package/src/components/display/emission/EmissionPlayerItem.vue +0 -11
  22. package/src/components/display/filter/AdvancedSearch.vue +2 -2
  23. package/src/components/display/filter/MonetizableFilter.vue +1 -1
  24. package/src/components/display/filter/RubriqueChoice.vue +1 -1
  25. package/src/components/display/organisation/OrganisationChooser.vue +1 -1
  26. package/src/components/display/participant/ParticipantItem.vue +2 -1
  27. package/src/components/display/playlist/PlaylistItem.vue +3 -2
  28. package/src/components/display/podcasts/ParticipantDescription.vue +2 -1
  29. package/src/components/display/podcasts/PodcastImage.vue +3 -3
  30. package/src/components/display/podcasts/PodcastInlineList.vue +1 -1
  31. package/src/components/display/podcasts/PodcastInlineListClassic.vue +1 -1
  32. package/src/components/display/podcasts/PodcastInlineListTemplate.vue +6 -2
  33. package/src/components/display/podcasts/PodcastItemInfo.vue +2 -2
  34. package/src/components/display/podcasts/PodcastPlayBar.vue +9 -35
  35. package/src/components/display/podcasts/TagList.vue +0 -2
  36. package/src/components/display/rubriques/RubriqueChooser.vue +2 -2
  37. package/src/components/display/rubriques/RubriqueList.vue +25 -20
  38. package/src/components/display/sharing/PlayerParameters.vue +76 -99
  39. package/src/components/display/sharing/ShareButtons.vue +3 -5
  40. package/src/components/display/sharing/ShareButtonsIntern.vue +1 -1
  41. package/src/components/display/sharing/ShareDistribution.vue +11 -10
  42. package/src/components/display/sharing/SharePlayer.vue +3 -0
  43. package/src/components/display/sharing/SubscribeButtons.vue +1 -1
  44. package/src/components/form/ClassicCheckbox.vue +73 -14
  45. package/src/components/form/ClassicLoading.vue +5 -1
  46. package/src/components/form/ClassicRadio.vue +12 -3
  47. package/src/components/form/ClassicSelect.vue +2 -9
  48. package/src/components/misc/Accordion.vue +76 -0
  49. package/src/components/misc/ErrorMessage.vue +2 -1
  50. package/src/components/misc/HomeDropdown.vue +66 -63
  51. package/src/components/misc/Nav.vue +99 -0
  52. package/src/components/misc/Popover.vue +139 -98
  53. package/src/components/misc/ProgressBar.vue +96 -0
  54. package/src/components/misc/Spinner.vue +37 -0
  55. package/src/components/misc/TopBar.vue +1 -1
  56. package/src/components/misc/modal/ClassicModal.vue +140 -0
  57. package/src/components/misc/modal/ClipboardModal.vue +25 -40
  58. package/src/components/misc/modal/MessageModal.vue +45 -60
  59. package/src/components/misc/modal/NewsletterModal.vue +85 -94
  60. package/src/components/misc/modal/QrCodeModal.vue +19 -36
  61. package/src/components/misc/modal/ShareModalPlayer.vue +72 -133
  62. package/src/components/misc/player/Player.vue +0 -6
  63. package/src/components/misc/player/PlayerCompact.vue +5 -4
  64. package/src/components/misc/player/PlayerLarge.vue +13 -9
  65. package/src/components/misc/player/PlayerProgressBar.vue +10 -48
  66. package/src/components/mixins/player/playerLogic.ts +3 -3
  67. package/src/components/pages/Podcast.vue +1 -1
  68. package/src/assets/bootstrap-diff.scss +0 -195
  69. package/src/assets/modal.scss +0 -49
@@ -1,101 +1,75 @@
1
1
  <template>
2
- <div>
3
- <div
4
- id="share-modal"
5
- class="modal"
6
- >
7
- <div class="modal-backdrop" />
8
- <div class="modal-dialog">
9
- <div class="modal-content">
10
- <div class="modal-header">
11
- <h5 class="modal-title">
12
- {{ $t('Share the player') }}
13
- </h5>
14
- <button
15
- ref="focusElement"
16
- type="button"
17
- class="btn-close btn-close-white"
18
- title="Close"
19
- @click="closePopup"
20
- />
21
- </div>
22
- <div class="modal-body">
23
- <ul class="nav nav-tabs">
24
- <li
25
- v-for="(tab, index) in tabs"
26
- :key="tab"
27
- class="nav-item"
28
- >
29
- <div
30
- class="nav-link"
31
- :class="activeTab === index? 'active':''"
32
- @click="activeTab = index"
33
- >
34
- {{ tab }}
35
- </div>
36
- </li>
37
- </ul>
38
- <div class="tab-content p-2 share-modal-border">
39
- <div
40
- class="tab-pane tab-pane"
41
- :class="activeTab === 0? 'active':''"
42
- >
43
- <p>{{ embedLink }}</p>
44
- <div
45
- class="saooti-copy"
46
- @click="onCopyCode(embedLink, afterCopy)"
47
- />
48
- </div>
2
+ <ClassicModal
3
+ id-modal="share-modal"
4
+ :title-modal="$t('Share the player')"
5
+ @close="closePopup"
6
+ >
7
+ <template #body>
8
+ <Nav
9
+ v-model:activeTab="activeTab"
10
+ :tab-number="tabs.length"
11
+ >
12
+ <template
13
+ v-for="(tab, index) in tabs"
14
+ #[index]
15
+ >
16
+ {{ tab }}
17
+ </template>
18
+ <template
19
+ #tab0
20
+ >
21
+ <p>{{ embedLink }}</p>
22
+ <div
23
+ class="saooti-copy"
24
+ @click="onCopyCode(embedLink, afterCopy)"
25
+ />
26
+ </template>
27
+ <template
28
+ #tab1
29
+ >
30
+ <div class="d-flex flex-column">
31
+ <div class="d-flex">
32
+ <p>{{ embedlyLink }}</p>
49
33
  <div
50
- class="tab-pane tab-pane"
51
- :class="activeTab === 1? 'active':''"
52
- >
53
- <div class="d-flex flex-column">
54
- <div class="d-flex">
55
- <p>{{ embedlyLink }}</p>
56
- <div
57
- class="saooti-copy"
58
- @click="onCopyCode(embedlyLink, afterCopy)"
59
- />
60
- </div>
61
- <QrCode :url="embedlyLink" />
62
- </div>
63
- </div>
64
- <div
65
- v-if="directLink"
66
- class="tab-pane tab-pane"
67
- :class="activeTab === 2? 'active':''"
68
- >
69
- <p>{{ directLink.audioUrl }}</p>
70
- <div
71
- class="saooti-copy"
72
- @click="onCopyCode(directLink.audioUrl, snackbarRef)"
73
- />
74
- </div>
34
+ class="saooti-copy"
35
+ @click="onCopyCode(embedlyLink, afterCopy)"
36
+ />
75
37
  </div>
38
+ <QrCode :url="embedlyLink" />
76
39
  </div>
77
- <div class="modal-footer">
78
- <button
79
- class="btn btn-primary m-1"
80
- @click="closePopup"
81
- >
82
- {{ $t('Close') }}
83
- </button>
84
- </div>
85
- </div>
86
- </div>
87
- </div>
88
- <Snackbar
89
- ref="snackbar"
90
- position="bottom-left"
91
- />
92
- </div>
40
+ </template>
41
+ <template
42
+ v-if="directLink"
43
+ #tab2
44
+ >
45
+ <p>{{ directLink.audioUrl }}</p>
46
+ <div
47
+ class="saooti-copy"
48
+ @click="onCopyCode(directLink.audioUrl, snackbarRef)"
49
+ />
50
+ </template>
51
+ </Nav>
52
+ </template>
53
+ <template #footer>
54
+ <button
55
+ class="btn btn-primary m-1"
56
+ @click="closePopup"
57
+ >
58
+ {{ $t('Close') }}
59
+ </button>
60
+ </template>
61
+ </ClassicModal>
62
+ <Snackbar
63
+ ref="snackbar"
64
+ position="bottom-left"
65
+ />
93
66
  </template>
94
67
 
95
68
  <script lang="ts">
96
69
  import Snackbar from '../Snackbar.vue';
97
70
  import displayMethods from '../../mixins/displayMethods';
98
-
71
+ import ClassicModal from '../modal/ClassicModal.vue';
72
+ import Nav from '../Nav.vue';
99
73
  import QrCode from '../../display/sharing/QrCode.vue';
100
74
  import { defineComponent } from 'vue'
101
75
  import { Podcast } from '@/store/class/general/podcast';
@@ -104,7 +78,9 @@ export default defineComponent({
104
78
 
105
79
  components: {
106
80
  Snackbar,
107
- QrCode
81
+ QrCode,
82
+ ClassicModal,
83
+ Nav
108
84
  },
109
85
  mixins: [displayMethods],
110
86
  props: {
@@ -126,12 +102,8 @@ export default defineComponent({
126
102
  return [this.$t('Embed link'),this.$t('Embedly link')];
127
103
  }
128
104
  },
129
- mounted(){
130
- (this.$refs.focusElement as HTMLElement)?.focus();
131
- },
132
105
  methods: {
133
- closePopup(event: { preventDefault: () => void }): void {
134
- event.preventDefault();
106
+ closePopup(): void {
135
107
  this.$emit('close');
136
108
  },
137
109
  afterCopy(): void{
@@ -143,44 +115,11 @@ export default defineComponent({
143
115
 
144
116
  <style lang="scss">
145
117
  .octopus-app{
146
- .share-modal-border {
147
- border-right: solid 1px rgb(222, 226, 230);
148
- border-left: solid 1px rgb(222, 226, 230);
149
- border-bottom: solid 1px rgb(222, 226, 230);
150
- background-color: #f8fafc;
151
- p {
152
- margin-top: 0.5rem;
153
- margin-bottom: 0.5rem;
154
- overflow-wrap: break-word;
155
- word-wrap: break-word;
156
- -ms-word-break: break-all;
157
- word-break: break-all;
158
- word-break: break-word;
159
- -ms-hyphens: auto;
160
- -moz-hyphens: auto;
161
- -webkit-hyphens: auto;
162
- hyphens: auto;
163
- margin-right: 0.5rem;
164
- }
165
- }
166
- .nav-tabs {
167
- .nav-item {
168
- border-right: solid 1px rgb(222, 226, 230);
169
- border-left: solid 1px rgb(222, 226, 230);
170
- border-top: solid 1px rgb(222, 226, 230);
171
- border-top-left-radius: 0.25rem;
172
- border-top-right-radius: 0.25rem;
173
- }
174
- }
175
- .tab-content {
176
- .tab-pane.active {
177
- display: flex;
178
- justify-content: space-between;
179
- }
180
- .saooti-copy {
181
- cursor: pointer;
182
- align-self: center;
118
+ #share-modal{
119
+ .saooti-copy {
120
+ cursor: pointer;
121
+ align-self: center;
122
+ }
183
123
  }
184
124
  }
185
- }
186
125
  </style>
@@ -126,12 +126,6 @@ export default defineComponent({
126
126
  background: #282828 !important;
127
127
  font-size: 1rem;
128
128
 
129
- .player-progress-border {
130
- height: 10px;
131
- width: 3px;
132
- background: black;
133
- }
134
-
135
129
  @media (max-width: 960px) {
136
130
  .d-flex {
137
131
  flex-wrap: nowrap !important;
@@ -20,12 +20,11 @@
20
20
  'saooti-pause': isPlaying,
21
21
  '':!isPaused&&!isPlaying
22
22
  }"
23
- class="btn play-button-box text-light primary-bg"
23
+ class="btn play-button-box text-light bg-primary"
24
24
  @click="switchPausePlay"
25
25
  >
26
- <span
26
+ <Spinner
27
27
  v-if="!isPaused&&!isPlaying"
28
- class="spinner-border flex-shrink-0"
29
28
  />
30
29
  </button>
31
30
  <div class="text-light player-grow-content">
@@ -78,6 +77,7 @@
78
77
  import { CommentPodcast } from '@/store/class/general/comment';
79
78
  import { playerDisplay } from '../../mixins/player/playerDisplay';
80
79
  import imageProxy from '../../mixins/imageProxy';
80
+ import Spinner from '../Spinner.vue';
81
81
  import PlayerProgressBar from './PlayerProgressBar.vue';
82
82
  import PlayerTimeline from './PlayerTimeline.vue';
83
83
  import { defineComponent } from 'vue';
@@ -86,7 +86,8 @@ export default defineComponent({
86
86
 
87
87
  components: {
88
88
  PlayerProgressBar,
89
- PlayerTimeline
89
+ PlayerTimeline,
90
+ Spinner
90
91
  },
91
92
  mixins:[playerDisplay, imageProxy],
92
93
 
@@ -31,6 +31,7 @@
31
31
  <div class="player-grow-large-content">
32
32
  <PlayerProgressBar
33
33
  ref="progressbar"
34
+ class-progress="large"
34
35
  :hls-ready="hlsReady"
35
36
  :show-timeline="showTimeline"
36
37
  :comments="comments"
@@ -46,8 +47,13 @@
46
47
  <div>{{ totalTime }}</div>
47
48
  </div>
48
49
  </div>
49
- <div class="flex-grow-1 d-flex align-items-center w-100" v-if="''!=transcriptText">
50
- <div class="flex-grow-1 p-1 text-center mx-3 transcript-bg rounded">{{transcriptText}}</div>
50
+ <div
51
+ v-if="''!=transcriptText"
52
+ class="flex-grow-1 d-flex align-items-center w-100"
53
+ >
54
+ <div class="flex-grow-1 p-1 text-center mx-3 transcript-bg rounded">
55
+ {{ transcriptText }}
56
+ </div>
51
57
  </div>
52
58
  <div class="d-flex align-items-center flex-grow-1">
53
59
  <button
@@ -62,12 +68,11 @@
62
68
  'saooti-pause': isPlaying,
63
69
  '':!isPaused&&!isPlaying
64
70
  }"
65
- class="btn play-big-button-box text-light primary-bg"
71
+ class="btn play-big-button-box text-light bg-primary"
66
72
  @click="switchPausePlay"
67
73
  >
68
- <span
74
+ <Spinner
69
75
  v-if="!isPaused&&!isPlaying"
70
- class="spinner-border flex-shrink-0"
71
76
  />
72
77
  </button>
73
78
  <button
@@ -82,6 +87,7 @@
82
87
  </div>
83
88
  </template>
84
89
  <script lang="ts">
90
+ import Spinner from '../Spinner.vue';
85
91
  import { playerDisplay } from '../../mixins/player/playerDisplay';
86
92
  import imageProxy from '../../mixins/imageProxy';
87
93
  import PlayerProgressBar from './PlayerProgressBar.vue';
@@ -93,7 +99,8 @@ export default defineComponent({
93
99
 
94
100
  components: {
95
101
  PlayerProgressBar,
96
- PlayerTimeline
102
+ PlayerTimeline,
103
+ Spinner
97
104
  },
98
105
  mixins:[playerDisplay, imageProxy],
99
106
 
@@ -148,9 +155,6 @@ export default defineComponent({
148
155
  @media (max-width: 960px) {
149
156
  padding: 0.5rem;
150
157
  }
151
- .progress, .progress-bar{
152
- height: 15px !important;
153
- }
154
158
  }
155
159
  .play-big-button-box {
156
160
  height: 5rem;
@@ -1,31 +1,12 @@
1
1
  <template>
2
- <div
2
+ <ProgressBar
3
3
  v-if="!playerError"
4
- class="progress c-hand"
4
+ :main-progress="percentProgress"
5
+ :secondary-progress="percentLiveProgress"
6
+ :alert-bar="displayAlertBar?durationLivePosition:undefined"
7
+ :class="classProgress"
5
8
  @mouseup="seekTo"
6
- >
7
- <div
8
- class="progress-bar bg-light"
9
- role="progressbar"
10
- aria-valuenow="0"
11
- aria-valuemin="0"
12
- aria-valuemax="100"
13
- :style="'width: ' + percentLiveProgress + '%'"
14
- />
15
- <div
16
- class="progress-bar primary-bg"
17
- role="progressbar"
18
- aria-valuenow="0"
19
- aria-valuemin="0"
20
- aria-valuemax="100"
21
- :style="'width: ' + percentProgress + '%'"
22
- />
23
- <div
24
- v-if="displayAlertBar"
25
- class="progress-bar progress-bar-duration bg-danger"
26
- :style="'left: ' + durationLivePosition + '%'"
27
- />
28
- </div>
9
+ />
29
10
  <CommentPlayer
30
11
  v-if="showTimeline"
31
12
  :total-time="totalSecondes"
@@ -34,6 +15,7 @@
34
15
  </template>
35
16
 
36
17
  <script lang="ts">
18
+ import ProgressBar from '../ProgressBar.vue'
37
19
  import { CommentPodcast } from '@/store/class/general/comment';
38
20
  import { defineComponent, defineAsyncComponent } from 'vue';
39
21
  const CommentPlayer = defineAsyncComponent(() => import('../../display/comments/CommentPlayer.vue'));
@@ -42,8 +24,10 @@ export default defineComponent({
42
24
 
43
25
  components: {
44
26
  CommentPlayer,
27
+ ProgressBar
45
28
  },
46
29
  props: {
30
+ classProgress:{ default: "", type: String},
47
31
  hlsReady: { default: false, type: Boolean},
48
32
  showTimeline: { default: false, type: Boolean},
49
33
  comments: { default: ()=>[], type: Array as ()=>Array<CommentPodcast>},
@@ -87,26 +71,4 @@ export default defineComponent({
87
71
 
88
72
  },
89
73
  })
90
- </script>
91
-
92
- <style lang="scss">
93
- .octopus-app{
94
- .progress {
95
- height: 4px;
96
- position: relative;
97
- @media (max-width: 960px) {
98
- height: 8px;
99
- }
100
- }
101
- .progress-bar-duration {
102
- width: 10px;
103
- }
104
- .progress-bar {
105
- height: 4px;
106
- position: absolute;
107
- @media (max-width: 960px) {
108
- height: 8px;
109
- }
110
- }
111
- }
112
- </style>
74
+ </script>
@@ -110,8 +110,8 @@ export const playerLogic = defineComponent({
110
110
  this.$store.commit('player/transcript',{actual: 0,actualText:actualText, value : arrayTranscript});
111
111
  },
112
112
  parseSrt(transcript: string){
113
- var pattern = /(\d+)\n([\d:,]+)\s+-{2}\>\s+([\d:,]+)\n([\s\S]*?(?=\n{2}|$))/gm;
114
- var result = [];
113
+ const pattern = /(\d+)\n([\d:,]+)\s+-{2}\>\s+([\d:,]+)\n([\s\S]*?(?=\n{2}|$))/gm;
114
+ const result = [];
115
115
  if (typeof(transcript) != 'string'){
116
116
  return;
117
117
  }
@@ -130,7 +130,7 @@ export const playerLogic = defineComponent({
130
130
  return result;
131
131
  },
132
132
  srtTimeToSeconds(time:string): number{
133
- var a = time.split(':');
133
+ const a = time.split(':');
134
134
  return (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+parseFloat(a[2]));
135
135
  },
136
136
  getDomain(): string{
@@ -72,7 +72,7 @@
72
72
  :button-text="$t('All podcast emission button')"
73
73
  />
74
74
  <PodcastInlineList
75
- :podcastId="podcastId"
75
+ :podcast-id="podcastId"
76
76
  title="Les recommendations de Vincent !"
77
77
  />
78
78
  <PodcastInlineList
@@ -1,195 +0,0 @@
1
- // Bootstrap styles overload
2
- .octopus-app{
3
- .btn-group {
4
- > .btn:not(:first-child),
5
- > .btn-group:not(:first-child) {
6
- margin-left: 5px;
7
- display: flex;
8
- }
9
- }
10
- .btn{
11
- font-size:.7rem;
12
- border-radius: 4px;
13
- background: $octopus-secondary-color;
14
- text-decoration: none !important;
15
- white-space: nowrap;
16
- border-width: 0;
17
- @media (max-width: 960px) {
18
- white-space: normal;
19
- }
20
- &:hover,
21
- &:focus,
22
- &:active,
23
- &.active {
24
- box-shadow: none;
25
- }
26
- &:hover{
27
- background: $primaryColorMoreTransparent;
28
- }
29
- //Button disable halo after click
30
- &.btn-underline{
31
- background: none;
32
- padding: 0;
33
- margin: 0 2rem 1rem 0;
34
- border-radius: 0;
35
- @media (max-width: 600px) {
36
- margin: 0 1rem 1rem 0;
37
- font-size: 0.8em;
38
- }
39
- position: relative;
40
- &:after {
41
- bottom: 0;
42
- content: "";
43
- display: block;
44
- height: 2px;
45
- left: 50%;
46
- position: absolute;
47
- background: $octopus-primary-color;
48
- transition: width 0.3s ease 0s, left 0.3s ease 0s;
49
- width: 0;
50
- }
51
- &:hover:after,&.active:after {
52
- width: 100%;
53
- left: 0;
54
- }
55
- }
56
-
57
- &.btn-primary {
58
- display: flex;
59
- align-items: center;
60
- justify-content: center;
61
- background: $octopus-primary-color;
62
- border: 1px solid $octopus-primary-color;
63
- border-radius: 4px !important;
64
- color: white !important;
65
- font-weight: bold;
66
- &:focus,
67
- &:hover,
68
- &:active,
69
- &.active {
70
- background: transparent;
71
- color: $octopus-primary-color !important;
72
- }
73
- &:disabled{
74
- background-color: #cccccc;
75
- border: black;
76
- cursor: default;
77
- color: gray !important;
78
- }
79
- @media (max-width: 500px){
80
- margin: 0.3rem;
81
- }
82
- }
83
-
84
- &.btn-more{
85
- background: $octopus-primary-color;
86
- color: $octopus-background;
87
- width: 2rem;
88
- height: 2rem;
89
- display: flex;
90
- align-items: center;
91
- justify-content: center;
92
- border-radius: 50px;
93
- margin: 1rem;
94
- }
95
-
96
- &.admin-button{
97
- padding: 0.3rem;
98
- height: 2.2rem !important;
99
- width: 2.2rem !important;
100
- font-size: 1.1rem;
101
- display: inline-flex;
102
- align-items: center;
103
- justify-content: center;
104
- color : $octopus-primary-color;
105
- flex-shrink: 0;
106
- font-weight: normal;
107
- border-radius: 50% !important;
108
- }
109
-
110
- }
111
- .share-btn {
112
- font-size: 1.3rem;
113
- width: 2.5rem !important;
114
- height: 2.5rem !important;
115
- padding: 0.5rem;
116
- display: inline-flex;
117
- align-items: center;
118
- justify-content: center;
119
- color : $octopus-primary-color;
120
- flex-shrink: 0;
121
- border-radius: 50% !important;
122
- }
123
-
124
- .btn-rss {
125
- background: #ddd !important;
126
- &:hover {
127
- border: 0;
128
- background: #ccc !important;
129
- }
130
- }
131
- .btn-facebook {
132
- background: #d8dfea !important;
133
- color: #3b5998 !important;
134
- &:hover {
135
- background: #afbdd4 !important;
136
- }
137
- }
138
- .btn-twitter {
139
- background: #d2ecfc !important;
140
- color: #1da1f2 !important;
141
- &:hover {
142
- background: #bbe3fb !important;
143
- }
144
- }
145
- .btn-linkedin {
146
- background: #0077b550 !important;
147
- color: #0077b5 !important;
148
- &:hover {
149
- background: #00a0dc !important;
150
- }
151
- }
152
- .btn-whatsapp {
153
- background: #25d36645 !important;
154
- color: #25D366 !important;
155
- &:hover {
156
- background: #25d36563 !important;
157
- }
158
- }
159
-
160
- .dropdown-toggle-no-caret::after{
161
- display: none;
162
- }
163
- .dropdown-menu {
164
- padding: 0.5rem;
165
- }
166
- .dropdown-item {
167
- cursor: pointer;
168
- font-size: 0.8rem;
169
- @media (max-width: 450px) {
170
- padding: 0.25rem 0;
171
- }
172
- }
173
- .dropdown-header {
174
- @media (max-width: 450px) {
175
- margin: 1rem 0 0;
176
- }
177
- }
178
-
179
- .accordion-button {
180
- padding: 0.5rem;
181
- }
182
- .accordion-item:not(:first-of-type) {
183
- border-top: 0.1rem solid rgba(0, 0, 0, 0.125);
184
- }
185
- .breadcrumb{
186
- padding: 1rem;
187
- align-items: center;
188
- background: #FAFAFA;
189
- }
190
- .bg-secondary{
191
- background: #eee !important;
192
- }
193
- }
194
-
195
-