@exakt/ui 0.0.3 → 0.0.4

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.
package/README.md CHANGED
@@ -3,7 +3,7 @@ Get your module up and running quickly.
3
3
 
4
4
  Find and replace all on all files (CMD+SHIFT+F):
5
5
  - Name: exakt
6
- - Package name: exakt-ui
6
+ - Package name: @exakt/ui
7
7
  - Description: My new Nuxt module
8
8
  -->
9
9
 
@@ -28,25 +28,25 @@ a simple nuxt ui library focused on doing as much as possible with css
28
28
 
29
29
  ## Quick Setup
30
30
 
31
- 1. Add `exakt-ui` dependency to your project
31
+ 1. Add `@exakt/ui` dependency to your project
32
32
 
33
33
  ```bash
34
34
  # Using pnpm
35
- pnpm add -D exakt-ui
35
+ pnpm add -D @exakt/ui
36
36
 
37
37
  # Using yarn
38
- yarn add --dev exakt-ui
38
+ yarn add --dev @exakt/ui
39
39
 
40
40
  # Using npm
41
- npm install --save-dev exakt-ui
41
+ npm install --save-dev @exakt/ui
42
42
  ```
43
43
 
44
- 2. Add `exakt-ui` to the `modules` section of `nuxt.config.ts`
44
+ 2. Add `@exakt/ui` to the `modules` section of `nuxt.config.ts`
45
45
 
46
46
  ```js
47
47
  export default defineNuxtConfig({
48
48
  modules: [
49
- 'exakt-ui'
49
+ '@exakt/ui'
50
50
  ]
51
51
  })
52
52
  ```
@@ -80,14 +80,14 @@ npm run release
80
80
  ```
81
81
 
82
82
  <!-- Badges -->
83
- [npm-version-src]: https://img.shields.io/npm/v/exakt-ui/latest.svg?style=flat&colorA=18181B&colorB=28CF8D
84
- [npm-version-href]: https://npmjs.com/package/exakt-ui
83
+ [npm-version-src]: https://img.shields.io/npm/v/@exakt/ui/latest.svg?style=flat&colorA=18181B&colorB=28CF8D
84
+ [npm-version-href]: https://npmjs.com/package/@exakt/ui
85
85
 
86
- [npm-downloads-src]: https://img.shields.io/npm/dm/exakt-ui.svg?style=flat&colorA=18181B&colorB=28CF8D
87
- [npm-downloads-href]: https://npmjs.com/package/exakt-ui
86
+ [npm-downloads-src]: https://img.shields.io/npm/dm/@exakt/ui.svg?style=flat&colorA=18181B&colorB=28CF8D
87
+ [npm-downloads-href]: https://npmjs.com/package/@exakt/ui
88
88
 
89
- [license-src]: https://img.shields.io/npm/l/exakt-ui.svg?style=flat&colorA=18181B&colorB=28CF8D
90
- [license-href]: https://npmjs.com/package/exakt-ui
89
+ [license-src]: https://img.shields.io/npm/l/@exakt/ui.svg?style=flat&colorA=18181B&colorB=28CF8D
90
+ [license-href]: https://npmjs.com/package/@exakt/ui
91
91
 
92
92
  [nuxt-src]: https://img.shields.io/badge/Nuxt-18181B?logo=nuxt.js
93
93
  [nuxt-href]: https://nuxt.com
package/dist/module.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "exakt-ui",
3
3
  "configKey": "exakt",
4
- "version": "0.0.3"
4
+ "version": "0.0.4"
5
5
  }
package/dist/module.mjs CHANGED
@@ -40,7 +40,7 @@ const module = defineNuxtModule({
40
40
  SCSSvariables += `$root-${key}: ${value}; `;
41
41
  }
42
42
  for (const [key, value] of Object.entries(options.breakpoints)) {
43
- CSSvariables += `--e-${key}-screen-breakpoint: ${value}; `;
43
+ SCSSvariables += `$e-${key}-screen-breakpoint: ${value}; `;
44
44
  }
45
45
  CSSvariables += `--e-font-family: ${options.font}; `;
46
46
  CSSvariables += `--e-rounded-border-radius: ${options.borderRadius}; `;
@@ -66,14 +66,8 @@ const module = defineNuxtModule({
66
66
  }
67
67
  });
68
68
  });
69
- await fs.promises.copyFile(
70
- resolver.resolve("./runtime/css/main.scssx"),
71
- resolver.resolve("../node_modules/.cache/exakt-ui/main.scss")
72
- );
73
- nuxt.options.css.push(
74
- resolver.resolve("../node_modules/.cache/exakt-ui/main.scss")
75
- );
76
- nuxt.options.css.push(resolver.resolve("./runtime/css/util.css"));
69
+ nuxt.options.css.push(resolver.resolve("./runtime/css/main.scss"));
70
+ nuxt.options.css.push(resolver.resolve("./runtime/css/util.scss"));
77
71
  nuxt.options.css.push(
78
72
  resolver.resolve("../node_modules/.cache/exakt-ui/variables.css")
79
73
  );
@@ -1,7 +1,10 @@
1
1
  <template>
2
2
  <div class="flex-center color-red">
3
- <e-icon :icon="mdiAlert" size="19" class="mr-2"></e-icon
4
- ><small><slot /></small>
3
+ <e-icon
4
+ :icon="mdiAlert"
5
+ size="19"
6
+ class="mr-2"
7
+ /><small><slot /></small>
5
8
  </div>
6
9
  </template>
7
10
  <script setup lang="ts">
@@ -1,48 +1,52 @@
1
1
  <template>
2
-
3
- <div class="title-bar">
4
- <e-progress-linear :model-value="props.loading" />
5
- <div class="pf-wrap">
6
- <slot name="left"></slot>
7
- </div>
8
- <slot name="center"></slot>
9
-
10
- <div class="pf-wrap">
11
- <slot name="right"></slot>
12
- </div>
2
+ <div class="title-bar">
3
+ <e-progress-linear :model-value="props.loading" />
4
+ <div class="pf-wrap">
5
+ <slot name="left" />
13
6
  </div>
7
+ <slot name="center" />
14
8
 
15
- <div class="bar-container">
16
- <e-container class="bar-e-container" :forceFullWidth="true">
17
- <div class="rounded bar">
18
- <e-progress-linear :model-value="props.loading" class="md-and-up-only" />
19
-
20
- <div class="md-and-up-only flex-stretch">
21
- <slot name="center"></slot>
22
- </div>
23
- <slot name="nav-items"></slot>
24
- <div class="md-and-up-only flex-stretch">
25
- <slot name="right" class="fullwidth"></slot>
26
- </div>
27
- </div>
28
- </e-container>
9
+ <div class="pf-wrap">
10
+ <slot name="right" />
29
11
  </div>
12
+ </div>
13
+
14
+ <div class="bar-container">
15
+ <e-container
16
+ class="bar-e-container"
17
+ :force-full-width="true"
18
+ >
19
+ <div class="rounded bar">
20
+ <e-progress-linear
21
+ :model-value="props.loading"
22
+ class="md-and-up-only"
23
+ />
30
24
 
25
+ <div class="md-and-up-only flex-stretch">
26
+ <slot name="center" />
27
+ </div>
28
+ <slot name="nav-items" />
29
+ <div class="md-and-up-only flex-stretch">
30
+ <slot
31
+ name="right"
32
+ class="fullwidth"
33
+ />
34
+ </div>
35
+ </div>
36
+ </e-container>
37
+ </div>
31
38
  </template>
32
39
  <script setup lang="ts">
33
-
34
40
  const props = withDefaults(
35
41
  defineProps<{
36
- loading?: boolean
42
+ loading?: boolean;
37
43
  }>(),
38
- { loading:false }
44
+ { loading: false }
39
45
  );
40
46
 
41
- const { $store, $platform } = useNuxtApp();
42
-
43
47
  </script>
44
48
 
45
- <style scoped>
49
+ <style lang="scss" scoped>
46
50
  .title-bar {
47
51
  display: none;
48
52
  position: relative;
@@ -61,8 +65,10 @@ const { $store, $platform } = useNuxtApp();
61
65
  .bar-container {
62
66
  width: 100%;
63
67
  top: 1rem;
68
+
64
69
  height: 4rem;
65
70
  padding-bottom: 1rem;
71
+
66
72
  display: flex;
67
73
  justify-content: center;
68
74
  position: sticky;
@@ -70,7 +76,7 @@ const { $store, $platform } = useNuxtApp();
70
76
  z-index: 4;
71
77
  }
72
78
 
73
- @media screen and (max-width: var(--e-md-screen-breakpoint)) {
79
+ @media screen and (max-width: ($e-md-screen-breakpoint)) {
74
80
  .title-bar {
75
81
  display: unset;
76
82
  top: 0px;
@@ -85,15 +91,18 @@ const { $store, $platform } = useNuxtApp();
85
91
  align-content: stretch;
86
92
  justify-items: space-between;
87
93
  align-items: stretch;
94
+
95
+ .pf-wrap {
96
+ display: flex;
97
+ align-items: stretch;
98
+ width: 5rem;
99
+ }
88
100
  }
89
- .title-bar .pf-wrap {
90
- display: flex;
91
- align-items: stretch;
92
- width: 5rem;
93
- }
101
+
94
102
  .md-and-up-only {
95
103
  display: none;
96
104
  }
105
+
97
106
  .bar-container {
98
107
  bottom: 0px;
99
108
  left: 0px;
@@ -102,15 +111,18 @@ const { $store, $platform } = useNuxtApp();
102
111
  padding: 0px;
103
112
  z-index: 3;
104
113
  }
114
+
105
115
  .bar-e-container {
106
116
  padding: 0px;
107
117
  margin: 0px;
108
118
  }
119
+
109
120
  .bar {
110
121
  border-radius: 0px;
111
122
  width: 100%;
112
123
  height: 100%;
124
+
113
125
  padding-bottom: calc(env(safe-area-insee-bottom));
114
126
  }
115
127
  }
116
- </style>
128
+ </style>
@@ -11,7 +11,12 @@
11
11
  :src="src"
12
12
  border-radius="100%"
13
13
  />
14
- <div v-else><e-icon :size="size" :icon="mdiAccountCircle"></e-icon></div>
14
+ <div v-else>
15
+ <e-icon
16
+ :size="size"
17
+ :icon="mdiAccountCircle"
18
+ />
19
+ </div>
15
20
  </div>
16
21
  </template>
17
22
  <script setup lang="ts">
@@ -22,7 +27,7 @@ defineProps<{
22
27
  src?: string;
23
28
  }>();
24
29
  </script>
25
- <style scoped>
30
+ <style lang="scss" scoped>
26
31
  .avatar {
27
32
  border-radius: 100%;
28
33
  width: fie-content;
@@ -1,5 +1,9 @@
1
1
  <template>
2
- <button class="e-btn " :style="{ width, justifyContent: justifyWrapper }" :type="type" :disabled="disabled || loading"
2
+ <button
3
+ class="e-btn "
4
+ :style="{ width, justifyContent: justifyWrapper }"
5
+ :type="type"
6
+ :disabled="disabled || loading"
3
7
  :class="{
4
8
  active,
5
9
  inactive,
@@ -12,14 +16,24 @@
12
16
  fab,
13
17
  loadingGradient,
14
18
  colored: background !== 'transparent' || color || solid,
15
- }">
16
- <e-progress-gradient class="prog-grad" color="primary" v-if="loading && loadingGradient" />
19
+ }"
20
+ >
21
+ <e-progress-gradient
22
+ v-if="loading && loadingGradient"
23
+ class="prog-grad"
24
+ color="primary"
25
+ />
17
26
 
18
- <div ref="content" class="e-btn-content" :style="contentStyles">
19
-
20
- <div class="load-overlay" v-if="loading && !loadingGradient">
27
+ <div
28
+ ref="content"
29
+ class="e-btn-content"
30
+ :style="contentStyles"
31
+ >
32
+ <div
33
+ v-if="loading && !loadingGradient"
34
+ class="load-overlay"
35
+ >
21
36
  <e-loading-spinner />
22
-
23
37
  </div>
24
38
  <span class="actual-content flex-center">
25
39
 
@@ -46,7 +60,6 @@ const props = withDefaults(
46
60
  loadingGradient?: boolean;
47
61
  fab?: boolean;
48
62
  disabled?: boolean;
49
- to?: string;
50
63
  type?: "button" | "submit" | "reset";
51
64
  }>(),
52
65
  { type: "button", background: "primary", solid: true }
@@ -119,7 +132,7 @@ const hoverColor = computed(() => {
119
132
  return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 0.9)`;
120
133
  });
121
134
  </script>
122
- <style scoped>
135
+ <style lang="scss" scoped>
123
136
  .prog-grad {
124
137
  position: absolute;
125
138
  top: 0;
@@ -141,6 +154,7 @@ const hoverColor = computed(() => {
141
154
  background: rgba(0, 0, 0, 0);
142
155
  display: flex;
143
156
  font-size: 1rem;
157
+
144
158
  justify-content: center;
145
159
  align-content: center;
146
160
  align-items: center;
@@ -154,65 +168,85 @@ const hoverColor = computed(() => {
154
168
  cursor: pointer;
155
169
  position: relative;
156
170
  flex-shrink: 1;
171
+
157
172
  transition: background 0.4s, color 0.3s, opacity 0.4s;
173
+
158
174
  font-family: var(--e-font-family);
159
- }
160
- .e-btn.loading {
161
- pointer-events: none;
162
- }
163
- .e-btn.loading.loadingGradient {
164
- background: rgba(0, 0, 0, 0) !important;
165
- color: var(--e-color-dark) !important;
166
- transition: background 0.8s, color 0.5s, opacity 0.4s;
167
- }
168
- .e-btn.loading.loadingGradient .actual-content {
169
- opacity: 0.8;
170
- transition: opacity 0.5s;
171
- }
172
- .e-btn.loading .actual-content {
173
- opacity: 0;
174
- }
175
- .e-btn:hover {
176
- background: rgba(98, 98, 98, 0.15);
177
- }
178
- .e-btn:active .e-btn-content {
179
- transform: scale(0.85);
180
- }
181
- .e-btn.fab {
182
- position: fixed;
183
- right: 5rem;
184
- bottom: 5rem;
185
- aspect-ratio: 1;
186
- border-radius: 100%;
187
- height: 4.2rem;
188
- z-index: 3;
189
- }
190
- .e-btn.block {
191
- width: 100%;
192
- }
193
- .e-btn.colored {
194
- background-color: v-bind(parsedBackgroundProp);
195
- color: v-bind(textColor);
196
- }
197
- .e-btn.colored:hover {
198
- background-color: v-bind(hoverColor);
199
- }
200
- .e-btn.solid {
201
- padding: 0.7rem 0.9rem;
202
- }
203
- .e-btn.active {
204
- color: var(--e-color-primary);
205
- }
206
- .e-btn.inactive {
207
- color: var(--e-color-dark);
208
- opacity: 80%;
175
+
176
+ &.loading {
177
+ pointer-events: none;
178
+
179
+ &.loadingGradient {
180
+ background: rgba(0, 0, 0, 0) !important;
181
+ color: var(--e-color-dark) !important;
182
+ transition: background 0.8s, color 0.5s, opacity 0.4s;
183
+
184
+ .actual-content {
185
+
186
+ opacity: 0.8;
187
+ transition: opacity 0.5s;;
188
+ }
189
+ }
190
+
191
+ .actual-content {
192
+ opacity: 0;
193
+ }
194
+
195
+ }
196
+
197
+ &:hover {
198
+ background: rgba(98, 98, 98, 0.15);
199
+ }
200
+
201
+ &:active {
202
+ .e-btn-content {
203
+ transform: scale(0.85);
204
+ }
205
+ }
206
+
207
+ &.fab {
208
+ position: fixed;
209
+ right: 5rem;
210
+ bottom: 5rem;
211
+ aspect-ratio: 1;
212
+ border-radius: 100%;
213
+ height: 4.2rem;
214
+ z-index: 3;
215
+ }
216
+
217
+ &.block {
218
+ width: 100%;
219
+ }
220
+
221
+ &.colored {
222
+ background-color: v-bind(parsedBackgroundProp);
223
+ color: v-bind(textColor);
224
+
225
+ &:hover {
226
+ background-color: v-bind(hoverColor);
227
+ }
228
+ }
229
+
230
+ &.solid {
231
+ padding: 0.7rem 0.9rem;
232
+ }
233
+
234
+ &.active {
235
+ color: var(--e-color-primary);
236
+ }
237
+
238
+ &.inactive {
239
+ color: var(--e-color-dark);
240
+ opacity: 80%;
241
+ }
209
242
  }
210
243
 
211
- @media screen and (max-width: var(--e-md-screen-breakpoint)) {
244
+ @media screen and (max-width: $e-md-screen-breakpoint) {
212
245
  .e-btn.fab {
213
246
  right: 1rem;
214
247
  }
215
248
  }
249
+
216
250
  .loading-spinner {
217
251
  max-height: 1rem;
218
252
  }
@@ -1,6 +1,12 @@
1
1
  <template>
2
- <div class="container" :class="{ 'no-btn-padding': noBtnPadding }">
3
- <div class="content" :class="{ forceFullWidth }">
2
+ <div
3
+ class="container"
4
+ :class="{ 'no-btn-padding': noBtnPadding }"
5
+ >
6
+ <div
7
+ class="content"
8
+ :class="{ forceFullWidth }"
9
+ >
4
10
  <slot />
5
11
  </div>
6
12
  </div>
@@ -8,32 +14,34 @@
8
14
  <script setup lang="ts">
9
15
  defineProps(["noBtnPadding", "forceFullWidth"]);
10
16
  </script>
11
- <style scoped>
17
+ <style lang="scss" scoped>
12
18
  .content {
13
19
  word-wrap: break-word;
20
+
14
21
  width: 95%;
15
- }
16
- @media (max-width: var(--e-md-screen-breakpoint)) {
17
- .content.forceFullWidth {
18
- width: 100%;
22
+
23
+ @media (max-width: $e-md-screen-breakpoint) {
24
+ &.forceFullWidth {
25
+ width: 100%;
26
+ }
19
27
  }
20
- }
21
- @media (min-width: var(--e-md-screen-breakpoint)) {
22
- .content {
23
- width: calc(85% - 0rem);
28
+
29
+ $padding: 0rem;
30
+
31
+ @media (min-width: $e-md-screen-breakpoint) {
32
+ width: calc(85% - $padding);
24
33
  }
25
- }
26
- @media (min-width: var(--e-l-screen-breakpoint)) {
27
- .content {
28
- width: calc(65% - 0rem);
34
+
35
+ @media (min-width: var(--e-l-screen-breakpoint)) {
36
+ width: calc(65% - $padding);
29
37
  }
30
38
  }
31
39
 
32
40
  .container.no-btn-padding {
33
41
  padding: 0px 0px;
34
- }
35
- .container.no-btn-padding .content {
36
- margin: 0px 0px;
42
+ .content {
43
+ margin: 0px 0px;
44
+ }
37
45
  }
38
46
 
39
47
  .container {
@@ -43,6 +51,7 @@ defineProps(["noBtnPadding", "forceFullWidth"]);
43
51
  justify-content: center;
44
52
  word-wrap: break-word;
45
53
  box-sizing: border-box; /* Opera/IE 8+ */
54
+
46
55
  padding: 0px var(--e-core-padding-x);
47
56
  }
48
57
  </style>
@@ -1,10 +1,16 @@
1
1
  <template>
2
2
  <div>
3
- <e-focus-sheet :model-value="modelValue" :opaque-on-desktop="true"
4
- @update:model-value="emit('update:modelValue', $event)" />
3
+ <e-focus-sheet
4
+ :model-value="modelValue"
5
+ :opaque-on-desktop="true"
6
+ @update:model-value="emit('update:modelValue', $event)"
7
+ />
5
8
 
6
9
  <e-tr-scale :multiplier="1.3">
7
- <div class="dialog-wrap flex-center" v-if="modelValue">
10
+ <div
11
+ v-if="modelValue"
12
+ class="dialog-wrap flex-center"
13
+ >
8
14
  <div class="dialog rounded px-6 pe-6 pb-2">
9
15
  <div class="mb-4">
10
16
  <h2 class="ma-0 pa-0">
@@ -13,7 +19,7 @@
13
19
  </div>
14
20
  <slot />
15
21
  <div class="button-bar me-4 mb-3">
16
- <slot name="buttons"></slot>
22
+ <slot name="buttons" />
17
23
  </div>
18
24
  </div>
19
25
  </div>
@@ -28,7 +34,7 @@ const props = defineProps<{
28
34
  const emit = defineEmits(["update:modelValue"]);
29
35
  const state = reactive({ active: false });
30
36
  </script>
31
- <style scoped>
37
+ <style scoped lang="scss">
32
38
  .dialog-wrap {
33
39
  position: fixed;
34
40
  pointer-events: none;
@@ -48,17 +54,19 @@ const state = reactive({ active: false });
48
54
  overflow: clip;
49
55
  }
50
56
 
51
- @media (max-width: var(--e-md-screen-breakpoint)) {
57
+ @media (max-width: $e-md-screen-breakpoint) {
52
58
  .dialog {
53
59
  width: 100%;
54
60
  max-width: 100vw;
55
61
  min-width: unset;
56
62
  }
63
+
57
64
  .dialog-wrap {
58
65
  align-content: flex-end;
59
66
  align-items: flex-end;
60
67
  }
61
68
  }
69
+
62
70
  .button-bar {
63
71
  display: flex;
64
72
  align-items: stretch;