ep-lib-ts 0.0.8 → 0.0.9

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 (137) hide show
  1. package/dist/components/basics/EpBadge.vue.d.ts +38 -4
  2. package/dist/components/basics/EpBtn.vue.d.ts +108 -4
  3. package/dist/components/basics/EpCard.vue.d.ts +95 -4
  4. package/dist/components/basics/EpChip.vue.d.ts +72 -4
  5. package/dist/components/basics/EpDivider.vue.d.ts +51 -4
  6. package/dist/components/basics/EpFlex.vue.d.ts +9 -4
  7. package/dist/components/basics/EpIcon.vue.d.ts +37 -4
  8. package/dist/components/basics/EpImg.vue.d.ts +76 -4
  9. package/dist/components/basics/EpSection.vue.d.ts +84 -4
  10. package/dist/components/basics/EpSpinner.vue.d.ts +32 -4
  11. package/dist/components/basics/EpTable.vue.d.ts +24 -4
  12. package/dist/components/basics/EpText.vue.d.ts +30 -4
  13. package/dist/components/charts/EpBarChart.vue.d.ts +82 -4
  14. package/dist/components/charts/EpLineChart.vue.d.ts +82 -4
  15. package/dist/components/charts/EpPieChart.vue.d.ts +1 -2
  16. package/dist/components/educationals/EpEdu.vue.d.ts +80 -4
  17. package/dist/components/educationals/EpReading.vue.d.ts +151 -4
  18. package/dist/components/educationals/EpScope.vue.d.ts +14 -4
  19. package/dist/components/interactions/EpAccordeon.vue.d.ts +53 -4
  20. package/dist/components/interactions/EpContentSlider.vue.d.ts +2 -5
  21. package/dist/components/interactions/EpModal.vue.d.ts +70 -5
  22. package/dist/components/interactions/EpQuestion.vue.d.ts +1 -2
  23. package/dist/components/interactions/EpTabs.vue.d.ts +2 -0
  24. package/dist/components/medias/EpAudio.vue.d.ts +79 -4
  25. package/dist/components/medias/EpCarousel.vue.d.ts +31 -4
  26. package/dist/components/medias/EpIframe.vue.d.ts +58 -4
  27. package/dist/components/medias/EpKatex.vue.d.ts +51 -4
  28. package/dist/components/medias/EpLink.vue.d.ts +73 -4
  29. package/dist/components/medias/EpSoftware.vue.d.ts +88 -4
  30. package/dist/components/medias/EpSvg.vue.d.ts +1 -2
  31. package/dist/components/medias/EpTerm.vue.d.ts +80 -4
  32. package/dist/components/medias/EpTimeLine.vue.d.ts +1 -2
  33. package/dist/components/medias/EpVideo.vue.d.ts +64 -4
  34. package/dist/components/medias/EpVideoPanopto.vue.d.ts +64 -4
  35. package/dist/components/signages/EpAlert.vue.d.ts +63 -4
  36. package/dist/components/signages/EpHeader.vue.d.ts +101 -4
  37. package/dist/components/signages/EpQuote.vue.d.ts +39 -4
  38. package/dist/components/tools/BgAudio.vue.d.ts +14 -4
  39. package/dist/components/tools/DisplayBox.vue.d.ts +17 -4
  40. package/dist/ep-lib-ts.js +27411 -0
  41. package/dist/ep-lib-ts.umd.cjs +1005 -0
  42. package/dist/index.d.ts +37 -1
  43. package/dist/{ep-lib-ts.css → style.css} +1 -1
  44. package/package.json +25 -23
  45. package/src/components/basics/EpBadge.vue +48 -0
  46. package/src/components/basics/EpBtn.vue +100 -0
  47. package/src/components/basics/EpCard.vue +95 -0
  48. package/src/components/basics/EpChip.vue +81 -0
  49. package/src/components/basics/EpDivider.vue +40 -0
  50. package/src/components/basics/EpFlex.vue +42 -0
  51. package/src/components/basics/EpIcon.vue +25 -0
  52. package/src/components/basics/EpImg.vue +59 -0
  53. package/src/components/basics/EpSection.vue +238 -0
  54. package/src/components/basics/EpSpinner.vue +47 -0
  55. package/src/components/basics/EpTable.vue +33 -0
  56. package/src/components/basics/EpText.vue +85 -0
  57. package/src/components/charts/EpBarChart.vue +82 -0
  58. package/src/components/charts/EpLineChart.vue +92 -0
  59. package/src/components/charts/EpPieChart.vue +8 -0
  60. package/src/components/educationals/EpEdu.vue +93 -0
  61. package/src/components/educationals/EpReading.vue +234 -0
  62. package/src/components/educationals/EpScope.vue +25 -0
  63. package/src/components/forms/EpCheckbox.vue +49 -0
  64. package/src/components/forms/EpInput.vue +178 -0
  65. package/src/components/forms/EpRadio.vue +72 -0
  66. package/src/components/forms/EpSelect.vue +145 -0
  67. package/src/components/forms/EpSwitch.vue +58 -0
  68. package/src/components/forms/EpTextarea.vue +79 -0
  69. package/src/components/forms/EpToggle.vue +97 -0
  70. package/src/components/interactions/EpAccordeon.vue +88 -0
  71. package/src/components/interactions/EpContentSlider.vue +12 -0
  72. package/src/components/interactions/EpModal.vue +117 -0
  73. package/src/components/interactions/EpQuestion.vue +8 -0
  74. package/src/components/interactions/EpTabs.vue +10 -0
  75. package/src/components/medias/EpAudio.vue +83 -0
  76. package/src/components/medias/EpCarousel.vue +84 -0
  77. package/src/components/medias/EpIframe.vue +57 -0
  78. package/src/components/medias/EpKatex.vue +75 -0
  79. package/src/components/medias/EpLink.vue +62 -0
  80. package/src/components/medias/EpSoftware.vue +89 -0
  81. package/src/components/medias/EpSvg.vue +8 -0
  82. package/src/components/medias/EpTerm.vue +145 -0
  83. package/src/components/medias/EpTimeLine.vue +8 -0
  84. package/src/components/medias/EpVideo.vue +77 -0
  85. package/src/components/medias/EpVideoPanopto.vue +62 -0
  86. package/src/components/signages/EpAlert.vue +70 -0
  87. package/src/components/signages/EpHeader.vue +223 -0
  88. package/src/components/signages/EpQuote.vue +48 -0
  89. package/src/components/tools/BgAudio.vue +51 -0
  90. package/src/components/tools/DisplayBox.vue +37 -0
  91. package/dist/components/basics/EpBadge.vue.d.ts.map +0 -1
  92. package/dist/components/basics/EpBtn.vue.d.ts.map +0 -1
  93. package/dist/components/basics/EpCard.vue.d.ts.map +0 -1
  94. package/dist/components/basics/EpChip.vue.d.ts.map +0 -1
  95. package/dist/components/basics/EpDivider.vue.d.ts.map +0 -1
  96. package/dist/components/basics/EpFlex.vue.d.ts.map +0 -1
  97. package/dist/components/basics/EpIcon.vue.d.ts.map +0 -1
  98. package/dist/components/basics/EpImg.vue.d.ts.map +0 -1
  99. package/dist/components/basics/EpSection.vue.d.ts.map +0 -1
  100. package/dist/components/basics/EpSpinner.vue.d.ts.map +0 -1
  101. package/dist/components/basics/EpTable.vue.d.ts.map +0 -1
  102. package/dist/components/basics/EpText.vue.d.ts.map +0 -1
  103. package/dist/components/charts/EpBarChart.vue.d.ts.map +0 -1
  104. package/dist/components/charts/EpLineChart.vue.d.ts.map +0 -1
  105. package/dist/components/charts/EpPieChart.vue.d.ts.map +0 -1
  106. package/dist/components/educationals/EpEdu.vue.d.ts.map +0 -1
  107. package/dist/components/educationals/EpReading.vue.d.ts.map +0 -1
  108. package/dist/components/educationals/EpScope.vue.d.ts.map +0 -1
  109. package/dist/components/index.d.ts +0 -38
  110. package/dist/components/interactions/EpAccordeon.vue.d.ts.map +0 -1
  111. package/dist/components/interactions/EpContentSlider.vue.d.ts.map +0 -1
  112. package/dist/components/interactions/EpModal.vue.d.ts.map +0 -1
  113. package/dist/components/interactions/EpQuestion.vue.d.ts.map +0 -1
  114. package/dist/components/main.d.ts +0 -7
  115. package/dist/components/medias/EpAudio.vue.d.ts.map +0 -1
  116. package/dist/components/medias/EpCarousel.vue.d.ts.map +0 -1
  117. package/dist/components/medias/EpIframe.vue.d.ts.map +0 -1
  118. package/dist/components/medias/EpKatex.vue.d.ts.map +0 -1
  119. package/dist/components/medias/EpLink.vue.d.ts.map +0 -1
  120. package/dist/components/medias/EpLinkVersion.vue.d.ts +0 -3
  121. package/dist/components/medias/EpLinkVersion.vue.d.ts.map +0 -1
  122. package/dist/components/medias/EpResource.vue.d.ts +0 -3
  123. package/dist/components/medias/EpResource.vue.d.ts.map +0 -1
  124. package/dist/components/medias/EpSoftware.vue.d.ts.map +0 -1
  125. package/dist/components/medias/EpSvg.vue.d.ts.map +0 -1
  126. package/dist/components/medias/EpTerm.vue.d.ts.map +0 -1
  127. package/dist/components/medias/EpTimeLine.vue.d.ts.map +0 -1
  128. package/dist/components/medias/EpVideo.vue.d.ts.map +0 -1
  129. package/dist/components/medias/EpVideoPanopto.vue.d.ts.map +0 -1
  130. package/dist/components/signages/EpAlert.vue.d.ts.map +0 -1
  131. package/dist/components/signages/EpHeader.vue.d.ts.map +0 -1
  132. package/dist/components/signages/EpQuote.vue.d.ts.map +0 -1
  133. package/dist/components/tools/BgAudio.vue.d.ts.map +0 -1
  134. package/dist/components/tools/DisplayBox.vue.d.ts.map +0 -1
  135. package/dist/ep-lib-ts.cjs.js +0 -984
  136. package/dist/ep-lib-ts.es.js +0 -22617
  137. package/dist/ep-lib-ts.umd.js +0 -985
package/dist/index.d.ts CHANGED
@@ -1,2 +1,38 @@
1
+ import EpText from './components/basics/EpText.vue';
2
+ import EpImg from './components/basics/EpImg.vue';
3
+ import EpCard from './components/basics/EpCard.vue';
4
+ import EpBadge from './components/basics/EpBadge.vue';
5
+ import EpBtn from './components/basics/EpBtn.vue';
6
+ import EpChip from './components/basics/EpChip.vue';
7
+ import EpDivider from './components/basics/EpDivider.vue';
8
+ import EpSection from './components/basics/EpSection.vue';
9
+ import EpSpinner from './components/basics/EpSpinner.vue';
10
+ import EpFlex from './components/basics/EpFlex.vue';
11
+ import EpIcon from './components/basics/EpIcon.vue';
12
+ import EpTable from './components/basics/EpTable.vue';
13
+ import EpBarChart from './components/charts/EpBarChart.vue';
14
+ import EpLineChart from './components/charts/EpLineChart.vue';
15
+ import EpPieChart from './components/charts/EpPieChart.vue';
16
+ import EpEdu from './components/educationals/EpEdu.vue';
17
+ import EpReading from './components/educationals/EpReading.vue';
18
+ import EpScope from './components/educationals/EpScope.vue';
19
+ import EpAccordeon from './components/interactions/EpAccordeon.vue';
20
+ import EpContentSlider from './components/interactions/EpContentSlider.vue';
21
+ import EpModal from './components/interactions/EpModal.vue';
22
+ import EpQuestion from './components/interactions/EpQuestion.vue';
23
+ import EpTabs from './components/interactions/EpTabs.vue';
24
+ import EpAudio from './components/medias/EpAudio.vue';
25
+ import EpCarousel from './components/medias/EpCarousel.vue';
26
+ import EpIframe from './components/medias/EpIframe.vue';
27
+ import EpKatex from './components/medias/EpKatex.vue';
28
+ import EpLink from './components/medias/EpLink.vue';
29
+ import EpSoftware from './components/medias/EpSoftware.vue';
30
+ import EpSvg from './components/medias/EpSvg.vue';
31
+ import EpTerm from './components/medias/EpTerm.vue';
32
+ import EpTimeLine from './components/medias/EpTimeLine.vue';
33
+ import EpVideo from './components/medias/EpVideo.vue';
34
+ import EpVideoPanopto from './components/medias/EpVideoPanopto.vue';
1
35
  import EpAlert from './components/signages/EpAlert.vue';
2
- export { EpAlert };
36
+ import EpHeader from './components/signages/EpHeader.vue';
37
+ import EpQuote from './components/signages/EpQuote.vue';
38
+ export { EpBadge, EpBtn, EpCard, EpChip, EpDivider, EpFlex, EpIcon, EpImg, EpSection, EpSpinner, EpTable, EpText, EpBarChart, EpLineChart, EpPieChart, EpEdu, EpReading, EpScope, EpAccordeon, EpContentSlider, EpModal, EpQuestion, EpTabs, EpAudio, EpCarousel, EpIframe, EpKatex, EpLink, EpSoftware, EpSvg, EpTerm, EpTimeLine, EpVideo, EpVideoPanopto, EpAlert, EpHeader, EpQuote };
@@ -1 +1 @@
1
- .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;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)}.content[data-v-d8f20f72]{max-height:0;overflow:hidden}#scroll-content{min-width:100%}.v-enter-active[data-v-b6f21f1c],.v-leave-active[data-v-b6f21f1c]{transition:opacity .5s ease}.v-enter-from[data-v-b6f21f1c],.v-leave-to[data-v-b6f21f1c]{opacity:0}.katex[data-v-8d1e7f22]{font-size:1.3em}
1
+ .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;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)}.content[data-v-69793e45]{max-height:0;overflow:hidden}.v-enter-active[data-v-ecd9b088],.v-leave-active[data-v-ecd9b088]{transition:opacity .5s ease}.v-enter-from[data-v-ecd9b088],.v-leave-to[data-v-ecd9b088]{opacity:0}.katex[data-v-24ff8b28]{font-size:1.3em}
package/package.json CHANGED
@@ -1,29 +1,28 @@
1
1
  {
2
2
  "name": "ep-lib-ts",
3
3
  "private": false,
4
- "version": "0.0.8",
5
- "type": "module",
4
+ "version": "0.0.9",
6
5
  "files": [
7
- "dist"
6
+ "dist",
7
+ "src/components/"
8
8
  ],
9
- "main": "./dist/ep-lib-ts.umd.js",
10
- "module": "./dist/ep-lib-ts.es.js",
9
+ "main": "./dist/ep-lib-ts.umd.cjs",
10
+ "module": "./dist/ep-lib-ts.js",
11
+ "types": "./dist/index.d.ts",
12
+ "type": "module",
11
13
  "exports": {
12
14
  ".": {
13
- "import": "./dist/ep-lib-ts.es.js",
14
- "require": "./dist/ep-lib-ts.umd.js"
15
+ "import": "./dist/ep-lib-ts.js",
16
+ "require": "./dist/ep-lib-ts.umd.cjs"
15
17
  },
16
- "./dist/ep-lib-ts.css": {
17
- "import": "./dist/ep-lib-ts.css",
18
- "require": "./dist/ep-lib-ts.css"
18
+ "./dist/style.css": {
19
+ "import": "./dist/style.css",
20
+ "require": "./dist/style.css"
19
21
  }
20
-
21
22
  },
22
- "types": "./dist/main.d.ts",
23
23
  "scripts": {
24
24
  "dev": "vite",
25
- "build": "vue-tsc && vite build && --emitDeclarationOnly && mv dist/src dist/types",
26
- "types": "vue-tsc ",
25
+ "build": "vue-tsc && vite build",
27
26
  "preview": "vite preview"
28
27
  },
29
28
  "dependencies": {
@@ -32,25 +31,28 @@
32
31
  "apexcharts": "^3.41.1",
33
32
  "katex": "^0.16.8",
34
33
  "markdown-it": "^13.0.1",
35
- "path": "^0.12.7",
36
- "rollup-plugin-typescript2": "^0.35.0",
34
+ "postcss-cli": "^10.1.0",
37
35
  "vee-validate": "^4.8.6",
38
- "vite-plugin-dts": "^3.5.1",
39
- "vue": "^3.2.45",
40
36
  "vue-router": "^4.1.6",
41
- "vue3-apexcharts": "^1.4.4"
37
+ "vue3-apexcharts": "^1.4.4",
38
+ "vue": "^3.2.45"
42
39
  },
43
40
  "devDependencies": {
44
41
  "@tailwindcss/forms": "^0.5.3",
45
42
  "@types/katex": "^0.16.2",
46
43
  "@types/markdown-it": "^12.2.3",
47
- "@types/node": "^20.4.8",
44
+ "@types/node": "^20.4.9",
48
45
  "@vitejs/plugin-vue": "^4.0.0",
49
46
  "autoprefixer": "^10.4.14",
50
- "postcss": "^8.4.23",
51
- "tailwindcss": "^3.3.2",
47
+ "path": "^0.12.7",
48
+ "postcss": "^8.4.27",
49
+ "tailwindcss": "^3.3.3",
52
50
  "typescript": "^5.2.0-dev.20230801",
53
51
  "vite": "^4.1.0",
54
- "vue-tsc": "^1.8.8"
52
+ "vite-plugin-dts": "^3.5.2",
53
+ "vue-tsc": "^1.0.24"
54
+ },
55
+ "peerDependencies": {
56
+ "vue": "^3.2.45"
55
57
  }
56
58
  }
@@ -0,0 +1,48 @@
1
+ <script setup lang="ts">
2
+ import { toRefs, computed, ref } from "vue";
3
+ import EpIcon from "./EpIcon.vue";
4
+ import useColors from "../../composables/useColors";
5
+
6
+ interface Props {
7
+ color?: string;
8
+ outlined?: boolean;
9
+ square?: boolean;
10
+ iconPath?: string | null;
11
+ }
12
+
13
+ const props = withDefaults(defineProps<Props>(), {
14
+ color: "primary",
15
+ square: false,
16
+ iconPath: null,
17
+ });
18
+
19
+ const styleChip = computed(() => {
20
+ return props.outlined
21
+ ? useColors("border", props.color)
22
+ : useColors("bg", props.color);
23
+ });
24
+
25
+ const typeChip = computed(() => {
26
+ return props.square ? "" : "rounded-full";
27
+ });
28
+
29
+ const { iconPath } = toRefs(props);
30
+ </script>
31
+
32
+ <template>
33
+ <!-- <span :class="`py-2 px-3 ${styleChip} ${typeChip} mx-2 text-sm`">
34
+ <EpIcon v-if="icon" :iconPath="icon" size="20" extraClass="mr-2"></EpIcon>
35
+ <slot></slot>
36
+ </span> -->
37
+ <!--
38
+ <span class="text-white badge absolute -top-1 -right-1 flex h-3 w-3">
39
+ <span class="animate-ping absolute inline-flex h-full w-full rounded-full bg-red-400 opacity-75"></span>
40
+ <span class="relative inline-flex rounded-full h-3 w-3 bg-red-500">
41
+
42
+ <EpIcon v-if="iconPath" :iconPath="iconPath" size="32" extra-class="p-1"></EpIcon>
43
+ </span>
44
+ </span>-->
45
+ <div class="p-12 bg-warning-light w-[50%] mx-auto border-2 border-warning">
46
+ <p class="text-center text-error font-bold uppercase">In progress</p>
47
+ </div>
48
+ </template>
@@ -0,0 +1,100 @@
1
+ <script setup lang="ts">
2
+ import { toRefs, computed } from "vue";
3
+ import EpIcon from './EpIcon.vue';
4
+ import useColors from "../../composables/useColors";
5
+ ///types with Capital letters... object with styles same name in lowercase
6
+ import { ButtonBgVariant, ButtonSize, bgVariants, sizeVariants } from "../../types/Btn";
7
+
8
+ //props of components
9
+ interface Props {
10
+ type?:ButtonBgVariant;
11
+ disabled?: boolean;
12
+ block?: boolean;
13
+ rounded?: boolean;
14
+ size?:ButtonSize;
15
+ appendIcon?: string | null;
16
+ prependIcon?: string | null;
17
+ outlined?:boolean;
18
+ text?:boolean;
19
+ color?:string;
20
+ extraClass?: string | null;
21
+ href?:string;
22
+ }
23
+ //define only defaults values
24
+ const props = withDefaults(defineProps<Props>(), {
25
+ type:'base',
26
+ rounded: false,
27
+ size:'medium',
28
+ appendIcon: null,
29
+ prependIcon: null,
30
+ text:false,
31
+ extraClass:null,
32
+ color:'text-black'
33
+ });
34
+
35
+
36
+ //get styles tailwind
37
+ const colorText = computed(()=>{
38
+ if(props.outlined){
39
+ return ''
40
+ }
41
+ return props.color
42
+ })
43
+
44
+
45
+ const isOutlined = computed(()=>{
46
+ if(props.outlined){
47
+ return 'outlined'
48
+ }
49
+ return 'default'
50
+ })
51
+
52
+ ///add bg or text
53
+ const styleBtn = computed(()=>{
54
+ if(props.text){
55
+
56
+ return `uppercase ${useColors('text', props.type)} hover:${useColors('bg', props.type + 'light')}`
57
+ }
58
+ return `${bgVariants[props.type]?.[isOutlined.value]}`
59
+ })
60
+
61
+ const styles = computed(() => {
62
+ return `
63
+ transition
64
+ ${styleBtn.value}
65
+ ${sizeVariants[props.size]}
66
+ ${colorText.value}
67
+ ${props.disabled ? "opacity-50" : ""}
68
+ ${props.block ? "w-full block" : ""}
69
+ ${props.rounded ? "rounded-md":""}
70
+ ${props.extraClass ? props.extraClass:"transition"}`;
71
+ });
72
+
73
+ const sizeIcon = computed(()=> {
74
+ if(props.size === "large"){
75
+ return "30"
76
+ }
77
+ if(props.size === "medium"){
78
+ return "20"
79
+ }
80
+ if(props.size === "small"){
81
+ return "15"
82
+ }
83
+ })
84
+
85
+ //destructuring props to quick use in template
86
+ const { disabled, prependIcon, appendIcon } = toRefs(props);
87
+ </script>
88
+
89
+ <template>
90
+ <button :class="styles" :disabled="disabled" v-if="!href">
91
+ <EpIcon v-if="prependIcon" :iconPath="prependIcon" :size="sizeIcon" extraClass="mr-2"></EpIcon>
92
+ <slot></slot>
93
+ <EpIcon v-if="appendIcon" :iconPath="appendIcon" :size="sizeIcon" extraClass="ml-2"></EpIcon>
94
+ </button>
95
+ <a :class="`${styles} text-center inline-block`" :disabled="disabled" :href="href" target="_blank" v-else>
96
+ <EpIcon v-if="prependIcon" :iconPath="prependIcon" :size="sizeIcon" extraClass="mr-2"></EpIcon>
97
+ <slot></slot>
98
+ <EpIcon v-if="appendIcon" :iconPath="appendIcon" :size="sizeIcon" extraClass="ml-2"></EpIcon>
99
+ </a>
100
+ </template>
@@ -0,0 +1,95 @@
1
+ <script setup lang="ts">
2
+ import { toRefs, computed } from "vue";
3
+ import EpIcon from './EpIcon.vue';
4
+ import useColors from '../../composables/useColors'
5
+ //types with capital letter, object styles in lowercase
6
+ import { Density, density_style } from "../../types/Card";
7
+
8
+ interface Props {
9
+ title?: string | null;
10
+ subtitle?: string | null;
11
+ outlined?: boolean;
12
+ flat?: boolean;
13
+ icon?: string | null;
14
+ color?: string | null;
15
+ src?: string | null;
16
+ maxWidth?:string;
17
+ density?:Density;
18
+ }
19
+
20
+
21
+
22
+ const props = withDefaults(defineProps<Props>(), {
23
+ title: null,
24
+ subtitle: null,
25
+ outlined: false,
26
+ flat: false,
27
+ icon: null,
28
+ color: null,
29
+ src:null,
30
+ density:"default",
31
+ maxWidth:"max-w-full"
32
+ })
33
+
34
+ //styles card
35
+ const shadowCard = computed(() => {
36
+ return !props.flat ? 'shadow-lg' : ''
37
+ })
38
+
39
+ const borderColor = computed(() => {
40
+ if (props.outlined && props.color) {
41
+ return `border solid ${useColors('border', props.color)}`
42
+ }
43
+ if (props.outlined) {
44
+ return 'border solid border-grey-700'
45
+ }
46
+ return ''
47
+ })
48
+
49
+ const bgColor = computed(() => {
50
+ if(props.color && !props.outlined){
51
+ return `${useColors('bg', props.color)} text-white`
52
+ }
53
+ return `bg-white text-black`
54
+ })
55
+
56
+ const subTitleText = computed(()=>{
57
+ if(props.color && !props.outlined){
58
+ return 'text-white'
59
+ }
60
+ return 'text-gray-600'
61
+ })
62
+
63
+
64
+ const density_class = computed(()=> {
65
+ return density_style[props.density]
66
+ })
67
+
68
+ const stylesCard = computed(()=> {
69
+ return `${shadowCard.value} ${borderColor.value} ${bgColor.value} ${props.maxWidth} my-4 `
70
+ })
71
+
72
+
73
+ const { title, subtitle, icon, src, density } = toRefs(props)
74
+
75
+ </script>
76
+ <template>
77
+ <div :class="`${stylesCard} rounded-md`">
78
+ <img v-if="src" :src="src" class="w-full rounded-t-md" alt="header card">
79
+ <div :class="density_class">
80
+ <div v-if="title || subtitle" class="mb-2 flex items-center justify-between">
81
+ <div>
82
+ <h3 class="text-2xl font-bold">{{ title }}</h3>
83
+ <h4 :class="`text-xs ${subTitleText}`">{{ subtitle }}</h4>
84
+ </div>
85
+ <div v-if="icon">
86
+ <EpIcon :icon-path="icon"></EpIcon>
87
+ </div>
88
+ </div>
89
+ <slot name="card-header"></slot>
90
+ <slot></slot>
91
+ <slot name="card-actions"></slot>
92
+ </div>
93
+ </div>
94
+
95
+ </template>
@@ -0,0 +1,81 @@
1
+ <script setup lang="ts">
2
+ import { toRefs, computed } from 'vue';
3
+ import EpIcon from './EpIcon.vue';
4
+ //import useColors from '../../composables/useColors'
5
+ import { ChipBgVariant, ChipSize, chipVariants, sizeChipVariants } from '../../types/Chip';
6
+
7
+ interface Props {
8
+ type?:ChipBgVariant;
9
+ size?:ChipSize;
10
+ outlined?: boolean;
11
+ appendIcon?: string | null;
12
+ prependIcon?: string | null;
13
+ square?: boolean;
14
+ dark?:boolean;
15
+ }
16
+
17
+ const props = withDefaults(defineProps<Props>(), {
18
+ type:'base',
19
+ size:"medium",
20
+ square: false,
21
+ appendIcon: null,
22
+ prependIcon: null,
23
+ dark:false
24
+ })
25
+
26
+ const isOutlined = computed(()=>{
27
+ if(props.outlined){
28
+ return 'outlined'
29
+ }
30
+ return 'default'
31
+ })
32
+
33
+
34
+ const typeChip = computed(()=> {
35
+ return props.square ? '':'rounded-full'
36
+ })
37
+
38
+ const colorText = computed(()=>{
39
+ if(props.outlined){
40
+ return ''
41
+ }
42
+ if(props.dark){
43
+ return 'text-white'
44
+ }
45
+ return 'text-black'
46
+ })
47
+
48
+ const stylesChip = computed(()=>{
49
+ return `
50
+ ${colorText.value}
51
+ ${sizeChipVariants[props.size]}
52
+ ${typeChip.value}
53
+ ${chipVariants[props.type]?.[isOutlined.value]}
54
+ `
55
+ })
56
+
57
+ const sizeIcon = computed(()=> {
58
+ if(props.size === "large"){
59
+ return "30"
60
+ }
61
+ if(props.size === "medium"){
62
+ return "20"
63
+ }
64
+ if(props.size === "small"){
65
+ return "15"
66
+ }
67
+ })
68
+
69
+
70
+
71
+ const {appendIcon} = toRefs(props)
72
+
73
+ </script>
74
+
75
+ <template>
76
+ <span :class="`${stylesChip} mx-2 cursor-default`">
77
+ <EpIcon v-if="prependIcon" :iconPath="prependIcon" :size="sizeIcon" extraClass="mr-2"></EpIcon>
78
+ <slot></slot>
79
+ <EpIcon v-if="appendIcon" :iconPath="appendIcon" :size="sizeIcon" extraClass="ml-2"></EpIcon>
80
+ </span>
81
+ </template>
@@ -0,0 +1,40 @@
1
+ <script setup lang="ts">
2
+ import { computed } from 'vue';
3
+ import useColors from '../../composables/useColors';
4
+ import type Border from '../../types/Border'
5
+ //possibles class in tailwind
6
+
7
+ interface Props {
8
+ color?: string | null;
9
+ size?: Border;
10
+ inset?: boolean;
11
+ icon?: string | null;
12
+ margin?:string;
13
+ }
14
+
15
+ const props = withDefaults(defineProps<Props>(), {
16
+ color: null,
17
+ size: 'border',
18
+ inset: false,
19
+ icon: null,
20
+ margin:'my-2'
21
+ })
22
+
23
+ const border = computed(() => {
24
+ if (props.color) {
25
+ return `${props.size} ${useColors('border', props.color)}`
26
+ }
27
+ return `${props.size} border-grey-700`
28
+ })
29
+
30
+ const styles = computed(() => {
31
+ return `${border.value} ${props.inset ? 'w-9/12 mx-auto' : 'w-full'} ${props.margin}`
32
+ })
33
+
34
+
35
+ </script>
36
+
37
+ <template>
38
+ <hr :class="`h-px ${styles}`">
39
+ </template>
40
+
@@ -0,0 +1,42 @@
1
+ <script setup lang="ts">
2
+ /*
3
+ import { computed } from "vue";
4
+ import useColors from "../../composables/useColors";
5
+ import type Border from "../../types/Border";
6
+ //possibles class in tailwind
7
+
8
+ interface Props {
9
+ color?: string | null;
10
+ size?: Border;
11
+ inset?: boolean;
12
+ icon?: string | null;
13
+ }
14
+
15
+ const props = withDefaults(defineProps<Props>(), {
16
+ color: null,
17
+ size: "border",
18
+ inset: false,
19
+ icon: null,
20
+ });
21
+
22
+ const border = computed(() => {
23
+ if (props.color) {
24
+ return `${props.size} ${useColors("border", props.color)}`;
25
+ }
26
+ return `${props.size} border-grey-700`;
27
+ });
28
+
29
+ const styles = computed(() => {
30
+ return `${border.value} ${props.inset ? "w-9/12 mx-auto" : "w-full"}`;
31
+ });*/
32
+ </script>
33
+
34
+ <template>
35
+ <!-- <hr :class="`h-px ${styles} my-2`"> -->
36
+ <!-- Option: content-between self-center justify-evenly place-items-stretch-->
37
+ <!-- mb-20 flex md:flex-row flex-col ep-flex gap-4 justify-evenly -->
38
+ <div class="grid grid-cols-2 gap-4">
39
+ <slot></slot>
40
+ </div>
41
+ </template>
42
+
@@ -0,0 +1,25 @@
1
+ <script setup lang="ts">
2
+ import { toRefs} from 'vue';
3
+
4
+ interface Props {
5
+ size?:string | number;
6
+ viewBox?:string;
7
+ iconPath:string;
8
+ extraClass?:string;
9
+ }
10
+
11
+ const props = withDefaults(defineProps<Props>(),{
12
+ size:32,
13
+ viewBox: "0 0 24 24",
14
+ })
15
+
16
+ const {size, viewBox, iconPath, extraClass} = toRefs(props)
17
+
18
+ </script>
19
+
20
+ <template>
21
+ <svg :width="size" :height="size" :viewBox="viewBox" color="currentColor" fill='currentColor' :class="`inline ${extraClass}`">
22
+ <path :d="iconPath"></path>
23
+ </svg>
24
+ </template>
25
+
@@ -0,0 +1,59 @@
1
+ <script setup lang="ts">
2
+ import {toRefs, ref} from 'vue'
3
+ import EpModal from '../interactions/EpModal.vue'
4
+ import EpIcon from '../basics/EpIcon.vue'
5
+ import { mdiArrowExpandAll } from '@mdi/js';
6
+
7
+ interface Props{
8
+ src:string;
9
+ alt?:string;
10
+ height?:string | number;
11
+ width?:string | number;
12
+ thumbnail?:boolean;
13
+ caption?:string;
14
+ bib?:string;
15
+ title?:string,
16
+ gallery?:boolean
17
+ cols?:string|number //posible type à venir => basis-1/12... basis-11/12 to basis-full
18
+ }
19
+
20
+ const props = withDefaults(defineProps<Props>(),{
21
+ alt:"Image snfas",
22
+ cols:"basis-4/12",
23
+ thumbnail:false,
24
+ })
25
+
26
+ const showModal = ref<boolean>(false)
27
+
28
+ const {src, alt, title, caption, thumbnail, bib, cols} = toRefs(props)
29
+
30
+ </script>
31
+
32
+ <template>
33
+ <div v-if="!thumbnail" class="flex">
34
+ <div :class="`mx-auto bg-white rounded-md overflow-hidden shadow-md ${cols}`">
35
+ <img class="object-cover object-center w-full" :src="src" :alt="alt" @click="showModal = true">
36
+ <div class="px-4 py-2">
37
+ <h2 class="text-2xl font-bold">{{title}}</h2>
38
+ <p class="text-gray-500 text-sm">{{caption}}</p>
39
+ <p class="text-gray-700 mt-4">{{bib}}</p>
40
+ </div>
41
+ </div>
42
+ </div>
43
+ <div v-if="thumbnail" class="relative group inline-block m-2">
44
+ <img class="w-36 h-36 object-cover object-center group-hover:opacity-50 " :src="src" :alt="alt" >
45
+ <div class="absolute top-0 left-0 w-36 h-36 bg-black opacity-0 transition-opacity duration-300 group-hover:opacity-50 cursor-pointer" @click="showModal = true">
46
+ <div class="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 text-white text-center">
47
+ <EpIcon :icon-path="mdiArrowExpandAll"></EpIcon>
48
+ </div>
49
+ </div>
50
+ </div>
51
+ <EpModal v-model="showModal">
52
+ <img class="object-cover object-center h-5/6 w-5/6 mx-auto" :src="src" :alt="alt">
53
+ <div class="px-4 py-2">
54
+ <h2 class="text-2xl font-bold">{{title}}</h2>
55
+ <p class="text-gray-500 text-sm">{{caption}}</p>
56
+ </div>
57
+ </EpModal>
58
+ </template>
59
+