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
@@ -0,0 +1,145 @@
1
+ <script setup lang="ts">
2
+
3
+ import EpBadge from "../basics/EpBadge.vue";
4
+ import { mdiLockOutline } from "@mdi/js";
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
+ }
26
+
27
+ const props = withDefaults(defineProps<Props>(), {
28
+ id: "0",
29
+ label: "label",
30
+ modelValue: "",
31
+ type: "text",
32
+ placeholder: "",
33
+ iconPath: "",
34
+ iconSize: "",
35
+ disabled: false,
36
+ });
37
+
38
+
39
+ </script>
40
+
41
+ <template>
42
+ <div class="relative h-10 w-72 min-w-[200px]">
43
+ <select :disabled="disabled" class="
44
+ peer
45
+ h-full
46
+ w-full
47
+ rounded-[7px]
48
+ border
49
+ border-neutral-300
50
+ border-t-transparent
51
+ bg-transparent
52
+ px-3
53
+ py-2.5
54
+ font-sans
55
+ text-sm
56
+ font-normal
57
+ text-blue-gray-700
58
+ outline
59
+ outline-0
60
+ transition-all
61
+ placeholder-shown:border
62
+ placeholder-shown:border-blue-gray-200
63
+ placeholder-shown:border-t-blue-gray-200
64
+ empty:!bg-red-500
65
+ focus:border-2
66
+ focus:border-blue-500
67
+ focus:border-t-transparent
68
+ focus:outline-4
69
+ placeholder-shown:outline-0
70
+ disabled:border-0
71
+ disabled:cursor-not-allowed
72
+ disabled:bg-neutral-200
73
+ focus:ring-0
74
+ ">
75
+ <option value="option">Choisissez une option</option>
76
+ <option value="vanderpoel">Van Der Poel</option>
77
+ <option value="vanaert">Van Aert</option>
78
+ <option value="pogacar">Pogacar</option>
79
+ <option value="evenepoel">Evenepoel</option>
80
+ </select>
81
+ <label class="before:content[' ']
82
+ after:content[' ']
83
+ pointer-events-none
84
+ absolute
85
+ left-0
86
+ border-red-500
87
+ -top-1.5
88
+ flex
89
+ h-full
90
+ w-full
91
+ select-none
92
+ text-[11px]
93
+ font-normal
94
+ leading-tight
95
+ text-blue-gray-400
96
+ transition-all
97
+ before:pointer-events-none
98
+ before:mt-[6.5px]
99
+ before:mr-1
100
+ before:box-border
101
+ before:block
102
+ before:h-1.5
103
+ before:w-2.5
104
+ before:rounded-tl-md
105
+ before:border-t
106
+ before:border-l
107
+ before:border-blue-gray-200
108
+ before:transition-all
109
+ after:pointer-events-none
110
+ after:mt-[6.5px]
111
+ after:ml-1
112
+ after:box-border
113
+ after:block
114
+ after:h-1.5
115
+ after:w-2.5
116
+ after:flex-grow
117
+ after:rounded-tr-md
118
+ after:border-t
119
+ after:border-r
120
+ after:border-blue-gray-200
121
+ after:transition-all
122
+ peer-placeholder-shown:text-sm
123
+ peer-placeholder-shown:leading-[3.75]
124
+ peer-placeholder-shown:text-blue-gray-500
125
+ peer-placeholder-shown:before:border-transparent
126
+ peer-placeholder-shown:after:border-transparent
127
+ peer-focus:text-[11px]
128
+ peer-focus:leading-tight
129
+ peer-focus:text-blue-500
130
+ peer-focus:before:border-t-2
131
+ peer-focus:before:border-l-2
132
+ peer-focus:before:border-blue-500
133
+ peer-focus:after:border-t-2
134
+ peer-focus:after:border-r-2
135
+ peer-focus:after:border-blue-500
136
+ peer-disabled:text-transparent
137
+ peer-disabled:before:border-transparent
138
+ peer-disabled:after:border-transparent
139
+ peer-disabled:peer-placeholder-shown:text-blue-gray-500
140
+ ">
141
+ Quel est le meilleur cycliste
142
+ </label>
143
+ <EpBadge :iconPath="mdiLockOutline" />
144
+ </div>
145
+ </template>
@@ -0,0 +1,58 @@
1
+ <script setup lang="ts">
2
+ import { toRefs } from "vue";
3
+
4
+ interface Props {
5
+ id?: string;
6
+ label?: string;
7
+ modelValue?: string;
8
+ type?: string;
9
+ placeholder?: string;
10
+ disabled?: boolean;
11
+ readonly?: boolean;
12
+ checked?: boolean;
13
+ }
14
+
15
+ const props = withDefaults(defineProps<Props>(), {
16
+ id: "toggle",
17
+ label: "label",
18
+ modelValue: "",
19
+ type: "checkbox",
20
+ placeholder: "",
21
+ disabled: false,
22
+ readonly: false,
23
+ checked: false,
24
+ });
25
+
26
+ const emit = defineEmits<{
27
+ (e: "update:modelValue", modelValue: string): void;
28
+ }>();
29
+
30
+ const {
31
+ id,
32
+ label,
33
+ type,
34
+ modelValue,
35
+ placeholder,
36
+ disabled,
37
+ readonly,
38
+ checked,
39
+ } = toRefs(props);
40
+ </script>
41
+
42
+ <template>
43
+ <div>
44
+ <input
45
+ :id="id"
46
+ :type="type"
47
+ :checked="checked"
48
+ class="form-checkbox mr-2 mt-[0rem] h-4 w-8 appearance-none rounded-full bg-neutral-200 border-neutral-300 before:pointer-events-none before:absolute before:h-3.5 before:w-3.5 before:rounded-full before:bg-transparent before:content-[''] after:absolute after:z-[2] after:-mt-[0rem] after:h-3.5 after:w-3.5 after:rounded-full after:border-none after:bg-neutral-50 after:shadow-[0_0px_3px_0_rgb(0_0_0_/_7%),_0_2px_2px_0_rgb(0_0_0_/_4%)] after:transition-[background-color_0.2s,transform_0.2s] after:content-[''] checked:bg-none checked:bg-blue-600 checked:after:absolute checked:after:z-[2] checked:after:-mt-[0px] checked:after:ml-[1.0625rem] checked:after:h-3.5 checked:after:w-3.5 checked:after:rounded-full checked:after:border-none checked:after:bg-neutral-100 checked:after:shadow-[0_3px_1px_-2px_rgba(0,0,0,0.2),_0_2px_2px_0_rgba(0,0,0,0.14),_0_1px_5px_0_rgba(0,0,0,0.12)] checked:after:transition-[background-color_0.2s,transform_0.2s] checked:after:content-[''] hover:cursor-pointer focus:outline-none focus:ring-0 focus:before:scale-75 focus:before:opacity-[0.12] focus:before:mt-[0.1rem] focus:before:shadow-[3px_-1px_0px_13px_rgba(0,0,0,0.6)] focus:before:transition-[box-shadow_0.2s,transform_0.2s] focus:after:absolute focus:after:z-[1] focus:after:block focus:after:h-3.5 focus:after:w-3.5 focus:after:-mt-[0rem] focus:after:rounded-full focus:after:content-[''] checked:focus:border-neutral-200 checked:focus:bg-blue-600 checked:focus:before:ml-[1rem] checked:focus:before:mt-[0.1rem] checked:focus:before:scale-75 checked:focus:before:shadow-[3px_-1px_0px_13px_#3b71ca] checked:focus:before:transition-[box-shadow_0.2s,transform_0.2s] dark:bg-neutral-600 dark:after:bg-neutral-400 dark:checked:bg-blue-600 dark:checked:after:bg-blue-600 dark:focus:before:shadow-[3px_-1px_0px_13px_rgba(255,255,255,0.4)] dark:checked:focus:before:shadow-[3px_-1px_0px_13px_#3b71ca] disabled:opacity-40 disabled:cursor-not-allowed"
49
+ role="switch"
50
+ :disabled="disabled"
51
+ />
52
+ <label class="inline-block pl-[0.15rem] hover:cursor-pointer" :for="id"
53
+ >Default switch checkbox input</label
54
+ >
55
+ </div>
56
+ </template>
57
+
58
+
@@ -0,0 +1,79 @@
1
+ <script setup lang="ts">
2
+ import { toRefs } from "vue";
3
+
4
+ import EpIcon from "../basics/EpIcon.vue";
5
+ import EpBadge from "../basics/EpBadge.vue";
6
+ import { mdiLockOutline } from "@mdi/js";
7
+
8
+ interface Props {
9
+ id?: string;
10
+ label?: string;
11
+ modelValue?: string;
12
+ type?:
13
+ | "text"
14
+ | "email"
15
+ | "url"
16
+ | "password"
17
+ | "number"
18
+ | "date"
19
+ | "search"
20
+ | "tel"
21
+ | "time";
22
+ placeholder?: string;
23
+ iconPath?: string;
24
+ iconSize?: string;
25
+ disabled?: boolean;
26
+ readonly?: boolean;
27
+ }
28
+
29
+ // text: mdiText
30
+ // email: mdiEmailOutline
31
+ // url: mdiLink
32
+ // password: mdiLockOutline
33
+ // number: mdiNumeric
34
+ // date: mdiCalendarMonthOutline
35
+ // search: mdiMagnify
36
+ // tel: mdiPhoneOutline
37
+ // time: mdiClockOutline
38
+
39
+ const props = withDefaults(defineProps<Props>(), {
40
+ id: "0",
41
+ label: "label",
42
+ modelValue: "",
43
+ type: "text",
44
+ placeholder: "",
45
+ iconPath: "",
46
+ iconSize: "",
47
+ disabled: false,
48
+ readonly: false,
49
+ });
50
+
51
+ const emit = defineEmits<{
52
+ (e: "update:modelValue", modelValue: string): void;
53
+ }>();
54
+
55
+ const {
56
+ id,
57
+ label,
58
+ type,
59
+ modelValue,
60
+ placeholder,
61
+ iconPath,
62
+ disabled,
63
+ readonly,
64
+ } = toRefs(props);
65
+ </script>
66
+
67
+ <template>
68
+ <div class="w-96">
69
+ <div class="relative w-full min-w-[200px]">
70
+ <textarea :disabled="disabled"
71
+ class="peer h-full min-h-[100px] w-full resize-none rounded-[7px] border border-neutral-300 bg-transparent px-3 py-2.5 font-sans text-sm font-normal text-neutral-700 outline outline-0 transition-all placeholder-shown:border placeholder-shown:border-neutral-300 placeholder-shown:border-t-neutral-200 focus:border-2 focus:border-blue-500 focus:border-t-transparent focus:outline-0 disabled:resize-none disabled:border-0 disabled:bg-neutral-100 disabled:cursor-not-allowed disabled:bg-neutral-200 focus:ring-0"
72
+ placeholder=" "></textarea>
73
+ <label
74
+ class="before:content[' '] after:content[' '] pointer-events-none absolute left-0 -top-1.5 flex h-full w-full select-none text-[11px] font-normal leading-tight text-blue-400 transition-all before:pointer-events-none before:mt-[6.5px] before:mr-1 before:box-border before:block before:h-1.5 before:w-2.5 before:rounded-tl-md before:border-t before:border-l before:border-neutral-300 before:transition-all after:pointer-events-none after:mt-[6.5px] after:ml-1 after:box-border after:block after:h-1.5 after:w-2.5 after:flex-grow after:rounded-tr-md after:border-t after:border-r after:border-neutral-300 after:transition-all peer-placeholder-shown:text-sm peer-placeholder-shown:leading-[3.75] peer-placeholder-shown:text-blue-500 peer-placeholder-shown:before:border-transparent peer-placeholder-shown:after:border-transparent peer-focus:text-[11px] peer-focus:leading-tight peer-focus:text-blue-500 peer-focus:before:border-t-2 peer-focus:before:border-l-2 peer-focus:before:border-blue-500 peer-focus:after:border-t-2 peer-focus:after:border-r-2 peer-focus:after:border-blue-500 peer-disabled:text-transparent peer-disabled:before:border-transparent peer-disabled:after:border-transparent peer-disabled:peer-placeholder-shown:text-blue-500">
75
+ Message
76
+ </label>
77
+ </div>
78
+ </div>
79
+ </template>
@@ -0,0 +1,97 @@
1
+ <script setup lang="ts">
2
+ import { toRefs } from "vue";
3
+
4
+ interface Props {
5
+ id?: string;
6
+ label?: string;
7
+ modelValue?: string;
8
+ type?: string;
9
+ placeholder?: string;
10
+ disabled?: boolean;
11
+ readonly?: boolean;
12
+ checked?: boolean;
13
+ }
14
+
15
+ const props = withDefaults(defineProps<Props>(), {
16
+ id: "toggle",
17
+ label: "label",
18
+ modelValue: "",
19
+ type: "checkbox",
20
+ placeholder: "",
21
+ disabled: false,
22
+ readonly: false,
23
+ checked: false,
24
+ });
25
+
26
+ const emit = defineEmits<{
27
+ (e: "update:modelValue", modelValue: string): void;
28
+ }>();
29
+
30
+ const {
31
+ id,
32
+ label,
33
+ type,
34
+ modelValue,
35
+ placeholder,
36
+ disabled,
37
+ readonly,
38
+ checked,
39
+ } = toRefs(props);
40
+ </script>
41
+
42
+ <template>
43
+ <!-- <div>
44
+ <label :for="id" class="flex items-center cursor-pointer relative mb-4">
45
+ <input :type="type" :id="id" class="sr-only form-checkbox h-6 w-6 text-indigo-600 transition duration-150 ease-in-out checked:bg-indigo-600 checked:border-transparent checked:text-white" :checked="checked" />
46
+ <div
47
+ class="
48
+ toggle-bg
49
+ bg-gray-200
50
+ border-2
51
+ border-gray-200
52
+ h-6
53
+ w-11
54
+ rounded-full
55
+ after:absolute
56
+ after:top-0.5
57
+ after:left-0.5
58
+ after:bg-white
59
+ after:border-gray-400
60
+ after:rounded-full
61
+ after:h-5
62
+ after:w-5
63
+ after:transition
64
+ after:translate-x-0
65
+ after:checked:translate-x-full
66
+ checked:after:border-white
67
+ "
68
+ ></div>
69
+ <span class="ml-3 text-gray-900 text-base font-medium">Toggle me</span>
70
+ </label>
71
+ </div> -->
72
+ <div>
73
+ <input
74
+ :id="id"
75
+ :type="type"
76
+ :checked="checked"
77
+ class="form-checkbox mr-2 mt-[0rem] h-4 w-8 appearance-none rounded-full bg-neutral-200 border-neutral-300 before:pointer-events-none before:absolute before:h-3.5 before:w-3.5 before:rounded-full before:bg-transparent before:content-[''] after:absolute after:z-[2] after:-mt-[0rem] after:h-3.5 after:w-3.5 after:rounded-full after:border-none after:bg-neutral-50 after:shadow-[0_0px_3px_0_rgb(0_0_0_/_7%),_0_2px_2px_0_rgb(0_0_0_/_4%)] after:transition-[background-color_0.2s,transform_0.2s] after:content-['']
78
+
79
+ checked:bg-none checked:bg-blue-600 checked:after:absolute checked:after:z-[2] checked:after:-mt-[0px] checked:after:ml-[1.0625rem] checked:after:h-3.5 checked:after:w-3.5 checked:after:rounded-full checked:after:border-none checked:after:bg-neutral-100 checked:after:shadow-[0_3px_1px_-2px_rgba(0,0,0,0.2),_0_2px_2px_0_rgba(0,0,0,0.14),_0_1px_5px_0_rgba(0,0,0,0.12)] checked:after:transition-[background-color_0.2s,transform_0.2s] checked:after:content-['']
80
+
81
+ hover:cursor-pointer focus:outline-none focus:ring-0
82
+
83
+ focus:before:scale-75 focus:before:opacity-[0.12] focus:before:mt-[0.1rem] focus:before:shadow-[3px_-1px_0px_13px_rgba(0,0,0,0.6)] focus:before:transition-[box-shadow_0.2s,transform_0.2s] focus:after:absolute focus:after:z-[1] focus:after:block focus:after:h-3.5 focus:after:w-3.5 focus:after:-mt-[0rem] focus:after:rounded-full focus:after:content-['']
84
+
85
+ checked:focus:border-neutral-200 checked:focus:bg-blue-600 checked:focus:before:ml-[1rem] checked:focus:before:mt-[0.1rem] checked:focus:before:scale-75 checked:focus:before:shadow-[3px_-1px_0px_13px_#3b71ca] checked:focus:before:transition-[box-shadow_0.2s,transform_0.2s]
86
+
87
+ dark:bg-neutral-600 dark:after:bg-neutral-400 dark:checked:bg-blue-600 dark:checked:after:bg-blue-600 dark:focus:before:shadow-[3px_-1px_0px_13px_rgba(255,255,255,0.4)] dark:checked:focus:before:shadow-[3px_-1px_0px_13px_#3b71ca] disabled:opacity-40 disabled:cursor-not-allowed"
88
+ role="switch"
89
+ :disabled="disabled"
90
+ />
91
+ <label class="inline-block pl-[0.15rem] hover:cursor-pointer" :for="id"
92
+ >Default switch checkbox input</label
93
+ >
94
+ </div>
95
+ </template>
96
+
97
+
@@ -0,0 +1,88 @@
1
+ <script setup lang="ts">
2
+ import { ref, toRefs, onMounted, computed } from "vue";
3
+ import EpIcon from "../basics/EpIcon.vue";
4
+ import useColors from "../../composables/useColors";
5
+ ///types with Capital letters... object with styles same name in lowercase
6
+ import { TypeAccordeon, typeAccordeon } from "../../types/Accordeon";
7
+ interface Props {
8
+ title?: string|null;
9
+ type?: TypeAccordeon;
10
+ icon?: string|null;
11
+ open?: boolean;
12
+ outlined?:boolean;
13
+ }
14
+
15
+ const props = withDefaults(defineProps<Props>(), {
16
+ title: 'En savoir plus',
17
+ open: false,
18
+ type:'base',
19
+ outlined:false,
20
+ });
21
+
22
+
23
+ const showDiv = ref(props.open);
24
+ const collapsible = ref();
25
+
26
+ const isOutlined = computed(()=>{
27
+ if(props.outlined){
28
+ return 'outlined'
29
+ }
30
+ return 'default'
31
+ })
32
+
33
+ const stylesHeader = computed(()=>{
34
+ return `flex justify-between items-center px-4 py-2 cursor-pointer ${typeAccordeon[props.type]?.[isOutlined.value]}`
35
+ })
36
+
37
+ const contentStyles = computed(()=>{
38
+ return `px-4 ${useColors('bg', props.type + 'light')}`
39
+ })
40
+
41
+ onMounted(() => {
42
+ var content = collapsible.value
43
+ if (props.open) {
44
+ content.style.maxHeight = content.scrollHeight + "px";
45
+ }
46
+ })
47
+
48
+ function toggleDivVisibility() {
49
+ showDiv.value = !showDiv.value;
50
+ var content = collapsible.value
51
+ if (content.style.maxHeight) {
52
+ content.style.maxHeight = null;
53
+ } else {
54
+ content.style.maxHeight = content.scrollHeight + "px";
55
+ }
56
+ //add transition
57
+ if(!content.style.transition){
58
+ content.style.transition = 'max-height 0.2s ease-out';
59
+ }
60
+ }
61
+
62
+
63
+ const { title, icon } = toRefs(props)
64
+ </script>
65
+
66
+ <template>
67
+ <div :class="stylesHeader" @click="toggleDivVisibility">
68
+ <h3 class="text-lg"><EpIcon v-if="icon" :icon-path="icon"></EpIcon> {{ title }}</h3>
69
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"
70
+ :class="`mx-4 my-3 h-6 w-6 transition-all duration-200 ${showDiv ? 'rotate-45' : ''}`">
71
+ <path stroke-linecap="round" stroke-linejoin="round" d="M12 6v12m6-6H6" />
72
+ </svg>
73
+ </div>
74
+ <div ref="collapsible" :class="`${contentStyles} content`">
75
+ <div class="py-4">
76
+
77
+ <slot></slot>
78
+
79
+ </div>
80
+ </div>
81
+ </template>
82
+
83
+ <style scoped>
84
+ .content {
85
+ max-height: 0;
86
+ overflow: hidden;
87
+ }
88
+ </style>
@@ -0,0 +1,12 @@
1
+ <script setup lang="ts">
2
+
3
+ </script>
4
+
5
+ <template>
6
+ <div class="p-12 bg-warning-light w-[50%] mx-auto border-2 border-warning">
7
+ <p class="text-center text-error font-bold uppercase">In progress</p>
8
+ </div>
9
+ </template>
10
+
11
+
12
+
@@ -0,0 +1,117 @@
1
+ <script setup lang="ts">
2
+ import { computed, toRefs } from 'vue';
3
+ import EpCard from '../basics/EpCard.vue'
4
+
5
+ const size = {
6
+ compact:"w-[40%]",
7
+ default:"w-[75%]",
8
+ comfortable:"w-[85%]"
9
+ }
10
+
11
+ type Size = keyof typeof size;
12
+
13
+ interface Props {
14
+ modelValue?:boolean;
15
+ title?: string | null;
16
+ subtitle?: string | null;
17
+ icon?: string | null;
18
+ persistent?:boolean;
19
+ size?:Size;
20
+ }
21
+
22
+ const props = withDefaults(defineProps<Props>(), {
23
+ modelValue:false,
24
+ title: null,
25
+ subtitle: null,
26
+ icon: null,
27
+ persistent:false,
28
+ size:"default"
29
+ })
30
+
31
+ const emit = defineEmits<{
32
+ (e:"update:modelValue", modelValue:boolean):void
33
+ }>()
34
+
35
+
36
+ const closeModal = ():void => {
37
+ if(!props.persistent){
38
+ emit('update:modelValue', false)
39
+ }
40
+ }
41
+
42
+ const sizeModal = computed(()=>{
43
+ return size[props.size];
44
+ })
45
+
46
+ const {title, subtitle, icon} = toRefs(props)
47
+
48
+
49
+
50
+ ///const slots = useSlots() // import useSlots
51
+ //console.log(slots)
52
+
53
+ </script>
54
+
55
+ <template>
56
+ <Teleport to="body">
57
+ <Transition name="modal">
58
+ <div v-if="modelValue" class="modal-mask" @click.self="closeModal">
59
+ <div :class="`modal-container ${sizeModal}`">
60
+ <div class="mx-auto">
61
+ <EpCard :title="title" :subtitle="subtitle" :icon="icon">
62
+
63
+ <slot></slot>
64
+ </EpCard>
65
+ </div>
66
+ </div>
67
+ </div>
68
+ </Transition>
69
+ </Teleport>
70
+ </template>
71
+
72
+ <style>
73
+ .modal-mask {
74
+ position: fixed;
75
+ z-index: 9998;
76
+ top: 0;
77
+ left: 0;
78
+ width: 100%;
79
+ height: 100%;
80
+ background-color: rgba(0, 0, 0, 0.5);
81
+ display: flex;
82
+ transition: opacity 0.3s ease;
83
+ }
84
+
85
+ .modal-container {
86
+ margin: auto;
87
+ transition: all 0.3s ease;
88
+ z-index: 9999;
89
+ }
90
+
91
+ .modal-header h3 {
92
+ margin-top: 0;
93
+ color: #42b983;
94
+ }
95
+
96
+ .modal-body {
97
+ margin: 20px 0;
98
+ }
99
+
100
+ .modal-default-button {
101
+ float: right;
102
+ }
103
+
104
+ .modal-enter-from {
105
+ opacity: 0;
106
+ }
107
+
108
+ .modal-leave-to {
109
+ opacity: 0;
110
+ }
111
+
112
+ .modal-enter-from .modal-container,
113
+ .modal-leave-to .modal-container {
114
+ -webkit-transform: scale(1.1);
115
+ transform: scale(1.1);
116
+ }
117
+ </style>
@@ -0,0 +1,8 @@
1
+ <script setup lang="ts">
2
+ </script>
3
+
4
+ <template>
5
+ <div class="p-12 bg-warning-light w-[50%] mx-auto border-2 border-warning">
6
+ <p class="text-center text-error font-bold uppercase">In progress</p>
7
+ </div>
8
+ </template>
@@ -0,0 +1,10 @@
1
+ <script setup lang="ts">
2
+
3
+
4
+ </script>
5
+
6
+ <template>
7
+ <div class="p-12 bg-warning-light w-[50%] mx-auto border-2 border-warning">
8
+ <p class="text-center text-error font-bold uppercase">In progress</p>
9
+ </div>
10
+ </template>