@tanstack/cta-ui-base 0.15.4

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 (172) hide show
  1. package/LICENSE +21 -0
  2. package/components.json +21 -0
  3. package/dist/app.d.ts +1 -0
  4. package/dist/app.js +10 -0
  5. package/dist/components/add-on-info-dialog.d.ts +5 -0
  6. package/dist/components/add-on-info-dialog.js +5 -0
  7. package/dist/components/background-animation.d.ts +1 -0
  8. package/dist/components/background-animation.js +144 -0
  9. package/dist/components/cta-provider.d.ts +3 -0
  10. package/dist/components/cta-provider.js +11 -0
  11. package/dist/components/cta-sidebar.d.ts +1 -0
  12. package/dist/components/cta-sidebar.js +15 -0
  13. package/dist/components/custom-add-on-dialog.d.ts +1 -0
  14. package/dist/components/custom-add-on-dialog.js +38 -0
  15. package/dist/components/file-navigator.d.ts +2 -0
  16. package/dist/components/file-navigator.js +86 -0
  17. package/dist/components/file-tree.d.ts +5 -0
  18. package/dist/components/file-tree.js +14 -0
  19. package/dist/components/file-viewer.d.ts +5 -0
  20. package/dist/components/file-viewer.js +40 -0
  21. package/dist/components/header.d.ts +1 -0
  22. package/dist/components/header.js +5 -0
  23. package/dist/components/icons/tailwind.d.ts +3 -0
  24. package/dist/components/icons/tailwind.js +5 -0
  25. package/dist/components/icons/tanstack.d.ts +3 -0
  26. package/dist/components/icons/tanstack.js +5 -0
  27. package/dist/components/icons/typescript.d.ts +3 -0
  28. package/dist/components/icons/typescript.js +5 -0
  29. package/dist/components/query-provider.d.ts +3 -0
  30. package/dist/components/query-provider.js +7 -0
  31. package/dist/components/sidebar-items/add-ons.d.ts +1 -0
  32. package/dist/components/sidebar-items/add-ons.js +27 -0
  33. package/dist/components/sidebar-items/mode-selector.d.ts +1 -0
  34. package/dist/components/sidebar-items/mode-selector.js +19 -0
  35. package/dist/components/sidebar-items/project-name.d.ts +1 -0
  36. package/dist/components/sidebar-items/project-name.js +12 -0
  37. package/dist/components/sidebar-items/run-add-ons.d.ts +1 -0
  38. package/dist/components/sidebar-items/run-add-ons.js +25 -0
  39. package/dist/components/sidebar-items/run-create-app.d.ts +1 -0
  40. package/dist/components/sidebar-items/run-create-app.js +28 -0
  41. package/dist/components/sidebar-items/sidebar-container.d.ts +3 -0
  42. package/dist/components/sidebar-items/sidebar-container.js +4 -0
  43. package/dist/components/sidebar-items/sidebar-group.d.ts +3 -0
  44. package/dist/components/sidebar-items/sidebar-group.js +4 -0
  45. package/dist/components/sidebar-items/starter.d.ts +1 -0
  46. package/dist/components/sidebar-items/starter.js +42 -0
  47. package/dist/components/sidebar-items/typescript-switch.d.ts +1 -0
  48. package/dist/components/sidebar-items/typescript-switch.js +18 -0
  49. package/dist/components/starters-carousel.d.ts +3 -0
  50. package/dist/components/starters-carousel.js +12 -0
  51. package/dist/components/startup-dialog.d.ts +1 -0
  52. package/dist/components/startup-dialog.js +30 -0
  53. package/dist/components/status-list.d.ts +5 -0
  54. package/dist/components/status-list.js +4 -0
  55. package/dist/components/toaster.d.ts +4 -0
  56. package/dist/components/toaster.js +15 -0
  57. package/dist/components/ui/button.d.ts +10 -0
  58. package/dist/components/ui/button.js +32 -0
  59. package/dist/components/ui/carousel.d.ts +20 -0
  60. package/dist/components/ui/carousel.js +90 -0
  61. package/dist/components/ui/checkbox.d.ts +4 -0
  62. package/dist/components/ui/checkbox.js +9 -0
  63. package/dist/components/ui/dialog.d.ts +15 -0
  64. package/dist/components/ui/dialog.js +36 -0
  65. package/dist/components/ui/dropdown-menu.d.ts +25 -0
  66. package/dist/components/ui/dropdown-menu.js +51 -0
  67. package/dist/components/ui/input.d.ts +3 -0
  68. package/dist/components/ui/input.js +7 -0
  69. package/dist/components/ui/label.d.ts +4 -0
  70. package/dist/components/ui/label.js +8 -0
  71. package/dist/components/ui/popover.d.ts +7 -0
  72. package/dist/components/ui/popover.js +17 -0
  73. package/dist/components/ui/separator.d.ts +4 -0
  74. package/dist/components/ui/separator.js +9 -0
  75. package/dist/components/ui/sheet.d.ts +13 -0
  76. package/dist/components/ui/sheet.js +40 -0
  77. package/dist/components/ui/skeleton.d.ts +2 -0
  78. package/dist/components/ui/skeleton.js +6 -0
  79. package/dist/components/ui/sonner.d.ts +3 -0
  80. package/dist/components/ui/sonner.js +12 -0
  81. package/dist/components/ui/switch.d.ts +4 -0
  82. package/dist/components/ui/switch.js +8 -0
  83. package/dist/components/ui/table.d.ts +10 -0
  84. package/dist/components/ui/table.js +28 -0
  85. package/dist/components/ui/tabs.d.ts +7 -0
  86. package/dist/components/ui/tabs.js +17 -0
  87. package/dist/components/ui/toggle-group.d.ts +7 -0
  88. package/dist/components/ui/toggle-group.js +20 -0
  89. package/dist/components/ui/toggle.d.ts +9 -0
  90. package/dist/components/ui/toggle.js +27 -0
  91. package/dist/components/ui/tooltip.d.ts +7 -0
  92. package/dist/components/ui/tooltip.js +18 -0
  93. package/dist/components/ui/tree-view.d.ts +25 -0
  94. package/dist/components/ui/tree-view.js +151 -0
  95. package/dist/file-classes.d.ts +8 -0
  96. package/dist/file-classes.js +41 -0
  97. package/dist/hooks/use-mounted.d.ts +1 -0
  98. package/dist/hooks/use-mounted.js +8 -0
  99. package/dist/hooks/use-preferred-reduced-motion.d.ts +5 -0
  100. package/dist/hooks/use-preferred-reduced-motion.js +20 -0
  101. package/dist/hooks/use-streaming-status.d.ts +6 -0
  102. package/dist/hooks/use-streaming-status.js +55 -0
  103. package/dist/index.d.ts +20 -0
  104. package/dist/index.js +20 -0
  105. package/dist/lib/api.d.ts +14 -0
  106. package/dist/lib/api.js +74 -0
  107. package/dist/lib/utils.d.ts +2 -0
  108. package/dist/lib/utils.js +5 -0
  109. package/dist/store/add-ons.d.ts +7 -0
  110. package/dist/store/add-ons.js +59 -0
  111. package/dist/store/project.d.ts +76 -0
  112. package/dist/store/project.js +269 -0
  113. package/package.json +50 -0
  114. package/src/app.tsx +28 -0
  115. package/src/components/add-on-info-dialog.tsx +39 -0
  116. package/src/components/background-animation.tsx +224 -0
  117. package/src/components/cta-provider.tsx +22 -0
  118. package/src/components/cta-sidebar.tsx +43 -0
  119. package/src/components/custom-add-on-dialog.tsx +79 -0
  120. package/src/components/file-navigator.tsx +207 -0
  121. package/src/components/file-tree.tsx +35 -0
  122. package/src/components/file-viewer.tsx +67 -0
  123. package/src/components/header.tsx +29 -0
  124. package/src/components/icons/tailwind.tsx +26 -0
  125. package/src/components/icons/tanstack.tsx +338 -0
  126. package/src/components/icons/typescript.tsx +23 -0
  127. package/src/components/query-provider.tsx +10 -0
  128. package/src/components/sidebar-items/add-ons.tsx +94 -0
  129. package/src/components/sidebar-items/mode-selector.tsx +56 -0
  130. package/src/components/sidebar-items/project-name.tsx +32 -0
  131. package/src/components/sidebar-items/run-add-ons.tsx +71 -0
  132. package/src/components/sidebar-items/run-create-app.tsx +82 -0
  133. package/src/components/sidebar-items/sidebar-container.tsx +11 -0
  134. package/src/components/sidebar-items/sidebar-group.tsx +11 -0
  135. package/src/components/sidebar-items/starter.tsx +123 -0
  136. package/src/components/sidebar-items/typescript-switch.tsx +58 -0
  137. package/src/components/starters-carousel.tsx +41 -0
  138. package/src/components/startup-dialog.tsx +72 -0
  139. package/src/components/status-list.tsx +22 -0
  140. package/src/components/toaster.tsx +29 -0
  141. package/src/components/ui/button.tsx +61 -0
  142. package/src/components/ui/carousel.tsx +239 -0
  143. package/src/components/ui/checkbox.tsx +30 -0
  144. package/src/components/ui/dialog.tsx +138 -0
  145. package/src/components/ui/dropdown-menu.tsx +255 -0
  146. package/src/components/ui/input.tsx +21 -0
  147. package/src/components/ui/label.tsx +22 -0
  148. package/src/components/ui/popover.tsx +46 -0
  149. package/src/components/ui/separator.tsx +28 -0
  150. package/src/components/ui/sheet.tsx +137 -0
  151. package/src/components/ui/skeleton.tsx +13 -0
  152. package/src/components/ui/sonner.tsx +24 -0
  153. package/src/components/ui/switch.tsx +29 -0
  154. package/src/components/ui/table.tsx +114 -0
  155. package/src/components/ui/tabs.tsx +64 -0
  156. package/src/components/ui/toggle-group.tsx +72 -0
  157. package/src/components/ui/toggle.tsx +49 -0
  158. package/src/components/ui/tooltip.tsx +61 -0
  159. package/src/components/ui/tree-view.tsx +497 -0
  160. package/src/file-classes.ts +54 -0
  161. package/src/hooks/use-mounted.ts +9 -0
  162. package/src/hooks/use-preferred-reduced-motion.ts +27 -0
  163. package/src/hooks/use-streaming-status.ts +70 -0
  164. package/src/index.ts +44 -0
  165. package/src/lib/api.ts +100 -0
  166. package/src/lib/utils.ts +8 -0
  167. package/src/store/add-ons.ts +81 -0
  168. package/src/store/project.ts +345 -0
  169. package/src/types.d.ts +109 -0
  170. package/tests/store/add-ons.test.ts +222 -0
  171. package/tsconfig.json +25 -0
  172. package/vitest.config.ts +6 -0
@@ -0,0 +1,222 @@
1
+ import { describe, expect, it } from 'vitest'
2
+
3
+ import type { AddOnInfo } from '../../src/types'
4
+
5
+ import { getAddOnStatus } from '../../src/store/add-ons'
6
+
7
+ describe('getAddOnStatus', () => {
8
+ it('everything should be enabled if nothing is selected', () => {
9
+ const addOnStatus = getAddOnStatus(
10
+ [
11
+ {
12
+ id: 'add-on-1',
13
+ dependsOn: ['add-on-2'],
14
+ },
15
+ {
16
+ id: 'add-on-2',
17
+ },
18
+ ] as unknown as Array<AddOnInfo>,
19
+ [],
20
+ [],
21
+ )
22
+ expect(addOnStatus).toEqual({
23
+ 'add-on-1': {
24
+ selected: false,
25
+ enabled: true,
26
+ },
27
+ 'add-on-2': {
28
+ selected: false,
29
+ enabled: true,
30
+ },
31
+ })
32
+ })
33
+
34
+ it('should handle a single add-on', () => {
35
+ const addOnStatus = getAddOnStatus(
36
+ [
37
+ {
38
+ id: 'add-on-1',
39
+ dependsOn: [],
40
+ },
41
+ ] as unknown as Array<AddOnInfo>,
42
+ ['add-on-1'],
43
+ [],
44
+ )
45
+ expect(addOnStatus).toEqual({
46
+ 'add-on-1': {
47
+ selected: true,
48
+ enabled: true,
49
+ },
50
+ })
51
+ })
52
+
53
+ it('should handle a depended-on add-on', () => {
54
+ const addOnStatus = getAddOnStatus(
55
+ [
56
+ {
57
+ id: 'add-on-1',
58
+ dependsOn: ['add-on-2'],
59
+ },
60
+ {
61
+ id: 'add-on-2',
62
+ dependsOn: [],
63
+ },
64
+ ] as unknown as Array<AddOnInfo>,
65
+ ['add-on-1'],
66
+ [],
67
+ )
68
+ expect(addOnStatus).toEqual({
69
+ 'add-on-1': {
70
+ selected: true,
71
+ enabled: true,
72
+ },
73
+ 'add-on-2': {
74
+ selected: true,
75
+ enabled: false,
76
+ },
77
+ })
78
+ })
79
+
80
+ it('should handle a selected depended-on add-on', () => {
81
+ const addOnStatus = getAddOnStatus(
82
+ [
83
+ {
84
+ id: 'add-on-1',
85
+ dependsOn: ['add-on-2'],
86
+ },
87
+ {
88
+ id: 'add-on-2',
89
+ dependsOn: [],
90
+ },
91
+ ] as unknown as Array<AddOnInfo>,
92
+ ['add-on-1', 'add-on-2'],
93
+ [],
94
+ )
95
+ expect(addOnStatus).toEqual({
96
+ 'add-on-1': {
97
+ selected: true,
98
+ enabled: true,
99
+ },
100
+ 'add-on-2': {
101
+ selected: true,
102
+ enabled: false,
103
+ },
104
+ })
105
+ })
106
+
107
+ it('should handle a selected depended-on add-on', () => {
108
+ const addOnStatus = getAddOnStatus(
109
+ [
110
+ {
111
+ id: 'add-on-1',
112
+ dependsOn: ['add-on-2'],
113
+ },
114
+ {
115
+ id: 'add-on-2',
116
+ dependsOn: [],
117
+ },
118
+ ] as unknown as Array<AddOnInfo>,
119
+ ['add-on-2'],
120
+ [],
121
+ )
122
+ expect(addOnStatus).toEqual({
123
+ 'add-on-1': {
124
+ selected: false,
125
+ enabled: true,
126
+ },
127
+ 'add-on-2': {
128
+ selected: true,
129
+ enabled: true,
130
+ },
131
+ })
132
+ })
133
+
134
+ it('wont cycle', () => {
135
+ const addOnStatus = getAddOnStatus(
136
+ [
137
+ {
138
+ id: 'add-on-1',
139
+ dependsOn: ['add-on-2'],
140
+ },
141
+ {
142
+ id: 'add-on-2',
143
+ dependsOn: ['add-on-1'],
144
+ },
145
+ ] as unknown as Array<AddOnInfo>,
146
+ ['add-on-1'],
147
+ [],
148
+ )
149
+ expect(addOnStatus).toEqual({
150
+ 'add-on-1': {
151
+ selected: true,
152
+ enabled: false,
153
+ },
154
+ 'add-on-2': {
155
+ selected: true,
156
+ enabled: false,
157
+ },
158
+ })
159
+ })
160
+
161
+ it('should handle original add-ons', () => {
162
+ const addOnStatus = getAddOnStatus(
163
+ [
164
+ {
165
+ id: 'add-on-1',
166
+ dependsOn: ['add-on-2'],
167
+ },
168
+ {
169
+ id: 'add-on-2',
170
+ dependsOn: [],
171
+ },
172
+ ] as unknown as Array<AddOnInfo>,
173
+ ['add-on-1'],
174
+ ['add-on-2'],
175
+ )
176
+ expect(addOnStatus).toEqual({
177
+ 'add-on-1': {
178
+ selected: true,
179
+ enabled: true,
180
+ },
181
+ 'add-on-2': {
182
+ selected: true,
183
+ enabled: false,
184
+ },
185
+ })
186
+ })
187
+
188
+ it('should handle original add-ons with dependencies', () => {
189
+ const addOnStatus = getAddOnStatus(
190
+ [
191
+ {
192
+ id: 'add-on-1',
193
+ dependsOn: ['add-on-2'],
194
+ },
195
+ {
196
+ id: 'add-on-2',
197
+ dependsOn: ['add-on-3'],
198
+ },
199
+ {
200
+ id: 'add-on-3',
201
+ dependsOn: [],
202
+ },
203
+ ] as unknown as Array<AddOnInfo>,
204
+ ['add-on-1'],
205
+ ['add-on-2'],
206
+ )
207
+ expect(addOnStatus).toEqual({
208
+ 'add-on-1': {
209
+ selected: true,
210
+ enabled: true,
211
+ },
212
+ 'add-on-2': {
213
+ selected: true,
214
+ enabled: false,
215
+ },
216
+ 'add-on-3': {
217
+ selected: true,
218
+ enabled: false,
219
+ },
220
+ })
221
+ })
222
+ })
package/tsconfig.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "include": ["src/**/*.ts", "src/**/*.tsx"],
3
+ "compilerOptions": {
4
+ "target": "ES2022",
5
+ "jsx": "react-jsx",
6
+ "module": "ESNext",
7
+ "lib": ["ES2022", "DOM", "DOM.Iterable"],
8
+ "types": [],
9
+ "outDir": "./dist",
10
+ "declaration": true,
11
+ "declarationDir": "./dist",
12
+
13
+ /* Bundler mode */
14
+ "moduleResolution": "bundler",
15
+ "verbatimModuleSyntax": true,
16
+
17
+ /* Linting */
18
+ "skipLibCheck": true,
19
+ "strict": true,
20
+ "noUnusedLocals": true,
21
+ "noUnusedParameters": true,
22
+ "noFallthroughCasesInSwitch": true,
23
+ "noUncheckedSideEffectImports": true
24
+ }
25
+ }
@@ -0,0 +1,6 @@
1
+ import { defineConfig } from 'vitest/config'
2
+ import tsconfigPaths from 'vite-tsconfig-paths'
3
+
4
+ export default defineConfig({
5
+ plugins: [tsconfigPaths()],
6
+ })