ep-lib-ts 1.0.24 → 1.0.25

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 (135) hide show
  1. package/dist/BgAudio-C21gFmz8.js +4 -0
  2. package/dist/DisplayBox-DBh7Hhph.js +4 -0
  3. package/dist/EpAlert-D-zMyvRE.js +4 -0
  4. package/dist/EpAudio-BtIwqGml.js +4 -0
  5. package/dist/EpBadge-B2awUIcq.js +4 -0
  6. package/dist/EpBarChart-DdtGHQRl.js +4 -0
  7. package/dist/EpBtn-B19o0gbu.js +4 -0
  8. package/dist/EpCard-CWUId8IW.js +4 -0
  9. package/dist/EpChip-mm1-4B2m.js +4 -0
  10. package/dist/EpConclusion-BPOft6az.js +4 -0
  11. package/dist/EpContentSlider-pA8yf2jT.js +4 -0
  12. package/dist/EpDarkmode-BlwcoTdn.js +48 -0
  13. package/dist/EpDescription-Ba-790o4.js +4 -0
  14. package/dist/EpDivider-CQ0RM-Mt.js +4 -0
  15. package/dist/EpEdu-J91AnZD4.js +4 -0
  16. package/dist/EpFlex-Cr46qON0.js +4 -0
  17. package/dist/EpFunnelChart-DRbfA526.js +4 -0
  18. package/dist/EpHeader-CeZqdY8n.js +4 -0
  19. package/dist/{EpHover-jrnI89yN.js → EpHover-Cnw6YiYS.js} +1 -1
  20. package/dist/EpIcon-CBgBujCm.js +4 -0
  21. package/dist/EpIframe-RCjTDoKV.js +4 -0
  22. package/dist/EpImg-dH243otk.js +4 -0
  23. package/dist/{EpInput-DzvG0ONW.js → EpInput-DAyuFWpr.js} +22 -22
  24. package/dist/EpInstructions-D-65EQz0.js +4 -0
  25. package/dist/EpIntroduction-CgsiV1Mm.js +4 -0
  26. package/dist/EpLineChart-C9j9T9ly.js +4 -0
  27. package/dist/EpLink-rWrvqG9B.js +4 -0
  28. package/dist/EpLinkVersion-DkQLQvVB.js +4 -0
  29. package/dist/{EpList-_qae9uHP.js → EpList-CDiR3ovP.js} +1 -1
  30. package/dist/EpModal-DRHJ2bt2.js +4 -0
  31. package/dist/{EpNothing-CDSj0X4K.js → EpNothing-CHQxn2H-.js} +1 -1
  32. package/dist/EpObjective-BFGu3uDN.js +4 -0
  33. package/dist/EpPieChart-CRGfKivL.js +4 -0
  34. package/dist/EpQuestion-sZMfnLJ-.js +4 -0
  35. package/dist/EpQuote-CUH6udWz.js +4 -0
  36. package/dist/EpRadio-CBTg9VeC.js +4 -0
  37. package/dist/EpRadioSummative-BsSUhpZ7.js +4 -0
  38. package/dist/EpReading-DI8CZ2ZT.js +4 -0
  39. package/dist/EpResource-lrazza8e.js +4 -0
  40. package/dist/EpScope-BmbljNMA.js +4 -0
  41. package/dist/EpSection-DkQWAzym.js +4 -0
  42. package/dist/EpSelect-FIb6SyJU.js +32 -0
  43. package/dist/EpSkeleton-DlqLcdZG.js +4 -0
  44. package/dist/EpSoftware-BohS7y_l.js +4 -0
  45. package/dist/EpSpecificObjective-B6NBJkNv.js +4 -0
  46. package/dist/EpSpinner-BqvIFAVk.js +4 -0
  47. package/dist/EpSummativeTable-CdKSNbD1.js +4 -0
  48. package/dist/EpSvg-BaqIbued.js +4 -0
  49. package/dist/EpTable-CAk0M_e2.js +4 -0
  50. package/dist/EpTerm-BrtpeLPE.js +4 -0
  51. package/dist/EpText-C_j3Miwj.js +4 -0
  52. package/dist/EpTimeLine-BRyC_JnR.js +4 -0
  53. package/dist/EpVideo-xbSP2Dii.js +4 -0
  54. package/dist/EpVideoPanopto-RP-_gREt.js +4 -0
  55. package/dist/EpWordDef-BZghV5B3.js +4 -0
  56. package/dist/components/basics/EpChip.vue.d.ts +1 -1
  57. package/dist/components/basics/EpIcon.vue.d.ts +1 -1
  58. package/dist/components/charts/EpFunnelChart.vue.d.ts +1 -1
  59. package/dist/components/charts/EpPieChart.vue.d.ts +1 -1
  60. package/dist/components/educationals/EpConclusion.vue.d.ts +39 -0
  61. package/dist/components/educationals/EpDescription.vue.d.ts +39 -0
  62. package/dist/components/educationals/EpInstructions.vue.d.ts +36 -0
  63. package/dist/components/educationals/EpIntroduction.vue.d.ts +39 -0
  64. package/dist/components/educationals/EpObjective.vue.d.ts +39 -0
  65. package/dist/components/educationals/EpSpecificObjective.vue.d.ts +40 -0
  66. package/dist/components/forms/EpSelect.vue.d.ts +15 -86
  67. package/dist/components/interactions/EpAccordeon.vue.d.ts +1 -0
  68. package/dist/components/interactions/EpContentSlider.vue.d.ts +4 -0
  69. package/dist/components/signages/EpSkeleton.vue.d.ts +6 -2
  70. package/dist/ep-lib-ts.js +46 -40
  71. package/dist/ep-lib-ts.umd.cjs +70 -52
  72. package/dist/{index-nKuHdZUR.js → index-BwSapiyo.js} +4684 -4402
  73. package/dist/index.d.ts +7 -1
  74. package/dist/style.css +1 -1
  75. package/dist/types/Answer.d.ts +17 -0
  76. package/package.json +2 -2
  77. package/src/components/basics/EpFlex.vue +1 -0
  78. package/src/components/basics/EpSection.vue +5 -9
  79. package/src/components/educationals/EpConclusion.vue +38 -0
  80. package/src/components/educationals/EpDescription.vue +38 -0
  81. package/src/components/educationals/EpInstructions.vue +48 -0
  82. package/src/components/educationals/EpIntroduction.vue +38 -0
  83. package/src/components/educationals/EpObjective.vue +41 -0
  84. package/src/components/educationals/EpReading.vue +1 -1
  85. package/src/components/educationals/EpSpecificObjective.vue +42 -0
  86. package/src/components/forms/EpSelect.vue +18 -154
  87. package/src/components/interactions/EpAccordeon.vue +5 -4
  88. package/src/components/interactions/EpContentSlider.vue +132 -97
  89. package/src/components/interactions/EpDarkmode.vue +22 -40
  90. package/src/components/signages/EpSkeleton.vue +8 -4
  91. package/dist/BgAudio-BjiZt_j3.js +0 -4
  92. package/dist/DisplayBox-DZa_LWHr.js +0 -4
  93. package/dist/EpAlert-CIOmWSIc.js +0 -4
  94. package/dist/EpAudio-B3cP0yQP.js +0 -4
  95. package/dist/EpBadge-Rn_GnxQe.js +0 -4
  96. package/dist/EpBarChart-D3XffoUi.js +0 -4
  97. package/dist/EpBtn-DHEEdI-A.js +0 -4
  98. package/dist/EpCard-CKZOUaVF.js +0 -4
  99. package/dist/EpChip-ClMvRgwG.js +0 -4
  100. package/dist/EpContentSlider-BPQRgnys.js +0 -4
  101. package/dist/EpDarkmode-4w7onxHI.js +0 -26
  102. package/dist/EpDivider-CAdkeSwX.js +0 -4
  103. package/dist/EpEdu-Ccx2WVen.js +0 -4
  104. package/dist/EpFlex-BObUghJr.js +0 -4
  105. package/dist/EpFunnelChart-Pe4XXTya.js +0 -4
  106. package/dist/EpHeader-DvJyyMGC.js +0 -4
  107. package/dist/EpIcon-BfZrj1D0.js +0 -4
  108. package/dist/EpIframe-DpKYSJNh.js +0 -4
  109. package/dist/EpImg-B_oxNdE8.js +0 -4
  110. package/dist/EpLineChart-D1McKT4Z.js +0 -4
  111. package/dist/EpLink-Bad9NyI9.js +0 -4
  112. package/dist/EpLinkVersion-on-9nSh-.js +0 -4
  113. package/dist/EpModal-Ca6mOjLn.js +0 -4
  114. package/dist/EpPieChart-Bl-OovwP.js +0 -4
  115. package/dist/EpQuestion-_cynbj44.js +0 -4
  116. package/dist/EpQuote-DSGsPnu9.js +0 -4
  117. package/dist/EpRadio-BCYQ80gI.js +0 -4
  118. package/dist/EpRadioSummative-KuZyk9G2.js +0 -4
  119. package/dist/EpReading-BZJk9RUD.js +0 -4
  120. package/dist/EpResource-MAdgbl2P.js +0 -4
  121. package/dist/EpScope-C2BEnXHN.js +0 -4
  122. package/dist/EpSection-DIbMpikL.js +0 -4
  123. package/dist/EpSelect-afhma1pl.js +0 -43
  124. package/dist/EpSkeleton-DdosLRVb.js +0 -4
  125. package/dist/EpSoftware-DpNVZY3o.js +0 -4
  126. package/dist/EpSpinner-9KW8OFR4.js +0 -4
  127. package/dist/EpSummativeTable-CXjHg8Dh.js +0 -4
  128. package/dist/EpSvg-Dnr8vgDv.js +0 -4
  129. package/dist/EpTable-BRt9Ps0H.js +0 -4
  130. package/dist/EpTerm-B3bSXeXd.js +0 -4
  131. package/dist/EpText-CB8XAfzb.js +0 -4
  132. package/dist/EpTimeLine-BUxl5jo5.js +0 -4
  133. package/dist/EpVideo-DxEYZmn1.js +0 -4
  134. package/dist/EpVideoPanopto-BtGdfGz9.js +0 -4
  135. package/dist/EpWordDef-DUa6sNjb.js +0 -4
package/dist/index.d.ts CHANGED
@@ -18,6 +18,12 @@ import { default as EpEdu } from './components/educationals/EpEdu.vue';
18
18
  import { default as EpReading } from './components/educationals/EpReading.vue';
19
19
  import { default as EpResource } from './components/educationals/EpResource.vue';
20
20
  import { default as EpScope } from './components/educationals/EpScope.vue';
21
+ import { default as EpObjective } from './components/educationals/EpObjective.vue';
22
+ import { default as EpSpecificObjective } from './components/educationals/EpSpecificObjective.vue';
23
+ import { default as EpIntroduction } from './components/educationals/EpIntroduction.vue';
24
+ import { default as EpInstructions } from './components/educationals/EpInstructions.vue';
25
+ import { default as EpDescription } from './components/educationals/EpDescription.vue';
26
+ import { default as EpConclusion } from './components/educationals/EpConclusion.vue';
21
27
  import { default as EpAccordeon } from './components/interactions/EpAccordeon.vue';
22
28
  import { default as EpContentSlider } from './components/interactions/EpContentSlider.vue';
23
29
  import { default as EpModal } from './components/interactions/EpModal.vue';
@@ -42,4 +48,4 @@ import { default as EpHeader } from './components/signages/EpHeader.vue';
42
48
  import { default as EpQuote } from './components/signages/EpQuote.vue';
43
49
  import { default as EpSkeleton } from './components/signages/EpSkeleton.vue';
44
50
 
45
- export { EpBadge, EpBtn, EpCard, EpChip, EpDivider, EpFlex, EpIcon, EpImg, EpSection, EpSpinner, EpTable, EpBarChart, EpLineChart, EpPieChart, EpFunnelChart, EpText, EpEdu, EpReading, EpResource, EpScope, EpAccordeon, EpContentSlider, EpModal, EpQuestion, EpTabs, EpAudio, EpCarousel, EpIframe, EpKatex, EpLink, EpLinkVersion, EpSoftware, EpSvg, EpTerm, EpTimeLine, EpVideo, EpVideoPanopto, EpAlert, EpHeader, EpQuote, EpSkeleton, EpWordDef, EpSummativeTable };
51
+ export { EpBadge, EpBtn, EpCard, EpChip, EpDivider, EpFlex, EpIcon, EpImg, EpSection, EpSpinner, EpTable, EpBarChart, EpLineChart, EpPieChart, EpFunnelChart, EpText, EpEdu, EpReading, EpResource, EpScope, EpAccordeon, EpContentSlider, EpModal, EpQuestion, EpTabs, EpAudio, EpCarousel, EpIframe, EpKatex, EpLink, EpLinkVersion, EpSoftware, EpSvg, EpTerm, EpTimeLine, EpVideo, EpVideoPanopto, EpAlert, EpHeader, EpQuote, EpSkeleton, EpWordDef, EpSummativeTable, EpObjective, EpSpecificObjective, EpIntroduction, EpInstructions, EpDescription, EpConclusion };
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .content[data-v-761f0542]{max-height:0;overflow:hidden}.modal-mask{position:fixed;z-index:9998;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;transition:opacity .3s ease}.modal-container{margin:auto;max-height:95%;transition:all .3s ease;z-index:9999}.modal-header h3{margin-top:0;color:#42b983}.modal-body{margin:20px 0}.modal-default-button{float:right}.modal-enter-from,.modal-leave-to{opacity:0}.modal-enter-from .modal-container,.modal-leave-to .modal-container{transform:scale(1.1)}.custom_index{z-index:9999;position:absolute;right:12rem}.h-custom{height:30rem}.p-custom p{margin-bottom:1em}.v-enter-active[data-v-a9b3f460],.v-leave-active[data-v-a9b3f460]{transition:opacity .5s ease}.v-enter-from[data-v-a9b3f460],.v-leave-to[data-v-a9b3f460]{opacity:0}.katex[data-v-a5d595cd]{font-size:1.6em}.content[data-v-713dbd30]{max-height:0;overflow:hidden}.list-enter-active,.list-leave-active{transition:all .5s ease}.list-enter-from,.list-leave-to{opacity:0;transform:translate(30px)}.shape{height:var(--3e2ed539);width:var(--7e73c118)}.arrow-light-top:before{content:" ";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:rgba(0,0,0,.2) transparent transparent transparent}.arrow-dark-top:before{content:" ";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:black transparent transparent transparent}.arrow-light-bottom:before{content:"";position:absolute;display:inline-block;left:50%;bottom:100%;border-right:7px solid transparent;border-bottom:7px solid #eee;border-left:7px solid transparent;border-bottom-color:#0003}.arrow-dark-bottom:before{content:"";position:absolute;display:inline-block;left:50%;bottom:100%;border-right:7px solid transparent;border-bottom:7px solid black;border-left:7px solid transparent;border-bottom-color:black transparent transparent transparent}.arrow-light-left:before{position:absolute;display:inline-block;left:100%;top:50%;content:"";margin-right:0;border-top:5px solid transparent;border-left:5px solid #eee;border-bottom:5px solid transparent;border-left-color:#0003}.arrow-dark-left:before{position:absolute;display:inline-block;left:100%;top:50%;content:"";margin-right:0;border-top:5px solid transparent;border-left:5px solid black;border-bottom:5px solid transparent;border-left-color:black transparent transparent transparent}.arrow-light-right:before{position:absolute;display:inline-block;right:100%;top:50%;content:"";margin-right:0;border-top:5px solid transparent;border-right:5px solid #eee;border-bottom:5px solid transparent;border-right-color:#0003}.arrow-dark-right:before{position:absolute;display:inline-block;right:100%;top:50%;content:"";margin-right:0;border-top:5px solid transparent;border-right:5px solid black;border-bottom:5px solid transparent;border-right-color:black transparent transparent transparent}
1
+ .content[data-v-3a321611]{max-height:0;overflow:hidden}.modal-mask{position:fixed;z-index:9998;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;transition:opacity .3s ease}.modal-container{margin:auto;max-height:95%;transition:all .3s ease;z-index:9999}.modal-header h3{margin-top:0;color:#42b983}.modal-body{margin:20px 0}.modal-default-button{float:right}.modal-enter-from,.modal-leave-to{opacity:0}.modal-enter-from .modal-container,.modal-leave-to .modal-container{transform:scale(1.1)}.custom_index{z-index:9999;position:absolute;right:12rem}.shape{height:var(--57a4c52c);width:var(--32b5e5ba)}.v-enter-active[data-v-a9b3f460],.v-leave-active[data-v-a9b3f460]{transition:opacity .5s ease}.v-enter-from[data-v-a9b3f460],.v-leave-to[data-v-a9b3f460]{opacity:0}.katex[data-v-a5d595cd]{font-size:1.6em}.content[data-v-713dbd30]{max-height:0;overflow:hidden}.list-enter-active,.list-leave-active{transition:all .5s ease}.list-enter-from,.list-leave-to{opacity:0;transform:translate(30px)}.arrow-light-top:before{content:" ";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:rgba(0,0,0,.2) transparent transparent transparent}.arrow-dark-top:before{content:" ";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:black transparent transparent transparent}.arrow-light-bottom:before{content:"";position:absolute;display:inline-block;left:50%;bottom:100%;border-right:7px solid transparent;border-bottom:7px solid #eee;border-left:7px solid transparent;border-bottom-color:#0003}.arrow-dark-bottom:before{content:"";position:absolute;display:inline-block;left:50%;bottom:100%;border-right:7px solid transparent;border-bottom:7px solid black;border-left:7px solid transparent;border-bottom-color:black transparent transparent transparent}.arrow-light-left:before{position:absolute;display:inline-block;left:100%;top:50%;content:"";margin-right:0;border-top:5px solid transparent;border-left:5px solid #eee;border-bottom:5px solid transparent;border-left-color:#0003}.arrow-dark-left:before{position:absolute;display:inline-block;left:100%;top:50%;content:"";margin-right:0;border-top:5px solid transparent;border-left:5px solid black;border-bottom:5px solid transparent;border-left-color:black transparent transparent transparent}.arrow-light-right:before{position:absolute;display:inline-block;right:100%;top:50%;content:"";margin-right:0;border-top:5px solid transparent;border-right:5px solid #eee;border-bottom:5px solid transparent;border-right-color:#0003}.arrow-dark-right:before{position:absolute;display:inline-block;right:100%;top:50%;content:"";margin-right:0;border-top:5px solid transparent;border-right:5px solid black;border-bottom:5px solid transparent;border-right-color:black transparent transparent transparent}
@@ -1,4 +1,5 @@
1
1
  import { TypeAlert } from './Alert';
2
+ import { MediaVariants } from './Medias';
2
3
 
3
4
  interface ContentComponent {
4
5
  type?: string;
@@ -13,4 +14,20 @@ export interface Answer {
13
14
  uid?: string;
14
15
  component?: ContentComponent | null;
15
16
  }
17
+ export interface Question {
18
+ title?: string;
19
+ intentions?: string;
20
+ labelIntentions?: string;
21
+ hideIcon?: boolean;
22
+ type?: MediaVariants;
23
+ question: string;
24
+ answers: Answer[];
25
+ shuffle?: boolean;
26
+ before?: boolean;
27
+ numeration?: boolean;
28
+ src?: string | null;
29
+ labelNoAnswer?: string;
30
+ labelAnswerBtn?: string;
31
+ labelTryAgainBtn?: string;
32
+ }
16
33
  export {};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ep-lib-ts",
3
3
  "private": false,
4
- "version": "1.0.24",
4
+ "version": "1.0.25",
5
5
  "files": [
6
6
  "dist",
7
7
  "src/components/"
@@ -51,7 +51,7 @@
51
51
  "typescript": "^5.6.2",
52
52
  "vite": "^5.4.5",
53
53
  "vite-plugin-dts": "^3.9.0",
54
- "vue-tsc": "^2.1.6"
54
+ "vue-tsc": "^2.1.10"
55
55
  },
56
56
  "peerDependencies": {
57
57
  "vue": "^3.2.45"
@@ -40,3 +40,4 @@ const styles = computed(() => {
40
40
  </div>
41
41
  </template>
42
42
 
43
+ //TODO component
@@ -1,5 +1,6 @@
1
1
  <script setup lang="ts">
2
2
  import { toRefs } from "vue";
3
+ import { useColorMode } from '@vueuse/core';
3
4
  // import EpCard from "../basics/EpCard.vue";
4
5
  // import EpDivider from "../basics/EpDivider.vue";
5
6
  // import EpIcon from "../basics/EpIcon.vue";
@@ -25,8 +26,6 @@ interface Props {
25
26
  synchrone?: boolean;
26
27
  }
27
28
 
28
- // type, taxonomyLevel, courseCode, courseTitle, title, subtitle, height, src, color, synchrone
29
-
30
29
  const props = withDefaults(defineProps<Props>(), {
31
30
  title: null,
32
31
  icon: null,
@@ -34,12 +33,11 @@ const props = withDefaults(defineProps<Props>(), {
34
33
  });
35
34
 
36
35
  const { title, color, src } = toRefs(props);
36
+ const mode = useColorMode();
37
37
  </script>
38
38
 
39
39
  <template>
40
- <!-- <EpChip color="secondary" :prependIcon="mdiChairSchool">Formatif</EpChip> -->
41
-
42
- <section class="EpSection">
40
+ <section :class="{'bg-gray-800 text-white': mode === 'dark', 'bg-white text-black': mode === 'light'}" class="EpSection">
43
41
  <div class="relative items-center w-full">
44
42
  <div class="w-full mx-auto text-left">
45
43
  <div class="relative flex-col items-center m-auto align-middle">
@@ -55,9 +53,7 @@ const { title, color, src } = toRefs(props);
55
53
  <div class="flex flex-col space-y-20 lg:mt-0">
56
54
  <div class="border-b">
57
55
  <div>
58
- <p
59
- class="text-2xl font-medium tracking-tight text-black sm:text-4xl"
60
- >
56
+ <p class="text-2xl font-medium tracking-tight">
61
57
  {{ title }}
62
58
  </p>
63
59
  <p>
@@ -74,6 +70,7 @@ const { title, color, src } = toRefs(props);
74
70
  </div>
75
71
  </div>
76
72
  </section>
73
+ </template>
77
74
 
78
75
  <!-- <section class="h-screen flex flex-col justify-end">
79
76
  <div
@@ -241,4 +238,3 @@ const { title, color, src } = toRefs(props);
241
238
  </div>
242
239
  </div>
243
240
  </div> -->
244
- </template>
@@ -0,0 +1,38 @@
1
+ <script setup lang="ts">
2
+ import { toRefs } from "vue";
3
+ import EpIcon from "../basics/EpIcon.vue";
4
+
5
+ interface Props {
6
+ icon?: string | null;
7
+ title?: string | null;
8
+ subtitle? :string | null;
9
+ }
10
+
11
+ const props = withDefaults(defineProps<Props>(), {
12
+ title: "Conclusion",
13
+ });
14
+ const { title, icon, subtitle } = toRefs(props);
15
+ </script>
16
+ <template>
17
+ <div class="lg:grid lg:grid-cols-12 lg:gap-8">
18
+ <div class="lg:col-span-2">
19
+ <h2
20
+ class="text-pretty text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-100 sm:text-xl"
21
+ >
22
+ <EpIcon v-if="icon" :icon-path="icon" size="28" extraClass="mr-2"></EpIcon>
23
+ {{ title }}
24
+ </h2>
25
+ </div>
26
+ <div class="mt-10 lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4">
27
+ <div class="py-2">
28
+ <h3 v-if="subtitle" class="text-base font-semibold leading-7 text-gray-900 dark:text-gray-100">
29
+ {{subtitle}}
30
+ </h3>
31
+ <div class="text-gray-600 dark:text-gray-300">
32
+ <slot></slot>
33
+ </div>
34
+ </div>
35
+ </div>
36
+ </div>
37
+ </template>
38
+
@@ -0,0 +1,38 @@
1
+ <script setup lang="ts">
2
+ import { toRefs } from "vue";
3
+ import EpIcon from "../basics/EpIcon.vue";
4
+
5
+ interface Props {
6
+ icon?: string | null;
7
+ title?: string | null;
8
+ subtitle? :string | null;
9
+ }
10
+
11
+ const props = withDefaults(defineProps<Props>(), {
12
+ title: "Description",
13
+ });
14
+ const { title, icon, subtitle } = toRefs(props);
15
+ </script>
16
+ <template>
17
+ <div class="lg:grid lg:grid-cols-12 lg:gap-8">
18
+ <div class="lg:col-span-2">
19
+ <h2
20
+ class="text-pretty text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-100 sm:text-xl"
21
+ >
22
+ <EpIcon v-if="icon" :icon-path="icon" size="28" extraClass="mr-2"></EpIcon>
23
+ {{ title }}
24
+ </h2>
25
+ </div>
26
+ <div class="mt-10 lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4">
27
+ <div class="py-2">
28
+ <h3 v-if="subtitle" class="text-base font-semibold leading-7 text-gray-900 dark:text-gray-100">
29
+ {{subtitle}}
30
+ </h3>
31
+ <div class="text-gray-600 dark:text-gray-300">
32
+ <slot></slot>
33
+ </div>
34
+ </div>
35
+ </div>
36
+ </div>
37
+ </template>
38
+
@@ -0,0 +1,48 @@
1
+ <script setup lang="ts">
2
+ import { toRefs } from "vue";
3
+ import EpIcon from "../basics/EpIcon.vue";
4
+ import EpAccordeon from "../interactions/EpAccordeon.vue";
5
+
6
+ type Instructions = {
7
+ uid:string;
8
+ title:string;
9
+ content:string;
10
+ }
11
+
12
+ interface Props {
13
+ icon?: string | null;
14
+ title?: string | null;
15
+ subtitle? :string | null;
16
+ instructions:Instructions[];
17
+ }
18
+
19
+ const props = withDefaults(defineProps<Props>(), {
20
+ title: "Consignes",
21
+ });
22
+
23
+ const { title, icon, subtitle } = toRefs(props);
24
+
25
+ </script>
26
+ <template>
27
+ <div class="lg:grid lg:grid-cols-12 lg:gap-8">
28
+ <div class="lg:col-span-2">
29
+ <h2
30
+ class="text-pretty text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-100 sm:text-xl"
31
+ >
32
+ <EpIcon v-if="icon" :icon-path="icon" size="28" extraClass="mr-2"></EpIcon>
33
+ {{ title }}
34
+ </h2>
35
+ </div>
36
+ <div class="mt-10 lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4">
37
+ <div class="py-2">
38
+ <template v-for="instruction in instructions" :key="`instruction-${instruction.uid}`">
39
+ <EpAccordeon small outlined :title="instruction.title">
40
+ <div v-html="instruction.content"></div>
41
+ </EpAccordeon>
42
+ </template>
43
+
44
+ </div>
45
+ </div>
46
+ </div>
47
+ </template>
48
+
@@ -0,0 +1,38 @@
1
+ <script setup lang="ts">
2
+ import { toRefs } from "vue";
3
+ import EpIcon from "../basics/EpIcon.vue";
4
+
5
+ interface Props {
6
+ icon?: string | null;
7
+ title?: string | null;
8
+ subtitle? :string | null;
9
+ }
10
+
11
+ const props = withDefaults(defineProps<Props>(), {
12
+ title: "Introduction",
13
+ });
14
+ const { title, icon, subtitle } = toRefs(props);
15
+ </script>
16
+ <template>
17
+ <div class="lg:grid lg:grid-cols-12 lg:gap-8">
18
+ <div class="lg:col-span-2">
19
+ <h2
20
+ class="text-pretty text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-100 sm:text-xl"
21
+ >
22
+ <EpIcon v-if="icon" :icon-path="icon" size="28" extraClass="mr-2"></EpIcon>
23
+ {{ title }}
24
+ </h2>
25
+ </div>
26
+ <div class="mt-10 lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4">
27
+ <div class="py-2">
28
+ <h3 v-if="subtitle" class="text-base font-semibold leading-7 text-gray-900 dark:text-gray-100">
29
+ {{subtitle}}
30
+ </h3>
31
+ <div class="text-gray-600 dark:text-gray-300">
32
+ <slot></slot>
33
+ </div>
34
+ </div>
35
+ </div>
36
+ </div>
37
+ </template>
38
+
@@ -0,0 +1,41 @@
1
+ <script setup lang="ts">
2
+
3
+ interface Props {
4
+ nameApproach?:string | null;
5
+ title?:string|null;
6
+ color?:`border-${string}`;
7
+ }
8
+
9
+ const props = withDefaults(defineProps<Props>(),{
10
+ color:'border-gray'
11
+ })
12
+
13
+ </script>
14
+
15
+ <template>
16
+ <div :class="`border-l-8
17
+ ${color}
18
+ p-4
19
+ my-3
20
+ transition
21
+ duration-200
22
+ ease-in-out
23
+ outline-primary
24
+ focus-within:outline
25
+ focus-within:outline-1
26
+ outline-offset-4
27
+ hover:outline
28
+ hover:outline-1
29
+ hover:outline-gray-200
30
+ dark:hover:outline-gray-700`">
31
+ <div class="flex flex-row divide-x gap-x-4">
32
+ <div class="w-32">
33
+ {{ nameApproach }}
34
+ </div>
35
+ <div class="flex-1 pl-4">
36
+ <h4 class="font-medium mb-1">{{ title }}</h4>
37
+ <slot></slot>
38
+ </div>
39
+ </div>
40
+ </div>
41
+ </template>
@@ -182,7 +182,7 @@ const errorImg = (event:Event)=>{
182
182
  <template v-if="!hideCover">
183
183
  <img
184
184
  v-if="hasCover"
185
- class="object-cover h-96 w-full rounded-t-lg object-cover md:h-auto md:w-56 md:rounded-none md:rounded-l-lg "
185
+ class="object-cover h-96 w-full rounded-t-lg md:h-auto md:w-56 md:rounded-none md:rounded-l-lg "
186
186
  :src="cover"
187
187
  :alt="`image de la lecture ${title}`"
188
188
  @error="errorImg"
@@ -0,0 +1,42 @@
1
+ <script setup lang="ts">
2
+ import { computed } from "vue";
3
+ interface Props {
4
+ label?: string | null;
5
+ title?: string | null;
6
+ color?: `border-${string}`;
7
+ tab?: boolean;
8
+ content?: string | null;
9
+ bg?: boolean;
10
+ border?: boolean;
11
+ }
12
+
13
+ const props = withDefaults(defineProps<Props>(), {
14
+ color: "border-gray",
15
+ tab: false,
16
+ border: false,
17
+ });
18
+
19
+ const styles = computed(() => {
20
+ return `
21
+ ${props.tab ? "border-l-8" : ""}
22
+ ${props.bg ? "bg-gray-50 dark:border-gray-50 dark:text-dark" : ""}
23
+ ${props.border ? "ring-1 dark:ring-gray-50" : ""}
24
+ `;
25
+ });
26
+ </script>
27
+ <template>
28
+ <div :class="`${styles} rounded-lg ring-gray-900/5 p-4`">
29
+ <dl class="flex flex-nowrap gap-x-4">
30
+ <div v-if="label" class="flex-none self-center">
31
+ <div
32
+ class="inline-flex items-center rounded-md px-2 py-1 text-xs font-medium text-primary-700 ring-1 ring-inset ring-primary-600/20"
33
+ >
34
+ {{ label }}
35
+ </div>
36
+ </div>
37
+ <div class="flex-auto">
38
+ <dd :class="`mt-1 text-base font-base text-gray-900 ${bg?'dark:text-dark':'dark:text-gray-300'}`">{{ content }}</dd>
39
+ </div>
40
+ </dl>
41
+ </div>
42
+ </template>
@@ -1,163 +1,27 @@
1
1
  <script setup lang="ts">
2
+ import { defineProps } from 'vue';
2
3
 
3
- import EpBadge from "../basics/EpBadge.vue";
4
- import { mdiLockOutline } from "@mdi/js";
4
+ type Option = { text: string; value: string };
5
5
 
6
- interface Props {
7
- id?: string;
8
- label?: string;
9
- modelValue?: string;
10
- type?:
11
- | "text"
12
- | "email"
13
- | "url"
14
- | "password"
15
- | "number"
16
- | "date"
17
- | "search"
18
- | "tel"
19
- | "time";
20
- placeholder?: string;
21
- iconPath?: string;
22
- iconSize?: string;
23
- disabled?: boolean;
24
- readonly?: boolean;
25
- labels?:{
26
- option?:string;
27
- vanderpoel?:string;
28
- vanaert?:string;
29
- pogacar?:string;
30
- evenepoel?:string;
31
- meilleur?:string;
32
- }
33
- }
34
-
35
- const props = withDefaults(defineProps<Props>(), {
36
- id: "0",
37
- label: "label",
38
- modelValue: "",
39
- type: "text",
40
- placeholder: "",
41
- iconPath: "",
42
- iconSize: "",
43
- disabled: false,
44
- labels:()=>{
45
- return {
46
- option:"Choisissez une option",
47
- vanderpoel:"Van Der Poel",
48
- vanaert:"Van Aert",
49
- pogacar:"Pogacar",
50
- evenepoel:"Evenepoel",
51
- meilleur:"Quel est le meilleur cycliste"
52
- }
53
- }
54
- });
6
+ const props = defineProps<{
7
+ options: Option[];
8
+ modelValue: string;
9
+ }>();
55
10
 
11
+ const model = defineModel()
56
12
 
57
13
  </script>
58
14
 
59
15
  <template>
60
- <div class="relative h-10 w-72 min-w-[200px]">
61
- <select :disabled="disabled" class="
62
- peer
63
- h-full
64
- w-full
65
- rounded-[7px]
66
- border
67
- border-neutral-300
68
- border-t-transparent
69
- bg-transparent
70
- px-3
71
- py-2.5
72
- font-sans
73
- text-sm
74
- font-normal
75
- text-blue-gray-700
76
- outline
77
- outline-0
78
- transition-all
79
- placeholder-shown:border
80
- placeholder-shown:border-blue-gray-200
81
- placeholder-shown:border-t-blue-gray-200
82
- empty:!bg-red-500
83
- focus:border-2
84
- focus:border-blue-500
85
- focus:border-t-transparent
86
- focus:outline-4
87
- placeholder-shown:outline-0
88
- disabled:border-0
89
- disabled:cursor-not-allowed
90
- disabled:bg-neutral-200
91
- focus:ring-0
92
- ">
93
- <option value="option">{{labels.option}}</option>
94
- <option value="vanderpoel">{{labels.vanderpoel}}</option>
95
- <option value="vanaert">{{labels.vanaert}}</option>
96
- <option value="pogacar">{{labels.pogacar}}</option>
97
- <option value="evenepoel">{{labels.evenepoel}}</option>
98
- </select>
99
- <label class="before:content[' ']
100
- after:content[' ']
101
- pointer-events-none
102
- absolute
103
- left-0
104
- border-red-500
105
- -top-1.5
106
- flex
107
- h-full
108
- w-full
109
- select-none
110
- text-[11px]
111
- font-normal
112
- leading-tight
113
- text-blue-gray-400
114
- transition-all
115
- before:pointer-events-none
116
- before:mt-[6.5px]
117
- before:mr-1
118
- before:box-border
119
- before:block
120
- before:h-1.5
121
- before:w-2.5
122
- before:rounded-tl-md
123
- before:border-t
124
- before:border-l
125
- before:border-blue-gray-200
126
- before:transition-all
127
- after:pointer-events-none
128
- after:mt-[6.5px]
129
- after:ml-1
130
- after:box-border
131
- after:block
132
- after:h-1.5
133
- after:w-2.5
134
- after:flex-grow
135
- after:rounded-tr-md
136
- after:border-t
137
- after:border-r
138
- after:border-blue-gray-200
139
- after:transition-all
140
- peer-placeholder-shown:text-sm
141
- peer-placeholder-shown:leading-[3.75]
142
- peer-placeholder-shown:text-blue-gray-500
143
- peer-placeholder-shown:before:border-transparent
144
- peer-placeholder-shown:after:border-transparent
145
- peer-focus:text-[11px]
146
- peer-focus:leading-tight
147
- peer-focus:text-blue-500
148
- peer-focus:before:border-t-2
149
- peer-focus:before:border-l-2
150
- peer-focus:before:border-blue-500
151
- peer-focus:after:border-t-2
152
- peer-focus:after:border-r-2
153
- peer-focus:after:border-blue-500
154
- peer-disabled:text-transparent
155
- peer-disabled:before:border-transparent
156
- peer-disabled:after:border-transparent
157
- peer-disabled:peer-placeholder-shown:text-blue-gray-500
158
- ">
159
- {{labels.meilleur}}
160
- </label>
161
- <EpBadge :iconPath="mdiLockOutline" />
162
- </div>
16
+ <div class="w-full max-w-xs">
17
+ <label class="block text-sm font-medium text-gray-700 mb-1">Select Theme:</label>
18
+ <select
19
+ v-model="model"
20
+ class="block w-full bg-white border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm"
21
+ >
22
+ <option v-for="option in options" :key="option.value" :value="option.value">
23
+ {{ option.text }}
24
+ </option>
25
+ </select>
26
+ </div>
163
27
  </template>
@@ -10,6 +10,7 @@ interface Props {
10
10
  open?: boolean;
11
11
  outlined?:boolean;
12
12
  title?:string | null
13
+ small?:boolean;
13
14
  }
14
15
 
15
16
  const props = withDefaults(defineProps<Props>(), {
@@ -31,7 +32,7 @@ const isOutlined = computed(()=>{
31
32
  })
32
33
 
33
34
  const stylesHeader = computed(()=>{
34
- return `flex justify-between items-center px-4 py-2 cursor-pointer ${typeAccordeon[props.type]?.[isOutlined.value]}`
35
+ return `flex justify-between items-center px-4 ${props.small?'py-1':'py-2'} cursor-pointer ${typeAccordeon[props.type]?.[isOutlined.value]}`
35
36
  })
36
37
 
37
38
  const contentStyles = computed(()=>{
@@ -60,20 +61,20 @@ function toggleDivVisibility() {
60
61
  }
61
62
 
62
63
 
63
- const {title, icon } = toRefs(props)
64
+ const {title, icon, small } = toRefs(props)
64
65
  </script>
65
66
 
66
67
  <template>
67
68
  <div>
68
69
  <div :class="stylesHeader" @click="toggleDivVisibility">
69
- <h3 class="text-lg flex items-center"><EpIcon v-if="icon" :icon-path="icon" size="28" extraClass="mr-2"></EpIcon>{{ title }}</h3>
70
+ <h3 :class="`${small?'text':'text-lg'} flex items-center`"><EpIcon v-if="icon" :icon-path="icon" size="28" extraClass="mr-2"></EpIcon>{{ title }}</h3>
70
71
  <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"
71
72
  :class="`mx-4 my-3 h-6 w-6 transition-all duration-200 ${showDiv ? 'rotate-45' : ''}`">
72
73
  <path stroke-linecap="round" stroke-linejoin="round" d="M12 6v12m6-6H6" />
73
74
  </svg>
74
75
  </div>
75
76
  <div ref="collapsible" :class="`${contentStyles} content`">
76
- <div class="py-4">
77
+ <div class="py-3">
77
78
 
78
79
  <slot></slot>
79
80