@kubex/zinc 1.0.24 → 1.0.98

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 (198) hide show
  1. package/.claude/project.md +556 -0
  2. package/.github/workflows/js_build_and_deploy.yaml +9 -10
  3. package/dist/custom-elements.json +13431 -8728
  4. package/dist/vscode.html-custom-data.json +571 -37
  5. package/dist/web-types.json +1439 -181
  6. package/dist/zn.d.ts +1642 -661
  7. package/dist/zn.min.css +1 -1
  8. package/dist/zn.min.js +1407 -887
  9. package/docs/_utilities/code-previews.cjs +10 -1
  10. package/docs/assets/scripts/docs.js +42 -18
  11. package/docs/data/data-table.json +229 -66
  12. package/docs/data/empty.json +6 -0
  13. package/docs/data/products-table.json +41 -193
  14. package/docs/pages/components/action-bar.md +121 -6
  15. package/docs/pages/components/alert.md +118 -15
  16. package/docs/pages/components/animated-button.md +299 -0
  17. package/docs/pages/components/audio-select.md +534 -0
  18. package/docs/pages/components/bulk-actions.md +79 -5
  19. package/docs/pages/components/button-group.md +235 -27
  20. package/docs/pages/components/button.md +139 -1
  21. package/docs/pages/components/chart.md +365 -9
  22. package/docs/pages/components/checkbox.md +387 -58
  23. package/docs/pages/components/chip.md +253 -33
  24. package/docs/pages/components/collapsible.md +393 -46
  25. package/docs/pages/components/cols.md +152 -30
  26. package/docs/pages/components/confirm.md +182 -16
  27. package/docs/pages/components/copy-button.md +169 -6
  28. package/docs/pages/components/data-select.md +194 -15
  29. package/docs/pages/components/data-table-filter.md +96 -5
  30. package/docs/pages/components/data-table-search.md +451 -0
  31. package/docs/pages/components/data-table-sort.md +66 -5
  32. package/docs/pages/components/data-table.md +727 -66
  33. package/docs/pages/components/datepicker.md +402 -7
  34. package/docs/pages/components/defined-label.md +120 -5
  35. package/docs/pages/components/dialog.md +339 -59
  36. package/docs/pages/components/dropdown.md +366 -11
  37. package/docs/pages/components/editor.md +604 -7
  38. package/docs/pages/components/empty-state.md +315 -16
  39. package/docs/pages/components/expanding-action.md +212 -28
  40. package/docs/pages/components/file.md +421 -12
  41. package/docs/pages/components/filter-container.md +158 -5
  42. package/docs/pages/components/filter-wrapper.md +167 -6
  43. package/docs/pages/components/form-group.md +383 -6
  44. package/docs/pages/components/hover-container.md +237 -6
  45. package/docs/pages/components/icon-picker.md +121 -0
  46. package/docs/pages/components/icon.md +454 -48
  47. package/docs/pages/components/inline-edit.md +787 -19
  48. package/docs/pages/components/input-group.md +207 -13
  49. package/docs/pages/components/input.md +194 -0
  50. package/docs/pages/components/key-container.md +115 -0
  51. package/docs/pages/components/key.md +101 -0
  52. package/docs/pages/components/menu.md +512 -6
  53. package/docs/pages/components/note.md +239 -36
  54. package/docs/pages/components/opt-group.md +107 -0
  55. package/docs/pages/components/pagination.md +332 -6
  56. package/docs/pages/components/pane.md +222 -6
  57. package/docs/pages/components/panel.md +213 -26
  58. package/docs/pages/components/popup.md +1354 -6
  59. package/docs/pages/components/priority-list.md +233 -0
  60. package/docs/pages/components/progress-bar.md +387 -6
  61. package/docs/pages/components/radio-group.md +242 -5
  62. package/docs/pages/components/radio.md +474 -6
  63. package/docs/pages/components/rating.md +331 -7
  64. package/docs/pages/components/reveal.md +524 -6
  65. package/docs/pages/components/scroll-container.md +552 -6
  66. package/docs/pages/components/select.md +762 -160
  67. package/docs/pages/components/skeleton.md +473 -30
  68. package/docs/pages/components/slideout.md +261 -5
  69. package/docs/pages/components/sp.md +99 -41
  70. package/docs/pages/components/split-button.md +347 -9
  71. package/docs/pages/components/split-pane.md +445 -6
  72. package/docs/pages/components/stat.md +549 -9
  73. package/docs/pages/components/status-indicator.md +230 -1
  74. package/docs/pages/components/stepper.md +563 -6
  75. package/docs/pages/components/tabs.md +439 -13
  76. package/docs/pages/components/textarea.md +415 -17
  77. package/docs/pages/components/tile.md +385 -26
  78. package/docs/pages/components/toggle.md +424 -6
  79. package/docs/pages/components/tooltip.md +367 -0
  80. package/docs/pages/components/translation-group.md +210 -0
  81. package/docs/pages/components/translations.md +319 -18
  82. package/docs/pages/components/vertical-stepper.md +401 -8
  83. package/docs/pages/components/well.md +300 -3
  84. package/docs/pages/getting-started/form-controls.md +162 -0
  85. package/docs/pages/index.md +116 -15
  86. package/package.json +5 -6
  87. package/scss/_global-spacing.scss +4 -0
  88. package/scss/_root.scss +2 -2
  89. package/scss/boot.scss +19 -0
  90. package/scss/shared/layout.scss +5 -0
  91. package/scss/themes/_light.scss +3 -3
  92. package/src/components/alert/alert.scss +1 -0
  93. package/src/components/animated-button/README.md +306 -0
  94. package/src/components/animated-button/animated-button.component.ts +229 -0
  95. package/src/components/animated-button/animated-button.scss +228 -0
  96. package/src/components/animated-button/animated-button.test.ts +143 -0
  97. package/src/components/animated-button/index.ts +12 -0
  98. package/src/components/button/button.component.ts +5 -0
  99. package/src/components/button-group/button-group.component.ts +25 -13
  100. package/src/components/button-group/button-group.scss +6 -0
  101. package/src/components/checkbox/checkbox.component.ts +4 -0
  102. package/src/components/checkbox/checkbox.scss +7 -4
  103. package/src/components/checkbox-group/checkbox-group.scss +7 -0
  104. package/src/components/chip/chip.component.ts +7 -2
  105. package/src/components/chip/chip.scss +16 -2
  106. package/src/components/collapsible/collapsible.component.ts +27 -20
  107. package/src/components/cols/cols.component.ts +14 -2
  108. package/src/components/cols/cols.scss +6 -12
  109. package/src/components/confirm/confirm.component.ts +7 -0
  110. package/src/components/copy-button/copy-button.component.ts +12 -11
  111. package/src/components/data-select/data-select.component.ts +215 -44
  112. package/src/components/data-select/data-select.scss +66 -6
  113. package/src/components/data-select/providers/currency-data-provider.ts +20 -6
  114. package/src/components/data-select/providers/provider.ts +1 -0
  115. package/src/components/data-select/providers/us-state-data-provider.ts +68 -0
  116. package/src/components/data-table/data-table.component.ts +82 -23
  117. package/src/components/data-table-search/data-table-search.component.ts +184 -0
  118. package/src/components/data-table-search/data-table-search.scss +17 -0
  119. package/src/components/data-table-search/data-table-search.test.ts +11 -0
  120. package/src/components/data-table-search/index.ts +12 -0
  121. package/src/components/datepicker/datepicker.component.ts +347 -13
  122. package/src/components/dialog/dialog.component.ts +1 -1
  123. package/src/components/empty-state/empty-state.scss +6 -1
  124. package/src/components/header/header.scss +3 -3
  125. package/src/components/icon/icon.component.ts +23 -1
  126. package/src/components/icon/icon.scss +23 -0
  127. package/src/components/icon-picker/brand-icons.ts +24 -0
  128. package/src/components/icon-picker/icon-picker.component.ts +407 -0
  129. package/src/components/icon-picker/icon-picker.scss +205 -0
  130. package/src/components/icon-picker/index.ts +12 -0
  131. package/src/components/icon-picker/line-icons.ts +612 -0
  132. package/src/components/icon-picker/material-icons.ts +14543 -0
  133. package/src/components/inline-edit/inline-edit.component.ts +190 -46
  134. package/src/components/inline-edit/inline-edit.scss +29 -0
  135. package/src/components/inline-edit/inline-edit.test.ts +314 -1
  136. package/src/components/input/input.component.ts +328 -5
  137. package/src/components/input/input.scss +100 -4
  138. package/src/components/input-group/input-group.component.ts +28 -7
  139. package/src/components/input-group/input-group.scss +48 -10
  140. package/src/components/item/item.component.ts +11 -2
  141. package/src/components/item/item.scss +7 -0
  142. package/src/components/key/index.ts +12 -0
  143. package/src/components/key/key.component.ts +47 -0
  144. package/src/components/key/key.scss +38 -0
  145. package/src/components/key-container/index.ts +12 -0
  146. package/src/components/key-container/key-container.component.ts +142 -0
  147. package/src/components/key-container/key-container.scss +33 -0
  148. package/src/components/menu-item/menu-item.component.ts +20 -0
  149. package/src/components/menu-item/menu-item.scss +69 -2
  150. package/src/components/navbar/navbar.component.ts +103 -8
  151. package/src/components/navbar/navbar.scss +6 -1
  152. package/src/components/opt-group/index.ts +12 -0
  153. package/src/components/opt-group/opt-group.component.ts +74 -0
  154. package/src/components/opt-group/opt-group.scss +37 -0
  155. package/src/components/opt-group/opt-group.test.ts +27 -0
  156. package/src/components/option/option.component.ts +1 -16
  157. package/src/components/option/option.scss +4 -0
  158. package/src/components/panel/panel.component.ts +10 -8
  159. package/src/components/panel/panel.scss +20 -0
  160. package/src/components/priority-list/index.ts +12 -0
  161. package/src/components/priority-list/priority-list.component.ts +611 -0
  162. package/src/components/priority-list/priority-list.scss +185 -0
  163. package/src/components/priority-list/priority-list.test.ts +139 -0
  164. package/src/components/progress-bar/progress-bar.component.ts +22 -16
  165. package/src/components/radio/radio.scss +10 -3
  166. package/src/components/select/select.component.ts +812 -72
  167. package/src/components/select/select.scss +108 -2
  168. package/src/components/select/select.test.ts +147 -2
  169. package/src/components/settings-container/settings-container.component.ts +44 -19
  170. package/src/components/settings-container/settings-container.scss +1 -1
  171. package/src/components/skeleton/skeleton.component.ts +6 -1
  172. package/src/components/slideout/slideout.scss +8 -3
  173. package/src/components/sp/sp.component.ts +3 -1
  174. package/src/components/sp/sp.scss +19 -0
  175. package/src/components/stepper/stepper.component.ts +16 -10
  176. package/src/components/textarea/textarea.scss +0 -4
  177. package/src/components/tile/tile.component.ts +12 -3
  178. package/src/components/tile/tile.scss +1 -1
  179. package/src/components/timer/timer.component.ts +15 -2
  180. package/src/components/toggle/toggle.component.ts +29 -26
  181. package/src/components/toggle/toggle.scss +13 -1
  182. package/src/components/translation-group/index.ts +12 -0
  183. package/src/components/translation-group/translation-group.component.ts +207 -0
  184. package/src/components/translation-group/translation-group.scss +8 -0
  185. package/src/components/translations/translations.component.ts +90 -42
  186. package/src/components/translations/translations.scss +5 -1
  187. package/src/components/vertical-stepper/vertical-stepper.component.ts +14 -9
  188. package/src/events/events.ts +12 -7
  189. package/src/events/zn-language-change.ts +7 -0
  190. package/src/events/zn-purchase.ts +11 -0
  191. package/src/events/zn-redirect.ts +7 -0
  192. package/src/events/zn-reorder.ts +7 -0
  193. package/src/events/zn-search-change.ts +11 -0
  194. package/src/events/zn-submit.ts +1 -1
  195. package/src/form-control.scss +4 -0
  196. package/src/internal/form-navigation.ts +510 -0
  197. package/src/internal/form.ts +6 -0
  198. package/src/zinc.ts +91 -83
@@ -70,7 +70,16 @@ module.exports = function (doc, options)
70
70
  </div>
71
71
  `;
72
72
 
73
- pre.insertAdjacentHTML('afterend', codePreview);
73
+ if(!pre.parentNode || pre.parentNode.nodeType === 9)
74
+ {
75
+ return;
76
+ }
77
+
78
+ const tempDiv = doc.createElement('div');
79
+ tempDiv.innerHTML = codePreview;
80
+ const codePreviewElement = tempDiv.firstElementChild;
81
+
82
+ pre.parentNode.insertBefore(codePreviewElement, pre.nextSibling);
74
83
  pre.remove();
75
84
 
76
85
  if(adjacentPre)
@@ -220,7 +220,7 @@
220
220
  document.addEventListener('click', event =>
221
221
  {
222
222
  const link = event.target.closest('a');
223
- const id = (link?.hash ?? '').substr(1);
223
+ const id = (link?.hash ?? '').slice(1);
224
224
  const isFragment = link?.hasAttribute('href') && link?.getAttribute('href').startsWith('#');
225
225
 
226
226
  if(!link || !isFragment || link.getAttribute('data-smooth-link') === 'false')
@@ -244,7 +244,7 @@
244
244
  if(target)
245
245
  {
246
246
  event.preventDefault();
247
- window.scroll({top: target.offsetTop, behavior: 'smooth'});
247
+ target.scrollIntoView({behavior: 'smooth', block: 'start'});
248
248
  history.pushState(undefined, undefined, `#${id}`);
249
249
  }
250
250
  }
@@ -258,19 +258,21 @@
258
258
  {
259
259
  // This will be stale if its not a function.
260
260
  const getLinks = () => [...document.querySelectorAll('.content__toc a')];
261
- const linkTargets = new WeakMap();
262
- const visibleTargets = new WeakSet();
263
- const observer = new IntersectionObserver(handleIntersect, {rootMargin: '0px 0px'});
264
- let debounce;
261
+ const linkTargets = new Map();
262
+ const visibleTargets = new Map();
263
+ const observer = new IntersectionObserver(handleIntersect, {
264
+ rootMargin: '-100px 0px -66%',
265
+ threshold: [0, 0.25, 0.5, 0.75, 1]
266
+ });
265
267
 
266
268
  function handleIntersect(entries)
267
269
  {
268
270
  entries.forEach(entry =>
269
271
  {
270
- // Remember which targets are visible
272
+ // Remember which targets are visible and their position
271
273
  if(entry.isIntersecting)
272
274
  {
273
- visibleTargets.add(entry.target);
275
+ visibleTargets.set(entry.target, entry.boundingClientRect.top);
274
276
  }
275
277
  else
276
278
  {
@@ -284,28 +286,47 @@
284
286
  function updateActiveLinks()
285
287
  {
286
288
  const links = getLinks();
287
- // Find the first visible target and activate the respective link
288
- links.find(link =>
289
+
290
+ // If no targets are visible, remove all active states
291
+ if(visibleTargets.size === 0)
289
292
  {
290
- const target = linkTargets.get(link);
293
+ links.forEach(el => el.classList.remove('active'));
294
+ return;
295
+ }
296
+
297
+ // Find the target closest to the top of the viewport
298
+ let closestTarget = null;
299
+ let closestDistance = Infinity;
291
300
 
292
- if(target && visibleTargets.has(target))
301
+ visibleTargets.forEach((top, target) =>
302
+ {
303
+ const distance = Math.abs(top);
304
+ if(distance < closestDistance)
293
305
  {
294
- links.forEach(el => el.classList.toggle('active', el === link));
295
- return true;
306
+ closestDistance = distance;
307
+ closestTarget = target;
296
308
  }
309
+ });
297
310
 
298
- return false;
311
+ // Activate the link corresponding to the closest target
312
+ links.forEach(link =>
313
+ {
314
+ const target = linkTargets.get(link);
315
+ link.classList.toggle('active', target === closestTarget);
299
316
  });
300
317
  }
301
318
 
302
319
  // Observe link targets
303
320
  function observeLinks()
304
321
  {
322
+ // Clear existing observations
323
+ visibleTargets.clear();
324
+ linkTargets.forEach((target) => observer.unobserve(target));
325
+
305
326
  getLinks().forEach(link =>
306
327
  {
307
328
  const hash = link.hash.slice(1);
308
- const target = hash ? document.querySelector(`.content__body #${hash}`) : null;
329
+ const target = hash ? document.getElementById(hash) : null;
309
330
 
310
331
  if(target)
311
332
  {
@@ -317,8 +338,11 @@
317
338
 
318
339
  observeLinks();
319
340
 
320
- document.addEventListener('turbo:load', updateActiveLinks);
321
- document.addEventListener('turbo:load', observeLinks);
341
+ document.addEventListener('turbo:load', () =>
342
+ {
343
+ observeLinks();
344
+ updateActiveLinks();
345
+ });
322
346
  })();
323
347
 
324
348
  //
@@ -1,79 +1,242 @@
1
1
  {
2
2
  "rows": [
3
3
  {
4
- "id": "row1",
5
- "uri": "https://example.com/row1",
6
- "target": "_blank",
7
- "gaid": "row1-gaid",
4
+ "id": "1",
5
+ "uri": "/users/1",
8
6
  "cells": [
9
- {
10
- "text": "Cell 1 Text",
11
- "column": "id"
12
- },
13
- {
14
- "text": "Cell 2 Text",
15
- "column": "One"
16
- },
17
- {
18
- "text": "Cell 3 Text",
19
- "column": "Two"
20
- },
21
- {
22
- "text": "Cell 4 Text",
23
- "column": "Three"
24
- },
25
- {
26
- "text": "Cell 5 Text",
27
- "column": "Four"
28
- }
7
+ {"text": "1", "column": "id"},
8
+ {"text": "Alice Johnson", "column": "name"},
9
+ {"text": "alice@example.com", "column": "email"},
10
+ {"text": "Active", "column": "status", "chipColor": "success"},
11
+ {"text": "2023-01-15", "column": "date"},
12
+ {"text": "+1 555-0101", "column": "phone"},
13
+ {"text": "123 Main St, Springfield", "column": "address"},
14
+ {"text": "Primary account holder", "column": "notes"},
15
+ {"text": "A long description about Alice Johnson and her account details", "column": "description"},
16
+ {"text": "INT-001", "column": "internal_id"}
29
17
  ],
30
18
  "actions": [
31
- {
32
- "text": "Action One",
33
- "uri": "#"
34
- },
35
- {
36
- "text": "Action Two",
37
- "uri": "#",
38
- "confirmContent": "Confirm Content"
39
- }
19
+ {"text": "Edit", "uri": "/users/1/edit", "icon": "edit"},
20
+ {"text": "Delete", "uri": "/users/1/delete", "icon": "delete", "confirmType": "error", "confirmTitle": "Delete User", "confirmContent": "Are you sure you want to delete Alice Johnson?"}
40
21
  ]
41
22
  },
42
23
  {
43
- "id": "row2",
24
+ "id": "2",
25
+ "uri": "/users/2",
44
26
  "cells": [
45
- {
46
- "text": "Cell 6 Text",
47
- "heading": "Cell 6 Heading",
48
- "color": "yellow",
49
- "style": "normal"
50
- },
51
- {
52
- "text": "Cell 7 Text",
53
- "heading": "Cell 7 Heading",
54
- "hoverContent": "This is hover content for cell 7",
55
- "hoverPlacement": "left",
56
- "chipColor": "pink"
57
- },
58
- {
59
- "text": "Cell 8 Text",
60
- "heading": "Cell 8 Heading",
61
- "color": "gray",
62
- "style": "italic"
63
- },
64
- {
65
- "text": "Cell 9 Text",
66
- "heading": "Cell 9 Heading",
67
- "color": "black",
68
- "style": "bold"
69
- },
70
- {
71
- "text": "Cell 10 Text",
72
- "heading": "Cell 10 Heading",
73
- "color": "white",
74
- "style": "normal"
75
- }
27
+ {"text": "2", "column": "id"},
28
+ {"text": "Bob Smith", "column": "name"},
29
+ {"text": "bob@example.com", "column": "email"},
30
+ {"text": "Active", "column": "status", "chipColor": "success"},
31
+ {"text": "2023-02-20", "column": "date"},
32
+ {"text": "+1 555-0102", "column": "phone"},
33
+ {"text": "456 Oak Ave, Shelbyville", "column": "address"},
34
+ {"text": "Upgraded to premium plan", "column": "notes"},
35
+ {"text": "Bob is a long-standing customer with premium access", "column": "description"},
36
+ {"text": "INT-002", "column": "internal_id"}
37
+ ],
38
+ "actions": [
39
+ {"text": "Edit", "uri": "/users/2/edit", "icon": "edit"},
40
+ {"text": "Delete", "uri": "/users/2/delete", "icon": "delete", "confirmType": "error", "confirmTitle": "Delete User", "confirmContent": "Are you sure you want to delete Bob Smith?"}
41
+ ]
42
+ },
43
+ {
44
+ "id": "3",
45
+ "uri": "/users/3",
46
+ "cells": [
47
+ {"text": "3", "column": "id"},
48
+ {"text": "Carol Davis", "column": "name"},
49
+ {"text": "carol@example.com", "column": "email"},
50
+ {"text": "Inactive", "column": "status", "chipColor": "warning"},
51
+ {"text": "2023-03-10", "column": "date"},
52
+ {"text": "+1 555-0103", "column": "phone"},
53
+ {"text": "789 Pine Rd, Capital City", "column": "address"},
54
+ {"text": "Account on hold", "column": "notes"},
55
+ {"text": "Carol requested a temporary account suspension", "column": "description"},
56
+ {"text": "INT-003", "column": "internal_id"}
57
+ ],
58
+ "actions": [
59
+ {"text": "Edit", "uri": "/users/3/edit", "icon": "edit"}
60
+ ]
61
+ },
62
+ {
63
+ "id": "4",
64
+ "uri": "/users/4",
65
+ "cells": [
66
+ {"text": "4", "column": "id"},
67
+ {"text": "David Lee", "column": "name"},
68
+ {"text": "david@example.com", "column": "email"},
69
+ {"text": "Active", "column": "status", "chipColor": "success"},
70
+ {"text": "2023-04-05", "column": "date"},
71
+ {"text": "+1 555-0104", "column": "phone"},
72
+ {"text": "321 Elm St, Ogdenville", "column": "address"},
73
+ {"text": "Referred by Alice Johnson", "column": "notes"},
74
+ {"text": "David manages a team account with multiple users", "column": "description"},
75
+ {"text": "INT-004", "column": "internal_id"}
76
+ ],
77
+ "actions": [
78
+ {"text": "Edit", "uri": "/users/4/edit", "icon": "edit"},
79
+ {"text": "Delete", "uri": "/users/4/delete", "icon": "delete", "confirmType": "error", "confirmTitle": "Delete User", "confirmContent": "Are you sure you want to delete David Lee?"}
80
+ ]
81
+ },
82
+ {
83
+ "id": "5",
84
+ "uri": "/users/5",
85
+ "cells": [
86
+ {"text": "5", "column": "id"},
87
+ {"text": "Emma Wilson", "column": "name"},
88
+ {"text": "emma@example.com", "column": "email"},
89
+ {"text": "Active", "column": "status", "chipColor": "success"},
90
+ {"text": "2023-05-18", "column": "date"},
91
+ {"text": "+1 555-0105", "column": "phone"},
92
+ {"text": "654 Maple Dr, North Haverbrook", "column": "address"},
93
+ {"text": "Enterprise customer", "column": "notes"},
94
+ {"text": "Emma oversees the enterprise subscription for her organisation", "column": "description"},
95
+ {"text": "INT-005", "column": "internal_id"}
96
+ ],
97
+ "actions": [
98
+ {"text": "Edit", "uri": "/users/5/edit", "icon": "edit"}
99
+ ]
100
+ },
101
+ {
102
+ "id": "6",
103
+ "uri": "/users/6",
104
+ "cells": [
105
+ {"text": "6", "column": "id"},
106
+ {"text": "Frank Brown", "column": "name"},
107
+ {"text": "frank@example.com", "column": "email"},
108
+ {"text": "Inactive", "column": "status", "chipColor": "warning"},
109
+ {"text": "2023-06-22", "column": "date"},
110
+ {"text": "+1 555-0106", "column": "phone"},
111
+ {"text": "987 Cedar Ln, Brockway", "column": "address"},
112
+ {"text": "Trial period expired", "column": "notes"},
113
+ {"text": "Frank signed up for a trial and has not yet converted", "column": "description"},
114
+ {"text": "INT-006", "column": "internal_id"}
115
+ ],
116
+ "actions": [
117
+ {"text": "Edit", "uri": "/users/6/edit", "icon": "edit"},
118
+ {"text": "Delete", "uri": "/users/6/delete", "icon": "delete", "confirmType": "error", "confirmTitle": "Delete User", "confirmContent": "Are you sure you want to delete Frank Brown?"}
119
+ ]
120
+ },
121
+ {
122
+ "id": "7",
123
+ "uri": "/users/7",
124
+ "cells": [
125
+ {"text": "7", "column": "id"},
126
+ {"text": "Grace Kim", "column": "name"},
127
+ {"text": "grace@example.com", "column": "email"},
128
+ {"text": "Active", "column": "status", "chipColor": "success"},
129
+ {"text": "2023-07-30", "column": "date"},
130
+ {"text": "+1 555-0107", "column": "phone"},
131
+ {"text": "147 Birch Way, Springfield", "column": "address"},
132
+ {"text": "Recently migrated from legacy system", "column": "notes"},
133
+ {"text": "Grace was part of the batch migration in Q3", "column": "description"},
134
+ {"text": "INT-007", "column": "internal_id"}
135
+ ],
136
+ "actions": [
137
+ {"text": "Edit", "uri": "/users/7/edit", "icon": "edit"}
138
+ ]
139
+ },
140
+ {
141
+ "id": "8",
142
+ "uri": "/users/8",
143
+ "cells": [
144
+ {"text": "8", "column": "id"},
145
+ {"text": "Henry Clark", "column": "name"},
146
+ {"text": "henry@example.com", "column": "email"},
147
+ {"text": "Active", "column": "status", "chipColor": "success"},
148
+ {"text": "2023-08-12", "column": "date"},
149
+ {"text": "+1 555-0108", "column": "phone"},
150
+ {"text": "258 Walnut St, Shelbyville", "column": "address"},
151
+ {"text": "Billing contact for Acme Corp", "column": "notes"},
152
+ {"text": "Henry handles all billing enquiries for the Acme Corp account", "column": "description"},
153
+ {"text": "INT-008", "column": "internal_id"}
154
+ ],
155
+ "actions": [
156
+ {"text": "Edit", "uri": "/users/8/edit", "icon": "edit"},
157
+ {"text": "Delete", "uri": "/users/8/delete", "icon": "delete", "confirmType": "error", "confirmTitle": "Delete User", "confirmContent": "Are you sure you want to delete Henry Clark?"}
158
+ ]
159
+ },
160
+ {
161
+ "id": "9",
162
+ "uri": "/users/9",
163
+ "cells": [
164
+ {"text": "9", "column": "id"},
165
+ {"text": "Irene Patel", "column": "name"},
166
+ {"text": "irene@example.com", "column": "email"},
167
+ {"text": "Active", "column": "status", "chipColor": "success"},
168
+ {"text": "2023-09-01", "column": "date"},
169
+ {"text": "+1 555-0109", "column": "phone"},
170
+ {"text": "369 Spruce Ct, Capital City", "column": "address"},
171
+ {"text": "VIP customer", "column": "notes"},
172
+ {"text": "Irene has been flagged as a VIP due to high account value", "column": "description"},
173
+ {"text": "INT-009", "column": "internal_id"}
174
+ ],
175
+ "actions": [
176
+ {"text": "Edit", "uri": "/users/9/edit", "icon": "edit"}
177
+ ]
178
+ },
179
+ {
180
+ "id": "10",
181
+ "uri": "/users/10",
182
+ "cells": [
183
+ {"text": "10", "column": "id"},
184
+ {"text": "James Taylor", "column": "name"},
185
+ {"text": "james@example.com", "column": "email"},
186
+ {"text": "Inactive", "column": "status", "chipColor": "warning"},
187
+ {"text": "2023-10-14", "column": "date"},
188
+ {"text": "+1 555-0110", "column": "phone"},
189
+ {"text": "480 Ash Blvd, Ogdenville", "column": "address"},
190
+ {"text": "Pending verification", "column": "notes"},
191
+ {"text": "James needs to complete email verification to reactivate", "column": "description"},
192
+ {"text": "INT-010", "column": "internal_id"}
193
+ ],
194
+ "actions": [
195
+ {"text": "Edit", "uri": "/users/10/edit", "icon": "edit"},
196
+ {"text": "Delete", "uri": "/users/10/delete", "icon": "delete", "confirmType": "error", "confirmTitle": "Delete User", "confirmContent": "Are you sure you want to delete James Taylor?"}
197
+ ]
198
+ },
199
+ {
200
+ "id": "11",
201
+ "uri": "/users/11",
202
+ "cells": [
203
+ {"text": "11", "column": "id"},
204
+ {"text": "Karen White", "column": "name"},
205
+ {"text": "karen@example.com", "column": "email"},
206
+ {"text": "Active", "column": "status", "chipColor": "success"},
207
+ {"text": "2023-11-03", "column": "date"},
208
+ {"text": "+1 555-0111", "column": "phone"},
209
+ {"text": "591 Poplar Rd, North Haverbrook", "column": "address"},
210
+ {"text": "Multi-site licence holder", "column": "notes"},
211
+ {"text": "Karen manages licences across three office locations", "column": "description"},
212
+ {"text": "INT-011", "column": "internal_id"}
213
+ ],
214
+ "actions": [
215
+ {"text": "Edit", "uri": "/users/11/edit", "icon": "edit"}
216
+ ]
217
+ },
218
+ {
219
+ "id": "12",
220
+ "uri": "/users/12",
221
+ "cells": [
222
+ {"text": "12", "column": "id"},
223
+ {"text": "Liam Martinez", "column": "name"},
224
+ {"text": "liam@example.com", "column": "email"},
225
+ {"text": "Active", "column": "status", "chipColor": "success"},
226
+ {"text": "2023-12-19", "column": "date"},
227
+ {"text": "+1 555-0112", "column": "phone"},
228
+ {"text": "702 Willow Ave, Brockway", "column": "address"},
229
+ {"text": "API integration customer", "column": "notes"},
230
+ {"text": "Liam uses the API extensively for automated reporting", "column": "description"},
231
+ {"text": "INT-012", "column": "internal_id"}
232
+ ],
233
+ "actions": [
234
+ {"text": "Edit", "uri": "/users/12/edit", "icon": "edit"},
235
+ {"text": "Delete", "uri": "/users/12/delete", "icon": "delete", "confirmType": "error", "confirmTitle": "Delete User", "confirmContent": "Are you sure you want to delete Liam Martinez?"}
76
236
  ]
77
237
  }
78
- ]
238
+ ],
239
+ "page": 1,
240
+ "perPage": 10,
241
+ "total": 12
79
242
  }
@@ -0,0 +1,6 @@
1
+ {
2
+ "rows": [],
3
+ "page": 1,
4
+ "perPage": 10,
5
+ "total": 0
6
+ }