@rippling/rippling-sdk 0.2.0-alpha.35 → 0.2.0-alpha.36

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 (46) hide show
  1. package/client.d.mts +6 -0
  2. package/client.d.mts.map +1 -1
  3. package/client.d.ts +6 -0
  4. package/client.d.ts.map +1 -1
  5. package/client.js +6 -0
  6. package/client.js.map +1 -1
  7. package/client.mjs +6 -0
  8. package/client.mjs.map +1 -1
  9. package/examples/.keep +4 -0
  10. package/examples/manifest/dental-practice-management/dental-practice-management.ts +651 -0
  11. package/examples/manifest/dental-practice-management/manifest.json +1870 -0
  12. package/examples/manifest/gym-membership-management/gym-membership-management.ts +757 -0
  13. package/examples/manifest/gym-membership-management/manifest.json +1975 -0
  14. package/examples/sdui/sdui-crud-todo/rippling-function.ts +367 -0
  15. package/examples/sdui/sdui-crud-todo/sdui-crud-todo.ts +282 -0
  16. package/examples/sdui/sdui-showcase/rippling-function.ts +381 -0
  17. package/examples/sdui/sdui-showcase/sdui-showcase.ts +351 -0
  18. package/examples/sdui/sdui-tab-multi-view/rippling-function.ts +1061 -0
  19. package/examples/sdui/sdui-tab-multi-view/sdui-tab-multi-view.ts +924 -0
  20. package/examples/sdui/vote/rippling-function.ts +330 -0
  21. package/examples/sdui/vote/vote.ts +298 -0
  22. package/package.json +11 -1
  23. package/resources/company-legal-entity-workers.d.mts +79 -0
  24. package/resources/company-legal-entity-workers.d.mts.map +1 -0
  25. package/resources/company-legal-entity-workers.d.ts +79 -0
  26. package/resources/company-legal-entity-workers.d.ts.map +1 -0
  27. package/resources/company-legal-entity-workers.js +30 -0
  28. package/resources/company-legal-entity-workers.js.map +1 -0
  29. package/resources/company-legal-entity-workers.mjs +26 -0
  30. package/resources/company-legal-entity-workers.mjs.map +1 -0
  31. package/resources/index.d.mts +1 -0
  32. package/resources/index.d.mts.map +1 -1
  33. package/resources/index.d.ts +1 -0
  34. package/resources/index.d.ts.map +1 -1
  35. package/resources/index.js +4 -2
  36. package/resources/index.js.map +1 -1
  37. package/resources/index.mjs +1 -0
  38. package/resources/index.mjs.map +1 -1
  39. package/src/client.ts +20 -0
  40. package/src/resources/company-legal-entity-workers.ts +115 -0
  41. package/src/resources/index.ts +7 -0
  42. package/src/version.ts +1 -1
  43. package/version.d.mts +1 -1
  44. package/version.d.ts +1 -1
  45. package/version.js +1 -1
  46. package/version.mjs +1 -1
@@ -0,0 +1,381 @@
1
+ /**
2
+ * ----------------------------------------------------------------------------
3
+ * PASTE INTO THE RIPPLING FUNCTION EDITOR TO PREVIEW. DEPENDS ON
4
+ * @rippling/rippling-sdk AND @rippling/sdui-builder.
5
+ * ----------------------------------------------------------------------------
6
+ * Pair: sdui-showcase.ts uses ../../../src/lib/sdui for local runs.
7
+ */
8
+
9
+ /*
10
+ import SDUI from '@rippling/sdui-builder';
11
+ import { FunctionContext, FunctionEvent, FunctionResponse } from '@rippling/rippling-sdk';
12
+
13
+ const CAROUSEL_SLIDES = [
14
+ { heading: 'One', img: 'https://picsum.photos/seed/ex1/880/360', alt: '' },
15
+ { heading: 'Two', img: 'https://picsum.photos/seed/ex2/880/360', alt: '' },
16
+ { heading: 'Three', img: 'https://picsum.photos/seed/ex3/880/360', alt: '' },
17
+ ];
18
+
19
+ const TREE_ROWS = [
20
+ { label: 'A', value: 'a' },
21
+ { label: 'B', value: 'b', parent: 'a' },
22
+ { label: 'C', value: 'c', parent: 'a' },
23
+ ];
24
+
25
+ const DRAG_ROWS = [
26
+ { id: '1', label: 'First' },
27
+ { id: '2', label: 'Second' },
28
+ { id: '3', label: 'Third' },
29
+ ];
30
+
31
+ function renderSpec(_functionId: string) {
32
+ const s = SDUI.createState({
33
+ eventDate: '2026-06-01',
34
+ phoneVal: '+15555550123',
35
+ budget: 500,
36
+ consent: false,
37
+ alertsOn: true,
38
+ drawerOpen: false,
39
+ toastOpen: false,
40
+ treeValue: '',
41
+ menuPick: 'a',
42
+ breadcrumbActive: 'here',
43
+ });
44
+
45
+ const page = SDUI.components.Layout({
46
+ width: '100%',
47
+ maxWidth: '800px',
48
+ margin: { left: 'auto', right: 'auto' },
49
+ padding: { top: 32, bottom: 48, left: 24, right: 24 },
50
+ children: [
51
+ SDUI.components.VStack({
52
+ gap: 'space500',
53
+ align: 'stretch',
54
+ children: [
55
+ SDUI.components.VStack({
56
+ gap: 'space150',
57
+ align: 'flex-start',
58
+ children: [
59
+ SDUI.components.Heading({
60
+ level: '1',
61
+ text: 'Extra components',
62
+ }),
63
+ SDUI.components.Text({
64
+ typestyle: 'bodyMd',
65
+ color: 'secondary',
66
+ text: 'Date, phone, currency, checkbox, switch, file drop, breadcrumbs, dropdown, menu list, pagination, drawer, carousel, video, tree, stepper, draggable list, loaders, snackbar.',
67
+ }),
68
+ ],
69
+ }),
70
+
71
+ SDUI.components.Card({
72
+ title: 'Fields',
73
+ padding: '24',
74
+ children: [
75
+ SDUI.components.VStack({
76
+ gap: 'space350',
77
+ align: 'stretch',
78
+ children: [
79
+ SDUI.components.Date({
80
+ name: 'd',
81
+ label: 'Date',
82
+ value: s.eventDate.$bind,
83
+ format: 'yyyy-MM-dd',
84
+ }),
85
+ SDUI.components.Phone({
86
+ name: 'p',
87
+ label: 'Phone',
88
+ value: s.phoneVal.$bind,
89
+ }),
90
+ SDUI.components.Currency({
91
+ name: 'c',
92
+ label: 'Amount',
93
+ value: s.budget.$bind,
94
+ prefix: '$',
95
+ }),
96
+ SDUI.components.HStack({
97
+ gap: 'space400',
98
+ wrap: false,
99
+ align: 'stretch',
100
+ children: [
101
+ SDUI.components.Layout({
102
+ flex: '1 1 0',
103
+ minWidth: '0',
104
+ minHeight: 48,
105
+ direction: 'column',
106
+ justify: 'center',
107
+ children: [
108
+ SDUI.components.Checkbox({
109
+ name: 'ok',
110
+ label: 'Opt in',
111
+ value: s.consent.$bind,
112
+ }),
113
+ ],
114
+ }),
115
+ SDUI.components.Layout({
116
+ flex: '1 1 0',
117
+ minWidth: '0',
118
+ minHeight: 48,
119
+ direction: 'column',
120
+ justify: 'center',
121
+ children: [
122
+ SDUI.components.Switch({
123
+ name: 'sw',
124
+ label: 'Alerts',
125
+ value: s.alertsOn.$bind,
126
+ compact: true,
127
+ }),
128
+ ],
129
+ }),
130
+ ],
131
+ }),
132
+ SDUI.components.FileDrop({
133
+ name: 'f',
134
+ label: 'Files',
135
+ value: [],
136
+ placeholder: 'Drop files',
137
+ multiple: true,
138
+ }),
139
+ ],
140
+ }),
141
+ ],
142
+ }),
143
+
144
+ SDUI.components.Card({
145
+ title: 'Navigation',
146
+ padding: '24',
147
+ children: [
148
+ SDUI.components.VStack({
149
+ gap: 'space400',
150
+ align: 'stretch',
151
+ children: [
152
+ SDUI.components.Breadcrumb({
153
+ items: [
154
+ { title: 'Start', value: 'start', href: '#' },
155
+ { title: 'Here', value: 'here', href: '#' },
156
+ ],
157
+ active: s.breadcrumbActive.$bind,
158
+ }),
159
+ SDUI.components.HStack({
160
+ gap: 'space300',
161
+ wrap: true,
162
+ align: 'center',
163
+ children: [
164
+ SDUI.components.Dropdown({
165
+ triggerLabel: 'Choose',
166
+ list: [
167
+ { label: 'Alpha', value: 'a' },
168
+ { label: 'Beta', value: 'b' },
169
+ ],
170
+ value: s.menuPick.$bind,
171
+ width: 200,
172
+ }),
173
+ SDUI.components.Button({
174
+ label: 'Drawer',
175
+ appearance: 'OUTLINE',
176
+ size: 'S',
177
+ onPress: SDUI.actions.set(s.drawerOpen, true),
178
+ }),
179
+ SDUI.components.Button({
180
+ label: 'Toast',
181
+ appearance: 'GHOST',
182
+ size: 'S',
183
+ onPress: SDUI.actions.set(s.toastOpen, true),
184
+ }),
185
+ ],
186
+ }),
187
+ SDUI.components.MenuList({
188
+ list: [
189
+ { label: 'One', value: '1' },
190
+ { label: 'Two', value: '2' },
191
+ ],
192
+ width: '100%',
193
+ maxHeight: 160,
194
+ }),
195
+ SDUI.components.Layout({
196
+ width: '100%',
197
+ padding: { top: 8 },
198
+ children: [
199
+ SDUI.components.Paginate({
200
+ pageCount: 5,
201
+ initialPage: 2,
202
+ alignment: 'CENTER',
203
+ }),
204
+ ],
205
+ }),
206
+ ],
207
+ }),
208
+ ],
209
+ }),
210
+
211
+ SDUI.components.Card({
212
+ title: 'Media',
213
+ padding: '24',
214
+ children: [
215
+ SDUI.components.VStack({
216
+ gap: 'space400',
217
+ align: 'stretch',
218
+ children: [
219
+ SDUI.components.Carousel({ slides: CAROUSEL_SLIDES }),
220
+ SDUI.components.Video({
221
+ src: 'https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4',
222
+ width: '100%',
223
+ loading: 'lazy',
224
+ name: 'v',
225
+ }),
226
+ ],
227
+ }),
228
+ ],
229
+ }),
230
+
231
+ SDUI.components.Card({
232
+ title: 'Lists',
233
+ padding: '24',
234
+ children: [
235
+ SDUI.components.VStack({
236
+ gap: 'space450',
237
+ align: 'stretch',
238
+ children: [
239
+ SDUI.components.Tree({
240
+ name: 't',
241
+ label: 'Tree',
242
+ list: TREE_ROWS,
243
+ value: s.treeValue.$bind,
244
+ maxHeight: 180,
245
+ }),
246
+ SDUI.components.Stepper({
247
+ steps: [
248
+ { title: 'Done', status: 'COMPLETE' },
249
+ { title: 'Active', status: 'TODO' },
250
+ { title: 'Next', status: 'TODO' },
251
+ ],
252
+ activeStepIndex: 1,
253
+ }),
254
+ SDUI.components.DraggableList({
255
+ list: DRAG_ROWS,
256
+ labelKey: 'label',
257
+ groupName: 'g',
258
+ width: '100%',
259
+ showDragIcon: true,
260
+ }),
261
+ ],
262
+ }),
263
+ ],
264
+ }),
265
+
266
+ SDUI.components.Card({
267
+ title: 'Loading',
268
+ padding: '24',
269
+ children: [
270
+ SDUI.components.VStack({
271
+ gap: 'space400',
272
+ align: 'stretch',
273
+ children: [
274
+ SDUI.components.HStack({
275
+ gap: 'space300',
276
+ align: 'center',
277
+ children: [
278
+ SDUI.components.Spinner({
279
+ size: 'M',
280
+ appearance: 'PRIMARY',
281
+ alignment: 'LEFT',
282
+ }),
283
+ SDUI.components.Text({
284
+ typestyle: 'bodySm',
285
+ color: 'secondary',
286
+ text: 'Working…',
287
+ }),
288
+ ],
289
+ }),
290
+ SDUI.components.Skeleton({
291
+ variant: 'TEXT',
292
+ lines: 2,
293
+ width: '100%',
294
+ }),
295
+ SDUI.components.HStack({
296
+ gap: 'space300',
297
+ align: 'center',
298
+ children: [
299
+ SDUI.components.Skeleton({ variant: 'CIRCLE', size: 40 }),
300
+ SDUI.components.Skeleton({ variant: 'BOX', width: 160, height: 48, borderRadius: 6 }),
301
+ ],
302
+ }),
303
+ SDUI.components.ContentLoader({ width: '100%', height: 40, speed: 1 }),
304
+ SDUI.components.SnackBar({
305
+ text: 'Done.',
306
+ appearance: 'SUCCESS',
307
+ canDismiss: true,
308
+ isVisible: s.toastOpen.$bind,
309
+ onDismiss: SDUI.actions.set(s.toastOpen, false),
310
+ }),
311
+ ],
312
+ }),
313
+ ],
314
+ }),
315
+ ],
316
+ }),
317
+ ],
318
+ });
319
+
320
+ const root = SDUI.components.VStack({
321
+ gap: 'space0',
322
+ align: 'stretch',
323
+ children: [
324
+ page,
325
+ SDUI.components.Drawer({
326
+ isVisible: s.drawerOpen.$bind,
327
+ title: 'Drawer',
328
+ width: 360,
329
+ theme: 'GRAY',
330
+ onClose: SDUI.actions.set(s.drawerOpen, false),
331
+ children: [
332
+ SDUI.components.VStack({
333
+ gap: 'space300',
334
+ children: [
335
+ SDUI.components.Text({
336
+ text: 'Side content.',
337
+ typestyle: 'bodyMd',
338
+ }),
339
+ SDUI.components.Button({
340
+ label: 'Close',
341
+ appearance: 'PRIMARY',
342
+ size: 'S',
343
+ onPress: SDUI.actions.set(s.drawerOpen, false),
344
+ }),
345
+ ],
346
+ }),
347
+ ],
348
+ }),
349
+ ],
350
+ });
351
+
352
+ return SDUI.render(s, root);
353
+ }
354
+
355
+
356
+ export async function onRipplingEvent(
357
+ event: FunctionEvent,
358
+ context: FunctionContext,
359
+ ): Promise<FunctionResponse> {
360
+ const params = event['parameters'] as Record<string, string | undefined> | undefined;
361
+ const action = params?.['action'];
362
+
363
+ if (!action || action === 'init') {
364
+ const spec = renderSpec(context.function?.function_id ?? 'demo-fn');
365
+ return new FunctionResponse({
366
+ body: { spec: JSON.stringify(spec) },
367
+ statusCode: 200,
368
+ headers: {},
369
+ message: '',
370
+ });
371
+ }
372
+
373
+ return new FunctionResponse({
374
+ body: {},
375
+ statusCode: 200,
376
+ headers: {},
377
+ message: '',
378
+ });
379
+ }
380
+
381
+ */