@happyvertical/smrt-users 0.34.5 → 0.34.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.
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "version": "1.0.0",
3
- "timestamp": 1782261300893,
3
+ "timestamp": 1782278462316,
4
4
  "packageName": "@happyvertical/smrt-users",
5
- "packageVersion": "0.34.5",
5
+ "packageVersion": "0.34.6",
6
6
  "objects": {
7
7
  "@happyvertical/smrt-users:UsersCliAuthRequestCollection": {
8
8
  "name": "userscliauthrequestcollection",
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "generatedAt": "2026-06-24T00:35:01.978Z",
3
+ "generatedAt": "2026-06-24T05:21:03.060Z",
4
4
  "packageName": "@happyvertical/smrt-users",
5
- "packageVersion": "0.34.5",
5
+ "packageVersion": "0.34.6",
6
6
  "sourceManifestPath": "dist/manifest.json",
7
7
  "agentDocPath": "AGENTS.md",
8
8
  "sourceHashes": {
9
- "manifest": "78c77572889f7baa73c696240c9b7958f6f718d6fb0c63528e6f3acda6066820",
10
- "packageJson": "8725ed59c9abcd0c00ea3b58eef21733664cb800a83e2dc69d3fd3da832f9223",
9
+ "manifest": "9423801c224b89018b9e28bc0879dcbbdbcb8fb8892f13d38af75bb3a33024ad",
10
+ "packageJson": "4e41765020fe217b7f69038dfc71e0d2002ca235034b12e28e22b33b7226373b",
11
11
  "agents": "2684404a1735fd4993d4383f2dfed5f9c0f4de68f0cbfcd996f7e94eb50ac9c8"
12
12
  },
13
13
  "exports": [
@@ -2,6 +2,7 @@
2
2
  import { RoleSelector } from '@happyvertical/smrt-ui';
3
3
  import { Modal } from '@happyvertical/smrt-ui/feedback';
4
4
  import { useI18n } from '@happyvertical/smrt-ui/i18n';
5
+ import { Button } from '@happyvertical/smrt-ui/ui';
5
6
  import type { Role, Tenant } from '@happyvertical/smrt-users';
6
7
  import { M } from '../i18n.js';
7
8
 
@@ -125,16 +126,16 @@ function handleClose() {
125
126
  </form>
126
127
 
127
128
  {#snippet footer()}
128
- <button type="button" class="btn-secondary" onclick={handleClose} disabled={loading}>
129
+ <Button variant="secondary" type="button" onclick={handleClose} disabled={loading}>
129
130
  Cancel
130
- </button>
131
- <button type="submit" form={formId} class="btn-primary" disabled={loading}>
131
+ </Button>
132
+ <Button variant="primary" type="submit" form={formId} disabled={loading}>
132
133
  {#if loading}
133
134
  {t(M['users.invite_user_modal.sending'])}
134
135
  {:else}
135
136
  {t(M['users.invite_user_modal.send_invite'])}
136
137
  {/if}
137
- </button>
138
+ </Button>
138
139
  {/snippet}
139
140
  </Modal>
140
141
 
@@ -211,42 +212,7 @@ function handleClose() {
211
212
  border-radius: var(--smrt-radius-small, 0.25rem);
212
213
  }
213
214
 
214
- button {
215
- padding: var(--smrt-spacing-sm, 0.5rem) var(--smrt-spacing-md, 1rem);
216
- border-radius: var(--smrt-radius-medium, 0.5rem);
217
- font: var(--smrt-typography-label-large-font, 500 0.875rem / 1.25 sans-serif);
218
- cursor: pointer;
219
- transition: all var(--smrt-duration-short2, 150ms) var(--smrt-easing-standard, ease);
220
- }
221
-
222
- button:disabled {
223
- opacity: 0.6;
224
- cursor: not-allowed;
225
- }
226
-
227
- .btn-primary {
228
- background: var(--smrt-color-primary, #005ac1);
229
- color: var(--smrt-color-on-primary, #ffffff);
230
- border: none;
231
- }
232
-
233
- .btn-primary:hover:not(:disabled) {
234
- background: var(--smrt-color-primary-container, #005ac1);
235
- opacity: 0.9;
236
- }
237
-
238
- .btn-secondary {
239
- background: var(--smrt-color-surface, white);
240
- color: var(--smrt-color-on-surface-variant, #43474e);
241
- border: 1px solid var(--smrt-color-outline-variant, #c4c6cf);
242
- }
243
-
244
- .btn-secondary:hover:not(:disabled) {
245
- background: var(--smrt-color-surface-container-low, #f9fafb);
246
- }
247
-
248
215
  @media (prefers-reduced-motion: reduce) {
249
- button,
250
216
  input[type='email'] {
251
217
  transition: none;
252
218
  }
@@ -1 +1 @@
1
- {"version":3,"file":"InviteUserModal.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/InviteUserModal.svelte.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAI9D,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,QAAQ,EAAE,CAAC,IAAI,EAAE;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,OAAO,CAAC;KACpB,KAAK,IAAI,CAAC;IACX,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA4GD,QAAA,MAAM,eAAe,2CAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"InviteUserModal.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/InviteUserModal.svelte.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAI9D,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,QAAQ,EAAE,CAAC,IAAI,EAAE;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,OAAO,CAAC;KACpB,KAAK,IAAI,CAAC;IACX,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA6GD,QAAA,MAAM,eAAe,2CAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
@@ -43,6 +43,7 @@ const statusClass = $derived.by(() => {
43
43
  });
44
44
  </script>
45
45
 
46
+ <!-- raw-primitive-allow: large pressable selection card wrapping rich content (avatar, name, email, role/status) with selected state and ripple; no Button primitive owns this structural pattern -->
46
47
  <button
47
48
  type="button"
48
49
  class="user-card"
@@ -1 +1 @@
1
- {"version":3,"file":"UserCard.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/UserCard.svelte.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAE5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAItD,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAwDD,QAAA,MAAM,QAAQ,2CAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"UserCard.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/UserCard.svelte.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAE5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAItD,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAyDD,QAAA,MAAM,QAAQ,2CAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
@@ -2,6 +2,7 @@
2
2
  import type { Profile } from '@happyvertical/smrt-profiles';
3
3
  import { UserStatus } from '@happyvertical/smrt-types';
4
4
  import { useI18n } from '@happyvertical/smrt-ui/i18n';
5
+ import { Button } from '@happyvertical/smrt-ui/ui';
5
6
  import type { User } from '@happyvertical/smrt-users';
6
7
  import { M } from '../i18n.js';
7
8
 
@@ -91,17 +92,17 @@ function handleSubmit(e: Event) {
91
92
 
92
93
  <div class="actions">
93
94
  {#if oncancel}
94
- <button type="button" class="btn-secondary" onclick={oncancel} disabled={loading}>
95
+ <Button variant="secondary" type="button" onclick={oncancel} disabled={loading}>
95
96
  Cancel
96
- </button>
97
+ </Button>
97
98
  {/if}
98
- <button type="submit" class="btn-primary" disabled={loading}>
99
+ <Button variant="primary" type="submit" disabled={loading}>
99
100
  {#if loading}
100
101
  Saving...
101
102
  {:else}
102
103
  {user ? 'Update User' : 'Create User'}
103
104
  {/if}
104
- </button>
105
+ </Button>
105
106
  </div>
106
107
  </form>
107
108
 
@@ -157,44 +158,9 @@ function handleSubmit(e: Event) {
157
158
  margin-top: var(--smrt-spacing-sm, 0.5rem);
158
159
  }
159
160
 
160
- button {
161
- padding: var(--smrt-spacing-sm, 0.5rem) var(--smrt-spacing-md, 1rem);
162
- border-radius: var(--smrt-radius-medium, 0.5rem);
163
- font: var(--smrt-typography-label-large-font, 500 0.875rem / 1.25 sans-serif);
164
- cursor: pointer;
165
- transition: all var(--smrt-duration-short2, 150ms) var(--smrt-easing-standard, ease);
166
- }
167
-
168
- button:disabled {
169
- opacity: 0.6;
170
- cursor: not-allowed;
171
- }
172
-
173
- .btn-primary {
174
- background: var(--smrt-color-primary, #005ac1);
175
- color: var(--smrt-color-on-primary, #ffffff);
176
- border: none;
177
- }
178
-
179
- .btn-primary:hover:not(:disabled) {
180
- background: var(--smrt-color-primary-container, #005ac1);
181
- opacity: 0.9;
182
- }
183
-
184
- .btn-secondary {
185
- background: var(--smrt-color-surface, white);
186
- color: var(--smrt-color-on-surface-variant, #43474e);
187
- border: 1px solid var(--smrt-color-outline-variant, #c4c6cf);
188
- }
189
-
190
- .btn-secondary:hover:not(:disabled) {
191
- background: var(--smrt-color-surface-container-low, #f9fafb);
192
- }
193
-
194
161
  @media (prefers-reduced-motion: reduce) {
195
162
  input,
196
- select,
197
- button {
163
+ select {
198
164
  transition: none;
199
165
  }
200
166
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UserForm.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/UserForm.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAItD,MAAM,WAAW,KAAK;IACpB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,KAAK,IAAI,CAAC;IAC9E,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAuGD,QAAA,MAAM,QAAQ,2CAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"UserForm.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/UserForm.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAGvD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAItD,MAAM,WAAW,KAAK;IACpB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,KAAK,IAAI,CAAC;IAC9E,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAwGD,QAAA,MAAM,QAAQ,2CAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
@@ -171,6 +171,7 @@ function getInitials(name: string): string {
171
171
  <svelte:window onclick={handleClickOutside} onkeydown={handleKeydown} />
172
172
 
173
173
  <div class="user-menu" id={menuId}>
174
+ <!-- raw-primitive-allow: WAI-ARIA menu-button trigger with bind:this focus management, aria-haspopup/aria-expanded/aria-controls and roving-tabindex keyboard nav; structural menu button no primitive owns -->
174
175
  <button
175
176
  bind:this={triggerButton}
176
177
  id="{menuId}-trigger"
@@ -1 +1 @@
1
- {"version":3,"file":"UserMenu.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/UserMenu.svelte.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAO5D,uCAAuC;AACvC,MAAM,WAAW,KAAK;IACpB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8DAA8D;IAC9D,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,uBAAuB;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAmMD,QAAA,MAAM,QAAQ,2CAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"UserMenu.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/UserMenu.svelte.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAO5D,uCAAuC;AACvC,MAAM,WAAW,KAAK;IACpB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8DAA8D;IAC9D,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,uBAAuB;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAoMD,QAAA,MAAM,QAAQ,2CAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@happyvertical/smrt-users",
3
- "version": "0.34.5",
3
+ "version": "0.34.6",
4
4
  "description": "Multi-tenant user management for the SMRT framework - users, tenants, roles, permissions, groups",
5
5
  "type": "module",
6
+ "smrtRawPrimitives": "strict-buttons",
6
7
  "main": "./dist/index.js",
7
8
  "types": "./dist/index.d.ts",
8
9
  "exports": {
@@ -42,12 +43,12 @@
42
43
  "dependencies": {
43
44
  "@happyvertical/logger": "^0.74.7",
44
45
  "jose": "^6.1.3",
45
- "@happyvertical/smrt-core": "0.34.5",
46
- "@happyvertical/smrt-profiles": "0.34.5",
47
- "@happyvertical/smrt-tenancy": "0.34.5",
48
- "@happyvertical/smrt-types": "0.34.5",
49
- "@happyvertical/smrt-config": "0.34.5",
50
- "@happyvertical/smrt-ui": "0.34.5"
46
+ "@happyvertical/smrt-config": "0.34.6",
47
+ "@happyvertical/smrt-profiles": "0.34.6",
48
+ "@happyvertical/smrt-tenancy": "0.34.6",
49
+ "@happyvertical/smrt-core": "0.34.6",
50
+ "@happyvertical/smrt-types": "0.34.6",
51
+ "@happyvertical/smrt-ui": "0.34.6"
51
52
  },
52
53
  "devDependencies": {
53
54
  "@happyvertical/sql": "^0.74.7",
@@ -60,7 +61,7 @@
60
61
  "typescript": "^5.9.3",
61
62
  "vite": "^7.3.1",
62
63
  "vitest": "^4.0.17",
63
- "@happyvertical/smrt-vitest": "0.34.5"
64
+ "@happyvertical/smrt-vitest": "0.34.6"
64
65
  },
65
66
  "keywords": [
66
67
  "smrt",