@juspay/svelte-ui-components 2.9.0 → 2.11.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 (189) hide show
  1. package/README.md +337 -77
  2. package/dist/Accordion/Accordion.svelte +4 -2
  3. package/dist/Accordion/Accordion.svelte.d.ts +2 -4
  4. package/dist/Accordion/properties.d.ts +6 -0
  5. package/dist/Accordion/properties.js +1 -0
  6. package/dist/Animations/ModalAnimation.svelte +11 -9
  7. package/dist/Avatar/Avatar.svelte +122 -0
  8. package/dist/Avatar/Avatar.svelte.d.ts +4 -0
  9. package/dist/Avatar/properties.d.ts +15 -0
  10. package/dist/Avatar/properties.js +1 -0
  11. package/dist/Badge/Badge.svelte +2 -2
  12. package/dist/Badge/properties.d.ts +1 -0
  13. package/dist/Banner/Banner.svelte +132 -48
  14. package/dist/Banner/Banner.svelte.d.ts +1 -1
  15. package/dist/Banner/properties.d.ts +8 -3
  16. package/dist/Book/Book.svelte +281 -0
  17. package/dist/Book/Book.svelte.d.ts +4 -0
  18. package/dist/Book/properties.d.ts +24 -0
  19. package/dist/Book/properties.js +1 -0
  20. package/dist/BrandLoader/BrandLoader.svelte +3 -3
  21. package/dist/BrandLoader/properties.d.ts +1 -0
  22. package/dist/Browser/Browser.svelte +193 -0
  23. package/dist/Browser/Browser.svelte.d.ts +3 -0
  24. package/dist/Browser/properties.d.ts +16 -0
  25. package/dist/Browser/properties.js +1 -0
  26. package/dist/Button/Button.svelte +20 -7
  27. package/dist/Button/properties.d.ts +7 -4
  28. package/dist/Calendar/Calendar.svelte +476 -0
  29. package/dist/Calendar/Calendar.svelte.d.ts +4 -0
  30. package/dist/Calendar/properties.d.ts +30 -0
  31. package/dist/Calendar/properties.js +1 -0
  32. package/dist/Carousel/Carousel.svelte +19 -16
  33. package/dist/Carousel/properties.d.ts +1 -0
  34. package/dist/CheckListItem/CheckListItem.svelte +31 -26
  35. package/dist/CheckListItem/properties.d.ts +4 -1
  36. package/dist/Checkbox/Checkbox.svelte +157 -0
  37. package/dist/Checkbox/Checkbox.svelte.d.ts +4 -0
  38. package/dist/Checkbox/properties.d.ts +17 -0
  39. package/dist/Checkbox/properties.js +1 -0
  40. package/dist/Choicebox/Choicebox.svelte +85 -0
  41. package/dist/Choicebox/Choicebox.svelte.d.ts +4 -0
  42. package/dist/Choicebox/properties.d.ts +14 -0
  43. package/dist/Choicebox/properties.js +1 -0
  44. package/dist/CommandMenu/CommandMenu.svelte +452 -0
  45. package/dist/CommandMenu/CommandMenu.svelte.d.ts +4 -0
  46. package/dist/CommandMenu/properties.d.ts +26 -0
  47. package/dist/CommandMenu/properties.js +1 -0
  48. package/dist/ContextMenu/ContextMenu.svelte +308 -0
  49. package/dist/ContextMenu/ContextMenu.svelte.d.ts +4 -0
  50. package/dist/ContextMenu/properties.d.ts +26 -0
  51. package/dist/ContextMenu/properties.js +1 -0
  52. package/dist/Gauge/Gauge.svelte +70 -0
  53. package/dist/Gauge/Gauge.svelte.d.ts +4 -0
  54. package/dist/Gauge/properties.d.ts +9 -0
  55. package/dist/Gauge/properties.js +1 -0
  56. package/dist/GridItem/GridItem.svelte +5 -4
  57. package/dist/GridItem/properties.d.ts +1 -0
  58. package/dist/Icon/Icon.svelte +3 -3
  59. package/dist/Icon/properties.d.ts +1 -0
  60. package/dist/IconStack/IconStack.svelte +3 -3
  61. package/dist/IconStack/properties.d.ts +1 -0
  62. package/dist/Img/Img.svelte +5 -3
  63. package/dist/Img/properties.d.ts +5 -1
  64. package/dist/Input/Input.svelte +12 -6
  65. package/dist/Input/properties.d.ts +1 -0
  66. package/dist/InputButton/InputButton.svelte +4 -3
  67. package/dist/InputButton/properties.d.ts +5 -6
  68. package/dist/KeyboardInput/KeyboardInput.svelte +93 -0
  69. package/dist/KeyboardInput/KeyboardInput.svelte.d.ts +4 -0
  70. package/dist/KeyboardInput/properties.d.ts +12 -0
  71. package/dist/KeyboardInput/properties.js +1 -0
  72. package/dist/ListItem/ListItem.svelte +31 -28
  73. package/dist/ListItem/properties.d.ts +1 -0
  74. package/dist/Loader/Loader.svelte +10 -6
  75. package/dist/Loader/Loader.svelte.d.ts +3 -25
  76. package/dist/Loader/properties.d.ts +3 -0
  77. package/dist/Loader/properties.js +1 -0
  78. package/dist/LoadingDots/LoadingDots.svelte +64 -0
  79. package/dist/LoadingDots/LoadingDots.svelte.d.ts +3 -0
  80. package/dist/LoadingDots/properties.d.ts +8 -0
  81. package/dist/LoadingDots/properties.js +1 -0
  82. package/dist/Menu/Menu.svelte +349 -0
  83. package/dist/Menu/Menu.svelte.d.ts +4 -0
  84. package/dist/Menu/properties.d.ts +24 -0
  85. package/dist/Menu/properties.js +1 -0
  86. package/dist/Modal/Modal.svelte +10 -9
  87. package/dist/Modal/properties.d.ts +1 -0
  88. package/dist/Pagination/Pagination.svelte +152 -0
  89. package/dist/Pagination/Pagination.svelte.d.ts +4 -0
  90. package/dist/Pagination/properties.d.ts +14 -0
  91. package/dist/Pagination/properties.js +1 -0
  92. package/dist/Phone/Phone.svelte +234 -0
  93. package/dist/Phone/Phone.svelte.d.ts +3 -0
  94. package/dist/Phone/properties.d.ts +11 -0
  95. package/dist/Phone/properties.js +1 -0
  96. package/dist/Pill/Pill.svelte +130 -0
  97. package/dist/Pill/Pill.svelte.d.ts +4 -0
  98. package/dist/Pill/properties.d.ts +16 -0
  99. package/dist/Pill/properties.js +1 -0
  100. package/dist/Progress/Progress.svelte +68 -0
  101. package/dist/Progress/Progress.svelte.d.ts +4 -0
  102. package/dist/Progress/properties.d.ts +10 -0
  103. package/dist/Progress/properties.js +1 -0
  104. package/dist/Radio/Radio.svelte +128 -0
  105. package/dist/Radio/Radio.svelte.d.ts +4 -0
  106. package/dist/Radio/properties.d.ts +15 -0
  107. package/dist/Radio/properties.js +1 -0
  108. package/dist/RelativeTime/RelativeTime.svelte +117 -0
  109. package/dist/RelativeTime/RelativeTime.svelte.d.ts +4 -0
  110. package/dist/RelativeTime/properties.d.ts +13 -0
  111. package/dist/RelativeTime/properties.js +1 -0
  112. package/dist/Scroller/Scroller.svelte +389 -0
  113. package/dist/Scroller/Scroller.svelte.d.ts +4 -0
  114. package/dist/Scroller/properties.d.ts +30 -0
  115. package/dist/Scroller/properties.js +1 -0
  116. package/dist/Select/Select.svelte +382 -344
  117. package/dist/Select/Select.svelte.d.ts +1 -1
  118. package/dist/Select/properties.d.ts +16 -26
  119. package/dist/Sheet/Sheet.svelte +264 -0
  120. package/dist/Sheet/Sheet.svelte.d.ts +4 -0
  121. package/dist/Sheet/properties.d.ts +19 -0
  122. package/dist/Sheet/properties.js +1 -0
  123. package/dist/Shimmer/Shimmer.svelte +44 -0
  124. package/dist/Shimmer/Shimmer.svelte.d.ts +4 -0
  125. package/dist/Shimmer/properties.d.ts +4 -0
  126. package/dist/Shimmer/properties.js +1 -0
  127. package/dist/Slider/Slider.svelte +144 -0
  128. package/dist/Slider/Slider.svelte.d.ts +4 -0
  129. package/dist/Slider/properties.d.ts +17 -0
  130. package/dist/Slider/properties.js +1 -0
  131. package/dist/Snippet/Snippet.svelte +123 -0
  132. package/dist/Snippet/Snippet.svelte.d.ts +4 -0
  133. package/dist/Snippet/properties.d.ts +15 -0
  134. package/dist/Snippet/properties.js +1 -0
  135. package/dist/SplitButton/SplitButton.svelte +135 -0
  136. package/dist/SplitButton/SplitButton.svelte.d.ts +4 -0
  137. package/dist/SplitButton/properties.d.ts +17 -0
  138. package/dist/SplitButton/properties.js +1 -0
  139. package/dist/Status/Status.svelte +5 -3
  140. package/dist/Status/properties.d.ts +1 -0
  141. package/dist/Stepper/Step.svelte +3 -3
  142. package/dist/Stepper/Stepper.svelte +3 -3
  143. package/dist/Stepper/properties.d.ts +2 -0
  144. package/dist/Table/Table.svelte +15 -8
  145. package/dist/Table/properties.d.ts +1 -0
  146. package/dist/Tabs/Tabs.svelte +240 -0
  147. package/dist/Tabs/Tabs.svelte.d.ts +4 -0
  148. package/dist/Tabs/properties.d.ts +16 -0
  149. package/dist/Tabs/properties.js +1 -0
  150. package/dist/ThemeSwitcher/ThemeSwitcher.svelte +249 -0
  151. package/dist/ThemeSwitcher/ThemeSwitcher.svelte.d.ts +4 -0
  152. package/dist/ThemeSwitcher/properties.d.ts +19 -0
  153. package/dist/ThemeSwitcher/properties.js +1 -0
  154. package/dist/Toast/Toast.svelte +25 -30
  155. package/dist/Toast/properties.d.ts +1 -0
  156. package/dist/Toggle/Toggle.svelte +2 -2
  157. package/dist/Toggle/properties.d.ts +1 -0
  158. package/dist/Toolbar/Toolbar.svelte +8 -7
  159. package/dist/Toolbar/properties.d.ts +1 -0
  160. package/dist/Tooltip/Tooltip.svelte +153 -0
  161. package/dist/Tooltip/Tooltip.svelte.d.ts +4 -0
  162. package/dist/Tooltip/properties.d.ts +13 -0
  163. package/dist/Tooltip/properties.js +1 -0
  164. package/dist/assets/battery.svg +5 -0
  165. package/dist/assets/checkmark.svg +3 -0
  166. package/dist/assets/chevron-down-sm.svg +3 -0
  167. package/dist/assets/chevron-down.svg +3 -0
  168. package/dist/assets/chevron-left-lg.svg +3 -0
  169. package/dist/assets/chevron-left.svg +3 -0
  170. package/dist/assets/chevron-right-lg.svg +3 -0
  171. package/dist/assets/chevron-right.svg +3 -0
  172. package/dist/assets/chevron-up.svg +3 -0
  173. package/dist/assets/close.svg +4 -0
  174. package/dist/assets/copy.svg +4 -0
  175. package/dist/assets/error-circle.svg +5 -0
  176. package/dist/assets/lock.svg +3 -0
  177. package/dist/assets/minus.svg +3 -0
  178. package/dist/assets/monitor.svg +5 -0
  179. package/dist/assets/moon.svg +3 -0
  180. package/dist/assets/palette.svg +7 -0
  181. package/dist/assets/search.svg +4 -0
  182. package/dist/assets/signal.svg +6 -0
  183. package/dist/assets/sun.svg +11 -0
  184. package/dist/assets/wifi.svg +3 -0
  185. package/dist/index.d.ts +55 -0
  186. package/dist/index.js +27 -0
  187. package/dist/utils.d.ts +2 -0
  188. package/dist/utils.js +18 -4
  189. package/package.json +26 -1
@@ -0,0 +1,193 @@
1
+ <script lang="ts">
2
+ import type { BrowserProperties } from './properties';
3
+ import lockSvg from '../assets/lock.svg?raw';
4
+
5
+ let {
6
+ url = '',
7
+ title = '',
8
+ showAddressBar = true,
9
+ showTabBar = false,
10
+ variant = 'light',
11
+ shadow = true,
12
+ rounded = true,
13
+ testId,
14
+ lockIcon,
15
+ children,
16
+ classes
17
+ }: BrowserProperties = $props();
18
+ </script>
19
+
20
+ <div class="browser {variant} {classes ?? ''}" class:shadow class:rounded data-pw={testId}>
21
+ <div class="chrome">
22
+ <div class="titlebar">
23
+ <div class="dots">
24
+ <span class="dot close"></span>
25
+ <span class="dot minimize"></span>
26
+ <span class="dot maximize"></span>
27
+ </div>
28
+ {#if showTabBar}
29
+ <div class="tab-bar">
30
+ <div class="tab">{title}</div>
31
+ </div>
32
+ {/if}
33
+ </div>
34
+ {#if showAddressBar}
35
+ <div class="addressbar-row">
36
+ <div class="addressbar">
37
+ {#if typeof lockIcon === 'function'}
38
+ {@render lockIcon()}
39
+ {:else}
40
+ <span class="lock-icon">
41
+ <!-- eslint-disable svelte/no-at-html-tags -->
42
+ {@html lockSvg}
43
+ </span>
44
+ {/if}
45
+ <span class="url-text">{url}</span>
46
+ </div>
47
+ </div>
48
+ {/if}
49
+ </div>
50
+ <div class="content">
51
+ {#if typeof children === 'function'}
52
+ {@render children()}
53
+ {/if}
54
+ </div>
55
+ </div>
56
+
57
+ <style>
58
+ .browser {
59
+ width: var(--browser-width, 100%);
60
+ max-width: var(--browser-max-width);
61
+ border: var(--browser-border, 1px solid #d1d5db);
62
+ overflow: hidden;
63
+ display: flex;
64
+ flex-direction: column;
65
+ }
66
+
67
+ .browser.rounded {
68
+ border-radius: var(--browser-border-radius, 12px);
69
+ }
70
+
71
+ .browser.shadow {
72
+ box-shadow: var(--browser-shadow, 0 8px 32px rgba(0, 0, 0, 0.12));
73
+ }
74
+
75
+ /* Light variant */
76
+ .browser.light .chrome {
77
+ background-color: var(--browser-chrome-bg, #f3f4f6);
78
+ color: var(--browser-chrome-color, #374151);
79
+ }
80
+
81
+ .browser.light .tab {
82
+ background-color: var(--browser-tab-bg, #ffffff);
83
+ color: var(--browser-tab-color, #374151);
84
+ }
85
+
86
+ .browser.light .addressbar {
87
+ background-color: var(--browser-addressbar-bg, #ffffff);
88
+ border: var(--browser-addressbar-border, 1px solid #e5e7eb);
89
+ }
90
+
91
+ /* Dark variant */
92
+ .browser.dark .chrome {
93
+ background-color: var(--browser-chrome-bg, #1f2937);
94
+ color: var(--browser-chrome-color, #d1d5db);
95
+ }
96
+
97
+ .browser.dark .tab {
98
+ background-color: var(--browser-tab-bg, #374151);
99
+ color: var(--browser-tab-color, #d1d5db);
100
+ }
101
+
102
+ .browser.dark .addressbar {
103
+ background-color: var(--browser-addressbar-bg, #111827);
104
+ border: var(--browser-addressbar-border, 1px solid #374151);
105
+ }
106
+
107
+ .chrome {
108
+ display: flex;
109
+ flex-direction: column;
110
+ }
111
+
112
+ .titlebar {
113
+ display: flex;
114
+ align-items: center;
115
+ padding: var(--browser-titlebar-padding, 12px 16px);
116
+ gap: 12px;
117
+ }
118
+
119
+ .dots {
120
+ display: flex;
121
+ gap: var(--browser-dot-gap, 8px);
122
+ flex-shrink: 0;
123
+ }
124
+
125
+ .dot {
126
+ width: var(--browser-dot-size, 12px);
127
+ height: var(--browser-dot-size, 12px);
128
+ border-radius: 50%;
129
+ }
130
+
131
+ .dot.close {
132
+ background-color: var(--browser-dot-close-bg, #ef4444);
133
+ }
134
+
135
+ .dot.minimize {
136
+ background-color: var(--browser-dot-minimize-bg, #f59e0b);
137
+ }
138
+
139
+ .dot.maximize {
140
+ background-color: var(--browser-dot-maximize-bg, #22c55e);
141
+ }
142
+
143
+ .tab-bar {
144
+ display: flex;
145
+ align-items: flex-end;
146
+ flex: 1;
147
+ }
148
+
149
+ .tab {
150
+ padding: var(--browser-tab-padding, 6px 16px);
151
+ border-radius: var(--browser-tab-border-radius, 8px 8px 0 0);
152
+ font-size: var(--browser-tab-font-size, 13px);
153
+ font-family: var(--browser-tab-font-family, inherit);
154
+ white-space: nowrap;
155
+ overflow: hidden;
156
+ text-overflow: ellipsis;
157
+ max-width: 200px;
158
+ }
159
+
160
+ .addressbar-row {
161
+ padding: var(--browser-addressbar-padding, 8px 16px);
162
+ }
163
+
164
+ .addressbar {
165
+ display: flex;
166
+ align-items: center;
167
+ gap: 8px;
168
+ padding: 0 12px;
169
+ height: var(--browser-addressbar-height, 32px);
170
+ border-radius: var(--browser-addressbar-border-radius, 6px);
171
+ font-size: var(--browser-addressbar-font-size, 13px);
172
+ font-family: var(--browser-addressbar-font-family, inherit);
173
+ }
174
+
175
+ .lock-icon {
176
+ display: flex;
177
+ flex-shrink: 0;
178
+ color: var(--browser-lock-color, #6b7280);
179
+ }
180
+
181
+ .url-text {
182
+ color: var(--browser-addressbar-color, #6b7280);
183
+ white-space: nowrap;
184
+ overflow: hidden;
185
+ text-overflow: ellipsis;
186
+ }
187
+
188
+ .content {
189
+ background-color: var(--browser-content-bg, #ffffff);
190
+ min-height: var(--browser-content-min-height, 200px);
191
+ overflow: var(--browser-content-overflow, hidden);
192
+ }
193
+ </style>
@@ -0,0 +1,3 @@
1
+ declare const Browser: import("svelte").Component<import("./properties").OptionalBrowserProperties, {}, "">;
2
+ type Browser = ReturnType<typeof Browser>;
3
+ export default Browser;
@@ -0,0 +1,16 @@
1
+ import type { Snippet } from 'svelte';
2
+ export type BrowserVariant = 'light' | 'dark';
3
+ export type BrowserProperties = OptionalBrowserProperties;
4
+ export type OptionalBrowserProperties = {
5
+ url?: string;
6
+ title?: string;
7
+ showAddressBar?: boolean;
8
+ showTabBar?: boolean;
9
+ variant?: BrowserVariant;
10
+ shadow?: boolean;
11
+ rounded?: boolean;
12
+ testId?: string;
13
+ children?: Snippet;
14
+ lockIcon?: Snippet;
15
+ classes?: string;
16
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -5,16 +5,23 @@
5
5
  let {
6
6
  text,
7
7
  enable = true,
8
+ disabled = false,
8
9
  showLoader = false,
9
10
  loaderType,
10
- type = 'submit',
11
+ type = 'button',
11
12
  testId,
13
+ ariaLabel,
14
+ ariaExpanded,
12
15
  onclick,
13
16
  onkeyup = () => {},
14
17
  showProgressBar = $bindable(false),
15
- icon
18
+ icon,
19
+ children,
20
+ classes
16
21
  }: ButtonProperties = $props();
17
22
 
23
+ let isDisabled = $derived(!enable || disabled || showLoader);
24
+
18
25
  function handleButtonClick(event: MouseEvent): void {
19
26
  if (showProgressBar) {
20
27
  return;
@@ -26,27 +33,33 @@
26
33
  }
27
34
  </script>
28
35
 
29
- <div class="button-container">
36
+ <div class="button-container {classes ?? ''}">
30
37
  {#if showProgressBar}
31
38
  <div class="button-progress-bar"></div>
32
39
  {/if}
33
40
  <button
34
- class:disabled={!enable}
41
+ class:disabled={isDisabled}
35
42
  onclick={handleButtonClick}
36
43
  {onkeyup}
37
- disabled={!(enable && !showLoader)}
44
+ disabled={isDisabled}
38
45
  {type}
39
46
  data-pw={testId}
47
+ aria-label={ariaLabel}
48
+ aria-expanded={ariaExpanded}
40
49
  >
41
50
  {#if showLoader && loaderType === 'Circular'}
42
51
  <div class="button-loader"><Loader /></div>
43
52
  {/if}
44
- {#if icon}
53
+ {#if typeof icon === 'function'}
45
54
  <div class="button-icon">{@render icon()}</div>
46
55
  {/if}
47
- {#if text}
56
+ {#if typeof text === 'string' && text.length > 0}
57
+ <!-- eslint-disable-next-line svelte/no-at-html-tags -->
48
58
  <div class="button-text">{@html text}</div>
49
59
  {/if}
60
+ {#if typeof children === 'function'}
61
+ {@render children()}
62
+ {/if}
50
63
  </button>
51
64
  </div>
52
65
 
@@ -1,10 +1,8 @@
1
1
  import type { Snippet } from 'svelte';
2
2
  export type LoaderType = 'Circular' | 'ProgressBar';
3
- export type ButtonProperties = OptionalButtonProperties & ButtonEventProperties & MandatoryButtonProperties;
4
- export type MandatoryButtonProperties = {
5
- text: string;
6
- };
3
+ export type ButtonProperties = OptionalButtonProperties & ButtonEventProperties;
7
4
  export type OptionalButtonProperties = {
5
+ text?: string;
8
6
  enable?: boolean;
9
7
  showProgressBar?: boolean;
10
8
  showLoader?: boolean;
@@ -12,6 +10,11 @@ export type OptionalButtonProperties = {
12
10
  type?: 'submit' | 'reset' | 'button';
13
11
  testId?: string;
14
12
  icon?: Snippet;
13
+ children?: Snippet;
14
+ ariaLabel?: string;
15
+ ariaExpanded?: boolean;
16
+ disabled?: boolean;
17
+ classes?: string;
15
18
  };
16
19
  export type ButtonEventProperties = {
17
20
  onclick?: (event: MouseEvent) => void;