@licklist/design 0.78.5-dev.69 → 0.78.5-dev.70

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 (123) hide show
  1. package/dist/styles/themes/bookedit/_fonts.scss +2 -0
  2. package/dist/v2/components/ActionMenu/ActionMenu.d.ts.map +1 -1
  3. package/dist/v2/components/ActionMenu/ActionMenu.js +5 -3
  4. package/dist/v2/components/AvatarUpload/AvatarUpload.d.ts +12 -0
  5. package/dist/v2/components/AvatarUpload/AvatarUpload.d.ts.map +1 -0
  6. package/dist/v2/components/AvatarUpload/index.d.ts +2 -0
  7. package/dist/v2/components/AvatarUpload/index.d.ts.map +1 -0
  8. package/dist/v2/components/Button/Button.d.ts +1 -1
  9. package/dist/v2/components/Button/Button.d.ts.map +1 -1
  10. package/dist/v2/components/Button/Button.scss.js +1 -1
  11. package/dist/v2/components/DataTable/DataTable.d.ts +41 -0
  12. package/dist/v2/components/DataTable/DataTable.d.ts.map +1 -0
  13. package/dist/v2/components/DataTable/index.d.ts +3 -0
  14. package/dist/v2/components/DataTable/index.d.ts.map +1 -0
  15. package/dist/v2/components/EmptyState/EmptyState.d.ts +14 -0
  16. package/dist/v2/components/EmptyState/EmptyState.d.ts.map +1 -0
  17. package/dist/v2/components/EmptyState/index.d.ts +3 -0
  18. package/dist/v2/components/EmptyState/index.d.ts.map +1 -0
  19. package/dist/v2/components/FormField/FormField.scss.js +1 -1
  20. package/dist/v2/components/InfoGrid/InfoGrid.d.ts +13 -0
  21. package/dist/v2/components/InfoGrid/InfoGrid.d.ts.map +1 -0
  22. package/dist/v2/components/InfoGrid/index.d.ts +2 -0
  23. package/dist/v2/components/InfoGrid/index.d.ts.map +1 -0
  24. package/dist/v2/components/NewTable/NewTable.scss.js +1 -1
  25. package/dist/v2/components/RadioCard/RadioCard.d.ts +17 -0
  26. package/dist/v2/components/RadioCard/RadioCard.d.ts.map +1 -0
  27. package/dist/v2/components/RadioCard/index.d.ts +2 -0
  28. package/dist/v2/components/RadioCard/index.d.ts.map +1 -0
  29. package/dist/v2/components/StatusBadge/StatusBadge.d.ts +8 -0
  30. package/dist/v2/components/StatusBadge/StatusBadge.d.ts.map +1 -0
  31. package/dist/v2/components/StatusBadge/index.d.ts +3 -0
  32. package/dist/v2/components/StatusBadge/index.d.ts.map +1 -0
  33. package/dist/v2/components/StepIndicator/StepIndicator.d.ts +9 -0
  34. package/dist/v2/components/StepIndicator/StepIndicator.d.ts.map +1 -0
  35. package/dist/v2/components/StepIndicator/index.d.ts +2 -0
  36. package/dist/v2/components/StepIndicator/index.d.ts.map +1 -0
  37. package/dist/v2/components/TableControls/TableControls.d.ts +28 -0
  38. package/dist/v2/components/TableControls/TableControls.d.ts.map +1 -0
  39. package/dist/v2/components/TableControls/index.d.ts +3 -0
  40. package/dist/v2/components/TableControls/index.d.ts.map +1 -0
  41. package/dist/v2/components/Tabs/Tabs.d.ts +15 -0
  42. package/dist/v2/components/Tabs/Tabs.d.ts.map +1 -0
  43. package/dist/v2/components/Tabs/index.d.ts +3 -0
  44. package/dist/v2/components/Tabs/index.d.ts.map +1 -0
  45. package/dist/v2/icons/index.d.ts +42 -0
  46. package/dist/v2/icons/index.d.ts.map +1 -1
  47. package/dist/v2/index.d.ts +18 -0
  48. package/dist/v2/index.d.ts.map +1 -1
  49. package/dist/v2/pages/CreateUser/CreateUserPage.d.ts +110 -0
  50. package/dist/v2/pages/CreateUser/CreateUserPage.d.ts.map +1 -0
  51. package/dist/v2/pages/CreateUser/index.d.ts +3 -0
  52. package/dist/v2/pages/CreateUser/index.d.ts.map +1 -0
  53. package/dist/v2/pages/RoleSelection/RoleSelectionPage.d.ts +26 -0
  54. package/dist/v2/pages/RoleSelection/RoleSelectionPage.d.ts.map +1 -0
  55. package/dist/v2/pages/RoleSelection/index.d.ts +3 -0
  56. package/dist/v2/pages/RoleSelection/index.d.ts.map +1 -0
  57. package/dist/v2/pages/UserDetails/UserDetailsPage.d.ts +37 -0
  58. package/dist/v2/pages/UserDetails/UserDetailsPage.d.ts.map +1 -0
  59. package/dist/v2/pages/UserDetails/index.d.ts +3 -0
  60. package/dist/v2/pages/UserDetails/index.d.ts.map +1 -0
  61. package/dist/v2/pages/auth/CreatePassword/CreatePasswordPage.d.ts.map +1 -1
  62. package/dist/v2/pages/auth/Login/LoginPage.d.ts.map +1 -1
  63. package/dist/v2/pages/auth/ResetPassword/ResetPasswordPage.d.ts.map +1 -1
  64. package/dist/v2/styles/components/Button.scss +27 -0
  65. package/package.json +2 -2
  66. package/src/styles/themes/bookedit/_fonts.scss +2 -0
  67. package/src/v2/components/ActionMenu/ActionMenu.tsx +4 -2
  68. package/src/v2/components/AvatarUpload/AvatarUpload.scss +68 -0
  69. package/src/v2/components/AvatarUpload/AvatarUpload.stories.tsx +83 -0
  70. package/src/v2/components/AvatarUpload/AvatarUpload.tsx +69 -0
  71. package/src/v2/components/AvatarUpload/index.ts +1 -0
  72. package/src/v2/components/Button/Button.tsx +1 -0
  73. package/src/v2/components/DataTable/DataTable.scss +181 -0
  74. package/src/v2/components/DataTable/DataTable.tsx +256 -0
  75. package/src/v2/components/DataTable/index.ts +7 -0
  76. package/src/v2/components/EmptyState/EmptyState.scss +39 -0
  77. package/src/v2/components/EmptyState/EmptyState.stories.tsx +45 -0
  78. package/src/v2/components/EmptyState/EmptyState.tsx +37 -0
  79. package/src/v2/components/EmptyState/index.ts +2 -0
  80. package/src/v2/components/FormField/FormField.scss +12 -0
  81. package/src/v2/components/InfoGrid/InfoGrid.scss +51 -0
  82. package/src/v2/components/InfoGrid/InfoGrid.stories.tsx +76 -0
  83. package/src/v2/components/InfoGrid/InfoGrid.tsx +28 -0
  84. package/src/v2/components/InfoGrid/index.ts +1 -0
  85. package/src/v2/components/NewTable/NewTable.scss +4 -4
  86. package/src/v2/components/RadioCard/RadioCard.scss +76 -0
  87. package/src/v2/components/RadioCard/RadioCard.stories.tsx +115 -0
  88. package/src/v2/components/RadioCard/RadioCard.tsx +68 -0
  89. package/src/v2/components/RadioCard/index.ts +1 -0
  90. package/src/v2/components/StatusBadge/StatusBadge.scss +53 -0
  91. package/src/v2/components/StatusBadge/StatusBadge.tsx +31 -0
  92. package/src/v2/components/StatusBadge/index.ts +2 -0
  93. package/src/v2/components/StepIndicator/StepIndicator.scss +62 -0
  94. package/src/v2/components/StepIndicator/StepIndicator.stories.tsx +37 -0
  95. package/src/v2/components/StepIndicator/StepIndicator.tsx +41 -0
  96. package/src/v2/components/StepIndicator/index.ts +1 -0
  97. package/src/v2/components/TableControls/TableControls.scss +63 -0
  98. package/src/v2/components/TableControls/TableControls.tsx +110 -0
  99. package/src/v2/components/TableControls/index.ts +7 -0
  100. package/src/v2/components/Tabs/Tabs.scss +36 -0
  101. package/src/v2/components/Tabs/Tabs.stories.tsx +75 -0
  102. package/src/v2/components/Tabs/Tabs.tsx +52 -0
  103. package/src/v2/components/Tabs/index.ts +2 -0
  104. package/src/v2/icons/index.tsx +219 -0
  105. package/src/v2/index.ts +98 -0
  106. package/src/v2/pages/CreateUser/CreateUserPage.scss +760 -0
  107. package/src/v2/pages/CreateUser/CreateUserPage.stories.tsx +157 -0
  108. package/src/v2/pages/CreateUser/CreateUserPage.tsx +1062 -0
  109. package/src/v2/pages/CreateUser/index.ts +13 -0
  110. package/src/v2/pages/RoleSelection/RoleSelectionPage.scss +193 -0
  111. package/src/v2/pages/RoleSelection/RoleSelectionPage.stories.tsx +112 -0
  112. package/src/v2/pages/RoleSelection/RoleSelectionPage.tsx +127 -0
  113. package/src/v2/pages/RoleSelection/index.ts +2 -0
  114. package/src/v2/pages/UserDetails/UserDetailsPage.scss +236 -0
  115. package/src/v2/pages/UserDetails/UserDetailsPage.stories.tsx +84 -0
  116. package/src/v2/pages/UserDetails/UserDetailsPage.tsx +210 -0
  117. package/src/v2/pages/UserDetails/index.ts +2 -0
  118. package/src/v2/pages/auth/AuthLayout/AuthLayout.scss +8 -6
  119. package/src/v2/pages/auth/CreatePassword/CreatePasswordPage.tsx +1 -3
  120. package/src/v2/pages/auth/Login/LoginPage.tsx +1 -3
  121. package/src/v2/pages/auth/ResetPassword/ResetPasswordPage.scss +2 -0
  122. package/src/v2/pages/auth/ResetPassword/ResetPasswordPage.tsx +1 -2
  123. package/src/v2/styles/components/Button.scss +27 -0
@@ -0,0 +1,760 @@
1
+ @import '../../styles/index.scss';
2
+
3
+ .create-user-page {
4
+ display: flex;
5
+ flex-direction: column;
6
+ min-height: 100vh;
7
+ background: var(--surface-primary, #ffffff);
8
+
9
+ // ── Header ──────────────────────────────────────────────────────────────
10
+ &__header {
11
+ display: flex;
12
+ align-items: center;
13
+ justify-content: space-between;
14
+ padding: 16px 24px;
15
+ border-bottom: 1px solid var(--border-primary, #e8e9ef);
16
+ background: var(--surface-primary, #ffffff);
17
+ position: sticky;
18
+ top: 0;
19
+ z-index: 10;
20
+ }
21
+
22
+ &__title {
23
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
24
+ font-size: 18px;
25
+ font-weight: 700;
26
+ line-height: 24px;
27
+ color: var(--label-primary, #121e52);
28
+ margin: 0;
29
+ }
30
+
31
+ // ── Body ─────────────────────────────────────────────────────────────────
32
+ &__body {
33
+ display: flex;
34
+ flex-direction: column;
35
+ align-items: flex-start;
36
+ gap: 16px;
37
+ padding: 24px;
38
+ width: 100%;
39
+ max-width: 700px;
40
+ margin: 0 auto;
41
+ }
42
+
43
+ // ── Back button ──────────────────────────────────────────────────────────
44
+ &__back {
45
+ display: inline-flex;
46
+ align-items: center;
47
+ gap: 6px;
48
+ background: none;
49
+ border: none;
50
+ cursor: pointer;
51
+ padding: 6px 8px;
52
+ border-radius: var(--radius-sm, 4px);
53
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
54
+ font-size: 14px;
55
+ font-weight: 500;
56
+ color: var(--label-action, #6200ee);
57
+ transition: background 0.15s ease;
58
+
59
+ &:hover {
60
+ background: var(--surface-action-soft, #f3e8ff);
61
+ }
62
+
63
+ &:disabled {
64
+ opacity: 0.5;
65
+ cursor: not-allowed;
66
+ }
67
+
68
+ svg path {
69
+ stroke: currentColor;
70
+ }
71
+ }
72
+
73
+ // ── Error banner ─────────────────────────────────────────────────────────
74
+ &__error-banner {
75
+ display: flex;
76
+ width: 100%;
77
+ padding: 12px 16px;
78
+ background: var(--surface-status-error-soft, #fef2f2);
79
+ border: 1px solid var(--border-status-error, #fecaca);
80
+ border-radius: var(--radius-md, 4px);
81
+ font-size: 14px;
82
+ color: var(--label-status-error, #ef4444);
83
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
84
+ }
85
+
86
+ // ── Step container ───────────────────────────────────────────────────────
87
+ &__step {
88
+ display: flex;
89
+ flex-direction: column;
90
+ gap: 24px;
91
+ width: 100%;
92
+ }
93
+
94
+ &__step-title {
95
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
96
+ font-size: 20px;
97
+ font-weight: 600;
98
+ line-height: 28px;
99
+ color: var(--label-primary, #121e52);
100
+ margin: 0;
101
+ }
102
+
103
+ &__step-subtitle {
104
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
105
+ font-size: 14px;
106
+ line-height: 20px;
107
+ color: var(--label-secondary, #626a90);
108
+ margin: 4px 0 0;
109
+ }
110
+
111
+ // ── Fields ───────────────────────────────────────────────────────────────
112
+ &__fields {
113
+ display: flex;
114
+ flex-direction: column;
115
+ gap: 16px;
116
+ width: 100%;
117
+ }
118
+
119
+ // ── Actions row ──────────────────────────────────────────────────────────
120
+ &__actions {
121
+ display: flex;
122
+ align-items: center;
123
+ gap: 12px;
124
+ }
125
+
126
+ // ── Role cards (radio) ───────────────────────────────────────────────────
127
+ &__role-cards {
128
+ display: flex;
129
+ flex-direction: column;
130
+ gap: 12px;
131
+ width: 100%;
132
+ }
133
+
134
+ &__role-card {
135
+ display: flex;
136
+ align-items: flex-start;
137
+ gap: 12px;
138
+ padding: 16px;
139
+ border: 2px solid var(--border-primary, #e8e9ef);
140
+ border-radius: var(--radius-md, 4px);
141
+ cursor: pointer;
142
+ transition: border-color 0.15s ease, background 0.15s ease;
143
+ background: var(--surface-primary, #ffffff);
144
+
145
+ &:hover {
146
+ background: var(--surface-secondary, #f8f8fa);
147
+ }
148
+
149
+ &--selected {
150
+ border-color: var(--border-selected, #6200ee);
151
+ background: var(--surface-action-soft, #f3e8ff);
152
+ }
153
+ }
154
+
155
+ &__radio {
156
+ margin-top: 2px;
157
+ flex-shrink: 0;
158
+ accent-color: var(--border-selected, #6200ee);
159
+ width: 16px;
160
+ height: 16px;
161
+ cursor: pointer;
162
+ }
163
+
164
+ &__role-card-content {
165
+ display: flex;
166
+ flex-direction: column;
167
+ gap: 4px;
168
+ }
169
+
170
+ &__role-card-label {
171
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
172
+ font-size: 15px;
173
+ font-weight: 600;
174
+ color: var(--label-primary, #121e52);
175
+ }
176
+
177
+ &__role-card-desc {
178
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
179
+ font-size: 13px;
180
+ line-height: 18px;
181
+ color: var(--label-secondary, #626a90);
182
+ }
183
+
184
+ // ── Role select (existing assign) ────────────────────────────────────────
185
+ &__role-select-wrapper {
186
+ width: 100%;
187
+ max-width: 280px;
188
+ }
189
+
190
+ // ── Entity card (provider context in existing-assign-role) ───────────────
191
+ &__entity-card {
192
+ display: flex;
193
+ align-items: center;
194
+ gap: 12px;
195
+ padding: 16px;
196
+ background: var(--surface-secondary, #f8f8fa);
197
+ border: 1px solid var(--border-primary, #e8e9ef);
198
+ border-radius: var(--radius-md, 4px);
199
+ }
200
+
201
+ &__entity-card-info {
202
+ display: flex;
203
+ flex-direction: column;
204
+ gap: 4px;
205
+ flex: 1;
206
+ }
207
+
208
+ &__entity-card-name {
209
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
210
+ font-size: 14px;
211
+ font-weight: 600;
212
+ color: var(--label-primary, #121e52);
213
+ }
214
+
215
+ // ── Search ───────────────────────────────────────────────────────────────
216
+ &__search-wrapper {
217
+ display: flex;
218
+ flex-direction: column;
219
+ gap: 8px;
220
+ width: 100%;
221
+ }
222
+
223
+ &__search-label {
224
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
225
+ font-size: 15px;
226
+ font-weight: 600;
227
+ color: var(--label-primary, #121e52);
228
+ }
229
+
230
+ &__search-input-row {
231
+ display: flex;
232
+ align-items: center;
233
+ gap: 8px;
234
+ padding: 8px 12px;
235
+ border: 2px solid var(--border-primary, #e8e9ef);
236
+ border-radius: var(--radius-md, 4px);
237
+ background: var(--surface-secondary, #f8f8fa);
238
+ transition: border-color 0.15s ease;
239
+
240
+ &:focus-within {
241
+ border-color: var(--border-selected, #6200ee);
242
+ }
243
+
244
+ svg path {
245
+ stroke: var(--label-secondary, #626a90);
246
+ }
247
+ }
248
+
249
+ &__search-input {
250
+ flex: 1;
251
+ border: none;
252
+ background: none;
253
+ outline: none;
254
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
255
+ font-size: 15px;
256
+ color: var(--label-primary, #121e52);
257
+
258
+ &::placeholder {
259
+ color: var(--label-secondary, #626a90);
260
+ }
261
+ }
262
+
263
+ &__search-empty {
264
+ padding: 16px;
265
+ background: var(--surface-secondary, #f8f8fa);
266
+ border: 1px solid var(--border-primary, #e8e9ef);
267
+ border-radius: var(--radius-md, 4px);
268
+ font-size: 14px;
269
+ color: var(--label-secondary, #626a90);
270
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
271
+ text-align: center;
272
+ }
273
+
274
+ &__search-results {
275
+ display: flex;
276
+ flex-direction: column;
277
+ gap: 4px;
278
+ padding: 8px;
279
+ background: var(--surface-secondary, #f8f8fa);
280
+ border: 1px solid var(--border-primary, #e8e9ef);
281
+ border-radius: var(--radius-lg, 12px);
282
+ }
283
+
284
+ &__search-result {
285
+ display: flex;
286
+ align-items: center;
287
+ gap: 12px;
288
+ padding: 10px 12px;
289
+ background: none;
290
+ border: none;
291
+ border-radius: var(--radius-md, 4px);
292
+ cursor: pointer;
293
+ text-align: left;
294
+ transition: background 0.15s ease;
295
+
296
+ &:hover {
297
+ background: var(--surface-tertiary, #f0f0f5);
298
+ }
299
+ }
300
+
301
+ &__search-result-name {
302
+ display: block;
303
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
304
+ font-size: 14px;
305
+ font-weight: 500;
306
+ color: var(--label-primary, #121e52);
307
+ margin-bottom: 2px;
308
+ }
309
+
310
+ &__field-error {
311
+ font-size: 12px;
312
+ color: var(--label-status-error, #ef4444);
313
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
314
+ }
315
+
316
+ // ── Selected assignments ─────────────────────────────────────────────────
317
+ &__selected {
318
+ display: flex;
319
+ flex-direction: column;
320
+ gap: 12px;
321
+ width: 100%;
322
+ padding-top: 8px;
323
+ border-top: 1px solid var(--border-primary, #e8e9ef);
324
+ }
325
+
326
+ &__selected-label {
327
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
328
+ font-size: 14px;
329
+ font-weight: 600;
330
+ color: var(--label-primary, #121e52);
331
+ }
332
+
333
+ &__selected-item {
334
+ display: flex;
335
+ align-items: center;
336
+ gap: 12px;
337
+ padding: 14px;
338
+ background: var(--surface-secondary, #f8f8fa);
339
+ border: 1px solid var(--border-primary, #e8e9ef);
340
+ border-radius: var(--radius-md, 4px);
341
+ }
342
+
343
+ &__selected-item-info {
344
+ display: flex;
345
+ flex-direction: column;
346
+ gap: 4px;
347
+ flex: 1;
348
+ min-width: 0;
349
+ }
350
+
351
+ &__selected-item-name {
352
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
353
+ font-size: 14px;
354
+ font-weight: 500;
355
+ color: var(--label-primary, #121e52);
356
+ white-space: nowrap;
357
+ overflow: hidden;
358
+ text-overflow: ellipsis;
359
+ }
360
+
361
+ &__remove-btn {
362
+ background: none;
363
+ border: none;
364
+ cursor: pointer;
365
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
366
+ font-size: 13px;
367
+ font-weight: 500;
368
+ color: var(--label-danger, #ef4444);
369
+ padding: 4px 8px;
370
+ border-radius: var(--radius-sm, 2px);
371
+ flex-shrink: 0;
372
+ transition: opacity 0.15s ease;
373
+
374
+ &:hover {
375
+ text-decoration: underline;
376
+ }
377
+ }
378
+
379
+ // ── Nested providers ─────────────────────────────────────────────────────
380
+ &__nested {
381
+ display: flex;
382
+ flex-direction: column;
383
+ gap: 10px;
384
+ padding: 12px 0 12px 20px;
385
+ }
386
+
387
+ &__nested-controls {
388
+ display: flex;
389
+ align-items: center;
390
+ justify-content: space-between;
391
+ }
392
+
393
+ &__nested-toggle {
394
+ background: none;
395
+ border: none;
396
+ cursor: pointer;
397
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
398
+ font-size: 13px;
399
+ font-weight: 500;
400
+ color: var(--label-primary, #121e52);
401
+ padding: 0;
402
+
403
+ &:hover {
404
+ color: var(--label-secondary, #626a90);
405
+ }
406
+ }
407
+
408
+ &__nested-count {
409
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
410
+ font-size: 13px;
411
+ font-weight: 500;
412
+ color: var(--label-secondary, #626a90);
413
+ }
414
+
415
+ &__nested-grid {
416
+ display: grid;
417
+ grid-template-columns: 1fr 1fr;
418
+ gap: 8px;
419
+
420
+ @media (max-width: 600px) {
421
+ grid-template-columns: 1fr;
422
+ }
423
+ }
424
+
425
+ &__nested-item {
426
+ display: flex;
427
+ align-items: center;
428
+ gap: 10px;
429
+ padding: 12px;
430
+ border: 1px solid var(--border-primary, #e8e9ef);
431
+ border-radius: var(--radius-md, 4px);
432
+ background: var(--surface-primary, #ffffff);
433
+ cursor: pointer;
434
+ transition: border-color 0.15s ease, background 0.15s ease;
435
+
436
+ &:hover {
437
+ border-color: var(--border-secondary, #d0d2e0);
438
+ }
439
+
440
+ &--selected {
441
+ border-color: var(--border-selected, #6200ee);
442
+ background: var(--surface-action-soft, #f3e8ff);
443
+ }
444
+ }
445
+
446
+ &__nested-item-info {
447
+ display: flex;
448
+ flex-direction: column;
449
+ gap: 3px;
450
+ flex: 1;
451
+ min-width: 0;
452
+ }
453
+
454
+ &__nested-item-name {
455
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
456
+ font-size: 13px;
457
+ font-weight: 500;
458
+ color: var(--label-primary, #121e52);
459
+ white-space: nowrap;
460
+ overflow: hidden;
461
+ text-overflow: ellipsis;
462
+ }
463
+
464
+ // ── Set-roles assignments ────────────────────────────────────────────────
465
+ &__role-assignments {
466
+ display: flex;
467
+ flex-direction: column;
468
+ gap: 8px;
469
+ width: 100%;
470
+ }
471
+
472
+ &__role-group {
473
+ display: flex;
474
+ flex-direction: column;
475
+ gap: 8px;
476
+ }
477
+
478
+ &__role-assignment-card {
479
+ display: flex;
480
+ align-items: center;
481
+ gap: 12px;
482
+ padding: 14px;
483
+ background: var(--surface-primary, #ffffff);
484
+ border: 1px solid var(--border-primary, #e8e9ef);
485
+ border-radius: var(--radius-md, 4px);
486
+
487
+ &--company {
488
+ background: var(--surface-secondary, #f8f8fa);
489
+ }
490
+ }
491
+
492
+ &__role-assignment-info {
493
+ display: flex;
494
+ flex-direction: column;
495
+ gap: 4px;
496
+ flex: 1;
497
+ min-width: 0;
498
+ }
499
+
500
+ &__role-assignment-name {
501
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
502
+ font-size: 14px;
503
+ font-weight: 500;
504
+ color: var(--label-primary, #121e52);
505
+ white-space: nowrap;
506
+ overflow: hidden;
507
+ text-overflow: ellipsis;
508
+ }
509
+
510
+ &__role-assignment-select {
511
+ flex-shrink: 0;
512
+ width: 150px;
513
+ }
514
+
515
+ // ── Company-team: access toggle ──────────────────────────────────────────
516
+ &__company-access-toggle {
517
+ display: flex;
518
+ align-items: center;
519
+ justify-content: space-between;
520
+ gap: 12px;
521
+ padding: 14px 16px;
522
+ background: var(--surface-secondary, #f8f8fa);
523
+ border: 1px solid var(--border-primary, #e8e9ef);
524
+ border-radius: var(--radius-md, 4px);
525
+ }
526
+
527
+ &__company-access-entity {
528
+ display: flex;
529
+ align-items: center;
530
+ gap: 12px;
531
+ flex: 1;
532
+ min-width: 0;
533
+ }
534
+
535
+ &__company-access-info {
536
+ display: flex;
537
+ flex-direction: column;
538
+ gap: 4px;
539
+ flex: 1;
540
+ min-width: 0;
541
+ }
542
+
543
+ &__company-access-name {
544
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
545
+ font-size: 14px;
546
+ font-weight: 600;
547
+ color: var(--label-primary, #121e52);
548
+ overflow: hidden;
549
+ text-overflow: ellipsis;
550
+ white-space: nowrap;
551
+ }
552
+
553
+ &__toggle-label {
554
+ display: flex;
555
+ align-items: center;
556
+ gap: 8px;
557
+ cursor: pointer;
558
+ flex-shrink: 0;
559
+ user-select: none;
560
+ }
561
+
562
+ &__toggle-input {
563
+ position: absolute;
564
+ opacity: 0;
565
+ width: 0;
566
+ height: 0;
567
+ pointer-events: none;
568
+ }
569
+
570
+ &__toggle-track {
571
+ position: relative;
572
+ display: inline-block;
573
+ width: 36px;
574
+ height: 20px;
575
+ background: var(--border-primary, #e8e9ef);
576
+ border-radius: 10px;
577
+ transition: background 0.2s ease;
578
+ flex-shrink: 0;
579
+
580
+ &::after {
581
+ content: '';
582
+ position: absolute;
583
+ top: 2px;
584
+ left: 2px;
585
+ width: 16px;
586
+ height: 16px;
587
+ border-radius: 50%;
588
+ background: #fff;
589
+ transition: transform 0.2s ease;
590
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
591
+ }
592
+ }
593
+
594
+ &__toggle-input:checked + .create-user-page__toggle-track {
595
+ background: var(--border-selected, #6200ee);
596
+ &::after { transform: translateX(16px); }
597
+ }
598
+
599
+ &__toggle-text {
600
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
601
+ font-size: 14px;
602
+ font-weight: 500;
603
+ color: var(--label-primary, #121e52);
604
+ }
605
+
606
+ // ── Company-team: venue section ──────────────────────────────────────────
607
+ &__venue-section {
608
+ display: flex;
609
+ flex-direction: column;
610
+ gap: 10px;
611
+ width: 100%;
612
+ }
613
+
614
+ &__nested-controls-right {
615
+ display: flex;
616
+ align-items: center;
617
+ gap: 12px;
618
+ }
619
+ }
620
+
621
+ // ── Entity avatar ────────────────────────────────────────────────────────────
622
+ .cu-entity-avatar {
623
+ width: 40px;
624
+ height: 40px;
625
+ border-radius: 50%;
626
+ overflow: hidden;
627
+ flex-shrink: 0;
628
+ display: flex;
629
+ align-items: center;
630
+ justify-content: center;
631
+ background: var(--fill-secondary-soft, rgba(98, 106, 144, 0.1));
632
+ border: 1px solid var(--border-primary, #e8e9ef);
633
+
634
+ &__img {
635
+ width: 100%;
636
+ height: 100%;
637
+ object-fit: cover;
638
+ }
639
+
640
+ &__initials {
641
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
642
+ font-size: 14px;
643
+ font-weight: 700;
644
+ color: var(--label-secondary, #626a90);
645
+ text-transform: uppercase;
646
+ }
647
+ }
648
+
649
+ // ── Entity ID badge ──────────────────────────────────────────────────────────
650
+ .cu-entity-id-badge {
651
+ display: inline-flex;
652
+ align-items: center;
653
+ padding: 2px 8px;
654
+ background: var(--surface-tertiary, #f0f0f5);
655
+ border-radius: var(--radius-sm, 4px);
656
+ font-family: var(--font-family-mono, 'Geist Mono', monospace);
657
+ font-size: 10px;
658
+ font-weight: 600;
659
+ line-height: 14px;
660
+ color: var(--label-secondary, #626a90);
661
+ white-space: nowrap;
662
+ }
663
+
664
+ // ── User card ────────────────────────────────────────────────────────────────
665
+ .cu-user-card {
666
+ display: flex;
667
+ align-items: center;
668
+ gap: 14px;
669
+ padding: 16px 20px;
670
+ background: var(--surface-secondary, #f8f8fa);
671
+ border: 1px solid var(--border-primary, #e8e9ef);
672
+ border-radius: var(--radius-md, 4px);
673
+
674
+ &__info {
675
+ display: flex;
676
+ flex-direction: column;
677
+ gap: 2px;
678
+ flex: 1;
679
+ }
680
+
681
+ &__name {
682
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
683
+ font-size: 14px;
684
+ font-weight: 600;
685
+ color: var(--label-primary, #121e52);
686
+ }
687
+
688
+ &__email {
689
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
690
+ font-size: 12px;
691
+ color: var(--label-secondary, #626a90);
692
+ }
693
+
694
+ &__number {
695
+ display: inline-flex;
696
+ align-items: center;
697
+ padding: 2px 8px;
698
+ background: var(--surface-tertiary, #f0f0f5);
699
+ border-radius: var(--radius-sm, 4px);
700
+ font-family: var(--font-family-mono, 'Geist Mono', monospace);
701
+ font-size: 10px;
702
+ font-weight: 600;
703
+ color: var(--label-secondary, #626a90);
704
+ white-space: nowrap;
705
+ }
706
+ }
707
+
708
+ // ── Existing assignments ─────────────────────────────────────────────────────
709
+ .cu-assignments {
710
+ display: flex;
711
+ flex-direction: column;
712
+ gap: 10px;
713
+
714
+ &__label {
715
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
716
+ font-size: 12px;
717
+ font-weight: 600;
718
+ color: var(--label-secondary, #626a90);
719
+ text-transform: uppercase;
720
+ letter-spacing: 0.04em;
721
+ }
722
+
723
+ &__list {
724
+ display: flex;
725
+ flex-direction: column;
726
+ gap: 8px;
727
+ }
728
+
729
+ &__item {
730
+ display: flex;
731
+ align-items: center;
732
+ gap: 12px;
733
+ padding: 12px 14px;
734
+ background: var(--surface-secondary, #f8f8fa);
735
+ border: 1px solid var(--border-primary, #e8e9ef);
736
+ border-radius: var(--radius-md, 4px);
737
+ }
738
+
739
+ &__item-info {
740
+ display: flex;
741
+ flex-direction: column;
742
+ gap: 3px;
743
+ flex: 1;
744
+ }
745
+
746
+ &__item-name {
747
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
748
+ font-size: 14px;
749
+ font-weight: 500;
750
+ color: var(--label-primary, #121e52);
751
+ }
752
+
753
+ &__item-role {
754
+ font-family: var(--font-family-sans, 'Geist', sans-serif);
755
+ font-size: 13px;
756
+ font-weight: 500;
757
+ color: var(--label-secondary, #626a90);
758
+ white-space: nowrap;
759
+ }
760
+ }