@happyvertical/smrt-images 0.34.6 → 0.34.8
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/dist/manifest.json +2 -2
- package/dist/smrt-knowledge.json +4 -4
- package/dist/svelte/components/AssetsGallery.svelte +19 -41
- package/dist/svelte/components/AssetsGallery.svelte.d.ts.map +1 -1
- package/dist/svelte/components/ImageEditor.svelte +24 -30
- package/dist/svelte/components/ImageEditor.svelte.d.ts.map +1 -1
- package/dist/svelte/components/ImageUploader.svelte +18 -48
- package/dist/svelte/components/ImageUploader.svelte.d.ts.map +1 -1
- package/package.json +10 -10
package/dist/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": "1.0.0",
|
|
3
|
-
"timestamp":
|
|
3
|
+
"timestamp": 1782318264492,
|
|
4
4
|
"packageName": "@happyvertical/smrt-images",
|
|
5
|
-
"packageVersion": "0.34.
|
|
5
|
+
"packageVersion": "0.34.8",
|
|
6
6
|
"objects": {
|
|
7
7
|
"@happyvertical/smrt-images:Image": {
|
|
8
8
|
"name": "image",
|
package/dist/smrt-knowledge.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"generatedAt": "2026-06-
|
|
3
|
+
"generatedAt": "2026-06-24T16:24:24.858Z",
|
|
4
4
|
"packageName": "@happyvertical/smrt-images",
|
|
5
|
-
"packageVersion": "0.34.
|
|
5
|
+
"packageVersion": "0.34.8",
|
|
6
6
|
"sourceManifestPath": "dist/manifest.json",
|
|
7
7
|
"agentDocPath": "AGENTS.md",
|
|
8
8
|
"sourceHashes": {
|
|
9
|
-
"manifest": "
|
|
10
|
-
"packageJson": "
|
|
9
|
+
"manifest": "a4baa7ca1cc2fa00494aeabf16c3e0e7f9a1fd12edd69f1ecae1efe8180ec8d3",
|
|
10
|
+
"packageJson": "2d9850bf9671a0909ca8fd561dd71dc7a339acca3e4d192ca51aae5824f74820",
|
|
11
11
|
"agents": "b0cf63bd78f00cc1729ea7f1425291f8e23ab5591161cbbf0d08f4b16ace07fd"
|
|
12
12
|
},
|
|
13
13
|
"exports": [
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import { Input, Select } from '@happyvertical/smrt-ui/forms';
|
|
2
3
|
import { useI18n } from '@happyvertical/smrt-ui/i18n';
|
|
3
4
|
import { Button } from '@happyvertical/smrt-ui/ui';
|
|
4
5
|
import { onMount } from 'svelte';
|
|
@@ -158,29 +159,29 @@ function handleDragStart(event: DragEvent, image: ImageLike) {
|
|
|
158
159
|
|
|
159
160
|
<div class="toolbar">
|
|
160
161
|
<div class="search-box">
|
|
161
|
-
<
|
|
162
|
-
type="search"
|
|
162
|
+
<Input
|
|
163
|
+
type="search"
|
|
163
164
|
bind:value={searchQuery}
|
|
164
165
|
placeholder={t(M['images.assets_gallery.search_placeholder'])}
|
|
165
166
|
/>
|
|
166
167
|
</div>
|
|
167
|
-
|
|
168
|
+
|
|
168
169
|
<div class="filters">
|
|
169
|
-
<select bind:value={orientationFilter}>
|
|
170
|
+
<Select class="orientation-select" bind:value={orientationFilter}>
|
|
170
171
|
<option value="all">{t(M['images.assets_gallery.any_orientation'])}</option>
|
|
171
172
|
<option value="landscape">Landscape</option>
|
|
172
173
|
<option value="portrait">Portrait</option>
|
|
173
174
|
<option value="square">Square</option>
|
|
174
|
-
</
|
|
175
|
-
|
|
176
|
-
<
|
|
177
|
-
type="number"
|
|
175
|
+
</Select>
|
|
176
|
+
|
|
177
|
+
<Input
|
|
178
|
+
type="number"
|
|
178
179
|
bind:value={minWidth}
|
|
179
180
|
placeholder={t(M['images.assets_gallery.min_width_placeholder'])}
|
|
180
181
|
class="size-input"
|
|
181
182
|
/>
|
|
182
|
-
<
|
|
183
|
-
type="number"
|
|
183
|
+
<Input
|
|
184
|
+
type="number"
|
|
184
185
|
bind:value={minHeight}
|
|
185
186
|
placeholder={t(M['images.assets_gallery.min_height_placeholder'])}
|
|
186
187
|
class="size-input"
|
|
@@ -286,45 +287,22 @@ function handleDragStart(event: DragEvent, image: ImageLike) {
|
|
|
286
287
|
min-width: 250px;
|
|
287
288
|
}
|
|
288
289
|
|
|
289
|
-
.search-box input {
|
|
290
|
-
width: 100%;
|
|
291
|
-
padding: 0.75rem 1.25rem;
|
|
292
|
-
background: var(--smrt-color-surface-container-highest, #333);
|
|
293
|
-
border: 1px solid var(--smrt-color-outline-variant, #444);
|
|
294
|
-
border-radius: var(--smrt-radius-full, 9999px);
|
|
295
|
-
color: inherit;
|
|
296
|
-
font-size: var(--smrt-typography-body-large-size, 0.95rem);
|
|
297
|
-
transition: box-shadow 0.2s, border-color 0.2s;
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
.search-box input:focus {
|
|
301
|
-
outline: none;
|
|
302
|
-
border-color: var(--smrt-color-primary, #3b82f6);
|
|
303
|
-
box-shadow: inset 0 0 0 1px var(--smrt-color-primary, #3b82f6);
|
|
304
|
-
}
|
|
305
|
-
|
|
306
290
|
.filters {
|
|
307
291
|
display: flex;
|
|
308
292
|
gap: 0.75rem;
|
|
309
293
|
flex-wrap: wrap;
|
|
310
294
|
}
|
|
311
295
|
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
.filters select:focus, .filters input:focus {
|
|
322
|
-
outline: none;
|
|
323
|
-
border-color: var(--smrt-color-primary, #3b82f6);
|
|
324
|
-
box-shadow: inset 0 0 0 1px var(--smrt-color-primary, #3b82f6);
|
|
296
|
+
/* Layout-only overrides for the migrated filter primitives. The Input / Select
|
|
297
|
+
primitives own the visual styling; these :global() rules only pierce their
|
|
298
|
+
rendered controls to size the boxes within the flex row (see #1589 scoping
|
|
299
|
+
rule). The orientation Select sizes to its content instead of the primitive's
|
|
300
|
+
full-width default; the min-width/min-height Inputs are capped. */
|
|
301
|
+
.filters :global(.orientation-select) {
|
|
302
|
+
width: auto;
|
|
325
303
|
}
|
|
326
304
|
|
|
327
|
-
.size-input {
|
|
305
|
+
.filters :global(.size-input) {
|
|
328
306
|
width: 120px;
|
|
329
307
|
}
|
|
330
308
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetsGallery.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/AssetsGallery.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AssetsGallery.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/AssetsGallery.svelte.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,SAAS,EACT,mBAAmB,EAEpB,MAAM,kBAAkB,CAAC;AAEzB,KAAK,gBAAgB,GAAI;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACtC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AA4NF,QAAA,MAAM,aAAa,sDAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import { Input, Select, Textarea } from '@happyvertical/smrt-ui/forms';
|
|
2
3
|
import { useI18n } from '@happyvertical/smrt-ui/i18n';
|
|
3
4
|
import { Button } from '@happyvertical/smrt-ui/ui';
|
|
4
5
|
import { M } from '../i18n.js';
|
|
@@ -219,8 +220,8 @@ async function handleAIEdit() {
|
|
|
219
220
|
<div class="tool-section">
|
|
220
221
|
<h4>Resize</h4>
|
|
221
222
|
<div class="row">
|
|
222
|
-
<label>Width <
|
|
223
|
-
<label>Height <
|
|
223
|
+
<label>Width <Input type="number" class="dim-input" bind:value={width} onfocus={() => isEditingDimensions = true} /></label>
|
|
224
|
+
<label>Height <Input type="number" class="dim-input" bind:value={height} onfocus={() => isEditingDimensions = true} /></label>
|
|
224
225
|
<Button variant="ghost" class="tonal-btn--filled" disabled={isProcessing} onclick={handleResize}>{t(M['images.image_editor.apply_resize'])}</Button>
|
|
225
226
|
</div>
|
|
226
227
|
{#if isEditingDimensions}
|
|
@@ -231,12 +232,12 @@ async function handleAIEdit() {
|
|
|
231
232
|
<div class="tool-section">
|
|
232
233
|
<h4>Crop</h4>
|
|
233
234
|
<div class="row">
|
|
234
|
-
<label>X <
|
|
235
|
-
<label>Y <
|
|
235
|
+
<label>X <Input type="number" class="dim-input" bind:value={cropX} onfocus={() => isCropping = true} /></label>
|
|
236
|
+
<label>Y <Input type="number" class="dim-input" bind:value={cropY} onfocus={() => isCropping = true} /></label>
|
|
236
237
|
</div>
|
|
237
238
|
<div class="row">
|
|
238
|
-
<label>W <
|
|
239
|
-
<label>H <
|
|
239
|
+
<label>W <Input type="number" class="dim-input" bind:value={cropW} onfocus={() => isCropping = true} /></label>
|
|
240
|
+
<label>H <Input type="number" class="dim-input" bind:value={cropH} onfocus={() => isCropping = true} /></label>
|
|
240
241
|
<Button variant="ghost" class="tonal-btn--filled" disabled={isProcessing} onclick={handleCrop}>{t(M['images.image_editor.apply_crop'])}</Button>
|
|
241
242
|
</div>
|
|
242
243
|
{#if isCropping}
|
|
@@ -247,11 +248,11 @@ async function handleAIEdit() {
|
|
|
247
248
|
<div class="tool-section">
|
|
248
249
|
<h4>{t(M['images.image_editor.convert_format'])}</h4>
|
|
249
250
|
<div class="row">
|
|
250
|
-
<select bind:value={format}>
|
|
251
|
+
<Select class="format-select" bind:value={format}>
|
|
251
252
|
<option value="webp">WebP</option>
|
|
252
253
|
<option value="jpeg">JPEG</option>
|
|
253
254
|
<option value="png">PNG</option>
|
|
254
|
-
</
|
|
255
|
+
</Select>
|
|
255
256
|
<Button variant="ghost" class="tonal-btn--filled" disabled={isProcessing} onclick={handleConvert}>Convert</Button>
|
|
256
257
|
</div>
|
|
257
258
|
</div>
|
|
@@ -260,11 +261,12 @@ async function handleAIEdit() {
|
|
|
260
261
|
<div class="tool-section">
|
|
261
262
|
<h4>{t(M['images.image_editor.ai_powered_edit'])}</h4>
|
|
262
263
|
<p class="hint">{t(M['images.image_editor.ai_powered_edit_hint'])}</p>
|
|
263
|
-
<
|
|
264
|
+
<Textarea
|
|
265
|
+
class="ai-prompt"
|
|
264
266
|
bind:value={prompt}
|
|
265
267
|
placeholder={t(M['images.image_editor.ai_prompt_placeholder'])}
|
|
266
|
-
rows=
|
|
267
|
-
|
|
268
|
+
rows={4}
|
|
269
|
+
/>
|
|
268
270
|
<Button
|
|
269
271
|
variant="primary"
|
|
270
272
|
class="primary-btn--pill"
|
|
@@ -390,30 +392,22 @@ async function handleAIEdit() {
|
|
|
390
392
|
gap: 0.25rem;
|
|
391
393
|
}
|
|
392
394
|
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
transition: box-shadow 0.2s, border-color 0.2s;
|
|
400
|
-
}
|
|
401
|
-
|
|
402
|
-
input:focus, select:focus, textarea:focus {
|
|
403
|
-
outline: none;
|
|
404
|
-
border-color: var(--smrt-color-primary, #3b82f6);
|
|
405
|
-
box-shadow: inset 0 0 0 1px var(--smrt-color-primary, #3b82f6);
|
|
395
|
+
/* Layout-only overrides for the migrated form primitives. The Input / Select /
|
|
396
|
+
Textarea primitives own the visual styling (background, border, focus ring);
|
|
397
|
+
these :global() rules only pierce their rendered controls to constrain box
|
|
398
|
+
size and spacing (see #1589 scoping rule). */
|
|
399
|
+
.row label :global(.dim-input) {
|
|
400
|
+
width: 90px;
|
|
406
401
|
}
|
|
407
402
|
|
|
408
|
-
|
|
409
|
-
|
|
403
|
+
/* Size the format Select to its content instead of the primitive's full-width
|
|
404
|
+
default so it sits inline beside the Convert button in the flex row. */
|
|
405
|
+
.row :global(.format-select) {
|
|
406
|
+
width: auto;
|
|
410
407
|
}
|
|
411
408
|
|
|
412
|
-
|
|
413
|
-
width: 100%;
|
|
414
|
-
resize: vertical;
|
|
409
|
+
.tool-section :global(.ai-prompt) {
|
|
415
410
|
margin-bottom: 1rem;
|
|
416
|
-
font-family: inherit;
|
|
417
411
|
}
|
|
418
412
|
|
|
419
413
|
/* Migrated Buttons keep their bespoke filled-tonal / text-link / pill looks.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageEditor.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/ImageEditor.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ImageEditor.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/ImageEditor.svelte.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAGV,iBAAiB,EACjB,SAAS,EAEV,MAAM,kBAAkB,CAAC;AAEzB,KAAK,gBAAgB,GAAI;IACxB,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAmQF,QAAA,MAAM,WAAW,sDAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import { Input, Textarea } from '@happyvertical/smrt-ui/forms';
|
|
2
3
|
import { useI18n } from '@happyvertical/smrt-ui/i18n';
|
|
3
4
|
import { Button } from '@happyvertical/smrt-ui/ui';
|
|
4
5
|
import { onDestroy } from 'svelte';
|
|
@@ -320,12 +321,12 @@ onDestroy(() => {
|
|
|
320
321
|
{#if showVariation}
|
|
321
322
|
<div class="variation-form">
|
|
322
323
|
<p class="variation-hint">{t(M['images.image_uploader.variation_hint'])}</p>
|
|
323
|
-
<
|
|
324
|
+
<Textarea
|
|
324
325
|
bind:value={variationPrompt}
|
|
325
326
|
placeholder={t(M['images.image_uploader.variation_prompt_placeholder'])}
|
|
326
|
-
rows=
|
|
327
|
+
rows={3}
|
|
327
328
|
disabled={isGenerating}
|
|
328
|
-
|
|
329
|
+
/>
|
|
329
330
|
{#if variationError}
|
|
330
331
|
<div class="variation-error">{variationError}</div>
|
|
331
332
|
{/if}
|
|
@@ -420,12 +421,13 @@ onDestroy(() => {
|
|
|
420
421
|
<p>{t(M['images.image_uploader.drag_and_drop'])}</p>
|
|
421
422
|
<span class="divider">or</span>
|
|
422
423
|
<Button variant="primary" class="browse-btn--decorative">{t(M['images.image_uploader.browse_files'])}</Button>
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
424
|
+
<!-- raw-primitive-allow: hidden file input driven imperatively via a DOM ref (bind:this gives uploadInput so the parent can call .click() and onchange reads target.files); the Input primitive exposes a component instance, not the underlying HTMLInputElement -->
|
|
425
|
+
<input
|
|
426
|
+
type="file"
|
|
427
|
+
accept="image/*"
|
|
428
|
+
bind:this={uploadInput}
|
|
429
|
+
onchange={handleFileSelect}
|
|
430
|
+
style="display: none;"
|
|
429
431
|
/>
|
|
430
432
|
{#if uploadError}
|
|
431
433
|
<p class="error">{uploadError}</p>
|
|
@@ -458,8 +460,9 @@ onDestroy(() => {
|
|
|
458
460
|
<div class="external-area">
|
|
459
461
|
<p class="hint">{t(M['images.image_uploader.external_hint'])}</p>
|
|
460
462
|
<div class="input-group">
|
|
461
|
-
<
|
|
462
|
-
type="url"
|
|
463
|
+
<Input
|
|
464
|
+
type="url"
|
|
465
|
+
class="external-url-input"
|
|
463
466
|
bind:value={externalUrl}
|
|
464
467
|
placeholder={t(M['images.image_uploader.external_url_placeholder'])}
|
|
465
468
|
onkeydown={(e) => e.key === 'Enter' && handleExternalSubmit()}
|
|
@@ -726,21 +729,11 @@ onDestroy(() => {
|
|
|
726
729
|
gap: 0.5rem;
|
|
727
730
|
}
|
|
728
731
|
|
|
729
|
-
|
|
732
|
+
/* Layout-only override: let the migrated URL Input flex-grow to fill the row
|
|
733
|
+
beside the Add button. The Input primitive owns the visual styling; this
|
|
734
|
+
:global() rule only pierces its rendered <input> (see #1589 scoping rule). */
|
|
735
|
+
.input-group :global(.external-url-input) {
|
|
730
736
|
flex: 1;
|
|
731
|
-
padding: 1rem 1.25rem;
|
|
732
|
-
background: var(--smrt-color-surface-container-high, #242424);
|
|
733
|
-
border: 1px solid var(--smrt-color-outline-variant, #444);
|
|
734
|
-
border-radius: var(--smrt-radius-sm, 4px);
|
|
735
|
-
color: var(--smrt-color-on-surface, #fff);
|
|
736
|
-
font-size: var(--smrt-typography-body-large-size, 1rem);
|
|
737
|
-
transition: border-color 0.2s, box-shadow 0.2s;
|
|
738
|
-
}
|
|
739
|
-
|
|
740
|
-
.input-group input:focus {
|
|
741
|
-
outline: none;
|
|
742
|
-
border-color: var(--smrt-color-primary, #3b82f6);
|
|
743
|
-
box-shadow: inset 0 0 0 1px var(--smrt-color-primary, #3b82f6);
|
|
744
737
|
}
|
|
745
738
|
|
|
746
739
|
/* Migrated Add Button sits in the URL input group; keeps square-ish radius
|
|
@@ -883,29 +876,6 @@ onDestroy(() => {
|
|
|
883
876
|
margin: 0;
|
|
884
877
|
}
|
|
885
878
|
|
|
886
|
-
.variation-form textarea {
|
|
887
|
-
width: 100%;
|
|
888
|
-
padding: 0.75rem;
|
|
889
|
-
background: var(--smrt-color-surface-container, #1a1a1a);
|
|
890
|
-
border: 1px solid var(--smrt-color-outline-variant, #444);
|
|
891
|
-
border-radius: var(--smrt-radius-sm, 4px);
|
|
892
|
-
color: inherit;
|
|
893
|
-
font-family: inherit;
|
|
894
|
-
font-size: var(--smrt-typography-body-large-size, 0.95rem);
|
|
895
|
-
resize: vertical;
|
|
896
|
-
transition: border-color 0.2s, box-shadow 0.2s;
|
|
897
|
-
}
|
|
898
|
-
|
|
899
|
-
.variation-form textarea:focus {
|
|
900
|
-
outline: none;
|
|
901
|
-
border-color: var(--smrt-color-primary, #3b82f6);
|
|
902
|
-
box-shadow: inset 0 0 0 1px var(--smrt-color-primary, #3b82f6);
|
|
903
|
-
}
|
|
904
|
-
|
|
905
|
-
.variation-form textarea:disabled {
|
|
906
|
-
opacity: 0.6;
|
|
907
|
-
}
|
|
908
|
-
|
|
909
879
|
.variation-error {
|
|
910
880
|
color: var(--smrt-color-error, #ef4444);
|
|
911
881
|
background: color-mix(in srgb, var(--smrt-color-error) 10%, transparent);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageUploader.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/ImageUploader.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ImageUploader.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/ImageUploader.svelte.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,iBAAiB,EACjB,SAAS,EACT,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAGzB,KAAK,gBAAgB,GAAI;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,mDAAmD;IACnD,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,MAAM,KAAK,IAAI,CAAC;IACrD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,CAAC,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC,EAAE,CAAC;IAC/D,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AA+ZF,QAAA,MAAM,aAAa,sDAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@happyvertical/smrt-images",
|
|
3
|
-
"version": "0.34.
|
|
3
|
+
"version": "0.34.8",
|
|
4
4
|
"description": "Image asset management with AI-powered categorization, search, editing, and metadata extraction for SMRT framework",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"smrtRawPrimitives": "strict
|
|
6
|
+
"smrtRawPrimitives": "strict",
|
|
7
7
|
"main": "./dist/index.js",
|
|
8
8
|
"types": "./dist/index.d.ts",
|
|
9
9
|
"files": [
|
|
@@ -39,12 +39,12 @@
|
|
|
39
39
|
"@happyvertical/utils": "^0.74.7",
|
|
40
40
|
"jimp": "^1.6.1",
|
|
41
41
|
"sharp": "^0.34.5",
|
|
42
|
-
"@happyvertical/smrt-assets": "0.34.
|
|
43
|
-
"@happyvertical/smrt-core": "0.34.
|
|
44
|
-
"@happyvertical/smrt-
|
|
45
|
-
"@happyvertical/smrt-
|
|
46
|
-
"@happyvertical/smrt-
|
|
47
|
-
"@happyvertical/smrt-ui": "0.34.
|
|
42
|
+
"@happyvertical/smrt-assets": "0.34.8",
|
|
43
|
+
"@happyvertical/smrt-core": "0.34.8",
|
|
44
|
+
"@happyvertical/smrt-prompts": "0.34.8",
|
|
45
|
+
"@happyvertical/smrt-tenancy": "0.34.8",
|
|
46
|
+
"@happyvertical/smrt-types": "0.34.8",
|
|
47
|
+
"@happyvertical/smrt-ui": "0.34.8"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
50
|
"svelte": "^5.18.0"
|
|
@@ -60,8 +60,8 @@
|
|
|
60
60
|
"typescript": "^5.9.3",
|
|
61
61
|
"vite": "^7.3.1",
|
|
62
62
|
"vitest": "^4.0.17",
|
|
63
|
-
"@happyvertical/smrt-playground": "0.34.
|
|
64
|
-
"@happyvertical/smrt-vitest": "0.34.
|
|
63
|
+
"@happyvertical/smrt-playground": "0.34.8",
|
|
64
|
+
"@happyvertical/smrt-vitest": "0.34.8"
|
|
65
65
|
},
|
|
66
66
|
"keywords": [
|
|
67
67
|
"ai",
|