@juspay/svelte-ui-components 4.31.3 → 4.32.0

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.
Files changed (44) hide show
  1. package/dist/Accordion/Accordion.svelte +6 -1
  2. package/dist/Animations/ModalAnimation.svelte +71 -8
  3. package/dist/Animations/OverlayAnimation.svelte +29 -4
  4. package/dist/Animations/tokenizedFly.d.ts +17 -0
  5. package/dist/Animations/tokenizedFly.js +153 -0
  6. package/dist/AreaChart/AreaChart.svelte +7 -5
  7. package/dist/BarChart/BarChart.svelte +2 -1
  8. package/dist/Book/Book.svelte +6 -3
  9. package/dist/ChatBubble/ChatBubble.svelte +18 -3
  10. package/dist/Checkbox/Checkbox.svelte +15 -3
  11. package/dist/Choicebox/Choicebox.svelte +24 -2
  12. package/dist/Combobox/Combobox.svelte +15 -1
  13. package/dist/CommandMenu/CommandMenu.svelte +72 -2
  14. package/dist/ContextMenu/ContextMenu.svelte +41 -1
  15. package/dist/DualAxisBarChart/DualAxisBarChart.svelte +4 -3
  16. package/dist/FunnelChart/FunnelChart.svelte +5 -4
  17. package/dist/Gallery/Gallery.svelte +53 -1
  18. package/dist/Gallery/properties.d.ts +5 -3
  19. package/dist/Gauge/Gauge.svelte +2 -1
  20. package/dist/LineChart/LineChart.svelte +7 -5
  21. package/dist/MediaPlayer/MediaPlayer.svelte +9 -1
  22. package/dist/MediaPlayer/MediaPlayer.svelte.d.ts +1 -1
  23. package/dist/MediaUpload/MediaUpload.svelte +1 -1
  24. package/dist/Menu/Menu.svelte +38 -1
  25. package/dist/Modal/Modal.svelte +18 -4
  26. package/dist/Pagination/Pagination.svelte +9 -1
  27. package/dist/PieChart/PieChart.svelte +2 -2
  28. package/dist/Radio/Radio.svelte +14 -2
  29. package/dist/RatingGroup/RatingGroup.svelte +9 -0
  30. package/dist/SankeyChart/SankeyChart.svelte +6 -3
  31. package/dist/Select/Select.svelte +26 -4
  32. package/dist/Sheet/Sheet.svelte +34 -2
  33. package/dist/Slider/Slider.svelte +26 -5
  34. package/dist/Table/Table.svelte +9 -2
  35. package/dist/Tabs/Tabs.svelte +27 -4
  36. package/dist/TaskList/TaskList.svelte +10 -2
  37. package/dist/ThemeSwitcher/ThemeSwitcher.svelte +13 -6
  38. package/dist/ThinkingIndicator/ThinkingIndicator.svelte +5 -3
  39. package/dist/Toast/Toast.svelte +216 -116
  40. package/dist/Toggle/Toggle.svelte +8 -4
  41. package/dist/ToolCallLog/ToolCallLog.svelte +10 -2
  42. package/dist/Tooltip/Tooltip.svelte +4 -2
  43. package/dist-wc/index.js +599 -410
  44. package/package.json +1 -1
@@ -806,7 +806,8 @@
806
806
  pointer-events: none;
807
807
  }
808
808
  .sankey-link {
809
- transition: stroke-opacity var(--chart-transition-duration, var(--motion-duration, 0.2s))
809
+ transition: stroke-opacity
810
+ var(--chart-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))
810
811
  var(--chart-transition-easing, var(--motion-easing, ease));
811
812
  cursor: pointer;
812
813
  }
@@ -815,7 +816,8 @@
815
816
  outline-offset: var(--sankey-focus-outline-offset, 2px);
816
817
  }
817
818
  .sankey-node {
818
- transition: opacity var(--chart-transition-duration, var(--motion-duration, 0.2s))
819
+ transition: opacity
820
+ var(--chart-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))
819
821
  var(--chart-transition-easing, var(--motion-easing, ease));
820
822
  cursor: pointer;
821
823
  }
@@ -839,7 +841,8 @@
839
841
  stroke-width: var(--sankey-label-halo-width, 0);
840
842
  stroke-linejoin: round;
841
843
  pointer-events: none;
842
- transition: opacity var(--chart-transition-duration, var(--motion-duration, 0.2s))
844
+ transition: opacity
845
+ var(--chart-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))
843
846
  var(--chart-transition-easing, var(--motion-easing, ease));
844
847
  }
845
848
  .sankey-col-label {
@@ -1122,7 +1122,21 @@
1122
1122
  cursor: pointer;
1123
1123
  outline: none;
1124
1124
  -webkit-tap-highlight-color: transparent;
1125
- transition: var(--select-trigger-transition, border-color 0.15s, box-shadow 0.15s);
1125
+ transition: var(
1126
+ --select-trigger-transition,
1127
+ border-color
1128
+ var(
1129
+ --select-trigger-transition-duration,
1130
+ var(--duration-quick, var(--motion-duration, 0.15s))
1131
+ )
1132
+ var(--select-trigger-transition-easing, var(--motion-easing, ease)),
1133
+ box-shadow
1134
+ var(
1135
+ --select-trigger-transition-duration,
1136
+ var(--duration-quick, var(--motion-duration, 0.15s))
1137
+ )
1138
+ var(--select-trigger-transition-easing, var(--motion-easing, ease))
1139
+ );
1126
1140
  }
1127
1141
 
1128
1142
  .select-trigger :global(.select-left-icon) {
@@ -1269,7 +1283,8 @@
1269
1283
  height: var(--select-arrow-size, 16px);
1270
1284
  color: var(--select-arrow-color, #666666);
1271
1285
  flex-shrink: 0;
1272
- transition: transform var(--select-arrow-transition-duration, var(--motion-duration, 0.15s))
1286
+ transition: transform
1287
+ var(--select-arrow-transition-duration, var(--duration-quick, var(--motion-duration, 0.15s)))
1273
1288
  var(--select-arrow-transition-easing, var(--motion-easing, ease));
1274
1289
  }
1275
1290
 
@@ -1450,9 +1465,16 @@
1450
1465
  color: var(--select-option-indicator-color, currentColor);
1451
1466
  transition:
1452
1467
  background-color
1453
- var(--select-option-indicator-transition-duration, var(--motion-duration, 0.15s))
1468
+ var(
1469
+ --select-option-indicator-transition-duration,
1470
+ var(--duration-quick, var(--motion-duration, 0.15s))
1471
+ )
1454
1472
  var(--select-option-indicator-transition-easing, var(--motion-easing, ease)),
1455
- border-color var(--select-option-indicator-transition-duration, var(--motion-duration, 0.15s))
1473
+ border-color
1474
+ var(
1475
+ --select-option-indicator-transition-duration,
1476
+ var(--duration-quick, var(--motion-duration, 0.15s))
1477
+ )
1456
1478
  var(--select-option-indicator-transition-easing, var(--motion-easing, ease));
1457
1479
  }
1458
1480
 
@@ -1,7 +1,8 @@
1
1
  <script lang="ts">
2
2
  import { reducedMotion } from '../reduced-motion.svelte';
3
3
  import type { SheetProperties } from './properties';
4
- import { fly, fade } from 'svelte/transition';
4
+ import { fade } from 'svelte/transition';
5
+ import { tokenizedFly } from '../Animations/tokenizedFly';
5
6
  import { lockBodyScroll, unlockBodyScroll } from '../utils';
6
7
  import { tick } from 'svelte';
7
8
  import Button from '../Button/Button.svelte';
@@ -66,7 +67,38 @@
66
67
  }
67
68
  });
68
69
 
70
+ // Feeds flyParams' own x/y/duration (reduced-motion already folded in above)
71
+ // into tokenizedFly, which only resizes the distance magnitude -- fallback
72
+ // 60px, down from the 400px literal above -- and reads a duration token.
73
+ // Token name is `sheet-panel`, not `sheet-content`: the element carrying this
74
+ // transition is `.sheet-panel` below; `--sheet-content-*` already names the
75
+ // nested scrollable body (`--sheet-content-overflow-y`/-padding), a different
76
+ // element, so reusing that prefix here would point a consumer at the wrong
77
+ // node. Single duration token/literal, no open/close split: unlike Modal,
78
+ // nothing here already has an in/out asymmetry to preserve. Each array falls
79
+ // back from the element token through the shared --distance-overlay tier (the
80
+ // same 60px this batch settled on for Modal) to the --motion-duration/-easing
81
+ // roots; 300ms doesn't match any named duration tier so it skips straight to
82
+ // the root, same reasoning as Modal's own duration chain.
83
+ let sheetFlyParams = $derived({
84
+ x: flyParams.x,
85
+ y: flyParams.y,
86
+ durationTokens: ['--sheet-panel-transition-duration', '--motion-duration'],
87
+ fallbackDuration: flyParams.duration,
88
+ distanceTokens: ['--sheet-panel-transition-distance', '--distance-overlay'],
89
+ fallbackDistance: 60,
90
+ easingTokens: ['--sheet-panel-transition-easing', '--ease-smooth-out', '--motion-easing']
91
+ });
92
+
93
+ // Guarded rather than assumed single-fire: the panel's transition:tokenizedFly
94
+ // outro (and the overlay's own transition:fade) keep this mounted -- and every
95
+ // dismiss path (overlay click, Enter/Space, Escape, the close button) live --
96
+ // for the outro's duration after open first flips false. A second dismissal
97
+ // landing in that window would otherwise fire onclose a second time.
69
98
  function close() {
99
+ if (!open) {
100
+ return;
101
+ }
70
102
  open = false;
71
103
  onclose?.();
72
104
  }
@@ -229,7 +261,7 @@
229
261
  tabindex="-1"
230
262
  data-pw={typeof testId === 'string' ? `${testId}-panel` : null}
231
263
  testID={typeof testId === 'string' ? `${testId}-panel` : null}
232
- transition:fly|global={flyParams}
264
+ transition:tokenizedFly|global={sheetFlyParams}
233
265
  onintroend={handleIntroEnd}
234
266
  onoutroend={handleOutroEnd}
235
267
  >
@@ -153,7 +153,12 @@
153
153
  )
154
154
  );
155
155
  outline: none;
156
- transition: var(--slider-transition, background 0.2s ease);
156
+ transition: var(
157
+ --slider-transition,
158
+ background
159
+ var(--slider-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))
160
+ var(--slider-transition-easing, var(--motion-easing, ease))
161
+ );
157
162
  cursor: pointer;
158
163
  }
159
164
 
@@ -174,9 +179,17 @@
174
179
  opacity: var(--slider-thumb-opacity, 1);
175
180
  cursor: pointer;
176
181
  transition:
177
- transform var(--slider-thumb-transition-duration, var(--motion-duration, 0.15s))
182
+ transform
183
+ var(
184
+ --slider-thumb-transition-duration,
185
+ var(--duration-quick, var(--motion-duration, 0.15s))
186
+ )
178
187
  var(--slider-thumb-transition-easing, var(--motion-easing, ease)),
179
- opacity var(--slider-thumb-transition-duration, var(--motion-duration, 0.15s))
188
+ opacity
189
+ var(
190
+ --slider-thumb-transition-duration,
191
+ var(--duration-quick, var(--motion-duration, 0.15s))
192
+ )
180
193
  var(--slider-thumb-transition-easing, var(--motion-easing, ease));
181
194
  }
182
195
 
@@ -190,9 +203,17 @@
190
203
  opacity: var(--slider-thumb-opacity, 1);
191
204
  cursor: pointer;
192
205
  transition:
193
- transform var(--slider-thumb-transition-duration, var(--motion-duration, 0.15s))
206
+ transform
207
+ var(
208
+ --slider-thumb-transition-duration,
209
+ var(--duration-quick, var(--motion-duration, 0.15s))
210
+ )
194
211
  var(--slider-thumb-transition-easing, var(--motion-easing, ease)),
195
- opacity var(--slider-thumb-transition-duration, var(--motion-duration, 0.15s))
212
+ opacity
213
+ var(
214
+ --slider-thumb-transition-duration,
215
+ var(--duration-quick, var(--motion-duration, 0.15s))
216
+ )
196
217
  var(--slider-thumb-transition-easing, var(--motion-easing, ease));
197
218
  }
198
219
 
@@ -1423,7 +1423,11 @@
1423
1423
  width: var(--table-scroll-scrim-width, 32px);
1424
1424
  opacity: 0;
1425
1425
  pointer-events: none;
1426
- transition: opacity var(--table-scroll-scrim-transition-duration, var(--motion-duration, 0.2s))
1426
+ transition: opacity
1427
+ var(
1428
+ --table-scroll-scrim-transition-duration,
1429
+ var(--duration-base, var(--motion-duration, 0.2s))
1430
+ )
1427
1431
  var(--table-scroll-scrim-transition-easing, var(--motion-easing, ease));
1428
1432
  z-index: 2;
1429
1433
  }
@@ -1671,7 +1675,10 @@
1671
1675
  through <sui-table> the selection checkboxes' transition could not be
1672
1676
  slowed or stopped by any means -- custom properties are the only route
1673
1677
  across a shadow boundary and this one was already spoken for. */
1674
- --checkbox-transition: var(--table-checkbox-transition, 0.15s);
1678
+ --checkbox-transition: var(
1679
+ --table-checkbox-transition,
1680
+ var(--duration-quick, var(--motion-duration, 0.15s))
1681
+ );
1675
1682
  }
1676
1683
 
1677
1684
  /* ── Sort button ────────────────────────────────────────────────────────── */
@@ -605,7 +605,12 @@
605
605
  color: var(--tabs-arrow-color, var(--tabs-item-color, #666666));
606
606
  cursor: pointer;
607
607
  z-index: 1;
608
- transition: var(--tabs-arrow-transition, color 0.2s ease);
608
+ transition: var(
609
+ --tabs-arrow-transition,
610
+ color
611
+ var(--tabs-arrow-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))
612
+ var(--tabs-arrow-transition-easing, var(--motion-easing, ease))
613
+ );
609
614
  font-family: inherit;
610
615
  }
611
616
 
@@ -635,7 +640,13 @@
635
640
  white-space: nowrap;
636
641
  flex-shrink: 0;
637
642
  user-select: none;
638
- transition: var(--tabs-transition, color 0.2s ease, background 0.2s ease);
643
+ transition: var(
644
+ --tabs-transition,
645
+ color var(--tabs-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))
646
+ var(--tabs-transition-easing, var(--motion-easing, ease)),
647
+ background var(--tabs-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))
648
+ var(--tabs-transition-easing, var(--motion-easing, ease))
649
+ );
639
650
  }
640
651
 
641
652
  /* Roving focus really does move (see focusedKey/focusTabAt above) -- this
@@ -736,7 +747,13 @@
736
747
  height: var(--tabs-indicator-height, 2px);
737
748
  background-color: var(--tabs-indicator-color, #1a73e8);
738
749
  border-radius: var(--tabs-indicator-border-radius, 2px 2px 0 0);
739
- transition: var(--tabs-indicator-transition, left 0.3s ease, width 0.3s ease);
750
+ transition: var(
751
+ --tabs-indicator-transition,
752
+ left var(--tabs-indicator-transition-duration, var(--motion-duration, 0.3s))
753
+ var(--tabs-indicator-transition-easing, var(--motion-easing, ease)),
754
+ width var(--tabs-indicator-transition-duration, var(--motion-duration, 0.3s))
755
+ var(--tabs-indicator-transition-easing, var(--motion-easing, ease))
756
+ );
740
757
  pointer-events: none;
741
758
  }
742
759
 
@@ -812,7 +829,13 @@
812
829
  width: var(--tabs-indicator-height, 2px);
813
830
  height: var(--tabs-indicator-height, 2px);
814
831
  border-radius: var(--tabs-indicator-border-radius-vertical, 0 2px 2px 0);
815
- transition: var(--tabs-indicator-transition-vertical, top 0.3s ease, height 0.3s ease);
832
+ transition: var(
833
+ --tabs-indicator-transition-vertical,
834
+ top var(--tabs-indicator-transition-vertical-duration, var(--motion-duration, 0.3s))
835
+ var(--tabs-indicator-transition-vertical-easing, var(--motion-easing, ease)),
836
+ height var(--tabs-indicator-transition-vertical-duration, var(--motion-duration, 0.3s))
837
+ var(--tabs-indicator-transition-vertical-easing, var(--motion-easing, ease))
838
+ );
816
839
  }
817
840
 
818
841
  /* Section header rendered above a group of vertical nav items. */
@@ -148,7 +148,11 @@
148
148
  and both fall back through the library-wide --motion-* tokens. */
149
149
  animation: task-list-fade-up
150
150
  var(--task-list-row-animation-duration, var(--motion-duration, 320ms))
151
- var(--task-list-ease, var(--motion-easing, cubic-bezier(0.23, 1, 0.32, 1))) both;
151
+ var(
152
+ --task-list-ease,
153
+ var(--ease-smooth-out, var(--motion-easing, cubic-bezier(0.23, 1, 0.32, 1)))
154
+ )
155
+ both;
152
156
  }
153
157
 
154
158
  .row-glyph {
@@ -206,7 +210,11 @@
206
210
  color: var(--task-list-done-color, #6b6b6b);
207
211
  animation: task-list-check-pop
208
212
  var(--task-list-check-pop-animation-duration, var(--motion-duration, 200ms))
209
- var(--task-list-ease, var(--motion-easing, cubic-bezier(0.23, 1, 0.32, 1))) both;
213
+ var(
214
+ --task-list-ease,
215
+ var(--ease-smooth-out, var(--motion-easing, cubic-bezier(0.23, 1, 0.32, 1)))
216
+ )
217
+ both;
210
218
  }
211
219
  .glyph-x {
212
220
  color: var(--task-list-error-color, #c93f38);
@@ -172,7 +172,9 @@
172
172
  background-color: var(--theme-switcher-bg, transparent);
173
173
  cursor: pointer;
174
174
  color: var(--theme-switcher-icon-color, #374151);
175
- transition: background-color var(--theme-switcher-transition-duration, 0.3s);
175
+ transition: background-color
176
+ var(--theme-switcher-transition-duration, var(--motion-duration, 0.3s))
177
+ var(--theme-switcher-transition-easing, var(--motion-easing, ease));
176
178
  font-family: inherit;
177
179
  }
178
180
 
@@ -191,8 +193,10 @@
191
193
  width: var(--theme-switcher-icon-size, 18px);
192
194
  height: var(--theme-switcher-icon-size, 18px);
193
195
  transition:
194
- opacity var(--theme-switcher-transition-duration, 0.3s),
195
- transform var(--theme-switcher-transition-duration, 0.3s);
196
+ opacity var(--theme-switcher-transition-duration, var(--motion-duration, 0.3s))
197
+ var(--theme-switcher-transition-easing, var(--motion-easing, ease)),
198
+ transform var(--theme-switcher-transition-duration, var(--motion-duration, 0.3s))
199
+ var(--theme-switcher-transition-easing, var(--motion-easing, ease));
196
200
  }
197
201
 
198
202
  .icon :global(svg) {
@@ -232,8 +236,10 @@
232
236
  background-color: var(--theme-switcher-segment-active-bg, #ffffff);
233
237
  box-shadow: var(--theme-switcher-segment-shadow, 0 1px 2px rgba(0, 0, 0, 0.1));
234
238
  transition:
235
- left var(--theme-switcher-transition-duration, 0.3s),
236
- width var(--theme-switcher-transition-duration, 0.3s);
239
+ left var(--theme-switcher-transition-duration, var(--motion-duration, 0.3s))
240
+ var(--theme-switcher-transition-easing, var(--motion-easing, ease)),
241
+ width var(--theme-switcher-transition-duration, var(--motion-duration, 0.3s))
242
+ var(--theme-switcher-transition-easing, var(--motion-easing, ease));
237
243
  z-index: 0;
238
244
  }
239
245
 
@@ -249,7 +255,8 @@
249
255
  background: transparent;
250
256
  cursor: pointer;
251
257
  color: var(--theme-switcher-icon-color, #374151);
252
- transition: color var(--theme-switcher-transition-duration, 0.3s);
258
+ transition: color var(--theme-switcher-transition-duration, var(--motion-duration, 0.3s))
259
+ var(--theme-switcher-transition-easing, var(--motion-easing, ease));
253
260
  font-family: inherit;
254
261
  }
255
262
 
@@ -492,7 +492,7 @@
492
492
  margin-bottom: var(--thinking-indicator-margin-bottom, 1rem);
493
493
  min-height: 0;
494
494
  transition: min-height 400ms
495
- var(--thinking-indicator-trace-ease, cubic-bezier(0.23, 1, 0.32, 1));
495
+ var(--thinking-indicator-trace-ease, var(--ease-smooth-out, cubic-bezier(0.23, 1, 0.32, 1)));
496
496
  }
497
497
 
498
498
  .expandable.busy {
@@ -721,7 +721,8 @@
721
721
  background: var(--thinking-indicator-trace-connector-color, #dcdcdc);
722
722
  margin-left: 6px;
723
723
  flex-shrink: 0;
724
- transition: height 500ms var(--thinking-indicator-trace-ease, cubic-bezier(0.23, 1, 0.32, 1));
724
+ transition: height 500ms
725
+ var(--thinking-indicator-trace-ease, var(--ease-smooth-out, cubic-bezier(0.23, 1, 0.32, 1)));
725
726
  }
726
727
 
727
728
  .trace-rows {
@@ -740,7 +741,8 @@
740
741
  font-size: var(--thinking-indicator-trace-row-font-size, 0.8125rem);
741
742
  color: var(--thinking-indicator-trace-row-color, #2b2b2b);
742
743
  animation: thinking-indicator-fade-up 320ms
743
- var(--thinking-indicator-trace-ease, cubic-bezier(0.23, 1, 0.32, 1)) both;
744
+ var(--thinking-indicator-trace-ease, var(--ease-smooth-out, cubic-bezier(0.23, 1, 0.32, 1)))
745
+ both;
744
746
  text-decoration: none;
745
747
  }
746
748