@stubber/ui 1.0.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 (235) hide show
  1. package/README.md +17 -0
  2. package/dist/Typography.svelte +129 -0
  3. package/dist/Typography.svelte.d.ts +23 -0
  4. package/dist/assets/docs-icon.svg +11 -0
  5. package/dist/assets/stubber-icon.svg +3 -0
  6. package/dist/atoms/Button.svelte +70 -0
  7. package/dist/atoms/Button.svelte.d.ts +24 -0
  8. package/dist/atoms/IconButton.svelte +0 -0
  9. package/dist/atoms/IconButton.svelte.d.ts +23 -0
  10. package/dist/atoms/SpinnerMessage.svelte +7 -0
  11. package/dist/atoms/SpinnerMessage.svelte.d.ts +16 -0
  12. package/dist/atoms/TextOnlyButton.svelte +70 -0
  13. package/dist/atoms/TextOnlyButton.svelte.d.ts +24 -0
  14. package/dist/components/Accordion.svelte +47 -0
  15. package/dist/components/Accordion.svelte.d.ts +14 -0
  16. package/dist/components/AdvancedSwitch.svelte +20 -0
  17. package/dist/components/AdvancedSwitch.svelte.d.ts +14 -0
  18. package/dist/components/Alert.svelte +34 -0
  19. package/dist/components/Alert.svelte.d.ts +25 -0
  20. package/dist/components/Breadcrumbs.svelte +64 -0
  21. package/dist/components/Breadcrumbs.svelte.d.ts +33 -0
  22. package/dist/components/Chip.svelte +53 -0
  23. package/dist/components/Chip.svelte.d.ts +33 -0
  24. package/dist/components/HorizontalTabs.svelte +32 -0
  25. package/dist/components/HorizontalTabs.svelte.d.ts +25 -0
  26. package/dist/components/IconButton.svelte +165 -0
  27. package/dist/components/IconButton.svelte.d.ts +43 -0
  28. package/dist/components/Inputs/PasswordInput.svelte +76 -0
  29. package/dist/components/Inputs/PasswordInput.svelte.d.ts +21 -0
  30. package/dist/components/Inputs/SelectInput.css +143 -0
  31. package/dist/components/Inputs/SelectInput.svelte +18 -0
  32. package/dist/components/Inputs/SelectInput.svelte.d.ts +22 -0
  33. package/dist/components/Inputs/TextInput.svelte +76 -0
  34. package/dist/components/Inputs/TextInput.svelte.d.ts +21 -0
  35. package/dist/components/Modal.svelte +25 -0
  36. package/dist/components/Modal.svelte.d.ts +31 -0
  37. package/dist/components/ModalIcon.svelte +19 -0
  38. package/dist/components/ModalIcon.svelte.d.ts +17 -0
  39. package/dist/components/NavProfile.svelte +70 -0
  40. package/dist/components/NavProfile.svelte.d.ts +29 -0
  41. package/dist/components/OrgSwitcher.svelte +193 -0
  42. package/dist/components/OrgSwitcher.svelte.d.ts +33 -0
  43. package/dist/components/PasswordStrengthItem.svelte +10 -0
  44. package/dist/components/PasswordStrengthItem.svelte.d.ts +17 -0
  45. package/dist/components/PasswordStrengthValidator.svelte +57 -0
  46. package/dist/components/PasswordStrengthValidator.svelte.d.ts +17 -0
  47. package/dist/components/PrimaryButton.svelte +182 -0
  48. package/dist/components/PrimaryButton.svelte.d.ts +47 -0
  49. package/dist/components/ProfileMenu.svelte +58 -0
  50. package/dist/components/ProfileMenu.svelte.d.ts +35 -0
  51. package/dist/components/SideNav/SideNavExample.svelte +47 -0
  52. package/dist/components/SideNav/SideNavExample.svelte.d.ts +23 -0
  53. package/dist/components/SideNav/SideNavItem.svelte +54 -0
  54. package/dist/components/SideNav/SideNavItem.svelte.d.ts +35 -0
  55. package/dist/components/SideNav/SideNavTitle.svelte +7 -0
  56. package/dist/components/SideNav/SideNavTitle.svelte.d.ts +23 -0
  57. package/dist/components/Tabs.svelte +102 -0
  58. package/dist/components/Tabs.svelte.d.ts +14 -0
  59. package/dist/components/Toast.svelte +49 -0
  60. package/dist/components/Toast.svelte.d.ts +18 -0
  61. package/dist/components/Tooltip.svelte +80 -0
  62. package/dist/components/Tooltip.svelte.d.ts +29 -0
  63. package/dist/components/alert-dialog/alert-dialog-action.svelte +16 -0
  64. package/dist/components/alert-dialog/alert-dialog-action.svelte.d.ts +23 -0
  65. package/dist/components/alert-dialog/alert-dialog-cancel.svelte +16 -0
  66. package/dist/components/alert-dialog/alert-dialog-cancel.svelte.d.ts +23 -0
  67. package/dist/components/alert-dialog/alert-dialog-content.svelte +23 -0
  68. package/dist/components/alert-dialog/alert-dialog-content.svelte.d.ts +17 -0
  69. package/dist/components/alert-dialog/alert-dialog-description.svelte +12 -0
  70. package/dist/components/alert-dialog/alert-dialog-description.svelte.d.ts +17 -0
  71. package/dist/components/alert-dialog/alert-dialog-footer.svelte +11 -0
  72. package/dist/components/alert-dialog/alert-dialog-footer.svelte.d.ts +17 -0
  73. package/dist/components/alert-dialog/alert-dialog-header.svelte +8 -0
  74. package/dist/components/alert-dialog/alert-dialog-header.svelte.d.ts +17 -0
  75. package/dist/components/alert-dialog/alert-dialog-overlay.svelte +17 -0
  76. package/dist/components/alert-dialog/alert-dialog-overlay.svelte.d.ts +15 -0
  77. package/dist/components/alert-dialog/alert-dialog-portal.svelte +6 -0
  78. package/dist/components/alert-dialog/alert-dialog-portal.svelte.d.ts +17 -0
  79. package/dist/components/alert-dialog/alert-dialog-title.svelte +10 -0
  80. package/dist/components/alert-dialog/alert-dialog-title.svelte.d.ts +17 -0
  81. package/dist/components/alert-dialog/index.d.ts +13 -0
  82. package/dist/components/alert-dialog/index.js +15 -0
  83. package/dist/components/badge/badge.svelte +16 -0
  84. package/dist/components/badge/badge.svelte.d.ts +22 -0
  85. package/dist/components/badge/index.d.ts +60 -0
  86. package/dist/components/badge/index.js +17 -0
  87. package/dist/components/breadcrumb/breadcrumb-ellipsis.svelte +16 -0
  88. package/dist/components/breadcrumb/breadcrumb-ellipsis.svelte.d.ts +17 -0
  89. package/dist/components/breadcrumb/breadcrumb-item.svelte +9 -0
  90. package/dist/components/breadcrumb/breadcrumb-item.svelte.d.ts +19 -0
  91. package/dist/components/breadcrumb/breadcrumb-link.svelte +22 -0
  92. package/dist/components/breadcrumb/breadcrumb-link.svelte.d.ts +22 -0
  93. package/dist/components/breadcrumb/breadcrumb-list.svelte +16 -0
  94. package/dist/components/breadcrumb/breadcrumb-list.svelte.d.ts +19 -0
  95. package/dist/components/breadcrumb/breadcrumb-page.svelte +16 -0
  96. package/dist/components/breadcrumb/breadcrumb-page.svelte.d.ts +21 -0
  97. package/dist/components/breadcrumb/breadcrumb-separator.svelte +17 -0
  98. package/dist/components/breadcrumb/breadcrumb-separator.svelte.d.ts +19 -0
  99. package/dist/components/breadcrumb/breadcrumb.svelte +8 -0
  100. package/dist/components/breadcrumb/breadcrumb.svelte.d.ts +19 -0
  101. package/dist/components/breadcrumb/index.d.ts +8 -0
  102. package/dist/components/breadcrumb/index.js +10 -0
  103. package/dist/components/button/button.svelte +20 -0
  104. package/dist/components/button/button.svelte.d.ts +16 -0
  105. package/dist/components/button/index.d.ts +110 -0
  106. package/dist/components/button/index.js +28 -0
  107. package/dist/components/card/card-content.svelte +8 -0
  108. package/dist/components/card/card-content.svelte.d.ts +17 -0
  109. package/dist/components/card/card-description.svelte +8 -0
  110. package/dist/components/card/card-description.svelte.d.ts +17 -0
  111. package/dist/components/card/card-footer.svelte +8 -0
  112. package/dist/components/card/card-footer.svelte.d.ts +17 -0
  113. package/dist/components/card/card-header.svelte +8 -0
  114. package/dist/components/card/card-header.svelte.d.ts +17 -0
  115. package/dist/components/card/card-title.svelte +13 -0
  116. package/dist/components/card/card-title.svelte.d.ts +20 -0
  117. package/dist/components/card/card.svelte +11 -0
  118. package/dist/components/card/card.svelte.d.ts +17 -0
  119. package/dist/components/card/index.d.ts +8 -0
  120. package/dist/components/card/index.js +9 -0
  121. package/dist/components/checkbox/checkbox.svelte +28 -0
  122. package/dist/components/checkbox/checkbox.svelte.d.ts +13 -0
  123. package/dist/components/checkbox/index.d.ts +2 -0
  124. package/dist/components/checkbox/index.js +4 -0
  125. package/dist/components/dialog/dialog-content.svelte +31 -0
  126. package/dist/components/dialog/dialog-content.svelte.d.ts +17 -0
  127. package/dist/components/dialog/dialog-description.svelte +12 -0
  128. package/dist/components/dialog/dialog-description.svelte.d.ts +17 -0
  129. package/dist/components/dialog/dialog-footer.svelte +11 -0
  130. package/dist/components/dialog/dialog-footer.svelte.d.ts +17 -0
  131. package/dist/components/dialog/dialog-header.svelte +8 -0
  132. package/dist/components/dialog/dialog-header.svelte.d.ts +17 -0
  133. package/dist/components/dialog/dialog-overlay.svelte +17 -0
  134. package/dist/components/dialog/dialog-overlay.svelte.d.ts +15 -0
  135. package/dist/components/dialog/dialog-portal.svelte +6 -0
  136. package/dist/components/dialog/dialog-portal.svelte.d.ts +17 -0
  137. package/dist/components/dialog/dialog-title.svelte +12 -0
  138. package/dist/components/dialog/dialog-title.svelte.d.ts +17 -0
  139. package/dist/components/dialog/index.d.ts +12 -0
  140. package/dist/components/dialog/index.js +14 -0
  141. package/dist/components/fields/Checkbox.svelte +24 -0
  142. package/dist/components/fields/Checkbox.svelte.d.ts +27 -0
  143. package/dist/components/fields/Radio.svelte +30 -0
  144. package/dist/components/fields/Radio.svelte.d.ts +27 -0
  145. package/dist/components/fields/StandardInput.svelte +47 -0
  146. package/dist/components/fields/StandardInput.svelte.d.ts +31 -0
  147. package/dist/components/input/index.d.ts +23 -0
  148. package/dist/components/input/index.js +4 -0
  149. package/dist/components/input/input.svelte +33 -0
  150. package/dist/components/input/input.svelte.d.ts +14 -0
  151. package/dist/components/label/index.d.ts +2 -0
  152. package/dist/components/label/index.js +4 -0
  153. package/dist/components/label/label.svelte +16 -0
  154. package/dist/components/label/label.svelte.d.ts +15 -0
  155. package/dist/components/radio-group/index.d.ts +5 -0
  156. package/dist/components/radio-group/index.js +7 -0
  157. package/dist/components/radio-group/radio-group-item.svelte +22 -0
  158. package/dist/components/radio-group/radio-group-item.svelte.d.ts +13 -0
  159. package/dist/components/radio-group/radio-group.svelte +10 -0
  160. package/dist/components/radio-group/radio-group.svelte.d.ts +17 -0
  161. package/dist/components/scroll-area/index.d.ts +3 -0
  162. package/dist/components/scroll-area/index.js +5 -0
  163. package/dist/components/scroll-area/scroll-area-scrollbar.svelte +21 -0
  164. package/dist/components/scroll-area/scroll-area-scrollbar.svelte.d.ts +23 -0
  165. package/dist/components/scroll-area/scroll-area.svelte +24 -0
  166. package/dist/components/scroll-area/scroll-area.svelte.d.ts +27 -0
  167. package/dist/components/select/index.d.ts +11 -0
  168. package/dist/components/select/index.js +13 -0
  169. package/dist/components/select/select-content.svelte +33 -0
  170. package/dist/components/select/select-content.svelte.d.ts +15 -0
  171. package/dist/components/select/select-item.svelte +34 -0
  172. package/dist/components/select/select-item.svelte.d.ts +15 -0
  173. package/dist/components/select/select-label.svelte +12 -0
  174. package/dist/components/select/select-label.svelte.d.ts +17 -0
  175. package/dist/components/select/select-separator.svelte +7 -0
  176. package/dist/components/select/select-separator.svelte.d.ts +15 -0
  177. package/dist/components/select/select-trigger.svelte +21 -0
  178. package/dist/components/select/select-trigger.svelte.d.ts +31 -0
  179. package/dist/components/separator/index.d.ts +2 -0
  180. package/dist/components/separator/index.js +4 -0
  181. package/dist/components/separator/separator.svelte +18 -0
  182. package/dist/components/separator/separator.svelte.d.ts +15 -0
  183. package/dist/components/sheet/index.d.ts +114 -0
  184. package/dist/components/sheet/index.js +79 -0
  185. package/dist/components/sheet/sheet-content.svelte +38 -0
  186. package/dist/components/sheet/sheet-content.svelte.d.ts +29 -0
  187. package/dist/components/sheet/sheet-description.svelte +9 -0
  188. package/dist/components/sheet/sheet-description.svelte.d.ts +17 -0
  189. package/dist/components/sheet/sheet-footer.svelte +11 -0
  190. package/dist/components/sheet/sheet-footer.svelte.d.ts +17 -0
  191. package/dist/components/sheet/sheet-header.svelte +8 -0
  192. package/dist/components/sheet/sheet-header.svelte.d.ts +17 -0
  193. package/dist/components/sheet/sheet-overlay.svelte +23 -0
  194. package/dist/components/sheet/sheet-overlay.svelte.d.ts +15 -0
  195. package/dist/components/sheet/sheet-portal.svelte +9 -0
  196. package/dist/components/sheet/sheet-portal.svelte.d.ts +17 -0
  197. package/dist/components/sheet/sheet-title.svelte +12 -0
  198. package/dist/components/sheet/sheet-title.svelte.d.ts +17 -0
  199. package/dist/components/sonner/index.d.ts +1 -0
  200. package/dist/components/sonner/index.js +1 -0
  201. package/dist/components/sonner/sonner.svelte +16 -0
  202. package/dist/components/sonner/sonner.svelte.d.ts +15 -0
  203. package/dist/components/switch/index.d.ts +2 -0
  204. package/dist/components/switch/index.js +4 -0
  205. package/dist/components/switch/switch.svelte +30 -0
  206. package/dist/components/switch/switch.svelte.d.ts +13 -0
  207. package/dist/components/tabs/index.d.ts +6 -0
  208. package/dist/components/tabs/index.js +8 -0
  209. package/dist/components/tabs/tabs-content.svelte +17 -0
  210. package/dist/components/tabs/tabs-content.svelte.d.ts +17 -0
  211. package/dist/components/tabs/tabs-list.svelte +15 -0
  212. package/dist/components/tabs/tabs-list.svelte.d.ts +17 -0
  213. package/dist/components/tabs/tabs-trigger.svelte +18 -0
  214. package/dist/components/tabs/tabs-trigger.svelte.d.ts +15 -0
  215. package/dist/components/textarea/index.d.ts +19 -0
  216. package/dist/components/textarea/index.js +4 -0
  217. package/dist/components/textarea/textarea.svelte +28 -0
  218. package/dist/components/textarea/textarea.svelte.d.ts +14 -0
  219. package/dist/components/tooltip/index.d.ts +5 -0
  220. package/dist/components/tooltip/index.js +7 -0
  221. package/dist/components/tooltip/tooltip-content.svelte +24 -0
  222. package/dist/components/tooltip/tooltip-content.svelte.d.ts +17 -0
  223. package/dist/decorators/DecoratorHorizontalTabs.svelte +3 -0
  224. package/dist/decorators/DecoratorHorizontalTabs.svelte.d.ts +27 -0
  225. package/dist/decorators/DecoratorTransparentButton.svelte +3 -0
  226. package/dist/decorators/DecoratorTransparentButton.svelte.d.ts +27 -0
  227. package/dist/decorators/FixedWidthDecorator.svelte +3 -0
  228. package/dist/decorators/FixedWidthDecorator.svelte.d.ts +27 -0
  229. package/dist/index.d.ts +21 -0
  230. package/dist/index.js +29 -0
  231. package/dist/utils/actions.d.ts +4 -0
  232. package/dist/utils/actions.js +20 -0
  233. package/dist/utils/shadcn-utils.d.ts +13 -0
  234. package/dist/utils/shadcn-utils.js +119 -0
  235. package/package.json +68 -0
@@ -0,0 +1,182 @@
1
+ <script>
2
+ export let label = "";
3
+ export let color = "primary";
4
+ export let variant = "regular"; // "regular" | "secondary" | "ghost | "secondary-transparent"
5
+ export let icon = "";
6
+ export let width = "fit"; // "fit" | "full";
7
+ export let disabled = false;
8
+ export let type = "button"; // "button" | "submit" | "reset";
9
+
10
+ let widthClass = "";
11
+ $: switch (width) {
12
+ case "fit":
13
+ widthClass = "w-fit";
14
+ break;
15
+ case "full":
16
+ widthClass = "w-full";
17
+ break;
18
+ }
19
+
20
+ let colorClass = "";
21
+ $: switch (color) {
22
+ case "primary":
23
+ if (variant == "secondary") {
24
+ colorClass =
25
+ "text-primary-500 bg-white border border-primary-500 hover:bg-primary-50 active:bg-white";
26
+ } else if (variant == "ghost") {
27
+ colorClass = "text-primary-500 bg-white hover:bg-primary-50 active:bg-white";
28
+ } else if (variant == "secondary-transparent") {
29
+ colorClass =
30
+ "text-primary-500 bg-transparent border border-primary-500 hover:bg-primary-50 active:bg-transparent";
31
+ } else if (variant == "ghost-transparent") {
32
+ colorClass = "text-primary-500 hover:text-primary-400 active:text-primary-500";
33
+ } else {
34
+ colorClass = "text-white bg-primary-500 hover:bg-primary-400 active:bg-primary-500";
35
+ }
36
+ break;
37
+ //TODO: This is not correct
38
+ case "surface":
39
+ if (variant == "secondary") {
40
+ colorClass = "text-surface-900 bg-white border border-surface-50";
41
+ } else if (variant == "ghost") {
42
+ colorClass = "text-surface-900 bg-white hover:bg-surface-50 active:bg-white";
43
+ } else if (variant == "secondary-transparent") {
44
+ colorClass = "text-surface-900 bg-transparent border border-surface-50 ";
45
+ } else if (variant == "ghost-transparent") {
46
+ colorClass = "text-surface-900 hover:text-surface-700 active:text-surface-900";
47
+ } else {
48
+ colorClass = "text-surface-900 bg-surface-50";
49
+ }
50
+ break;
51
+ case "success":
52
+ if (variant == "secondary") {
53
+ colorClass =
54
+ "text-success-500 bg-white border border-success-500 hover:bg-success-50 active:bg-white";
55
+ } else if (variant == "ghost") {
56
+ colorClass = "text-success-500 bg-white hover:bg-success-50 active:bg-white";
57
+ } else if (variant == "secondary-transparent") {
58
+ colorClass =
59
+ "text-success-500 bg-transparent border border-success-500 hover:bg-success-50 active:bg-transparent";
60
+ } else if (variant == "ghost-transparent") {
61
+ colorClass = "text-success-500 hover:text-success-400 active:text-success-500";
62
+ } else {
63
+ colorClass = "text-white bg-success-500 hover:bg-success-400 active:bg-success-500";
64
+ }
65
+ break;
66
+ case "warning":
67
+ if (variant == "secondary") {
68
+ colorClass =
69
+ "text-warning-500 bg-white border border-warning-500 hover:bg-warning-50 active:bg-white";
70
+ } else if (variant == "ghost") {
71
+ colorClass = "text-warning-500 bg-white hover:bg-warning-50 active:bg-white";
72
+ } else if (variant == "secondary-transparent") {
73
+ colorClass =
74
+ "text-warning-500 bg-transparent border border-warning-500 hover:bg-warning-50 active:bg-white";
75
+ } else if (variant == "ghost-transparent") {
76
+ colorClass = "text-warning-500 hover:text-warning-400 active:text-warning-500";
77
+ } else {
78
+ colorClass = "text-white bg-warning-500 hover:bg-warning-400 active:bg-warning-500";
79
+ }
80
+ break;
81
+ case "danger":
82
+ if (variant == "secondary") {
83
+ colorClass =
84
+ "text-danger-500 bg-white border border-danger-500 hover:bg-danger-50 active:bg-white";
85
+ } else if (variant == "ghost") {
86
+ colorClass = "text-danger-500 bg-white hover:bg-danger-50 active:bg-white";
87
+ } else if (variant == "secondary-transparent") {
88
+ colorClass =
89
+ "text-danger-500 bg-white border border-danger-500 hover:bg-danger-50 active:bg-transparent";
90
+ } else if (variant == "ghost-transparent") {
91
+ colorClass = "text-danger-500 hover:text-danger-400 active:text-danger-500";
92
+ } else {
93
+ colorClass = "text-white bg-danger-500 hover:bg-danger-400 active:bg-danger-500";
94
+ }
95
+ break;
96
+ case "info":
97
+ if (variant == "secondary") {
98
+ colorClass =
99
+ "text-info-500 bg-white border border-info-500 hover:bg-info-50 active:bg-white";
100
+ } else if (variant == "ghost") {
101
+ colorClass = "text-info-500 bg-white hover:bg-info-50 active:bg-white";
102
+ } else if (variant == "secondary-transparent") {
103
+ colorClass =
104
+ "text-info-500 bg-transparent border border-info-500 hover:bg-info-50 active:bg-transparent";
105
+ } else if (variant == "ghost-transparent") {
106
+ colorClass = "text-info-500 hover:text-info-400 active:text-info-500";
107
+ } else {
108
+ colorClass = "text-surface-900 bg-info-500 hover:bg-info-400 active:bg-info-500";
109
+ }
110
+ break;
111
+ case "highlight":
112
+ if (variant == "secondary") {
113
+ colorClass =
114
+ "text-highlight-500 bg-white border border-highlight-500 hover:bg-highlight-50 active:bg-white";
115
+ } else if (variant == "ghost") {
116
+ colorClass = "text-highlight-500 bg-white hover:bg-highlight-50 active:bg-white";
117
+ } else if (variant == "secondary-transparent") {
118
+ colorClass =
119
+ "text-highlight-500 bg-transparent border border-highlight-500 hover:bg-highlight-50 active:bg-transparent";
120
+ } else if (variant == "ghost-transparent") {
121
+ colorClass = "text-highlight-500 hover:text-highlight-400 active:text-highlight-500";
122
+ } else {
123
+ colorClass =
124
+ "text-surface-900 bg-highlight-500 hover:bg-highlight-400 active:bg-highlight-500";
125
+ }
126
+ break;
127
+ case "unicorn":
128
+ if (variant == "secondary") {
129
+ colorClass =
130
+ "text-unicorn-500 bg-white border border-unicorn-500 hover:bg-unicorn-50 active:bg-white";
131
+ } else if (variant == "ghost") {
132
+ colorClass = "text-unicorn-500 bg-white hover:bg-unicorn-50 active:bg-white";
133
+ } else if (variant == "secondary-transparent") {
134
+ colorClass =
135
+ "text-unicorn-500 bg-transparent border border-unicorn-500 hover:bg-unicorn-50 active:bg-transparent";
136
+ } else if (variant == "ghost-transparent") {
137
+ colorClass = "text-unicorn-500 hover:text-unicorn-400 active:text-unicorn-500";
138
+ } else {
139
+ colorClass = "text-white bg-unicorn-500 hover:bg-unicorn-400 active:bg-unicorn-500";
140
+ }
141
+ break;
142
+ }
143
+
144
+ let disabledClass = "";
145
+ $: switch (variant) {
146
+ case "regular":
147
+ disabledClass = "disabled:text-white disabled:bg-surface-100";
148
+ break;
149
+ case "secondary":
150
+ disabledClass =
151
+ "disabled:text-surface-100 disabled:bg-white disabled:border disabled:border-surface-100";
152
+ break;
153
+ case "ghost":
154
+ disabledClass = "disabled:text-surface-100 disabled:bg-white";
155
+ break;
156
+ case "secondary-transparent":
157
+ disabledClass =
158
+ "disabled:text-surface-100 disabled:bg-transparent disabled:border disabled:border-surface-100";
159
+ break;
160
+ case "ghost-transparent":
161
+ disabledClass = "disabled:text-surface-100";
162
+ break;
163
+ }
164
+ </script>
165
+
166
+ <button
167
+ on:mouseout
168
+ on:mouseover
169
+ on:focus
170
+ on:blur
171
+ on:click
172
+ {type}
173
+ {disabled}
174
+ class="h-10 px-4 box-border rounded-lg space-x-2.5 {widthClass} {colorClass} {disabledClass}"
175
+ >
176
+ {#if icon}
177
+ <i class={icon} />
178
+ {/if}
179
+ {#if label}
180
+ <span class="text-button font-normal">{label}</span>
181
+ {/if}
182
+ </button>
@@ -0,0 +1,47 @@
1
+ /** @typedef {typeof __propDef.props} PrimaryButtonProps */
2
+ /** @typedef {typeof __propDef.events} PrimaryButtonEvents */
3
+ /** @typedef {typeof __propDef.slots} PrimaryButtonSlots */
4
+ export default class PrimaryButton extends SvelteComponent<{
5
+ label?: string | undefined;
6
+ color?: string | undefined;
7
+ variant?: string | undefined;
8
+ icon?: string | undefined;
9
+ width?: string | undefined;
10
+ disabled?: boolean | undefined;
11
+ type?: string | undefined;
12
+ }, {
13
+ mouseout: MouseEvent;
14
+ mouseover: MouseEvent;
15
+ focus: FocusEvent;
16
+ blur: FocusEvent;
17
+ click: MouseEvent;
18
+ } & {
19
+ [evt: string]: CustomEvent<any>;
20
+ }, {}> {
21
+ }
22
+ export type PrimaryButtonProps = typeof __propDef.props;
23
+ export type PrimaryButtonEvents = typeof __propDef.events;
24
+ export type PrimaryButtonSlots = typeof __propDef.slots;
25
+ import { SvelteComponent } from "svelte";
26
+ declare const __propDef: {
27
+ props: {
28
+ label?: string | undefined;
29
+ color?: string | undefined;
30
+ variant?: string | undefined;
31
+ icon?: string | undefined;
32
+ width?: string | undefined;
33
+ disabled?: boolean | undefined;
34
+ type?: string | undefined;
35
+ };
36
+ events: {
37
+ mouseout: MouseEvent;
38
+ mouseover: MouseEvent;
39
+ focus: FocusEvent;
40
+ blur: FocusEvent;
41
+ click: MouseEvent;
42
+ } & {
43
+ [evt: string]: CustomEvent<any>;
44
+ };
45
+ slots: {};
46
+ };
47
+ export {};
@@ -0,0 +1,58 @@
1
+ <script>
2
+ import StubberIcon from "../assets/stubber-icon.svg";
3
+ import DocsIcon from "../assets/docs-icon.svg";
4
+ import PrimaryButton from "./PrimaryButton.svelte";
5
+ import Chip from "./Chip.svelte";
6
+ import { createEventDispatcher } from "svelte";
7
+ import Tooltip from "./Tooltip.svelte";
8
+
9
+ export let manageLink = "";
10
+ export let documentationLink = "";
11
+ export let profileName = "";
12
+ export let stubberhandle = "";
13
+
14
+ const dispatch = createEventDispatcher();
15
+ </script>
16
+
17
+ <div class="w-[230px] [&>*]:w-full border border-surface-100 rounded-lg">
18
+ <div class="p-2.5 bg-surface-50 flex flex-col items-center rounded-t-lg">
19
+ <img class="mt-5 mb-[23px]" width="25px" src={StubberIcon} alt="stubber" />
20
+ <h3 class="mb-2 text-heading-6 font-normal text-center text-surface-900">{profileName}</h3>
21
+ <Tooltip>
22
+ <span slot="subject">
23
+ <Chip
24
+ on:click={() => dispatch("copystubberhandle")}
25
+ label={stubberhandle}
26
+ color="success"
27
+ />
28
+ </span>
29
+ <span slot="tooltip"> Copy stubberhandle </span>
30
+ </Tooltip>
31
+ <a class="mt-[17px] w-full" href={manageLink}>
32
+ <PrimaryButton label="Manage Stubber" variant="secondary-transparent" width="full" />
33
+ </a>
34
+ </div>
35
+ <a href={documentationLink}>
36
+ <div class="p-2.5 bg-white border-b border-surface-100">
37
+ <button
38
+ class="w-full flex items-center h-[40px] space-x-4 text-surface-900 hover:bg-surface-50 rounded-lg"
39
+ >
40
+ <button class="h-10 flex justify-center items-center aspect-square">
41
+ <img height="16px" src={DocsIcon} alt="stubber docs" />
42
+ </button>
43
+ <span class="text-button font-normal">Documentation</span>
44
+ </button>
45
+ </div>
46
+ </a>
47
+ <div class="p-2.5 bg-white rounded-b-lg">
48
+ <button
49
+ on:click={() => dispatch("logout")}
50
+ class="w-full flex items-center h-[40px] space-x-4 text-surface-900 hover:bg-surface-50 rounded-lg"
51
+ >
52
+ <button class="h-10 aspect-square">
53
+ <i class="far fa-arrow-right-from-bracket" />
54
+ </button>
55
+ <span class="text-button font-normal">Log out</span>
56
+ </button>
57
+ </div>
58
+ </div>
@@ -0,0 +1,35 @@
1
+ /** @typedef {typeof __propDef.props} ProfileMenuProps */
2
+ /** @typedef {typeof __propDef.events} ProfileMenuEvents */
3
+ /** @typedef {typeof __propDef.slots} ProfileMenuSlots */
4
+ export default class ProfileMenu extends SvelteComponent<{
5
+ manageLink?: string | undefined;
6
+ documentationLink?: string | undefined;
7
+ profileName?: string | undefined;
8
+ stubberhandle?: string | undefined;
9
+ }, {
10
+ copystubberhandle: CustomEvent<any>;
11
+ logout: CustomEvent<any>;
12
+ } & {
13
+ [evt: string]: CustomEvent<any>;
14
+ }, {}> {
15
+ }
16
+ export type ProfileMenuProps = typeof __propDef.props;
17
+ export type ProfileMenuEvents = typeof __propDef.events;
18
+ export type ProfileMenuSlots = typeof __propDef.slots;
19
+ import { SvelteComponent } from "svelte";
20
+ declare const __propDef: {
21
+ props: {
22
+ manageLink?: string | undefined;
23
+ documentationLink?: string | undefined;
24
+ profileName?: string | undefined;
25
+ stubberhandle?: string | undefined;
26
+ };
27
+ events: {
28
+ copystubberhandle: CustomEvent<any>;
29
+ logout: CustomEvent<any>;
30
+ } & {
31
+ [evt: string]: CustomEvent<any>;
32
+ };
33
+ slots: {};
34
+ };
35
+ export {};
@@ -0,0 +1,47 @@
1
+ <!--
2
+ This component is an example of what SideNav usage would look like. Storybook does not have support have support for Svelte slots,
3
+ so in order to have a story for this component, we need to create a new component that builds the SideNav with the appropriate slots.
4
+
5
+ This component is *not* exported to the npm package.
6
+ -->
7
+ <script>
8
+ import SideNavItem from "./SideNavItem.svelte";
9
+ import SideNavTitle from "./SideNavTitle.svelte";
10
+ </script>
11
+
12
+ <div class="p-4 bg-[#F0F6FC]">
13
+ <SideNavTitle title="General" />
14
+ <SideNavItem label="Recent" href="/" icon="far fa-home" />
15
+ <SideNavItem label="Archive" href="/" icon="far fa-archive" />
16
+ <SideNavItem label="By Stub" href="/" icon="far fa-tilde" />
17
+
18
+ <SideNavItem label="Folders" href="/" icon="far fa-folder">
19
+ <SideNavItem label="Folder A" href="/sub-item-1" icon="far fa-folder">
20
+ <SideNavItem label="Sub Sub Item 1" href="/sub-sub-item-1" icon="far fa-file" />
21
+ <SideNavItem label="Folder A" href="/sub-item-1" icon="far fa-folder" indent_children={false}>
22
+ <SideNavItem
23
+ label="Folder A"
24
+ href="/sub-item-1"
25
+ icon="far fa-folder"
26
+ indent_children={false}
27
+ >
28
+ <SideNavItem
29
+ label="Folder A"
30
+ href="/sub-item-1"
31
+ icon="far fa-folder"
32
+ indent_children={false}
33
+ >
34
+ <SideNavItem label="Sub Sub Item 1" href="/sub-sub-item-1" icon="far fa-file" />
35
+ <SideNavItem label="Sub Sub Item 1" href="/sub-sub-item-1" icon="far fa-file" />
36
+ <SideNavItem label="Sub Sub Item 1" href="/sub-sub-item-1" icon="far fa-file" />
37
+ </SideNavItem>
38
+ <SideNavItem label="Sub Sub Item 1" href="/sub-sub-item-1" icon="far fa-file" />
39
+ <SideNavItem label="Sub Sub Item 1" href="/sub-sub-item-1" icon="far fa-file" />
40
+ </SideNavItem>
41
+ <SideNavItem label="Sub Sub Item 1" href="/sub-sub-item-1" icon="far fa-file" />
42
+ <SideNavItem label="Sub Sub Item 1" href="/sub-sub-item-1" icon="far fa-file" />
43
+ </SideNavItem>
44
+ </SideNavItem>
45
+ <SideNavItem label="Sub Item 2" href="/sub-item-2" icon="far fa-file" />
46
+ </SideNavItem>
47
+ </div>
@@ -0,0 +1,23 @@
1
+ /** @typedef {typeof __propDef.props} SideNavExampleProps */
2
+ /** @typedef {typeof __propDef.events} SideNavExampleEvents */
3
+ /** @typedef {typeof __propDef.slots} SideNavExampleSlots */
4
+ export default class SideNavExample extends SvelteComponent<{
5
+ [x: string]: never;
6
+ }, {
7
+ [evt: string]: CustomEvent<any>;
8
+ }, {}> {
9
+ }
10
+ export type SideNavExampleProps = typeof __propDef.props;
11
+ export type SideNavExampleEvents = typeof __propDef.events;
12
+ export type SideNavExampleSlots = typeof __propDef.slots;
13
+ import { SvelteComponent } from "svelte";
14
+ declare const __propDef: {
15
+ props: {
16
+ [x: string]: never;
17
+ };
18
+ events: {
19
+ [evt: string]: CustomEvent<any>;
20
+ };
21
+ slots: {};
22
+ };
23
+ export {};
@@ -0,0 +1,54 @@
1
+ <script>
2
+ export let label;
3
+ export let href;
4
+ export let icon;
5
+ export let indent_children = true;
6
+ export let is_selected = false;
7
+
8
+ //states
9
+ let is_expanded = false;
10
+
11
+ function handle_click() {
12
+ is_expanded = !is_expanded;
13
+ }
14
+ </script>
15
+
16
+ <!-- If $$slots.default == true, then it means this SideNavItem is a group item, i.e it has child elements in <slots/> -->
17
+
18
+ <button
19
+ on:click={handle_click}
20
+ class="group h-10 my-2.5 w-full flex items-center {is_selected
21
+ ? 'bg-white'
22
+ : 'bg-transparent hover:bg-white hover:bg-opacity-[0.5]'} rounded-lg hover:bg active:bg-white"
23
+ >
24
+ {#if $$slots.default}
25
+ <div class="h-10 pl-2 w-2.5 flex items-center justify-center">
26
+ <i class="fas fa-caret-right {is_expanded ? 'rotate down' : 'rotate'}" />
27
+ </div>
28
+ {/if}
29
+ <a class="{$$slots.default ? '' : 'pl-2.5'} w-full flex items-center" {href}>
30
+ <div class="text-surface-900 w-fit flex items-center">
31
+ <div class="h-10 aspect-square flex items-center justify-center">
32
+ <i class={icon} />
33
+ </div>
34
+ <span class="text-button font-normal">
35
+ {label}
36
+ </span>
37
+ </div>
38
+ </a>
39
+ </button>
40
+ {#if $$slots.default && is_expanded}
41
+ <div class={indent_children === true ? "ml-4" : ""}>
42
+ <slot />
43
+ </div>
44
+ {/if}
45
+
46
+ <style>
47
+ .rotate {
48
+ transition: all 75ms linear;
49
+ }
50
+
51
+ .rotate.down {
52
+ transform: rotate(90deg);
53
+ }
54
+ </style>
@@ -0,0 +1,35 @@
1
+ /** @typedef {typeof __propDef.props} SideNavItemProps */
2
+ /** @typedef {typeof __propDef.events} SideNavItemEvents */
3
+ /** @typedef {typeof __propDef.slots} SideNavItemSlots */
4
+ export default class SideNavItem extends SvelteComponent<{
5
+ label: any;
6
+ icon: any;
7
+ href: any;
8
+ indent_children?: boolean | undefined;
9
+ is_selected?: boolean | undefined;
10
+ }, {
11
+ [evt: string]: CustomEvent<any>;
12
+ }, {
13
+ default: {};
14
+ }> {
15
+ }
16
+ export type SideNavItemProps = typeof __propDef.props;
17
+ export type SideNavItemEvents = typeof __propDef.events;
18
+ export type SideNavItemSlots = typeof __propDef.slots;
19
+ import { SvelteComponent } from "svelte";
20
+ declare const __propDef: {
21
+ props: {
22
+ label: any;
23
+ icon: any;
24
+ href: any;
25
+ indent_children?: boolean | undefined;
26
+ is_selected?: boolean | undefined;
27
+ };
28
+ events: {
29
+ [evt: string]: CustomEvent<any>;
30
+ };
31
+ slots: {
32
+ default: {};
33
+ };
34
+ };
35
+ export {};
@@ -0,0 +1,7 @@
1
+ <script>
2
+ export let title;
3
+ </script>
4
+
5
+ <div class="h-10 w-full flex items-center">
6
+ <h2 class="text-small font-normal text-surface-700">{title}</h2>
7
+ </div>
@@ -0,0 +1,23 @@
1
+ /** @typedef {typeof __propDef.props} SideNavTitleProps */
2
+ /** @typedef {typeof __propDef.events} SideNavTitleEvents */
3
+ /** @typedef {typeof __propDef.slots} SideNavTitleSlots */
4
+ export default class SideNavTitle extends SvelteComponent<{
5
+ title: any;
6
+ }, {
7
+ [evt: string]: CustomEvent<any>;
8
+ }, {}> {
9
+ }
10
+ export type SideNavTitleProps = typeof __propDef.props;
11
+ export type SideNavTitleEvents = typeof __propDef.events;
12
+ export type SideNavTitleSlots = typeof __propDef.slots;
13
+ import { SvelteComponent } from "svelte";
14
+ declare const __propDef: {
15
+ props: {
16
+ title: any;
17
+ };
18
+ events: {
19
+ [evt: string]: CustomEvent<any>;
20
+ };
21
+ slots: {};
22
+ };
23
+ export {};
@@ -0,0 +1,102 @@
1
+ <script>import { Tabs } from "bits-ui";
2
+ import { faCog, faClipboard, faListAlt, faBell, faGauge, faStar, faLink } from "@fortawesome/free-solid-svg-icons";
3
+ import { FontAwesomeIcon } from "@fortawesome/svelte-fontawesome";
4
+ import { onMount } from "svelte";
5
+ let underlineStyle = {
6
+ width: "0px",
7
+ transform: "translateX(0px)"
8
+ };
9
+ const updateUnderlinePosition = () => {
10
+ const activeTab = document.querySelector('.tabs-trigger[data-state="active"]');
11
+ if (activeTab) {
12
+ underlineStyle = {
13
+ width: `${activeTab.offsetWidth}px`,
14
+ transform: `translateX(${activeTab.offsetLeft}px)`
15
+ };
16
+ }
17
+ };
18
+ onMount(() => {
19
+ updateUnderlinePosition();
20
+ });
21
+ function handleTabChange() {
22
+ updateUnderlinePosition();
23
+ }
24
+ </script>
25
+
26
+ <div class="pt-6 px-2">
27
+ <Tabs.Root
28
+ value="details"
29
+ class="w-full border-b border-gray-200"
30
+ on:change={handleTabChange}
31
+ >
32
+ <Tabs.List class="relative flex w-full space-x-6 text-sm font-light">
33
+ <div
34
+ class="absolute bottom-0 h-[1px] bg-black transition-all duration-300"
35
+ style="width: {underlineStyle.width}; transform: {underlineStyle.transform};"
36
+ ></div>
37
+ <Tabs.Trigger
38
+ value="details"
39
+ class="tabs-trigger inline-flex items-center space-x-1 pb-2 transition-colors data-[state=active]:text-black"
40
+ on:click={handleTabChange}
41
+ >
42
+ <FontAwesomeIcon icon={faCog} size="xs" />
43
+ <span>Details</span>
44
+ </Tabs.Trigger>
45
+
46
+ <Tabs.Trigger
47
+ value="fields"
48
+ class="tabs-trigger inline-flex items-center space-x-1 pb-2 transition-colors data-[state=active]:text-black"
49
+ on:click={handleTabChange}
50
+ >
51
+ <FontAwesomeIcon icon={faClipboard} size="xs" />
52
+ <span>Fields <span class="text-[0.75rem]">(13)</span></span>
53
+ </Tabs.Trigger>
54
+
55
+ <Tabs.Trigger
56
+ value="tasks"
57
+ class="tabs-trigger inline-flex items-center space-x-1 pb-2 transition-colors data-[state=active]:text-black"
58
+ on:click={handleTabChange}
59
+ >
60
+ <FontAwesomeIcon icon={faListAlt} size="xs" />
61
+ <span>Tasks <span class="text-[0.75rem]">(4)</span></span>
62
+ </Tabs.Trigger>
63
+
64
+ <Tabs.Trigger
65
+ value="notifications"
66
+ class="tabs-trigger inline-flex items-center space-x-1 pb-2 transition-colors data-[state=active]:text-black"
67
+ on:click={handleTabChange}
68
+ >
69
+ <FontAwesomeIcon icon={faBell} size="xs" />
70
+ <span>Notifications <span class="text-[0.75rem]">(0)</span></span>
71
+ </Tabs.Trigger>
72
+
73
+ <Tabs.Trigger
74
+ value="metrics"
75
+ class="tabs-trigger inline-flex items-center space-x-1 pb-2 transition-colors data-[state=active]:text-black"
76
+ on:click={handleTabChange}
77
+ >
78
+ <FontAwesomeIcon icon={faGauge} size="xs" />
79
+ <span>Metrics <span class="text-[0.75rem]">(0)</span></span>
80
+ </Tabs.Trigger>
81
+
82
+ <Tabs.Trigger
83
+ value="ai"
84
+ class="tabs-trigger inline-flex items-center space-x-1 pb-2 transition-colors data-[state=active]:text-black"
85
+ on:click={handleTabChange}
86
+ >
87
+ <FontAwesomeIcon icon={faStar} size="xs" />
88
+ <span>AI</span>
89
+ </Tabs.Trigger>
90
+
91
+ <Tabs.Trigger
92
+ value="webhooks"
93
+ class="tabs-trigger inline-flex items-center space-x-1 pb-2 transition-colors data-[state=active]:text-black"
94
+ on:click={handleTabChange}
95
+ >
96
+ <FontAwesomeIcon icon={faLink} size="xs" />
97
+ <span>Webhooks</span>
98
+ </Tabs.Trigger>
99
+ </Tabs.List>
100
+ </Tabs.Root>
101
+ </div>
102
+
@@ -0,0 +1,14 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: Record<string, never>;
4
+ events: {
5
+ [evt: string]: CustomEvent<any>;
6
+ };
7
+ slots: {};
8
+ };
9
+ export type TabsProps = typeof __propDef.props;
10
+ export type TabsEvents = typeof __propDef.events;
11
+ export type TabsSlots = typeof __propDef.slots;
12
+ export default class Tabs extends SvelteComponent<TabsProps, TabsEvents, TabsSlots> {
13
+ }
14
+ export {};