@mmlogic/components 0.3.5 → 0.3.6

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 (169) hide show
  1. package/dist/{collection/utils/cell-renderer.js → mosterdcomponents/cell-renderer-CbRwLOo8.js} +9 -3
  2. package/dist/mosterdcomponents/cell-renderer-CbRwLOo8.js.map +1 -0
  3. package/dist/{esm/index.js → mosterdcomponents/client-layout-D88nn5zf.js} +4 -1
  4. package/dist/mosterdcomponents/client-layout-D88nn5zf.js.map +1 -0
  5. package/dist/{collection/utils/format.js → mosterdcomponents/format-BAfsQfy1.js} +12 -7
  6. package/dist/mosterdcomponents/format-BAfsQfy1.js.map +1 -0
  7. package/dist/{collection/utils/i18n.js → mosterdcomponents/i18n-hoGGKbKU.js} +6 -1
  8. package/dist/mosterdcomponents/i18n-hoGGKbKU.js.map +1 -0
  9. package/dist/mosterdcomponents/index-B_tPFIvS.js +4585 -0
  10. package/dist/mosterdcomponents/index-B_tPFIvS.js.map +1 -0
  11. package/dist/mosterdcomponents/index-I5SuYv7a.js +4 -0
  12. package/dist/mosterdcomponents/index-I5SuYv7a.js.map +1 -0
  13. package/dist/mosterdcomponents/index.esm.js +5 -1
  14. package/dist/mosterdcomponents/index.esm.js.map +1 -0
  15. package/dist/mosterdcomponents/mosterdcomponents.css +180 -1
  16. package/dist/mosterdcomponents/mosterdcomponents.esm.js +50 -1
  17. package/dist/mosterdcomponents/mosterdcomponents.esm.js.map +1 -0
  18. package/dist/mosterdcomponents/mrd-boolean-field.entry.js +37 -0
  19. package/dist/mosterdcomponents/mrd-boolean-field.entry.js.map +1 -0
  20. package/dist/mosterdcomponents/mrd-currency-field.entry.js +67 -0
  21. package/dist/mosterdcomponents/mrd-currency-field.entry.js.map +1 -0
  22. package/dist/mosterdcomponents/mrd-date-field.entry.js +46 -0
  23. package/dist/mosterdcomponents/mrd-date-field.entry.js.map +1 -0
  24. package/dist/mosterdcomponents/mrd-datetime-field.entry.js +78 -0
  25. package/dist/mosterdcomponents/mrd-datetime-field.entry.js.map +1 -0
  26. package/dist/mosterdcomponents/mrd-email-field.entry.js +50 -0
  27. package/dist/mosterdcomponents/mrd-email-field.entry.js.map +1 -0
  28. package/dist/{collection/components/mrd-field/mrd-field.js → mosterdcomponents/mrd-field.entry.js} +28 -179
  29. package/dist/mosterdcomponents/mrd-field.entry.js.map +1 -0
  30. package/dist/mosterdcomponents/mrd-file-field.entry.js +108 -0
  31. package/dist/mosterdcomponents/mrd-file-field.entry.js.map +1 -0
  32. package/dist/{collection/components/mrd-form/mrd-form.js → mosterdcomponents/mrd-form.entry.js} +31 -308
  33. package/dist/mosterdcomponents/mrd-form.entry.js.map +1 -0
  34. package/dist/mosterdcomponents/mrd-hyperlink-field.entry.js +87 -0
  35. package/dist/mosterdcomponents/mrd-hyperlink-field.entry.js.map +1 -0
  36. package/dist/mosterdcomponents/mrd-image-field.entry.js +122 -0
  37. package/dist/mosterdcomponents/mrd-image-field.entry.js.map +1 -0
  38. package/dist/{collection/components/mrd-layout-section/mrd-layout-section.js → mosterdcomponents/mrd-layout-section.entry.js} +31 -418
  39. package/dist/mosterdcomponents/mrd-layout-section.entry.js.map +1 -0
  40. package/dist/mosterdcomponents/mrd-list-field.entry.js +107 -0
  41. package/dist/mosterdcomponents/mrd-list-field.entry.js.map +1 -0
  42. package/dist/mosterdcomponents/mrd-longtext-field.entry.js +47 -0
  43. package/dist/mosterdcomponents/mrd-longtext-field.entry.js.map +1 -0
  44. package/dist/mosterdcomponents/mrd-number-field.entry.js +87 -0
  45. package/dist/mosterdcomponents/mrd-number-field.entry.js.map +1 -0
  46. package/dist/mosterdcomponents/mrd-relation-field.entry.js +267 -0
  47. package/dist/mosterdcomponents/mrd-relation-field.entry.js.map +1 -0
  48. package/dist/mosterdcomponents/mrd-secret-field.entry.js +49 -0
  49. package/dist/mosterdcomponents/mrd-secret-field.entry.js.map +1 -0
  50. package/dist/{collection/components/mrd-table/mrd-table.js → mosterdcomponents/mrd-table.entry.js} +32 -394
  51. package/dist/mosterdcomponents/mrd-table.entry.js.map +1 -0
  52. package/dist/mosterdcomponents/mrd-text-field.entry.js +47 -0
  53. package/dist/mosterdcomponents/mrd-text-field.entry.js.map +1 -0
  54. package/dist/mosterdcomponents/mrd-textarea-field.entry.js +86 -0
  55. package/dist/mosterdcomponents/mrd-textarea-field.entry.js.map +1 -0
  56. package/dist/mosterdcomponents/mrd-time-field.entry.js +46 -0
  57. package/dist/mosterdcomponents/mrd-time-field.entry.js.map +1 -0
  58. package/dist/{esm/quill-CiuCgGz_.js → mosterdcomponents/quill-C9pgw_k-.js} +16282 -1397
  59. package/dist/mosterdcomponents/quill-C9pgw_k-.js.map +1 -0
  60. package/dist/{collection/utils/validation.js → mosterdcomponents/validation-ixb43cqU.js} +12 -5
  61. package/dist/mosterdcomponents/validation-ixb43cqU.js.map +1 -0
  62. package/package.json +1 -1
  63. package/dist/cjs/app-globals-V2Kpy_OQ.js +0 -5
  64. package/dist/cjs/index-BPj2cBXs.js +0 -1570
  65. package/dist/cjs/index.cjs.js +0 -66
  66. package/dist/cjs/loader.cjs.js +0 -13
  67. package/dist/cjs/mosterdcomponents.cjs.js +0 -25
  68. package/dist/cjs/mrd-boolean-field_20.cjs.entry.js +0 -3961
  69. package/dist/cjs/quill-DmFfnC1f.js +0 -16272
  70. package/dist/collection/collection-manifest.json +0 -32
  71. package/dist/collection/components/mrd-boolean-field/mrd-boolean-field.js +0 -199
  72. package/dist/collection/components/mrd-boolean-field/mrd-boolean-field.scss +0 -77
  73. package/dist/collection/components/mrd-currency-field/mrd-currency-field.js +0 -248
  74. package/dist/collection/components/mrd-currency-field/mrd-currency-field.scss +0 -100
  75. package/dist/collection/components/mrd-date-field/mrd-date-field.js +0 -206
  76. package/dist/collection/components/mrd-date-field/mrd-date-field.scss +0 -66
  77. package/dist/collection/components/mrd-datetime-field/mrd-datetime-field.js +0 -240
  78. package/dist/collection/components/mrd-datetime-field/mrd-datetime-field.scss +0 -66
  79. package/dist/collection/components/mrd-email-field/mrd-email-field.js +0 -230
  80. package/dist/collection/components/mrd-email-field/mrd-email-field.scss +0 -69
  81. package/dist/collection/components/mrd-field/mrd-field.scss +0 -118
  82. package/dist/collection/components/mrd-file-field/mrd-file-field.js +0 -341
  83. package/dist/collection/components/mrd-file-field/mrd-file-field.scss +0 -153
  84. package/dist/collection/components/mrd-form/mrd-form.scss +0 -148
  85. package/dist/collection/components/mrd-hyperlink-field/mrd-hyperlink-field.js +0 -291
  86. package/dist/collection/components/mrd-hyperlink-field/mrd-hyperlink-field.scss +0 -91
  87. package/dist/collection/components/mrd-image-field/mrd-image-field.js +0 -356
  88. package/dist/collection/components/mrd-image-field/mrd-image-field.scss +0 -190
  89. package/dist/collection/components/mrd-layout-section/mrd-layout-section.scss +0 -445
  90. package/dist/collection/components/mrd-list-field/mrd-list-field.js +0 -313
  91. package/dist/collection/components/mrd-list-field/mrd-list-field.scss +0 -109
  92. package/dist/collection/components/mrd-longtext-field/mrd-longtext-field.js +0 -227
  93. package/dist/collection/components/mrd-longtext-field/mrd-longtext-field.scss +0 -78
  94. package/dist/collection/components/mrd-number-field/mrd-number-field.js +0 -316
  95. package/dist/collection/components/mrd-number-field/mrd-number-field.scss +0 -77
  96. package/dist/collection/components/mrd-relation-field/mrd-relation-field.js +0 -707
  97. package/dist/collection/components/mrd-relation-field/mrd-relation-field.scss +0 -266
  98. package/dist/collection/components/mrd-secret-field/mrd-secret-field.js +0 -229
  99. package/dist/collection/components/mrd-secret-field/mrd-secret-field.scss +0 -73
  100. package/dist/collection/components/mrd-table/mrd-table.scss +0 -809
  101. package/dist/collection/components/mrd-text-field/mrd-text-field.js +0 -227
  102. package/dist/collection/components/mrd-text-field/mrd-text-field.scss +0 -69
  103. package/dist/collection/components/mrd-textarea-field/mrd-textarea-field.js +0 -267
  104. package/dist/collection/components/mrd-textarea-field/mrd-textarea-field.scss +0 -135
  105. package/dist/collection/components/mrd-time-field/mrd-time-field.js +0 -206
  106. package/dist/collection/components/mrd-time-field/mrd-time-field.scss +0 -66
  107. package/dist/collection/dev/api.js +0 -145
  108. package/dist/collection/dev/app.js +0 -890
  109. package/dist/collection/dev/auth.js +0 -156
  110. package/dist/collection/dev/example-data.js +0 -403
  111. package/dist/collection/dev/sprites.svg +0 -55
  112. package/dist/collection/index.js +0 -1
  113. package/dist/collection/types/client-layout.js +0 -64
  114. package/dist/collection/types/index.js +0 -1
  115. package/dist/components/client-layout.js +0 -1
  116. package/dist/components/format.js +0 -1
  117. package/dist/components/i18n.js +0 -1
  118. package/dist/components/index.js +0 -1
  119. package/dist/components/mrd-boolean-field.js +0 -1
  120. package/dist/components/mrd-boolean-field2.js +0 -1
  121. package/dist/components/mrd-currency-field.js +0 -1
  122. package/dist/components/mrd-currency-field2.js +0 -1
  123. package/dist/components/mrd-date-field.js +0 -1
  124. package/dist/components/mrd-date-field2.js +0 -1
  125. package/dist/components/mrd-datetime-field.js +0 -1
  126. package/dist/components/mrd-datetime-field2.js +0 -1
  127. package/dist/components/mrd-email-field.js +0 -1
  128. package/dist/components/mrd-email-field2.js +0 -1
  129. package/dist/components/mrd-field.js +0 -1
  130. package/dist/components/mrd-field2.js +0 -1
  131. package/dist/components/mrd-file-field.js +0 -1
  132. package/dist/components/mrd-file-field2.js +0 -1
  133. package/dist/components/mrd-form.js +0 -1
  134. package/dist/components/mrd-hyperlink-field.js +0 -1
  135. package/dist/components/mrd-hyperlink-field2.js +0 -1
  136. package/dist/components/mrd-image-field.js +0 -1
  137. package/dist/components/mrd-image-field2.js +0 -1
  138. package/dist/components/mrd-layout-section.js +0 -1
  139. package/dist/components/mrd-list-field.js +0 -1
  140. package/dist/components/mrd-list-field2.js +0 -1
  141. package/dist/components/mrd-longtext-field.js +0 -1
  142. package/dist/components/mrd-longtext-field2.js +0 -1
  143. package/dist/components/mrd-number-field.js +0 -1
  144. package/dist/components/mrd-number-field2.js +0 -1
  145. package/dist/components/mrd-relation-field.js +0 -1
  146. package/dist/components/mrd-relation-field2.js +0 -1
  147. package/dist/components/mrd-secret-field.js +0 -1
  148. package/dist/components/mrd-secret-field2.js +0 -1
  149. package/dist/components/mrd-table.js +0 -1
  150. package/dist/components/mrd-table2.js +0 -1
  151. package/dist/components/mrd-text-field.js +0 -1
  152. package/dist/components/mrd-text-field2.js +0 -1
  153. package/dist/components/mrd-textarea-field.js +0 -1
  154. package/dist/components/mrd-textarea-field2.js +0 -1
  155. package/dist/components/mrd-time-field.js +0 -1
  156. package/dist/components/mrd-time-field2.js +0 -1
  157. package/dist/components/quill.js +0 -1
  158. package/dist/components/validation.js +0 -1
  159. package/dist/esm/app-globals-DQuL1Twl.js +0 -3
  160. package/dist/esm/index-_tsCCkAi.js +0 -1561
  161. package/dist/esm/loader.js +0 -11
  162. package/dist/esm/mosterdcomponents.js +0 -21
  163. package/dist/esm/mrd-boolean-field_20.entry.js +0 -3940
  164. package/dist/index.cjs.js +0 -1
  165. package/dist/index.js +0 -1
  166. package/dist/mosterdcomponents/p-CiuCgGz_.js +0 -1
  167. package/dist/mosterdcomponents/p-DQuL1Twl.js +0 -1
  168. package/dist/mosterdcomponents/p-_tsCCkAi.js +0 -2
  169. package/dist/mosterdcomponents/p-e477187c.entry.js +0 -1
@@ -1,156 +0,0 @@
1
- /* =====================================================================
2
- AUTH0 PKCE
3
- ===================================================================== */
4
-
5
- const AUTH0_DOMAIN = 'login.develop.rulebooks.nl';
6
- const AUTH0_CLIENT = '5zpghu11GLFrx95eg5jMl1f0BEnkIenF';
7
- const AUTH0_AUDIENCE = 'https://api.mosterd';
8
- const REDIRECT_URI = 'http://localhost:3333';
9
-
10
- let _accessToken = null;
11
- let _userEmail = null;
12
-
13
- function authRestoreSession() {
14
- const token = localStorage.getItem('auth_token');
15
- const exp = parseInt(localStorage.getItem('auth_exp') || '0', 10);
16
- if (!token || (exp && Date.now() / 1000 >= exp - 60)) {
17
- localStorage.removeItem('auth_token');
18
- localStorage.removeItem('auth_email');
19
- localStorage.removeItem('auth_exp');
20
- return;
21
- }
22
- _accessToken = token;
23
- _userEmail = localStorage.getItem('auth_email') || null;
24
- }
25
-
26
- function base64url(buffer) {
27
- return btoa(String.fromCharCode(...new Uint8Array(buffer)))
28
- .replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
29
- }
30
-
31
- async function pkceGenerateVerifier() {
32
- const bytes = crypto.getRandomValues(new Uint8Array(96));
33
- return base64url(bytes);
34
- }
35
-
36
- async function pkceGenerateChallenge(verifier) {
37
- const data = new TextEncoder().encode(verifier);
38
- const hash = await crypto.subtle.digest('SHA-256', data);
39
- return base64url(hash);
40
- }
41
-
42
- async function authLogin() {
43
- const verifier = await pkceGenerateVerifier();
44
- const challenge = await pkceGenerateChallenge(verifier);
45
- sessionStorage.setItem('pkce_verifier', verifier);
46
-
47
- const params = new URLSearchParams({
48
- response_type: 'code',
49
- client_id: AUTH0_CLIENT,
50
- redirect_uri: REDIRECT_URI,
51
- audience: AUTH0_AUDIENCE,
52
- scope: 'openid profile email',
53
- code_challenge: challenge,
54
- code_challenge_method: 'S256',
55
- });
56
-
57
- window.location.href = `https://${AUTH0_DOMAIN}/authorize?${params}`;
58
- }
59
-
60
- async function authHandleCallback() {
61
- const url = new URL(window.location.href);
62
- const code = url.searchParams.get('code');
63
- const error = url.searchParams.get('error');
64
-
65
- if (error) {
66
- showAuthError(url.searchParams.get('error_description') || error);
67
- cleanUrl();
68
- return;
69
- }
70
-
71
- if (!code) return;
72
-
73
- const verifier = sessionStorage.getItem('pkce_verifier');
74
- if (!verifier) {
75
- showAuthError('PKCE verifier missing — please try logging in again.');
76
- cleanUrl();
77
- return;
78
- }
79
- sessionStorage.removeItem('pkce_verifier');
80
-
81
- try {
82
- const resp = await fetch(`https://${AUTH0_DOMAIN}/oauth/token`, {
83
- method: 'POST',
84
- headers: { 'Content-Type': 'application/json' },
85
- body: JSON.stringify({
86
- grant_type: 'authorization_code',
87
- client_id: AUTH0_CLIENT,
88
- code,
89
- redirect_uri: REDIRECT_URI,
90
- code_verifier: verifier,
91
- }),
92
- });
93
-
94
- const data = await resp.json();
95
- if (!resp.ok) throw new Error(data.error_description || data.error || resp.statusText);
96
-
97
- _accessToken = data.access_token;
98
-
99
- // Decode id_token for email (no signature validation needed on test page)
100
- if (data.id_token) {
101
- try {
102
- const payload = JSON.parse(atob(data.id_token.split('.')[1].replace(/-/g, '+').replace(/_/g, '/')));
103
- _userEmail = payload.email || payload.name || null;
104
- } catch (_) { /* ignore */ }
105
- }
106
-
107
- // Persist session in localStorage
108
- try {
109
- const payload = JSON.parse(atob(data.access_token.split('.')[1].replace(/-/g, '+').replace(/_/g, '/')));
110
- localStorage.setItem('auth_token', _accessToken);
111
- localStorage.setItem('auth_email', _userEmail || '');
112
- if (payload.exp) localStorage.setItem('auth_exp', String(payload.exp));
113
- } catch (_) { /* ignore */ }
114
- } catch (err) {
115
- showAuthError(err.message);
116
- }
117
-
118
- cleanUrl();
119
- }
120
-
121
- function cleanUrl() {
122
- const clean = window.location.pathname;
123
- window.history.replaceState({}, document.title, clean);
124
- }
125
-
126
- function authGetToken() { return _accessToken; }
127
-
128
- function showAuthError(msg) {
129
- document.getElementById('auth-status-area').innerHTML =
130
- `<span style="color:var(--mrd-color-danger)">❌ ${escHtml(msg)}</span>
131
- <button class="btn-secondary" onclick="authLogin()">Opnieuw proberen</button>`;
132
- }
133
-
134
- function showAuthStatus() {
135
- const area = document.getElementById('auth-status-area');
136
- const label = _userEmail ? `Ingelogd als <strong>${escHtml(_userEmail)}</strong>` : 'Ingelogd';
137
- area.innerHTML =
138
- `<span class="badge-ok">✓ ${label}</span>
139
- <button class="btn-secondary" onclick="authLogout()">Uitloggen</button>`;
140
- }
141
-
142
- function authLogout() {
143
- _accessToken = null;
144
- _userEmail = null;
145
- localStorage.removeItem('auth_token');
146
- localStorage.removeItem('auth_email');
147
- localStorage.removeItem('auth_exp');
148
- localStorage.removeItem('last_tenant');
149
- document.getElementById('auth-status-area').innerHTML =
150
- `<button class="btn-primary" id="btn-login" onclick="authLogin()">Login met Auth0</button>`;
151
- document.getElementById('panel-tenant').classList.add('hidden');
152
- document.getElementById('panel-type').classList.add('hidden');
153
- document.getElementById('panel-table').classList.add('hidden');
154
- document.getElementById('panel-form').classList.add('hidden');
155
- document.getElementById('panel-response').innerHTML = '';
156
- }
@@ -1,403 +0,0 @@
1
- // Static example layout used in the "Embedded Form" tab.
2
- window.EXAMPLE_LAYOUT = {
3
- title: "Project Intake Form",
4
- items: [
5
- {
6
- type: "SECTION",
7
- label: "Basic Information",
8
- items: [
9
- { type: "FIELD", name: "projectName", label: "Project Name", dataType: "TEXT", required: true, placeholder: "Enter project name" },
10
- { type: "FIELD", name: "description", label: "Description", dataType: "TEXTBLOCK", required: false, placeholder: "Describe the project..." },
11
- {
12
- type: "FIELD", name: "status", label: "Status", dataType: "LIST", required: true, multiple: false,
13
- listItems: [
14
- { key: "active", label: "Active", color: "#16a34a" },
15
- { key: "pending", label: "Pending", color: "#d97706" },
16
- { key: "on_hold", label: "On Hold", color: "#dc2626" },
17
- { key: "completed", label: "Completed", color: "#2563eb" }
18
- ]
19
- },
20
- {
21
- type: "FIELD", name: "tags", label: "Tags (Multi-select)", dataType: "LIST", required: false, multiple: true,
22
- listItems: [
23
- { key: "frontend", label: "Frontend", color: "#7c3aed" },
24
- { key: "backend", label: "Backend", color: "#db2777" },
25
- { key: "design", label: "Design", color: "#0891b2" },
26
- { key: "devops", label: "DevOps", color: "#65a30d" }
27
- ]
28
- }
29
- ]
30
- },
31
- {
32
- type: "SECTION",
33
- label: "Financial Details",
34
- items: [
35
- { type: "FIELD", name: "budget", label: "Budget", dataType: "CURRENCY", required: true, currencyCode: "EUR" },
36
- { type: "FIELD", name: "completion", label: "Completion (%)", dataType: "PERCENTAGE", required: false, decimalPrecision: 1 },
37
- { type: "FIELD", name: "headcount", label: "Headcount", dataType: "INTEGER", required: false },
38
- { type: "FIELD", name: "hourlyRate", label: "Hourly Rate", dataType: "DECIMAL", required: false, decimalPrecision: 2 }
39
- ]
40
- },
41
- {
42
- type: "SECTION",
43
- label: "Dates & Time",
44
- items: [
45
- { type: "FIELD", name: "startDate", label: "Start Date", dataType: "DATE", required: true },
46
- { type: "FIELD", name: "deadline", label: "Deadline", dataType: "DATETIME", required: false },
47
- { type: "FIELD", name: "dailyStandup", label: "Daily Standup Time", dataType: "TIME", required: false }
48
- ]
49
- },
50
- {
51
- type: "SECTION",
52
- label: "Contact & Links",
53
- items: [
54
- { type: "FIELD", name: "contactEmail", label: "Contact Email", dataType: "EMAIL", required: true, placeholder: "project@company.com" },
55
- { type: "FIELD", name: "repositoryUrl", label: "Repository URL", dataType: "HYPERLINK", required: false, placeholder: "https://github.com/..." }
56
- ]
57
- },
58
- {
59
- type: "SECTION",
60
- label: "Settings",
61
- items: [
62
- { type: "FIELD", name: "isPublic", label: "Public project", dataType: "BOOLEAN", required: false },
63
- { type: "FIELD", name: "isArchived", label: "Archived", dataType: "BOOLEAN", required: false },
64
- { type: "FIELD", name: "apiToken", label: "API Token", dataType: "SECRET", required: false, placeholder: "Paste token here" }
65
- ]
66
- },
67
- {
68
- type: "SECTION",
69
- label: "Assets",
70
- items: [
71
- { type: "FIELD", name: "projectLogo", label: "Project Logo", dataType: "IMAGE", required: false, accept: "image/*", maxSize: 5242880 },
72
- { type: "FIELD", name: "attachments", label: "Attachments", dataType: "FILE", required: false, accept: ".pdf,.doc,.docx,.zip", maxSize: 10485760 }
73
- ]
74
- },
75
- { type: "RELATION", name: "projectManager", label: "Project Manager", relatedClass: "Employee", displayType: "SEARCH", required: true, multiple: false },
76
- {
77
- type: "RELATION", name: "projectCategory", label: "Category", relatedClass: "Category", displayType: "DROPDOWN", required: false,
78
- dropdownValues: [
79
- { value: "product", label: "Product Development" },
80
- { value: "internal", label: "Internal Tool" },
81
- { value: "client", label: "Client Project" },
82
- { value: "research", label: "Research & Innovation" }
83
- ]
84
- }
85
- ]
86
- };
87
-
88
- window.EXAMPLE_VALUES = {
89
- projectName: "Mosterd Platform",
90
- status: "active",
91
- budget: { amount: 150000, currency: "EUR" },
92
- isPublic: true,
93
- startDate: "2026-01-15",
94
- contactEmail: "team@mosterd.nl"
95
- };
96
-
97
- // ─── Companies detail view demo ────────────────────────────────────────────────
98
-
99
- /** Column definitions for the companies list table. */
100
- window.EXAMPLE_COMPANY_COLUMNS = [
101
- { type: 'FIELD', label: 'Company name', name: 'name', dataType: 'TEXT', required: true },
102
- { type: 'FIELD', label: 'Reg. number', name: 'registrationNumber', dataType: 'TEXT', required: false },
103
- { type: 'FIELD', label: 'Legal form', name: 'legalForm', dataType: 'TEXT', required: false },
104
- { type: 'FIELD', label: 'Start date', name: 'startDate', dataType: 'DATE', required: false },
105
- { type: 'FIELD', label: 'Employees', name: 'totalEmployees', dataType: 'INTEGER', required: false },
106
- ];
107
-
108
- /** Rows for the companies list table. */
109
- window.EXAMPLE_COMPANIES = [
110
- {
111
- name: 'Alpha Holding B.V.',
112
- registrationNumber: '10000001',
113
- legalForm: 'Besloten Vennootschap',
114
- startDate: '2001-03-01',
115
- totalEmployees: 1,
116
- _links: { self: { href: '/data/demo/companies/company-1' } },
117
- },
118
- {
119
- name: 'Beta Services N.V.',
120
- registrationNumber: '20000002',
121
- legalForm: 'Naamloze Vennootschap',
122
- startDate: '2010-07-15',
123
- totalEmployees: 45,
124
- _links: { self: { href: '/data/demo/companies/company-2' } },
125
- },
126
- {
127
- name: 'Gamma & Partners B.V.',
128
- registrationNumber: '30000003',
129
- legalForm: 'Besloten Vennootschap',
130
- startDate: '2008-11-01',
131
- totalEmployees: 12,
132
- _links: { self: { href: '/data/demo/companies/company-3' } },
133
- },
134
- {
135
- name: 'Delta Vastgoed B.V.',
136
- registrationNumber: '40000004',
137
- legalForm: 'Besloten Vennootschap',
138
- startDate: '2020-06-15',
139
- totalEmployees: 3,
140
- _links: { self: { href: '/data/demo/companies/company-4' } },
141
- },
142
- ];
143
-
144
- /** Single company data object (result of GET /data/:tenant/companies/:id). */
145
- window.EXAMPLE_COMPANY = {
146
- name: 'Alpha Holding B.V.',
147
- legalName: 'Alpha Holding B.V.',
148
- registrationNumber: '10000001',
149
- registrationDate: null,
150
- legalForm: 'Besloten Vennootschap',
151
- legalFormExtended: 'Besloten Vennootschap',
152
- rsin: '100000001',
153
- startDate: '2001-03-01',
154
- endDate: null,
155
- primaryActivityDescription: 'Activiteiten van houdstermaatschappijen',
156
- primaryActivityCode: '64100',
157
- totalEmployees: 1,
158
- noMailing: false,
159
- verificationDate: '2024-01-15T09:00:00.000Z',
160
- visitAddress: 'Voorbeeldstraat 1',
161
- visitPostalCode: '1234AB',
162
- visitCity: 'Amsterdam',
163
- mailingAddress: null,
164
- mailingPostalCode: null,
165
- mailingCity: null,
166
- _links: {
167
- self: { href: '/data/demo/companies/company-1' },
168
- country: { href: '/data/demo/countries/nl', name: 'Nederland' },
169
- appointments: { href: '/data/demo/companies/company-1/appointments' },
170
- shareClasses: { href: '/data/demo/companies/company-1/shareClasses' },
171
- shareAllocations: { href: '/data/demo/shareholders/company-1/shareAllocations' },
172
- },
173
- };
174
-
175
- /** Dashboard metadata (GET /metadata/:tenant/dataObject?types=companies,...). */
176
- window.EXAMPLE_COMPANY_METADATA = {
177
- layoutType: 'OBJECT_DASHBOARD',
178
- layouts: [
179
- {
180
- type: 'OBJECT_DASHBOARD',
181
- label: '',
182
- tabPage: false,
183
- items: [
184
- { type: 'FIELD', label: 'company name', name: 'name', dataType: 'TEXT', required: true, header: true },
185
- { type: 'FIELD', label: 'legal name', name: 'legalName', dataType: 'TEXT', required: true },
186
- { type: 'FIELD', label: 'registration number', name: 'registrationNumber', dataType: 'TEXT', required: false },
187
- { type: 'FIELD', label: 'registration date', name: 'registrationDate', dataType: 'DATE', required: false },
188
- // ACTION items are silently ignored by mrd-layout-section
189
- { type: 'ACTION', label: 'company register', name: 'CompanyRegister' },
190
- ],
191
- },
192
- {
193
- type: 'OBJECT_DASHBOARD',
194
- label: 'Registration details',
195
- tabPage: true,
196
- items: [
197
- { type: 'FIELD', label: 'legal form', name: 'legalForm', dataType: 'TEXT', required: false },
198
- { type: 'FIELD', label: 'legal form extended', name: 'legalFormExtended', dataType: 'TEXT', required: false },
199
- { type: 'FIELD', label: 'rsin', name: 'rsin', dataType: 'TEXT', required: false },
200
- { type: 'FIELD', label: 'start date', name: 'startDate', dataType: 'DATE', required: false },
201
- { type: 'FIELD', label: 'end date', name: 'endDate', dataType: 'DATE', required: false },
202
- { type: 'FIELD', label: 'primary activity description', name: 'primaryActivityDescription', dataType: 'TEXT', required: false },
203
- { type: 'FIELD', label: 'primary activity code', name: 'primaryActivityCode', dataType: 'TEXT', required: false },
204
- { type: 'FIELD', label: 'total employees', name: 'totalEmployees', dataType: 'INTEGER', required: false },
205
- { type: 'FIELD', label: 'no mailing', name: 'noMailing', dataType: 'BOOLEAN', required: false },
206
- { type: 'FIELD', label: 'verification date', name: 'verificationDate', dataType: 'DATETIME', required: false },
207
- ],
208
- },
209
- {
210
- type: 'OBJECT_DASHBOARD',
211
- label: 'Contact information',
212
- tabPage: true,
213
- items: [
214
- { type: 'FIELD', label: 'visit address', name: 'visitAddress', dataType: 'TEXT', required: false },
215
- { type: 'FIELD', label: 'visit postal code', name: 'visitPostalCode', dataType: 'TEXT', required: false },
216
- { type: 'FIELD', label: 'visit city', name: 'visitCity', dataType: 'TEXT', required: false },
217
- { type: 'FIELD', label: 'mailing address', name: 'mailingAddress', dataType: 'TEXT', required: false },
218
- { type: 'FIELD', label: 'mailing postal code', name: 'mailingPostalCode', dataType: 'TEXT', required: false },
219
- { type: 'FIELD', label: 'mailing city', name: 'mailingCity', dataType: 'TEXT', required: false },
220
- { type: 'RELATION', label: 'country', name: 'country', relatedClass: 'commons.country', mostSignificantClass: 'countries', required: false },
221
- ],
222
- },
223
- {
224
- type: 'OBJECT_DASHBOARD',
225
- label: 'Appointments',
226
- tabPage: true,
227
- items: [
228
- { type: 'RELATED_VIEW', label: 'Appointments', name: 'view0', relatedClass: 'appointments', showTitle: false },
229
- ],
230
- },
231
- {
232
- type: 'OBJECT_DASHBOARD',
233
- label: 'Share classes',
234
- tabPage: true,
235
- items: [
236
- {
237
- type: 'RELATED_VIEW', label: 'Share classes', name: 'view1', relatedClass: 'shareClasses', showTitle: false,
238
- actions: ['NEW', 'EXPORT'],
239
- createTypes: [
240
- { type: 'ordinaryShares', label: 'Ordinary shares' },
241
- { type: 'preferenceShares', label: 'Preference shares' },
242
- ],
243
- },
244
- ],
245
- },
246
- ],
247
- views: {
248
- view0: {
249
- name: null,
250
- defaultView: true,
251
- defaultSort: 'name',
252
- values: [
253
- { type: 'FIELD', label: 'name', name: 'name', dataType: 'TEXT', required: true },
254
- { type: 'RELATION', label: 'Officer', name: 'officer', relatedClass: 'housekeeping.officer', mostSignificantClass: 'entities', required: true },
255
- {
256
- type: 'FIELD', label: 'Authority', name: 'authority', dataType: 'LIST', required: false,
257
- listItems: [
258
- { key: 'SOLE', label: 'Sole authority' },
259
- { key: 'JOINT', label: 'Joint authority' },
260
- ],
261
- },
262
- { type: 'FIELD', label: 'start date', name: 'activeDate', dataType: 'DATE', required: false },
263
- { type: 'FIELD', label: 'end date', name: 'inactiveDate', dataType: 'DATE', required: false },
264
- ],
265
- type: 'appointments',
266
- singularLabel: 'Appointment',
267
- pluralLabel: 'Appointments',
268
- },
269
- view1: {
270
- name: null,
271
- defaultView: true,
272
- defaultSort: 'name',
273
- values: [
274
- { type: 'FIELD', label: 'name', name: 'name', dataType: 'TEXT', required: true },
275
- { type: 'FIELD', label: 'Nominal value', name: 'nominalValue', dataType: 'TEXT', required: false },
276
- { type: 'FIELD', label: 'Currency', name: 'currency', dataType: 'TEXT', required: false },
277
- { type: 'FIELD', label: 'Authorised shares', name: 'authorizedShares', dataType: 'INTEGER', required: false },
278
- ],
279
- type: 'shareClasses',
280
- singularLabel: 'Share class',
281
- pluralLabel: 'Share classes',
282
- },
283
- },
284
- _links: {
285
- view0: { href: '/data/demo/appointments' },
286
- view1: { href: '/data/demo/shareClasses' },
287
- },
288
- };
289
-
290
- /** Mock appointment rows for the embedded table. */
291
- window.EXAMPLE_APPOINTMENTS = [
292
- {
293
- name: 'Directeur',
294
- authority: 'SOLE',
295
- activeDate: '2001-03-01',
296
- inactiveDate: null,
297
- _links: {
298
- self: { href: '/data/demo/appointments/apt-1' },
299
- officer: { href: '/data/demo/entities/person-1', name: 'A. Jansen' },
300
- },
301
- },
302
- {
303
- name: 'Commissaris',
304
- authority: 'JOINT',
305
- activeDate: '2018-03-01',
306
- inactiveDate: null,
307
- _links: {
308
- self: { href: '/data/demo/appointments/apt-2' },
309
- officer: { href: '/data/demo/entities/person-2', name: 'B. de Wit' },
310
- },
311
- },
312
- ];
313
-
314
- /** Mock share class rows for the embedded table. */
315
- window.EXAMPLE_SHARE_CLASSES = [
316
- {
317
- name: 'Gewone aandelen',
318
- nominalValue: '1.00',
319
- currency: 'EUR',
320
- authorizedShares: 1800,
321
- _links: { self: { href: '/data/demo/shareClasses/sc-1' } },
322
- },
323
- {
324
- name: 'Preferente aandelen',
325
- nominalValue: '1.00',
326
- currency: 'EUR',
327
- authorizedShares: 200,
328
- _links: { self: { href: '/data/demo/shareClasses/sc-2' } },
329
- },
330
- ];
331
-
332
- // ─── Field Types demo ─────────────────────────────────────────────────────────
333
-
334
- window.EXAMPLE_FIELD_TYPES_ITEMS = [
335
- { type: 'FIELD', label: 'Name (header)', name: 'fHeader', dataType: 'TEXT', required: false, header: true },
336
- { type: 'FIELD', label: 'Text', name: 'fText', dataType: 'TEXT', required: false },
337
- { type: 'FIELD', label: 'Email', name: 'fEmail', dataType: 'EMAIL', required: false },
338
- { type: 'FIELD', label: 'Hyperlink', name: 'fHyperlink', dataType: 'HYPERLINK', required: false },
339
- { type: 'FIELD', label: 'Integer', name: 'fInteger', dataType: 'INTEGER', required: false },
340
- { type: 'FIELD', label: 'Decimal', name: 'fDecimal', dataType: 'DECIMAL', required: false },
341
- { type: 'FIELD', label: 'Percentage', name: 'fPercentage', dataType: 'PERCENTAGE', required: false },
342
- { type: 'FIELD', label: 'Currency', name: 'fCurrency', dataType: 'CURRENCY', required: false },
343
- { type: 'FIELD', label: 'Boolean (true)', name: 'fBoolTrue', dataType: 'BOOLEAN', required: false },
344
- { type: 'FIELD', label: 'Boolean (false)', name: 'fBoolFalse', dataType: 'BOOLEAN', required: false },
345
- { type: 'FIELD', label: 'Date', name: 'fDate', dataType: 'DATE', required: false },
346
- { type: 'FIELD', label: 'DateTime', name: 'fDatetime', dataType: 'DATETIME', required: false },
347
- { type: 'FIELD', label: 'Time', name: 'fTime', dataType: 'TIME', required: false },
348
- {
349
- type: 'FIELD', label: 'List (no color)', name: 'fListPlain', dataType: 'LIST', required: false,
350
- listItems: [{ key: 'a', label: 'Option A' }, { key: 'b', label: 'Option B' }],
351
- },
352
- {
353
- type: 'FIELD', label: 'List (color only)', name: 'fListColor', dataType: 'LIST', required: false,
354
- listItems: [
355
- { key: 'active', label: 'Active', color: '#16a34a' },
356
- { key: 'inactive', label: 'Inactive', color: '#dc2626' },
357
- ],
358
- },
359
- {
360
- type: 'FIELD', label: 'List (color + bg)', name: 'fListBadge', dataType: 'LIST', required: false,
361
- listItems: [
362
- { key: 'approved', label: 'Approved', color: '#14532d', backgroundColor: '#dcfce7' },
363
- { key: 'rejected', label: 'Rejected', color: '#7f1d1d', backgroundColor: '#fee2e2' },
364
- { key: 'pending', label: 'Pending', color: '#78350f', backgroundColor: '#fef3c7' },
365
- ],
366
- },
367
- { type: 'SEARCH', label: 'Zoeken', dataClass: 'demo.entity' },
368
- { type: 'RELATION', label: 'Relation (single)', name: 'fRelation', relatedClass: 'demo.entity', required: false },
369
- { type: 'FIELD', label: 'File', name: 'fFile', dataType: 'FILE', required: false },
370
- { type: 'FIELD', label: 'Image', name: 'fImage', dataType: 'IMAGE', required: false },
371
- { type: 'FIELD', label: 'Textblock', name: 'fTextblock', dataType: 'TEXTBLOCK', required: false },
372
- { type: 'FIELD', label: 'Longtext', name: 'fLongtext', dataType: 'LONGTEXT', required: false },
373
- { type: 'FIELD', label: 'JSON', name: 'fJson', dataType: 'JSON', required: false },
374
- { type: 'FIELD', label: 'Secret', name: 'fSecret', dataType: 'SECRET', required: false },
375
- ];
376
-
377
- window.EXAMPLE_FIELD_TYPES_DATA = {
378
- fHeader: 'Voorbeeld Bedrijf B.V.',
379
- fText: 'Voorbeeld tekst',
380
- fEmail: 'info@example.com',
381
- fHyperlink: { href: 'https://example.com', text: 'example.com' },
382
- fInteger: 42,
383
- fDecimal: 3.14159,
384
- fPercentage: 0.7825,
385
- fCurrency: { amount: 1250.50, currency: 'EUR' },
386
- fBoolTrue: true,
387
- fBoolFalse: false,
388
- fDate: '2024-03-15',
389
- fDatetime: '2024-03-15T14:30:00.000Z',
390
- fTime: '14:30:00',
391
- fListPlain: 'a',
392
- fListColor: 'active',
393
- fListBadge: 'approved',
394
- fFile: { href: '/api/files/example-document', fileName: 'voorbeeld-document.pdf' },
395
- fImage: { href: '/api/files/example-photo', fileName: 'voorbeeld-foto.jpg' },
396
- fTextblock: '<p>Dit is een <strong>opgemaakte</strong> tekst met <em>html</em>-inhoud. Geschikt voor langere beschrijvingen met opmaak.</p>',
397
- fLongtext: 'Dit is een langere stuk platte tekst zonder opmaak.\nHet kan meerdere regels bevatten en wordt getoond in een pre-blok zodat witruimte bewaard blijft.',
398
- fJson: { id: 1, status: 'active', tags: ['alpha', 'beta'], meta: { created: '2024-01-01', valid: true } },
399
- fSecret: 'sk-live-abc123xyz',
400
- _links: {
401
- fRelation: { href: '/data/demo/entities/person-1', name: 'A. Jansen' },
402
- },
403
- };
@@ -1,55 +0,0 @@
1
- <svg aria-hidden="true" style="position: absolute; width: 0; height: 0; overflow: hidden;" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
2
- <defs>
3
- <symbol id="icon-search" viewBox="0 0 32 32">
4
- <path d="M31.008 27.231l-7.58-6.447c-0.784-0.705-1.622-1.029-2.299-0.998 1.789-2.096 2.87-4.815 2.87-7.787 0-6.627-5.373-12-12-12s-12 5.373-12 12 5.373 12 12 12c2.972 0 5.691-1.081 7.787-2.87-0.031 0.677 0.293 1.515 0.998 2.299l6.447 7.58c1.104 1.226 2.907 1.33 4.007 0.23s0.997-2.903-0.23-4.007zM12 20c-4.418 0-8-3.582-8-8s3.582-8 8-8 8 3.582 8 8-3.582 8-8 8z"></path>
5
- </symbol>
6
- <symbol id="icon-bin" viewBox="0 0 32 32">
7
- <path d="M4 10v20c0 1.1 0.9 2 2 2h18c1.1 0 2-0.9 2-2v-20h-22zM10 28h-2v-14h2v14zM14 28h-2v-14h2v14zM18 28h-2v-14h2v14zM22 28h-2v-14h2v14z"></path>
8
- <path d="M26.5 4h-6.5v-2.5c0-0.825-0.675-1.5-1.5-1.5h-7c-0.825 0-1.5 0.675-1.5 1.5v2.5h-6.5c-0.825 0-1.5 0.675-1.5 1.5v2.5h26v-2.5c0-0.825-0.675-1.5-1.5-1.5zM18 4h-6v-1.975h6v1.975z"></path>
9
- </symbol>
10
- <symbol id="icon-plus" viewBox="0 0 32 32">
11
- <path d="M31 12h-11v-11c0-0.552-0.448-1-1-1h-6c-0.552 0-1 0.448-1 1v11h-11c-0.552 0-1 0.448-1 1v6c0 0.552 0.448 1 1 1h11v11c0 0.552 0.448 1 1 1h6c0.552 0 1-0.448 1-1v-11h11c0.552 0 1-0.448 1-1v-6c0-0.552-0.448-1-1-1z"></path>
12
- </symbol>
13
- <symbol id="icon-cross" viewBox="0 0 32 32">
14
- <path d="M31.708 25.708c-0-0-0-0-0-0l-9.708-9.708 9.708-9.708c0-0 0-0 0-0 0.105-0.105 0.18-0.227 0.229-0.357 0.133-0.356 0.057-0.771-0.229-1.057l-4.586-4.586c-0.286-0.286-0.702-0.361-1.057-0.229-0.13 0.048-0.252 0.124-0.357 0.228 0 0-0 0-0 0l-9.708 9.708-9.708-9.708c-0-0-0-0-0-0-0.105-0.104-0.227-0.18-0.357-0.228-0.356-0.133-0.771-0.057-1.057 0.229l-4.586 4.586c-0.286 0.286-0.361 0.702-0.229 1.057 0.049 0.13 0.124 0.252 0.229 0.357 0 0 0 0 0 0l9.708 9.708-9.708 9.708c-0 0-0 0-0 0-0.104 0.105-0.18 0.227-0.229 0.357-0.133 0.355-0.057 0.771 0.229 1.057l4.586 4.586c0.286 0.286 0.702 0.361 1.057 0.229 0.13-0.049 0.252-0.124 0.357-0.229 0-0 0-0 0-0l9.708-9.708 9.708 9.708c0 0 0 0 0 0 0.105 0.105 0.227 0.18 0.357 0.229 0.356 0.133 0.771 0.057 1.057-0.229l4.586-4.586c0.286-0.286 0.362-0.702 0.229-1.057-0.049-0.13-0.124-0.252-0.229-0.357z"></path>
15
- </symbol>
16
- <symbol id="icon-backward2" viewBox="0 0 32 32">
17
- <path d="M18 5v10l10-10v22l-10-10v10l-11-11z"></path>
18
- </symbol>
19
- <symbol id="icon-forward3" viewBox="0 0 32 32">
20
- <path d="M16 27v-10l-10 10v-22l10 10v-10l11 11z"></path>
21
- </symbol>
22
- <symbol id="icon-previous2" viewBox="0 0 32 32">
23
- <path d="M8 28v-24h4v11l10-10v22l-10-10v11z"></path>
24
- </symbol>
25
- <symbol id="icon-next2" viewBox="0 0 32 32">
26
- <path d="M24 4v24h-4v-11l-10 10v-22l10 10v-11z"></path>
27
- </symbol>
28
- <symbol id="icon-sort-alpha-asc" viewBox="0 0 32 32">
29
- <path d="M10 24v-24h-4v24h-5l7 7 7-7h-5z"></path>
30
- <path d="M29 32h-8c-0.369 0-0.708-0.203-0.882-0.528s-0.155-0.72 0.050-1.027l6.963-10.445h-6.131c-0.552 0-1-0.448-1-1s0.448-1 1-1h8c0.369 0 0.708 0.203 0.882 0.528s0.155 0.72-0.050 1.027l-6.963 10.445h6.131c0.552 0 1 0.448 1 1s-0.448 1-1 1z"></path>
31
- <path d="M31.894 12.553l-6-12c-0.169-0.339-0.516-0.553-0.894-0.553s-0.725 0.214-0.895 0.553l-6 12c-0.247 0.494-0.047 1.095 0.447 1.342 0.144 0.072 0.296 0.106 0.447 0.106 0.367 0 0.72-0.203 0.895-0.553l1.724-3.447h6.764l1.724 3.447c0.247 0.494 0.848 0.694 1.342 0.447s0.694-0.848 0.447-1.342zM22.618 8l2.382-4.764 2.382 4.764h-4.764z"></path>
32
- </symbol>
33
- <symbol id="icon-sort-alpha-desc" viewBox="0 0 32 32">
34
- <path d="M10 24v-24h-4v24h-5l7 7 7-7h-5z"></path>
35
- <path d="M29 14h-8c-0.369 0-0.708-0.203-0.882-0.528s-0.155-0.72 0.050-1.027l6.963-10.445h-6.131c-0.552 0-1-0.448-1-1s0.448-1 1-1h8c0.369 0 0.708 0.203 0.882 0.528s0.155 0.72-0.050 1.027l-6.963 10.445h6.131c0.552 0 1 0.448 1 1s-0.448 1-1 1z"></path>
36
- <path d="M31.894 30.553l-6-12c-0.169-0.339-0.516-0.553-0.894-0.553s-0.725 0.214-0.895 0.553l-6 12c-0.247 0.494-0.047 1.095 0.447 1.342 0.144 0.072 0.296 0.106 0.447 0.106 0.367 0 0.72-0.203 0.895-0.553l1.724-3.447h6.764l1.724 3.447c0.247 0.494 0.848 0.694 1.342 0.447s0.694-0.848 0.447-1.342zM22.618 26l2.382-4.764 2.382 4.764h-4.764z"></path>
37
- </symbol>
38
- <symbol id="icon-filter" viewBox="0 0 32 32">
39
- <path d="M16 0c-8.837 0-16 2.239-16 5v3l12 12v10c0 1.105 1.791 2 4 2s4-0.895 4-2v-10l12-12v-3c0-2.761-7.163-5-16-5zM2.95 4.338c0.748-0.427 1.799-0.832 3.040-1.171 2.748-0.752 6.303-1.167 10.011-1.167s7.262 0.414 10.011 1.167c1.241 0.34 2.292 0.745 3.040 1.171 0.494 0.281 0.76 0.519 0.884 0.662-0.124 0.142-0.391 0.38-0.884 0.662-0.748 0.427-1.8 0.832-3.040 1.171-2.748 0.752-6.303 1.167-10.011 1.167s-7.262-0.414-10.011-1.167c-1.24-0.34-2.292-0.745-3.040-1.171-0.494-0.282-0.76-0.519-0.884-0.662 0.124-0.142 0.391-0.38 0.884-0.662z"></path>
40
- </symbol>
41
- <symbol id="icon-file-excel" viewBox="0 0 32 32">
42
- <path d="M23.22 12h-4.228l-2.992 4.407-2.992-4.407h-4.228l5.068 7.577-5.718 8.423h7.87v-2.862h-1.567l1.567-2.344 3.481 5.205h4.389l-5.718-8.423 5.068-7.577z"></path>
43
- <path d="M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.121 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841v0zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268v0zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z"></path>
44
- </symbol>
45
- <symbol id="icon-pencil" viewBox="0 0 32 32">
46
- <path d="M27.414 0.586c-0.781-0.781-2.048-0.781-2.828 0l-3.172 3.172 5.828 5.828 3.172-3.172c0.781-0.781 0.781-2.047 0-2.828l-3-3zM0 24v8h8l17.414-17.414-8-8-17.414 17.414zM6.828 28h-2.828v-2.828l12-12 2.828 2.828-12 12z"></path>
47
- </symbol>
48
- <symbol id="icon-ellipsis" viewBox="0 0 32 32">
49
- <circle cx="4" cy="16" r="3.5"></circle>
50
- <circle cx="16" cy="16" r="3.5"></circle>
51
- <circle cx="28" cy="16" r="3.5"></circle>
52
- </symbol>
53
- </defs>
54
- </svg>
55
-
@@ -1 +0,0 @@
1
- export * from './types';