@happyvertical/smrt-assets 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.
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "version": "1.0.0",
3
- "timestamp": 1782278439359,
3
+ "timestamp": 1782318247933,
4
4
  "packageName": "@happyvertical/smrt-assets",
5
- "packageVersion": "0.34.6",
5
+ "packageVersion": "0.34.8",
6
6
  "objects": {
7
7
  "@happyvertical/smrt-assets:AssetAssociation": {
8
8
  "name": "assetassociation",
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "generatedAt": "2026-06-24T05:20:39.916Z",
3
+ "generatedAt": "2026-06-24T16:24:08.713Z",
4
4
  "packageName": "@happyvertical/smrt-assets",
5
- "packageVersion": "0.34.6",
5
+ "packageVersion": "0.34.8",
6
6
  "sourceManifestPath": "dist/manifest.json",
7
7
  "agentDocPath": "AGENTS.md",
8
8
  "sourceHashes": {
9
- "manifest": "37c93b8225560c459942aecd64dc56cdddba2763dcfb4d1533fd23ea6155aa5c",
10
- "packageJson": "fbb530de68a6cc8e154c7d6a4a61eb98d83387b740abf0b2fedb55cf7410c729",
9
+ "manifest": "aa926e9fc8ebee9419924ca334ec26e4b4c216133eb802a1d49ab763b873b22f",
10
+ "packageJson": "a4a174b98f04dc0c4cd1a9d410c894efa870ad9c946a6b86bc4cc49d6f8a9eca",
11
11
  "agents": "a034545874fb7767b31168d98aa2b1b8cac205b14f2f04fb5a8e5acf33690eef"
12
12
  },
13
13
  "exports": [
@@ -7,6 +7,7 @@
7
7
  */
8
8
 
9
9
  import { Modal } from '@happyvertical/smrt-ui/feedback';
10
+ import { Input, Textarea } from '@happyvertical/smrt-ui/forms';
10
11
  import { useI18n } from '@happyvertical/smrt-ui/i18n';
11
12
  import { Button } from '@happyvertical/smrt-ui/ui';
12
13
  import type { Snippet } from 'svelte';
@@ -202,7 +203,7 @@ function formatDate(date: Date | string | undefined): string {
202
203
  <div class="detail__form">
203
204
  <div class="form-field">
204
205
  <label for="detail-name" class="form-label">Name</label>
205
- <input id="detail-name" type="text" class="form-input" bind:value={editName} />
206
+ <Input id="detail-name" type="text" bind:value={editName} />
206
207
  </div>
207
208
 
208
209
  {#if isImage}
@@ -213,13 +214,13 @@ function formatDate(date: Date | string | undefined): string {
213
214
  <span class="label-warning">{t(M['assets.asset_detail.alt_text_missing_warning'])}</span>
214
215
  {/if}
215
216
  </label>
216
- <input id="detail-alt" type="text" class="form-input" bind:value={editAlt} placeholder={t(M['assets.asset_detail.alt_text_placeholder'])} />
217
+ <Input id="detail-alt" type="text" bind:value={editAlt} placeholder={t(M['assets.asset_detail.alt_text_placeholder'])} />
217
218
  </div>
218
219
  {/if}
219
220
 
220
221
  <div class="form-field">
221
222
  <label for="detail-desc" class="form-label">Description</label>
222
- <textarea id="detail-desc" class="form-textarea" bind:value={editDescription} rows="3" placeholder={t(M['assets.asset_detail.description_placeholder'])}></textarea>
223
+ <Textarea id="detail-desc" bind:value={editDescription} rows={3} placeholder={t(M['assets.asset_detail.description_placeholder'])} />
223
224
  </div>
224
225
  </div>
225
226
  </section>
@@ -405,29 +406,6 @@ function formatDate(date: Date | string | undefined): string {
405
406
  margin-left: var(--smrt-spacing-1, 4px);
406
407
  }
407
408
 
408
- .form-input, .form-textarea {
409
- width: 100%;
410
- padding: var(--smrt-spacing-2, 0.5rem) var(--smrt-spacing-3, 0.75rem);
411
- border: 1px solid var(--smrt-color-outline-variant, #e5e7eb);
412
- border-radius: var(--smrt-radius-medium, 0.5rem);
413
- font-family: inherit;
414
- font-size: var(--smrt-typography-body-medium-size, 0.875rem);
415
- color: var(--smrt-color-on-surface, #111827);
416
- background: var(--smrt-color-surface, #ffffff);
417
- box-sizing: border-box;
418
- }
419
-
420
- .form-input:focus, .form-textarea:focus {
421
- outline: none;
422
- border-color: var(--smrt-color-primary, #005ac1);
423
- box-shadow: 0 0 0 2px var(--smrt-color-primary-container, rgba(0, 90, 193, 0.1));
424
- }
425
-
426
- .form-textarea {
427
- resize: vertical;
428
- min-height: 60px;
429
- }
430
-
431
409
  /* Metadata */
432
410
  .metadata-grid {
433
411
  display: grid;
@@ -1 +1 @@
1
- {"version":3,"file":"AssetDetail.svelte.d.ts","sourceRoot":"","sources":["../../src/svelte/AssetDetail.svelte.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG9C,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IAC7B,sCAAsC;IACtC,IAAI,EAAE,OAAO,CAAC;IACd,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,qDAAqD;IACrD,MAAM,CAAC,EAAE,CACP,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,kBAAkB,KACxB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,CAAC,EAAE,CACP,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,kBAAkB,KACxB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,qCAAqC;IACrC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC3C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC3C,wCAAwC;IACxC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IACzC,4DAA4D;IAC5D,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CACpD;AAqQD,QAAA,MAAM,WAAW,sDAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"AssetDetail.svelte.d.ts","sourceRoot":"","sources":["../../src/svelte/AssetDetail.svelte.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG9C,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IAC7B,sCAAsC;IACtC,IAAI,EAAE,OAAO,CAAC;IACd,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,qDAAqD;IACrD,MAAM,CAAC,EAAE,CACP,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,kBAAkB,KACxB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,CAAC,EAAE,CACP,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,kBAAkB,KACxB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,qCAAqC;IACrC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC3C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC3C,wCAAwC;IACxC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IACzC,4DAA4D;IAC5D,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CACpD;AAsQD,QAAA,MAAM,WAAW,sDAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
@@ -119,6 +119,7 @@ function getAltText(asset: PersistedAsset): string {
119
119
 
120
120
  <!-- Selection checkbox -->
121
121
  <div class="asset-card__checkbox">
122
+ <!-- raw-primitive-allow: native checkbox; no Provider-free checkbox primitive (Toggle is a switch with different semantics, CheckboxInput requires a Provider) -->
122
123
  <input
123
124
  type="checkbox"
124
125
  checked={selected}
@@ -1 +1 @@
1
- {"version":3,"file":"AssetGrid.svelte.d.ts","sourceRoot":"","sources":["../../src/svelte/AssetGrid.svelte.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,SAAS,CAAC;AAgJ9D,QAAA,MAAM,SAAS,oDAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"AssetGrid.svelte.d.ts","sourceRoot":"","sources":["../../src/svelte/AssetGrid.svelte.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,SAAS,CAAC;AAiJ9D,QAAA,MAAM,SAAS,oDAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
@@ -111,6 +111,7 @@ function setIndeterminate(node: HTMLInputElement, value: boolean) {
111
111
  <thead class="list-table__head">
112
112
  <tr>
113
113
  <th class="col-checkbox">
114
+ <!-- raw-primitive-allow: native checkbox; no Provider-free checkbox primitive (Toggle is a switch with different semantics, CheckboxInput requires a Provider) -->
114
115
  <input
115
116
  type="checkbox"
116
117
  checked={allSelected}
@@ -171,6 +172,7 @@ function setIndeterminate(node: HTMLInputElement, value: boolean) {
171
172
  class:list-table__row--selected={selected}
172
173
  >
173
174
  <td class="col-checkbox">
175
+ <!-- raw-primitive-allow: native checkbox; no Provider-free checkbox primitive (Toggle is a switch with different semantics, CheckboxInput requires a Provider) -->
174
176
  <input
175
177
  type="checkbox"
176
178
  checked={selected}
@@ -1 +1 @@
1
- {"version":3,"file":"AssetList.svelte.d.ts","sourceRoot":"","sources":["../../src/svelte/AssetList.svelte.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,cAAc,EAIf,MAAM,SAAS,CAAC;AAmMjB,QAAA,MAAM,SAAS,oDAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"AssetList.svelte.d.ts","sourceRoot":"","sources":["../../src/svelte/AssetList.svelte.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,cAAc,EAIf,MAAM,SAAS,CAAC;AAqMjB,QAAA,MAAM,SAAS,oDAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
@@ -7,6 +7,7 @@ import { onDestroy } from 'svelte';
7
7
  * and an upload button.
8
8
  */
9
9
 
10
+ import { Input, Select } from '@happyvertical/smrt-ui/forms';
10
11
  import { useI18n } from '@happyvertical/smrt-ui/i18n';
11
12
  import { Button } from '@happyvertical/smrt-ui/ui';
12
13
  import { M } from './i18n.js';
@@ -108,7 +109,7 @@ const views: { key: AssetViewMode; label: string; icon: string }[] = [
108
109
  <line x1="21" y1="21" x2="16.65" y2="16.65"></line>
109
110
  </svg>
110
111
  </span>
111
- <input
112
+ <Input
112
113
  type="search"
113
114
  class="search-field"
114
115
  placeholder={t(M['assets.asset_toolbar.search_placeholder'])}
@@ -127,22 +128,22 @@ const views: { key: AssetViewMode; label: string; icon: string }[] = [
127
128
  </div>
128
129
 
129
130
  <!-- Type Filter -->
130
- <select class="asset-toolbar__select" value={typeValue} onchange={handleTypeFilter} aria-label={t(M['assets.asset_toolbar.filter_by_type'])}>
131
+ <Select class="asset-toolbar__select" value={typeValue} onchange={handleTypeFilter} aria-label={t(M['assets.asset_toolbar.filter_by_type'])}>
131
132
  <option value="">{t(M['assets.asset_toolbar.all_types'])}</option>
132
133
  <option value="image">Images</option>
133
134
  <option value="video">Videos</option>
134
135
  <option value="document">Documents</option>
135
136
  <option value="audio">Audio</option>
136
- </select>
137
+ </Select>
137
138
 
138
139
  <!-- Sort -->
139
- <select class="asset-toolbar__select" value={sortValue} onchange={handleSortChange} aria-label={t(M['assets.asset_toolbar.sort_assets'])}>
140
+ <Select class="asset-toolbar__select" value={sortValue} onchange={handleSortChange} aria-label={t(M['assets.asset_toolbar.sort_assets'])}>
140
141
  <option value="createdAt:desc">{t(M['assets.asset_toolbar.newest_first'])}</option>
141
142
  <option value="createdAt:asc">{t(M['assets.asset_toolbar.oldest_first'])}</option>
142
143
  <option value="name:asc">{t(M['assets.asset_toolbar.name_a_z'])}</option>
143
144
  <option value="name:desc">{t(M['assets.asset_toolbar.name_z_a'])}</option>
144
145
  <option value="updatedAt:desc">{t(M['assets.asset_toolbar.recently_updated'])}</option>
145
- </select>
146
+ </Select>
146
147
  </div>
147
148
 
148
149
  <div class="asset-toolbar__right">
@@ -247,10 +248,16 @@ const views: { key: AssetViewMode; label: string; icon: string }[] = [
247
248
  color: var(--smrt-color-on-surface-variant, #6b7280);
248
249
  }
249
250
 
250
- .search-field {
251
+ /* The search field renders via <Input class="search-field"> (issue #1589). It
252
+ sits inside the bordered .asset-toolbar__search shell, so the overrides strip
253
+ the primitive's own border/background/box-shadow to keep it transparent and
254
+ reach the child <input> through :global() scoping. */
255
+ .asset-toolbar__search :global(.search-field) {
251
256
  flex: 1;
252
257
  border: none;
258
+ border-radius: 0;
253
259
  background: transparent;
260
+ box-shadow: none;
254
261
  padding: var(--smrt-spacing-1, 0.25rem) var(--smrt-spacing-2, 0.5rem);
255
262
  font-family: inherit;
256
263
  font-size: var(--smrt-typography-body-medium-size, 0.875rem);
@@ -259,11 +266,16 @@ const views: { key: AssetViewMode; label: string; icon: string }[] = [
259
266
  min-width: 0;
260
267
  }
261
268
 
262
- .search-field::placeholder {
269
+ .asset-toolbar__search :global(.search-field:focus) {
270
+ border: none;
271
+ box-shadow: none;
272
+ }
273
+
274
+ .asset-toolbar__search :global(.search-field::placeholder) {
263
275
  color: var(--smrt-color-on-surface-variant, #9ca3af);
264
276
  }
265
277
 
266
- .search-field::-webkit-search-cancel-button {
278
+ .asset-toolbar__search :global(.search-field::-webkit-search-cancel-button) {
267
279
  display: none;
268
280
  }
269
281
 
@@ -286,11 +298,15 @@ const views: { key: AssetViewMode; label: string; icon: string }[] = [
286
298
  background: var(--smrt-color-surface-container, #f3f4f6);
287
299
  }
288
300
 
289
- /* Selects */
290
- .asset-toolbar__select {
301
+ /* Selects render via <Select class="asset-toolbar__select"> (issue #1589). The
302
+ base .select primitive owns the chevron + focus ring; these overrides pin the
303
+ toolbar-matching 36px height, container-low fill, and width, and reach the
304
+ child <select> through :global() scoping. */
305
+ .asset-toolbar__left :global(.asset-toolbar__select) {
306
+ width: auto;
291
307
  height: 36px;
292
- padding: 0 var(--smrt-spacing-3, 0.75rem);
293
- background: var(--smrt-color-surface-container-low, #f9fafb);
308
+ padding: 0 var(--smrt-spacing-8, 2rem) 0 var(--smrt-spacing-3, 0.75rem);
309
+ background-color: var(--smrt-color-surface-container-low, #f9fafb);
294
310
  border: 1px solid var(--smrt-color-outline-variant, #e5e7eb);
295
311
  border-radius: var(--smrt-radius-medium, 0.5rem);
296
312
  font-family: inherit;
@@ -299,11 +315,6 @@ const views: { key: AssetViewMode; label: string; icon: string }[] = [
299
315
  cursor: pointer;
300
316
  }
301
317
 
302
- .asset-toolbar__select:focus {
303
- outline: none;
304
- border-color: var(--smrt-color-primary, #005ac1);
305
- }
306
-
307
318
  /* View Toggle */
308
319
  .view-toggle {
309
320
  display: flex;
@@ -1 +1 @@
1
- {"version":3,"file":"AssetToolbar.svelte.d.ts","sourceRoot":"","sources":["../../src/svelte/AssetToolbar.svelte.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAIV,iBAAiB,EAElB,MAAM,SAAS,CAAC;AA6KjB,QAAA,MAAM,YAAY,uDAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"AssetToolbar.svelte.d.ts","sourceRoot":"","sources":["../../src/svelte/AssetToolbar.svelte.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAIV,iBAAiB,EAElB,MAAM,SAAS,CAAC;AA8KjB,QAAA,MAAM,YAAY,uDAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
@@ -12,6 +12,7 @@
12
12
  // entire smrt-svelte surface — including optional peers like smrt-agents /
13
13
  // smrt-users — just to compile this modal.
14
14
  import { Modal } from '@happyvertical/smrt-ui/feedback';
15
+ import { Input, Textarea } from '@happyvertical/smrt-ui/forms';
15
16
  import { useI18n } from '@happyvertical/smrt-ui/i18n';
16
17
  import { Button } from '@happyvertical/smrt-ui/ui';
17
18
  import { M } from './i18n.js';
@@ -167,6 +168,7 @@ const isLargeFile = $derived((file?.size ?? 0) > 2 * 1024 * 1024);
167
168
  </svg>
168
169
  <p class="dropzone__text">{t(M['assets.create_asset_modal.dropzone_text'])}</p>
169
170
  <p class="dropzone__hint">{t(M['assets.create_asset_modal.dropzone_hint'])}</p>
171
+ <!-- raw-primitive-allow: hidden native file input behind the custom drop zone, triggered programmatically; styled Input is unwanted here (visually hidden, opened via the dropzone click/keydown) -->
170
172
  <input id="file-input" type="file" class="dropzone__input" onchange={handleFileSelect} />
171
173
  </div>
172
174
  {:else}
@@ -192,12 +194,12 @@ const isLargeFile = $derived((file?.size ?? 0) > 2 * 1024 * 1024);
192
194
  <div class="form-fields">
193
195
  <div class="form-field">
194
196
  <label for="asset-name" class="form-label">Name</label>
195
- <input id="asset-name" type="text" class="form-input" bind:value={name} placeholder={t(M['assets.create_asset_modal.name_placeholder'])} />
197
+ <Input id="asset-name" type="text" bind:value={name} placeholder={t(M['assets.create_asset_modal.name_placeholder'])} />
196
198
  </div>
197
199
 
198
200
  <div class="form-field">
199
201
  <label for="asset-desc" class="form-label">Description</label>
200
- <textarea id="asset-desc" class="form-textarea" bind:value={description} placeholder={t(M['assets.create_asset_modal.description_placeholder'])} rows="2"></textarea>
202
+ <Textarea id="asset-desc" bind:value={description} placeholder={t(M['assets.create_asset_modal.description_placeholder'])} rows={2} />
201
203
  </div>
202
204
 
203
205
  {#if isImage}
@@ -208,7 +210,7 @@ const isLargeFile = $derived((file?.size ?? 0) > 2 * 1024 * 1024);
208
210
  <span class="form-label__warning">{t(M['assets.create_asset_modal.alt_text_recommended_warning'])}</span>
209
211
  {/if}
210
212
  </label>
211
- <input id="asset-alt" type="text" class="form-input" bind:value={altText} placeholder={t(M['assets.create_asset_modal.alt_text_placeholder'])} />
213
+ <Input id="asset-alt" type="text" bind:value={altText} placeholder={t(M['assets.create_asset_modal.alt_text_placeholder'])} />
212
214
  </div>
213
215
  {/if}
214
216
  </div>
@@ -377,27 +379,4 @@ const isLargeFile = $derived((file?.size ?? 0) > 2 * 1024 * 1024);
377
379
  margin-left: var(--smrt-spacing-1, 4px);
378
380
  }
379
381
 
380
- .form-input, .form-textarea {
381
- width: 100%;
382
- padding: var(--smrt-spacing-2, 0.5rem) var(--smrt-spacing-3, 0.75rem);
383
- border: 1px solid var(--smrt-color-outline-variant, #e5e7eb);
384
- border-radius: var(--smrt-radius-medium, 0.5rem);
385
- font-family: inherit;
386
- font-size: var(--smrt-typography-body-medium-size, 0.875rem);
387
- color: var(--smrt-color-on-surface, #111827);
388
- background: var(--smrt-color-surface, #ffffff);
389
- box-sizing: border-box;
390
- }
391
-
392
- .form-input:focus, .form-textarea:focus {
393
- outline: none;
394
- border-color: var(--smrt-color-primary, #005ac1);
395
- box-shadow: 0 0 0 2px var(--smrt-color-primary-container, rgba(0, 90, 193, 0.1));
396
- }
397
-
398
- .form-textarea {
399
- resize: vertical;
400
- min-height: 60px;
401
- }
402
-
403
382
  </style>
@@ -1 +1 @@
1
- {"version":3,"file":"CreateAssetModal.svelte.d.ts","sourceRoot":"","sources":["../../src/svelte/CreateAssetModal.svelte.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,qBAAqB;IACpC,gCAAgC;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,2CAA2C;IAC3C,WAAW,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAC1B;4EACwE;IACxE,QAAQ,EAAE,CAAC,IAAI,EAAE;QACf,IAAI,EAAE,IAAI,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,oCAAoC;IACpC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAyMD,QAAA,MAAM,gBAAgB,2DAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"CreateAssetModal.svelte.d.ts","sourceRoot":"","sources":["../../src/svelte/CreateAssetModal.svelte.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,qBAAqB;IACpC,gCAAgC;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,2CAA2C;IAC3C,WAAW,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAC1B;4EACwE;IACxE,QAAQ,EAAE,CAAC,IAAI,EAAE;QACf,IAAI,EAAE,IAAI,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,oCAAoC;IACpC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AA2MD,QAAA,MAAM,gBAAgB,2DAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@happyvertical/smrt-assets",
3
- "version": "0.34.6",
3
+ "version": "0.34.8",
4
4
  "description": "Asset management system with versioning, metadata, and AI-powered operations for SMRT framework",
5
5
  "type": "module",
6
- "smrtRawPrimitives": "strict-buttons",
6
+ "smrtRawPrimitives": "strict",
7
7
  "main": "./dist/index.js",
8
8
  "types": "./dist/index.d.ts",
9
9
  "files": [
@@ -39,11 +39,11 @@
39
39
  "@happyvertical/logger": "^0.74.7",
40
40
  "@happyvertical/sql": "^0.74.7",
41
41
  "@happyvertical/utils": "^0.74.7",
42
- "@happyvertical/smrt-core": "0.34.6",
43
- "@happyvertical/smrt-tags": "0.34.6",
44
- "@happyvertical/smrt-tenancy": "0.34.6",
45
- "@happyvertical/smrt-types": "0.34.6",
46
- "@happyvertical/smrt-ui": "0.34.6"
42
+ "@happyvertical/smrt-tenancy": "0.34.8",
43
+ "@happyvertical/smrt-core": "0.34.8",
44
+ "@happyvertical/smrt-ui": "0.34.8",
45
+ "@happyvertical/smrt-types": "0.34.8",
46
+ "@happyvertical/smrt-tags": "0.34.8"
47
47
  },
48
48
  "peerDependencies": {
49
49
  "svelte": "^5.18.0"
@@ -65,8 +65,8 @@
65
65
  "typescript": "^5.9.3",
66
66
  "vite": "^7.3.1",
67
67
  "vitest": "^4.0.17",
68
- "@happyvertical/smrt-playground": "0.34.6",
69
- "@happyvertical/smrt-vitest": "0.34.6"
68
+ "@happyvertical/smrt-playground": "0.34.8",
69
+ "@happyvertical/smrt-vitest": "0.34.8"
70
70
  },
71
71
  "keywords": [
72
72
  "ai",