webcake-ui-kit 1.1.4 → 1.1.6

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "webcake-ui-kit",
3
- "version": "1.1.4",
3
+ "version": "1.1.6",
4
4
  "description": "UI Kit for Vue 2 && 3 - Pure Options API",
5
5
  "main": "src/index.js",
6
6
  "module": "src/index.js",
@@ -53,7 +53,7 @@ export default {
53
53
  size: {
54
54
  type: String,
55
55
  default: 'md',
56
- validator: v => ['xs', 'sm', 'md', 'lg', 'xl'].includes(v)
56
+ validator: v => ['mini', 'xs', 'sm', 'md', 'lg', 'xl'].includes(v)
57
57
  },
58
58
  roundness: {
59
59
  type: String,
@@ -34,7 +34,7 @@
34
34
  /* ============================================================
35
35
  Sizes
36
36
  ============================================================ */
37
- .ui-btn--xs {
37
+ .ui-btn--mini {
38
38
  height: 24px;
39
39
  padding: var(--spacing-3) var(--spacing-xs);
40
40
  gap: var(--spacing-6);
@@ -42,6 +42,22 @@
42
42
  line-height: var(--paragraph-mini-line-height);
43
43
  letter-spacing: var(--paragraph-mini-letter-spacing);
44
44
  }
45
+
46
+ .ui-btn--mini .ui-btn__icon,
47
+ .ui-btn--mini ::v-deep svg {
48
+ width: 16px;
49
+ height: 16px;
50
+ }
51
+
52
+ .ui-btn--xs {
53
+ height: 28px;
54
+ padding: var(--spacing-2xs) var(--spacing-xs);
55
+ gap: var(--spacing-6);
56
+ font-size: var(--paragraph-mini-font-size);
57
+ line-height: var(--paragraph-mini-line-height);
58
+ letter-spacing: var(--paragraph-mini-letter-spacing);
59
+ }
60
+
45
61
  .ui-btn--xs .ui-btn__icon,
46
62
  .ui-btn--xs ::v-deep svg {
47
63
  width: 16px;
@@ -56,6 +72,7 @@
56
72
  line-height: var(--paragraph-small-line-height);
57
73
  letter-spacing: var(--paragraph-small-letter-spacing);
58
74
  }
75
+
59
76
  .ui-btn--sm .ui-btn__icon,
60
77
  .ui-btn--sm ::v-deep svg {
61
78
  width: 20px;
@@ -70,6 +87,7 @@
70
87
  line-height: var(--paragraph-small-line-height);
71
88
  letter-spacing: var(--paragraph-small-letter-spacing);
72
89
  }
90
+
73
91
  .ui-btn--md .ui-btn__icon,
74
92
  .ui-btn--md ::v-deep svg {
75
93
  width: 20px;
@@ -84,6 +102,7 @@
84
102
  line-height: var(--paragraph-small-line-height);
85
103
  letter-spacing: var(--paragraph-small-letter-spacing);
86
104
  }
105
+
87
106
  .ui-btn--lg .ui-btn__icon,
88
107
  .ui-btn--lg ::v-deep svg {
89
108
  width: 20px;
@@ -98,6 +117,7 @@
98
117
  line-height: var(--paragraph-regular-line-height);
99
118
  letter-spacing: var(--paragraph-regular-letter-spacing);
100
119
  }
120
+
101
121
  .ui-btn--xl .ui-btn__icon,
102
122
  .ui-btn--xl ::v-deep svg {
103
123
  width: 20px;
@@ -112,9 +132,15 @@
112
132
  .ui-btn--round-default {
113
133
  border-radius: var(--radius-10);
114
134
  }
115
- .ui-btn--xs.ui-btn--round-default {
135
+
136
+ .ui-btn--mini.ui-btn--round-default {
116
137
  border-radius: var(--rounded-lg);
117
138
  }
139
+
140
+ .ui-btn--xs.ui-btn--round-default {
141
+ border-radius: var(--radius);
142
+ }
143
+
118
144
  .ui-btn--round-round {
119
145
  border-radius: var(--rounded-full);
120
146
  }
@@ -128,6 +154,7 @@
128
154
  background: var(--primary-brand-bg);
129
155
  color: var(--inverse-fg);
130
156
  }
157
+
131
158
  .ui-btn--primary:hover,
132
159
  .ui-btn--primary:active {
133
160
  background: var(--primary-brand-hover);
@@ -138,6 +165,7 @@
138
165
  background: var(--button-black);
139
166
  color: var(--button-black-fg);
140
167
  }
168
+
141
169
  .ui-btn--neutral:hover,
142
170
  .ui-btn--neutral:active {
143
171
  background: var(--button-black-hover);
@@ -148,6 +176,7 @@
148
176
  background: var(--secondary-bg);
149
177
  color: var(--secondary-fg);
150
178
  }
179
+
151
180
  .ui-btn--secondary:hover,
152
181
  .ui-btn--secondary:active {
153
182
  background: var(--secondary-hover);
@@ -160,6 +189,7 @@
160
189
  border: 1px solid var(--border-primary);
161
190
  box-shadow: var(--shadow-xs);
162
191
  }
192
+
163
193
  .ui-btn--outline:hover,
164
194
  .ui-btn--outline:active {
165
195
  background: var(--outline-hover);
@@ -171,6 +201,7 @@
171
201
  background: var(--ghost);
172
202
  color: var(--primary-fg);
173
203
  }
204
+
174
205
  .ui-btn--ghost:hover,
175
206
  .ui-btn--ghost:active {
176
207
  background: var(--ghost-hover);
@@ -181,6 +212,7 @@
181
212
  background: var(--destructive);
182
213
  color: var(--destructive-inverse-fg);
183
214
  }
215
+
184
216
  .ui-btn--destructive:hover,
185
217
  .ui-btn--destructive:active {
186
218
  background: var(--destructive-hover);
@@ -190,7 +222,10 @@
190
222
  .ui-btn--link {
191
223
  background: var(--ghost);
192
224
  color: var(--primary-brand-fg);
225
+ height: fit-content;
226
+ padding: 0;
193
227
  }
228
+
194
229
  .ui-btn--link:hover,
195
230
  .ui-btn--link:active {
196
231
  color: var(--primary-brand-hover);
@@ -202,19 +237,24 @@
202
237
  .ui-btn:focus {
203
238
  outline: none;
204
239
  }
240
+
205
241
  .ui-btn:focus-visible {
206
242
  outline: none;
207
243
  box-shadow: 0 0 0 3px var(--focus-ring);
208
244
  }
245
+
209
246
  .ui-btn--secondary:focus-visible {
210
247
  background: var(--secondary-hover);
211
248
  }
249
+
212
250
  .ui-btn--outline:focus-visible {
213
251
  border-color: var(--border-focus);
214
252
  }
253
+
215
254
  .ui-btn--destructive:focus-visible {
216
255
  box-shadow: 0 0 0 3px var(--focus-ring-error);
217
256
  }
257
+
218
258
  /* ============================================================
219
259
  Disabled
220
260
  ============================================================ */
@@ -234,22 +274,31 @@
234
274
  gap: 0;
235
275
  }
236
276
 
237
- .ui-btn--icon-only.ui-btn--xs {
277
+ .ui-btn--icon-only.ui-btn--mini {
238
278
  width: 24px;
239
279
  padding: var(--spacing-3xs);
240
280
  }
281
+
282
+ .ui-btn--icon-only.ui-btn--xs {
283
+ width: 28px;
284
+ padding: var(--spacing-6);
285
+ }
286
+
241
287
  .ui-btn--icon-only.ui-btn--sm {
242
288
  width: 32px;
243
289
  padding: var(--spacing-6);
244
290
  }
291
+
245
292
  .ui-btn--icon-only.ui-btn--md {
246
293
  width: 36px;
247
294
  padding: var(--spacing-xs);
248
295
  }
296
+
249
297
  .ui-btn--icon-only.ui-btn--lg {
250
298
  width: 40px;
251
299
  padding: var(--spacing-10);
252
300
  }
301
+
253
302
  .ui-btn--icon-only.ui-btn--xl {
254
303
  width: 48px;
255
304
  padding: var(--spacing-sm);
@@ -33,35 +33,35 @@
33
33
  </slot>
34
34
 
35
35
  <div class="ui-dialog-header__actions">
36
- <button
36
+ <Button
37
37
  v-if="minimizable"
38
- type="button"
39
- class="ui-dialog-header__icon-btn"
40
38
  :aria-label="minimized ? 'Restore' : 'Minimize'"
39
+ size="sm"
40
+ variant="ghost"
41
41
  @click="toggleMinimize"
42
42
  >
43
- <WkiMinus v-if="!minimized" />
44
- <WkiUnfoldVertical v-else />
45
- </button>
46
- <button
43
+ <template #icon>
44
+ <WkiMinus v-if="!minimized" />
45
+ <WkiUnfoldVertical v-else />
46
+ </template>
47
+ </Button>
48
+ <Button
47
49
  v-if="fullscreen"
48
- type="button"
49
- class="ui-dialog-header__icon-btn"
50
50
  :aria-label="isFullscreen ? 'Exit fullscreen' : 'Fullscreen'"
51
+ size="sm"
52
+ variant="ghost"
51
53
  @click="toggleFullscreen"
52
54
  >
53
- <WkiExpand v-if="!isFullscreen" />
54
- <WkiShrink v-else />
55
- </button>
56
- <button
57
- v-if="closable"
58
- type="button"
59
- class="ui-dialog-header__icon-btn"
60
- aria-label="Close"
61
- @click="handleCancel"
62
- >
63
- <WkiX />
64
- </button>
55
+ <template #icon>
56
+ <WkiExpand v-if="!isFullscreen" />
57
+ <WkiShrink v-else />
58
+ </template>
59
+ </Button>
60
+ <Button v-if="closable" aria-label="Close" size="sm" variant="ghost" @click="handleCancel">
61
+ <template #icon>
62
+ <WkiX />
63
+ </template>
64
+ </Button>
65
65
  </div>
66
66
  </div>
67
67
  </div>
@@ -64,7 +64,7 @@
64
64
  border-radius: var(--rounded-xl);
65
65
  box-shadow: var(--shadow-lg);
66
66
  overflow: hidden;
67
- max-height: 100%; /* Allow internal scrolling if content is taller than wrapper */
67
+ max-height: 100%;
68
68
  }
69
69
 
70
70
  .ui-dialog-content {
@@ -157,40 +157,6 @@
157
157
  flex-shrink: 0;
158
158
  }
159
159
 
160
- .ui-dialog-header__icon-btn {
161
- display: inline-flex;
162
- align-items: center;
163
- justify-content: center;
164
- flex-shrink: 0;
165
- min-width: 32px;
166
- min-height: 32px;
167
- padding: var(--spacing-6);
168
- margin: 0;
169
- background: var(--ghost);
170
- color: var(--primary-fg);
171
- border: 0;
172
- border-radius: var(--rounded-xl);
173
- cursor: pointer;
174
- transition: background-color 0.15s ease;
175
- -webkit-appearance: none;
176
- appearance: none;
177
- }
178
-
179
- .ui-dialog-header__icon-btn svg {
180
- display: block;
181
- width: 20px;
182
- height: 20px;
183
- }
184
-
185
- .ui-dialog-header__icon-btn:hover {
186
- background: var(--ghost-hover);
187
- }
188
-
189
- .ui-dialog-header__icon-btn:focus-visible {
190
- outline: none;
191
- box-shadow: var(--shadow-focus-ring);
192
- }
193
-
194
160
  /* ── body ─────────────────────────────────────────────────────────────── */
195
161
  .ui-dialog-body {
196
162
  padding: var(--spacing-md);
@@ -207,7 +173,7 @@
207
173
  display: flex;
208
174
  flex-direction: column;
209
175
  width: 100%;
210
- padding: var(--spacing-md);
176
+ padding: var(--spacing-sm) var(--spacing-md);
211
177
  background: var(--accent-0);
212
178
  }
213
179
 
@@ -238,6 +204,7 @@
238
204
  .ui-dialog-fade-leave-active {
239
205
  transition: opacity 0.2s ease;
240
206
  }
207
+
241
208
  .ui-dialog-fade-enter,
242
209
  .ui-dialog-fade-enter-from,
243
210
  .ui-dialog-fade-leave-to {
@@ -250,6 +217,7 @@
250
217
  opacity 0.2s ease,
251
218
  transform 0.2s ease;
252
219
  }
220
+
253
221
  .ui-dialog-zoom-enter,
254
222
  .ui-dialog-zoom-enter-from,
255
223
  .ui-dialog-zoom-leave-to {
@@ -21,6 +21,7 @@
21
21
  line-height: var(--paragraph-small-line-height);
22
22
  letter-spacing: var(--paragraph-small-letter-spacing);
23
23
  }
24
+
24
25
  .ui-input--size-lg {
25
26
  min-height: 40px;
26
27
  gap: var(--spacing-sm);
@@ -29,6 +30,7 @@
29
30
  line-height: var(--paragraph-small-line-height);
30
31
  letter-spacing: var(--paragraph-small-letter-spacing);
31
32
  }
33
+
32
34
  .ui-input--size-sm {
33
35
  min-height: 32px;
34
36
  gap: var(--spacing-6);
@@ -37,6 +39,7 @@
37
39
  line-height: var(--paragraph-small-line-height);
38
40
  letter-spacing: var(--paragraph-small-letter-spacing);
39
41
  }
42
+
40
43
  .ui-input--size-xs {
41
44
  min-height: 28px;
42
45
  gap: var(--spacing-2xs);
@@ -50,9 +53,11 @@
50
53
  .ui-input--round-default {
51
54
  border-radius: var(--rounded-xl);
52
55
  }
56
+
53
57
  .ui-input--size-xs.ui-input--round-default {
54
- border-radius: var(--rounded-lg);
58
+ border-radius: var(--radius);
55
59
  }
60
+
56
61
  .ui-input--round-round {
57
62
  border-radius: var(--rounded-full);
58
63
  }
@@ -68,6 +73,7 @@
68
73
  border-color: var(--destructive-border);
69
74
  box-shadow: none;
70
75
  }
76
+
71
77
  .ui-input--error:focus-within {
72
78
  border-color: var(--destructive-border);
73
79
  box-shadow: 0 0 0 3px var(--focus-ring-error);
@@ -77,6 +83,7 @@
77
83
  .ui-input--disabled {
78
84
  opacity: 0.5;
79
85
  }
86
+
80
87
  .ui-input--disabled:focus-within {
81
88
  border-color: var(--border-primary);
82
89
  box-shadow: var(--shadow-xs);
@@ -96,10 +103,12 @@
96
103
  font: inherit;
97
104
  letter-spacing: inherit;
98
105
  }
106
+
99
107
  .ui-input__field::placeholder {
100
108
  color: var(--muted-fg);
101
109
  opacity: 1;
102
110
  }
111
+
103
112
  .ui-input__field:disabled {
104
113
  cursor: not-allowed;
105
114
  }
@@ -114,6 +123,7 @@
114
123
  height: 20px;
115
124
  color: var(--muted-fg);
116
125
  }
126
+
117
127
  .ui-input--size-xs .ui-input__decoration {
118
128
  width: 16px;
119
129
  height: 16px;
@@ -102,7 +102,7 @@
102
102
  width: 16px;
103
103
  height: 16px;
104
104
  flex-shrink: 0;
105
- color: var(--muted-fg);
105
+ color: var(--primary-fg);
106
106
  transition: transform 0.2s ease;
107
107
  }
108
108
 
@@ -116,6 +116,7 @@
116
116
  padding: var(--spacing-10) var(--spacing-xs) var(--spacing-10) var(--spacing-md);
117
117
  gap: var(--spacing-sm);
118
118
  }
119
+
119
120
  .ui-select--lg .ui-select__left {
120
121
  gap: var(--spacing-sm);
121
122
  }
@@ -127,6 +128,7 @@
127
128
  padding: var(--spacing-6) var(--spacing-xs);
128
129
  gap: var(--spacing-6);
129
130
  }
131
+
130
132
  .ui-select--sm .ui-select__left {
131
133
  gap: var(--spacing-6);
132
134
  }
@@ -137,9 +139,11 @@
137
139
  gap: var(--spacing-2xs);
138
140
  border-radius: var(--rounded-lg);
139
141
  }
142
+
140
143
  .ui-select--xs .ui-select__left {
141
144
  gap: var(--spacing-2xs);
142
145
  }
146
+
143
147
  .ui-select--xs .ui-select__value,
144
148
  .ui-select--xs .ui-select__prepend {
145
149
  font-size: var(--paragraph-mini-font-size);
@@ -160,6 +164,7 @@
160
164
  .ui-select__list::-webkit-scrollbar {
161
165
  width: 6px;
162
166
  }
167
+
163
168
  .ui-select__list::-webkit-scrollbar-thumb {
164
169
  background: var(--border-primary);
165
170
  border-radius: 3px;
@@ -44,21 +44,4 @@ export default {
44
44
  }
45
45
  </script>
46
46
 
47
- <style>
48
- .wki-base-icon {
49
- display: inline-flex;
50
- align-items: center;
51
- justify-content: center;
52
- flex-shrink: 0;
53
- vertical-align: middle;
54
- line-height: 0;
55
- }
56
-
57
- .wki-base-icon svg {
58
- width: var(--wki-icon-size);
59
- height: var(--wki-icon-size);
60
- color: var(--wki-icon-color);
61
- stroke-width: var(--wki-icon-stroke-width);
62
- fill: var(--wki-icon-fill);
63
- }
64
- </style>
47
+ <style src="../styles/icons.css"></style>
@@ -0,0 +1,36 @@
1
+ <template>
2
+ <BaseIcon v-bind="$attrs" v-on="listeners">
3
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
4
+ <path
5
+ d="M21.4838 5.04818L20.0696 4.50868C19.9385 4.45858 19.8383 4.35839 19.7882 4.22737L19.2488 2.81311C19.0908 2.39693 18.5012 2.39693 18.3431 2.81311L17.8036 4.22737C17.7535 4.35839 17.6533 4.45858 17.5224 4.50868L16.108 5.04818C15.6919 5.20617 15.6919 5.79577 16.108 5.95376L17.5224 6.49326C17.6533 6.54336 17.7535 6.64356 17.8036 6.77457L18.3431 8.18884C18.5012 8.60502 19.0908 8.60502 19.2488 8.18884L19.7882 6.77457C19.8383 6.64356 19.9385 6.54336 20.0696 6.49326L21.4838 5.95376C21.9 5.79577 21.9 5.20617 21.4838 5.04818Z"
6
+ fill="currentColor"
7
+ />
8
+ <path
9
+ d="M12.45 9.46744L13.1405 9.73221C13.2437 9.77092 13.3276 9.85489 13.3663 9.95821L13.6309 10.6491C13.76 10.9849 14.2375 10.9849 14.3634 10.6491L14.6279 9.95821C14.6666 9.85489 14.7505 9.77092 14.8538 9.73221L15.5443 9.46744C15.8798 9.33829 15.8798 8.86048 15.5443 8.73453L14.8538 8.46977C14.7505 8.43103 14.6666 8.34708 14.6279 8.24376L14.3634 7.55281C14.2343 7.21703 13.7567 7.21703 13.6309 7.55281L13.3663 8.24376C13.3276 8.34708 13.2437 8.43103 13.1405 8.46977L12.45 8.73453C12.1112 8.86365 12.1112 9.34153 12.45 9.46744Z"
10
+ fill="currentColor"
11
+ />
12
+ <path
13
+ fill-rule="evenodd"
14
+ clip-rule="evenodd"
15
+ d="M12.45 3.20184C12.8642 3.20184 13.2 3.53763 13.2 3.95184C13.2 4.36605 12.8642 4.70184 12.45 4.70184H3.75001L3.75 15.6039L7.56328 11.7895C7.8445 11.5084 8.22626 11.3512 8.62383 11.3512C9.02143 11.3512 9.40311 11.5084 9.68438 11.7895L13.8094 15.9145L15.6844 14.0395C15.8235 13.9003 15.9889 13.7902 16.1707 13.7148C16.3526 13.6395 16.548 13.6 16.7449 13.6C16.9419 13.6 17.1371 13.6394 17.3191 13.7148C17.501 13.7902 17.6663 13.9003 17.8055 14.0395L20.25 16.4828V13.15C20.25 12.7358 20.5858 12.4 21 12.4C21.4142 12.4 21.75 12.7358 21.75 13.15V20.35C21.75 20.7478 21.5919 21.1293 21.3105 21.4106C21.0292 21.6919 20.6478 21.85 20.25 21.85H3.75C3.35218 21.85 2.97076 21.6919 2.68945 21.4106C2.40815 21.1293 2.25 20.7478 2.25 20.35L2.25001 4.70184C2.25001 4.30402 2.40816 3.9226 2.68947 3.64129C2.97077 3.35999 3.35219 3.20184 3.75001 3.20184H12.45ZM3.75 17.725V20.35H16.125L8.625 12.85L3.75 17.725ZM14.8711 16.975L18.2461 20.35H20.25V18.6039L16.7461 15.1L14.8711 16.975Z"
16
+ fill="currentColor"
17
+ />
18
+ </svg>
19
+ </BaseIcon>
20
+ </template>
21
+
22
+ <script>
23
+ import BaseIcon from './BaseIcon.vue'
24
+
25
+ export default {
26
+ name: 'GenerateImage',
27
+ components: { BaseIcon },
28
+ inheritAttrs: false,
29
+ emits: [],
30
+ computed: {
31
+ listeners() {
32
+ return this.$listeners || {}
33
+ }
34
+ }
35
+ }
36
+ </script>
@@ -1730,4 +1730,5 @@ export { default as WkiZoomIn } from './ZoomIn.vue'
1730
1730
  export { default as WkiZoomOut } from './ZoomOut.vue'
1731
1731
  export { default as WkiClickButton } from './ClickButton.vue'
1732
1732
  export { default as WkiSectionBuilder } from './SectionBuilder.vue'
1733
+ export { default as WkiGenerateImage } from './GenerateImage.vue'
1733
1734
  // --- AUTO-GENERATED LUCIDE EXPORTS END ---
@@ -0,0 +1,16 @@
1
+ .wki-base-icon {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ justify-content: center;
5
+ flex-shrink: 0;
6
+ vertical-align: middle;
7
+ line-height: 0;
8
+ }
9
+
10
+ .wki-base-icon svg {
11
+ width: var(--wki-icon-size);
12
+ height: var(--wki-icon-size);
13
+ color: var(--wki-icon-color);
14
+ stroke-width: var(--wki-icon-stroke-width);
15
+ fill: var(--wki-icon-fill);
16
+ }