@happyvertical/smrt-ui 0.57.32 → 0.57.34

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.
@@ -42,6 +42,8 @@ export interface Props {
42
42
  controller?: DataTableController;
43
43
  /** Registers this toolbar only when explicitly supplied. */
44
44
  dataSurface?: CollectionToolbarDataSurfaceOptions;
45
+ /** Target density; omit to inherit the ThemeProvider setting. */
46
+ density?: 'comfortable' | 'touch';
45
47
  /** CSS class to apply to the toolbar container. */
46
48
  class?: string;
47
49
  }
@@ -61,6 +63,7 @@ let {
61
63
  onviewchange,
62
64
  controller,
63
65
  dataSurface,
66
+ density,
64
67
  class: className = '',
65
68
  }: Props = $props();
66
69
 
@@ -260,9 +263,10 @@ onDestroy(() => surfaceRegistration?.cleanup());
260
263
  class:toolbar--highlighted={surfaceHighlighted}
261
264
  role="search"
262
265
  tabindex="-1" data-smrt-component="CollectionToolbar"
266
+ data-density={density}
263
267
  >
264
268
  <div class="search">
265
- <Input type="search" name="collection-search" aria-label={searchLabel} placeholder={searchPlaceholder} value={controllerState?.search ?? search} oninput={(event) => changeSearch(event.currentTarget.value)} />
269
+ <Input type="search" name="collection-search" {density} aria-label={searchLabel} placeholder={searchPlaceholder} value={controllerState?.search ?? search} oninput={(event) => changeSearch(event.currentTarget.value)} />
266
270
  </div>
267
271
  {#if filters}<div class="filters">{@render filters()}</div>{/if}
268
272
  {#if resultCount !== undefined}<span class="count" aria-live="polite">{resultCount} {resultCount === 1 ? 'result' : 'results'}</span>{/if}
@@ -270,7 +274,7 @@ onDestroy(() => surfaceRegistration?.cleanup());
270
274
  {#if selectedCount > 0 && bulkActions}<div class="bulk"><span>{selectedCount} selected</span>{@render bulkActions()}</div>{/if}
271
275
  {#if actions}<div class="actions">{@render actions()}</div>{/if}
272
276
  {#if viewOptions.length > 1}
273
- <SegmentedControl label="View" options={viewOptions} value={view} interaction={false} onvaluechange={changeView} />
277
+ <SegmentedControl label="View" {density} options={viewOptions} value={view} interaction={false} onvaluechange={changeView} />
274
278
  {/if}
275
279
  </div>
276
280
 
@@ -284,5 +288,8 @@ onDestroy(() => surfaceRegistration?.cleanup());
284
288
  .bulk { padding: var(--smrt-spacing-1) var(--smrt-spacing-2); border-radius: var(--smrt-radius-small); background: var(--smrt-color-secondary-container); color: var(--smrt-color-on-secondary-container); }
285
289
  .count { color: var(--smrt-color-on-surface-variant); font: var(--smrt-typography-label-medium-font); }
286
290
  .spacer { flex: 1; }
291
+ /* Controls a host renders in the filters/actions snippets inherit it too. */
292
+ .toolbar[data-density='touch'] { --smrt-control-target-min: var(--smrt-touch-target-min); }
293
+ .toolbar[data-density='comfortable'] { --smrt-control-target-min: calc(var(--smrt-touch-target-min) * 0); }
287
294
  }
288
295
  </style>
@@ -30,6 +30,8 @@ export interface Props {
30
30
  controller?: DataTableController;
31
31
  /** Registers this toolbar only when explicitly supplied. */
32
32
  dataSurface?: CollectionToolbarDataSurfaceOptions;
33
+ /** Target density; omit to inherit the ThemeProvider setting. */
34
+ density?: 'comfortable' | 'touch';
33
35
  /** CSS class to apply to the toolbar container. */
34
36
  class?: string;
35
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CollectionToolbar.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/data/CollectionToolbar.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,KAAK,OAAO,EAAW,MAAM,QAAQ,CAAC;AAG1D,OAAO,KAAK,EACV,mBAAmB,EAEpB,MAAM,0BAA0B,CAAC;AAMlC,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,YAAY,CAAC;AAGtE,MAAM,WAAW,KAAK;IACpB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACjC,2CAA2C;IAC3C,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACzC,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uDAAuD;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wDAAwD;IACxD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,8CAA8C;IAC9C,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,KAAK,IAAI,CAAC;IACzD,qEAAqE;IACrE,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,4DAA4D;IAC5D,WAAW,CAAC,EAAE,mCAAmC,CAAC;IAClD,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA4OD,QAAA,MAAM,iBAAiB,0DAAwC,CAAC;AAChE,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"CollectionToolbar.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/data/CollectionToolbar.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,KAAK,OAAO,EAAW,MAAM,QAAQ,CAAC;AAG1D,OAAO,KAAK,EACV,mBAAmB,EAEpB,MAAM,0BAA0B,CAAC;AAMlC,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,YAAY,CAAC;AAGtE,MAAM,WAAW,KAAK;IACpB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACjC,2CAA2C;IAC3C,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACzC,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uDAAuD;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wDAAwD;IACxD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,8CAA8C;IAC9C,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,KAAK,IAAI,CAAC;IACzD,qEAAqE;IACrE,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,4DAA4D;IAC5D,WAAW,CAAC,EAAE,mCAAmC,CAAC;IAClD,iEAAiE;IACjE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC;IAClC,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA6OD,QAAA,MAAM,iBAAiB,0DAAwC,CAAC;AAChE,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,eAAe,iBAAiB,CAAC"}
@@ -439,6 +439,9 @@ let prevPrimaryColor = untrack(() => primaryColor);
439
439
  let prevBorderRadius = untrack(() => borderRadius);
440
440
  let prevDensity = untrack(() => density);
441
441
  let prevContrast = untrack(() => contrast);
442
+ let prevOverrides = untrack(() => overrides);
443
+ let prevPersist = untrack(() => persist);
444
+ let prevStorageKey = untrack(() => storageKey);
442
445
  let rootEl = $state<HTMLElement | undefined>();
443
446
 
444
447
  $effect(() => {
@@ -497,17 +500,34 @@ $effect(() => {
497
500
  }
498
501
  });
499
502
 
500
- // Sync overrides prop to state
503
+ // Same guard as above (#3873): writing `config.x` reads `config`, so an
504
+ // unguarded sync re-ran on every updateConfig() and wrote the prop back over
505
+ // the programmatic value.
501
506
  $effect(() => {
502
- config.overrides = overrides;
507
+ if (overrides !== prevOverrides) {
508
+ prevOverrides = overrides;
509
+ untrack(() => {
510
+ config.overrides = overrides;
511
+ });
512
+ }
503
513
  });
504
514
 
505
515
  $effect(() => {
506
- config.persist = persist;
516
+ if (persist !== prevPersist) {
517
+ prevPersist = persist;
518
+ untrack(() => {
519
+ config.persist = persist;
520
+ });
521
+ }
507
522
  });
508
523
 
509
524
  $effect(() => {
510
- config.storageKey = storageKey;
525
+ if (storageKey !== prevStorageKey) {
526
+ prevStorageKey = storageKey;
527
+ untrack(() => {
528
+ config.storageKey = storageKey;
529
+ });
530
+ }
511
531
  });
512
532
  </script>
513
533
 
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeProvider.svelte.d.ts","sourceRoot":"","sources":["../../src/themes/ThemeProvider.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAQtC,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAGlB,WAAW,EACX,WAAW,EAEZ,MAAM,YAAY,CAAC;AAIpB,UAAU,KAAK;IACb,wFAAwF;IACxF,OAAO,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,0BAA0B;IAC1B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,YAAY,CAAC,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;IAC3C,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB;AA8dD,QAAA,MAAM,aAAa,2CAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"ThemeProvider.svelte.d.ts","sourceRoot":"","sources":["../../src/themes/ThemeProvider.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAQtC,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAGlB,WAAW,EACX,WAAW,EAEZ,MAAM,YAAY,CAAC;AAIpB,UAAU,KAAK;IACb,wFAAwF;IACxF,OAAO,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,0BAA0B;IAC1B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,YAAY,CAAC,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;IAC3C,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB;AAkfD,QAAA,MAAM,aAAa,2CAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@happyvertical/smrt-ui",
3
- "version": "0.57.32",
3
+ "version": "0.57.34",
4
4
  "smrtJsdoc": "strict",
5
5
  "description": "Domain-agnostic Svelte 5 UI runtime for SMRT: primitives, i18n client, theme system, and module UI registry",
6
6
  "type": "module",
@@ -176,7 +176,7 @@
176
176
  "access": "public"
177
177
  },
178
178
  "dependencies": {
179
- "@happyvertical/smrt-types": "0.57.32",
179
+ "@happyvertical/smrt-types": "0.57.34",
180
180
  "esm-env": "^1.2.2"
181
181
  },
182
182
  "peerDependencies": {