nucleus-core-ts 0.9.916 → 0.9.918

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 (128) hide show
  1. package/dist/.build-ok +1 -1
  2. package/dist/fe/components/AuthorizationPage/components/AuthorizationPage.d.ts +1 -1
  3. package/dist/fe/components/AuthorizationPage/components/AuthorizationPage.js +45 -53
  4. package/dist/fe/components/AuthorizationPage/components/ClaimList.d.ts +1 -1
  5. package/dist/fe/components/AuthorizationPage/components/ClaimList.js +11 -11
  6. package/dist/fe/components/AuthorizationPage/components/RoleClaimEditor.d.ts +1 -1
  7. package/dist/fe/components/AuthorizationPage/components/RoleClaimEditor.js +26 -40
  8. package/dist/fe/components/AuthorizationPage/components/RoleList.d.ts +1 -1
  9. package/dist/fe/components/AuthorizationPage/components/RoleList.js +15 -9
  10. package/dist/fe/components/AuthorizationPage/index.d.ts +1 -0
  11. package/dist/fe/components/AuthorizationPage/index.js +1 -0
  12. package/dist/fe/components/AuthorizationPage/labels.d.ts +109 -0
  13. package/dist/fe/components/AuthorizationPage/labels.js +63 -0
  14. package/dist/fe/components/AuthorizationPage/types/index.d.ts +5 -0
  15. package/dist/fe/components/DataTable/DataTable.d.ts +1 -1
  16. package/dist/fe/components/DataTable/DataTable.js +20 -11
  17. package/dist/fe/components/DataTable/components/EditableCell.d.ts +3 -1
  18. package/dist/fe/components/DataTable/components/EditableCell.js +9 -4
  19. package/dist/fe/components/DataTable/components/EmptyState.d.ts +3 -1
  20. package/dist/fe/components/DataTable/components/EmptyState.js +7 -2
  21. package/dist/fe/components/DataTable/components/HeaderCell.d.ts +3 -1
  22. package/dist/fe/components/DataTable/components/HeaderCell.js +3 -2
  23. package/dist/fe/components/DataTable/components/InfiniteScrollTrigger.d.ts +3 -1
  24. package/dist/fe/components/DataTable/components/InfiniteScrollTrigger.js +7 -2
  25. package/dist/fe/components/DataTable/components/LoadingSpinner.d.ts +3 -1
  26. package/dist/fe/components/DataTable/components/LoadingSpinner.js +10 -3
  27. package/dist/fe/components/DataTable/components/ResizeHandle.d.ts +3 -1
  28. package/dist/fe/components/DataTable/components/ResizeHandle.js +7 -2
  29. package/dist/fe/components/DataTable/components/SelectionCell.d.ts +3 -1
  30. package/dist/fe/components/DataTable/components/SelectionCell.js +8 -1
  31. package/dist/fe/components/DataTable/components/TableHeader.d.ts +3 -1
  32. package/dist/fe/components/DataTable/components/TableHeader.js +5 -3
  33. package/dist/fe/components/DataTable/components/TableRow.d.ts +3 -1
  34. package/dist/fe/components/DataTable/components/TableRow.js +5 -3
  35. package/dist/fe/components/DataTable/index.d.ts +1 -0
  36. package/dist/fe/components/DataTable/index.js +1 -0
  37. package/dist/fe/components/DataTable/labels.d.ts +82 -0
  38. package/dist/fe/components/DataTable/labels.js +31 -0
  39. package/dist/fe/components/DataTable/types/index.d.ts +7 -0
  40. package/dist/fe/components/DevicesPage/components/DeviceCard.d.ts +1 -1
  41. package/dist/fe/components/DevicesPage/components/DeviceCard.js +68 -42
  42. package/dist/fe/components/DevicesPage/components/DevicesHeader.d.ts +1 -1
  43. package/dist/fe/components/DevicesPage/components/DevicesHeader.js +9 -4
  44. package/dist/fe/components/DevicesPage/components/DevicesPage.d.ts +1 -1
  45. package/dist/fe/components/DevicesPage/components/DevicesPage.js +58 -41
  46. package/dist/fe/components/DevicesPage/index.d.ts +1 -0
  47. package/dist/fe/components/DevicesPage/index.js +1 -0
  48. package/dist/fe/components/DevicesPage/labels.d.ts +135 -0
  49. package/dist/fe/components/DevicesPage/labels.js +61 -0
  50. package/dist/fe/components/DevicesPage/types/index.d.ts +12 -0
  51. package/dist/fe/components/FormBuilder/components/FormBuilder.d.ts +1 -1
  52. package/dist/fe/components/FormBuilder/components/FormBuilder.js +13 -7
  53. package/dist/fe/components/FormBuilder/components/FormField.d.ts +1 -1
  54. package/dist/fe/components/FormBuilder/components/FormField.js +19 -10
  55. package/dist/fe/components/FormBuilder/hooks/useFormBuilder.d.ts +1 -1
  56. package/dist/fe/components/FormBuilder/hooks/useFormBuilder.js +2 -2
  57. package/dist/fe/components/FormBuilder/index.d.ts +1 -0
  58. package/dist/fe/components/FormBuilder/index.js +1 -0
  59. package/dist/fe/components/FormBuilder/labels.d.ts +99 -0
  60. package/dist/fe/components/FormBuilder/labels.js +31 -0
  61. package/dist/fe/components/FormBuilder/types/index.d.ts +12 -0
  62. package/dist/fe/components/FormBuilder/utils/fieldMapping.d.ts +11 -1
  63. package/dist/fe/components/FormBuilder/utils/fieldMapping.js +11 -2
  64. package/dist/fe/components/FormBuilder/utils/validation.d.ts +3 -2
  65. package/dist/fe/components/FormBuilder/utils/validation.js +22 -20
  66. package/dist/fe/components/NotificationCenter/components/NotificationBell.d.ts +1 -1
  67. package/dist/fe/components/NotificationCenter/components/NotificationBell.js +9 -4
  68. package/dist/fe/components/NotificationCenter/components/NotificationCenter.d.ts +1 -1
  69. package/dist/fe/components/NotificationCenter/components/NotificationCenter.js +25 -17
  70. package/dist/fe/components/NotificationCenter/index.d.ts +1 -0
  71. package/dist/fe/components/NotificationCenter/index.js +1 -0
  72. package/dist/fe/components/NotificationCenter/labels.d.ts +86 -0
  73. package/dist/fe/components/NotificationCenter/labels.js +41 -0
  74. package/dist/fe/components/NotificationCenter/types/index.d.ts +5 -0
  75. package/dist/fe/components/ProfilePage/components/AddressCard.d.ts +1 -1
  76. package/dist/fe/components/ProfilePage/components/AddressCard.js +16 -11
  77. package/dist/fe/components/ProfilePage/components/PhoneCard.d.ts +1 -1
  78. package/dist/fe/components/ProfilePage/components/PhoneCard.js +17 -12
  79. package/dist/fe/components/ProfilePage/components/ProfileHeader.d.ts +1 -1
  80. package/dist/fe/components/ProfilePage/components/ProfileHeader.js +19 -20
  81. package/dist/fe/components/ProfilePage/components/ProfilePage.d.ts +1 -1
  82. package/dist/fe/components/ProfilePage/components/ProfilePage.js +89 -81
  83. package/dist/fe/components/ProfilePage/index.d.ts +1 -0
  84. package/dist/fe/components/ProfilePage/index.js +1 -0
  85. package/dist/fe/components/ProfilePage/labels.d.ts +158 -0
  86. package/dist/fe/components/ProfilePage/labels.js +116 -0
  87. package/dist/fe/components/ProfilePage/types/index.d.ts +9 -0
  88. package/dist/fe/components/UsersPage/components/InviteUserModal.d.ts +3 -1
  89. package/dist/fe/components/UsersPage/components/InviteUserModal.js +16 -11
  90. package/dist/fe/components/UsersPage/components/Pagination.d.ts +3 -1
  91. package/dist/fe/components/UsersPage/components/Pagination.js +13 -22
  92. package/dist/fe/components/UsersPage/components/RoleAssignmentModal.d.ts +3 -1
  93. package/dist/fe/components/UsersPage/components/RoleAssignmentModal.js +13 -13
  94. package/dist/fe/components/UsersPage/components/StatsCards.d.ts +3 -1
  95. package/dist/fe/components/UsersPage/components/StatsCards.js +17 -6
  96. package/dist/fe/components/UsersPage/components/UserDetailDrawer.d.ts +3 -1
  97. package/dist/fe/components/UsersPage/components/UserDetailDrawer.js +45 -55
  98. package/dist/fe/components/UsersPage/components/UserFilters.d.ts +3 -1
  99. package/dist/fe/components/UsersPage/components/UserFilters.js +18 -19
  100. package/dist/fe/components/UsersPage/components/UserListItem.d.ts +3 -1
  101. package/dist/fe/components/UsersPage/components/UserListItem.js +23 -18
  102. package/dist/fe/components/UsersPage/components/UsersPage.d.ts +1 -1
  103. package/dist/fe/components/UsersPage/components/UsersPage.js +17 -6
  104. package/dist/fe/components/UsersPage/index.d.ts +1 -0
  105. package/dist/fe/components/UsersPage/index.js +1 -0
  106. package/dist/fe/components/UsersPage/labels.d.ts +159 -0
  107. package/dist/fe/components/UsersPage/labels.js +99 -0
  108. package/dist/fe/components/UsersPage/types/index.d.ts +6 -0
  109. package/dist/fe/components/VerificationFlowPage/components/FlowNode.js +34 -26
  110. package/dist/fe/components/VerificationFlowPage/components/NodePropertiesPanel.d.ts +6 -1
  111. package/dist/fe/components/VerificationFlowPage/components/NodePropertiesPanel.js +43 -33
  112. package/dist/fe/components/VerificationFlowPage/components/PendingTab.d.ts +4 -1
  113. package/dist/fe/components/VerificationFlowPage/components/PendingTab.js +17 -20
  114. package/dist/fe/components/VerificationFlowPage/components/PropertiesPanel.d.ts +4 -1
  115. package/dist/fe/components/VerificationFlowPage/components/PropertiesPanel.js +83 -97
  116. package/dist/fe/components/VerificationFlowPage/components/VerificationEntityList.d.ts +4 -1
  117. package/dist/fe/components/VerificationFlowPage/components/VerificationEntityList.js +43 -54
  118. package/dist/fe/components/VerificationFlowPage/components/VerificationFlowPage.d.ts +1 -1
  119. package/dist/fe/components/VerificationFlowPage/components/VerificationFlowPage.js +78 -69
  120. package/dist/fe/components/VerificationFlowPage/components/VerificationStatusCard.d.ts +4 -1
  121. package/dist/fe/components/VerificationFlowPage/components/VerificationStatusCard.js +57 -47
  122. package/dist/fe/components/VerificationFlowPage/index.d.ts +2 -1
  123. package/dist/fe/components/VerificationFlowPage/index.js +1 -0
  124. package/dist/fe/components/VerificationFlowPage/labels.d.ts +207 -0
  125. package/dist/fe/components/VerificationFlowPage/labels.js +212 -0
  126. package/dist/fe/components/VerificationFlowPage/types/index.d.ts +6 -0
  127. package/dist/index.js +1 -1
  128. package/package.json +1 -1
package/dist/.build-ok CHANGED
@@ -1 +1 @@
1
- 0.9.916
1
+ 0.9.918
@@ -1,2 +1,2 @@
1
1
  import type { AuthorizationPageProps } from '../types';
2
- export declare function AuthorizationPage({ title, subtitle, className, defaultEntityFilter, defaultMethodFilter, defaultShowAssignedOnly, getRolesAction, addRoleAction, updateRoleAction, deleteRoleAction, getClaimsAction, getRoleClaimsAction, addRoleClaimAction, updateRoleClaimAction, deleteRoleClaimAction, onRoleCreated, onRoleDeleted, onClaimToggled, }: AuthorizationPageProps): import("react/jsx-runtime").JSX.Element;
2
+ export declare function AuthorizationPage({ title, subtitle, className, labels, defaultEntityFilter, defaultMethodFilter, defaultShowAssignedOnly, getRolesAction, addRoleAction, updateRoleAction, deleteRoleAction, getClaimsAction, getRoleClaimsAction, addRoleClaimAction, updateRoleClaimAction, deleteRoleClaimAction, onRoleCreated, onRoleDeleted, onClaimToggled, }: AuthorizationPageProps): import("react/jsx-runtime").JSX.Element;
@@ -4,6 +4,7 @@ import { useGSAP } from '@gsap/react';
4
4
  import gsap from 'gsap';
5
5
  import { useEffect, useEffectEvent, useRef, useState } from 'react';
6
6
  import { cn } from '../../../utils/cn';
7
+ import { DEFAULT_AUTHORIZATION_LABELS } from '../labels';
7
8
  import { useAuthorizationStore } from '../store';
8
9
  gsap.registerPlugin(useGSAP);
9
10
  const METHOD_COLORS = {
@@ -13,7 +14,12 @@ const METHOD_COLORS = {
13
14
  PATCH: 'bg-orange-500/10 text-orange-600 dark:text-orange-400 border-orange-500/20',
14
15
  DELETE: 'bg-red-500/10 text-red-600 dark:text-red-400 border-red-500/20'
15
16
  };
16
- export function AuthorizationPage({ title = 'Authorization Management', subtitle, className, defaultEntityFilter = 'all', defaultMethodFilter = 'all', defaultShowAssignedOnly = false, getRolesAction, addRoleAction, updateRoleAction, deleteRoleAction, getClaimsAction, getRoleClaimsAction, addRoleClaimAction, updateRoleClaimAction, deleteRoleClaimAction, onRoleCreated, onRoleDeleted, onClaimToggled }) {
17
+ export function AuthorizationPage({ title, subtitle, className, labels, defaultEntityFilter = 'all', defaultMethodFilter = 'all', defaultShowAssignedOnly = false, getRolesAction, addRoleAction, updateRoleAction, deleteRoleAction, getClaimsAction, getRoleClaimsAction, addRoleClaimAction, updateRoleClaimAction, deleteRoleClaimAction, onRoleCreated, onRoleDeleted, onClaimToggled }) {
18
+ const say = {
19
+ ...DEFAULT_AUTHORIZATION_LABELS,
20
+ ...labels
21
+ };
22
+ const heading = title ?? say.title;
17
23
  const store = useAuthorizationStore();
18
24
  const containerRef = useRef(null);
19
25
  const contentRef = useRef(null);
@@ -291,17 +297,17 @@ export function AuthorizationPage({ title = 'Authorization Management', subtitle
291
297
  const entityOptions = [
292
298
  {
293
299
  value: 'all',
294
- label: 'All Entities'
300
+ label: say.allEntities
295
301
  },
296
- ...Array.from(new Set(store.claims.map((claim)=>getClaimEntity(claim.action)))).sort((a, b)=>a.localeCompare(b)).map((entity)=>({
302
+ ...Array.from(new Set(store.claims.map((claim)=>getClaimEntity(claim.action)))).sort((a, b)=>a.localeCompare(b, say.locale)).map((entity)=>({
297
303
  value: entity,
298
- label: entity
304
+ label: say.entityName(entity)
299
305
  }))
300
306
  ];
301
307
  const methodOptions = [
302
308
  {
303
309
  value: 'all',
304
- label: 'All Methods'
310
+ label: say.allMethods
305
311
  },
306
312
  {
307
313
  value: 'get',
@@ -330,7 +336,7 @@ export function AuthorizationPage({ title = 'Authorization Management', subtitle
330
336
  acc[entity].push(claim);
331
337
  return acc;
332
338
  }, {});
333
- const sortedEntities = Object.keys(groupedFilteredClaims).sort((a, b)=>a.localeCompare(b));
339
+ const sortedEntities = Object.keys(groupedFilteredClaims).sort((a, b)=>a.localeCompare(b, say.locale));
334
340
  const toggleEntity = (entity)=>{
335
341
  setExpandedEntities((prev)=>{
336
342
  const next = new Set(prev);
@@ -386,7 +392,7 @@ export function AuthorizationPage({ title = 'Authorization Management', subtitle
386
392
  children: [
387
393
  /*#__PURE__*/ _jsx("h1", {
388
394
  className: "text-2xl sm:text-3xl font-bold text-zinc-900 dark:text-zinc-100",
389
- children: title
395
+ children: heading
390
396
  }),
391
397
  subtitle && /*#__PURE__*/ _jsx("p", {
392
398
  className: "mt-1 text-sm text-zinc-500 dark:text-zinc-400",
@@ -405,7 +411,7 @@ export function AuthorizationPage({ title = 'Authorization Management', subtitle
405
411
  children: [
406
412
  /*#__PURE__*/ _jsx("h2", {
407
413
  className: "text-sm font-semibold text-zinc-900 dark:text-zinc-100 mb-3",
408
- children: "Roles"
414
+ children: say.rolesHeading
409
415
  }),
410
416
  /*#__PURE__*/ _jsxs("div", {
411
417
  className: "space-y-2 mb-4",
@@ -414,7 +420,7 @@ export function AuthorizationPage({ title = 'Authorization Management', subtitle
414
420
  type: "text",
415
421
  value: store.newRoleName,
416
422
  onChange: (e)=>store.setNewRoleName(e.target.value),
417
- placeholder: "New role name",
423
+ placeholder: say.newRoleNamePlaceholder,
418
424
  className: "w-full px-3 py-2 text-sm border border-zinc-200 dark:border-zinc-700 rounded-lg bg-white dark:bg-zinc-800 text-zinc-900 dark:text-zinc-100 placeholder:text-zinc-400"
419
425
  }),
420
426
  /*#__PURE__*/ _jsx("button", {
@@ -422,7 +428,7 @@ export function AuthorizationPage({ title = 'Authorization Management', subtitle
422
428
  onClick: handleCreateRole,
423
429
  disabled: !store.newRoleName.trim() || addRoleAction.state.isPending,
424
430
  className: "w-full px-3 py-2 text-sm font-medium text-white bg-emerald-600 hover:bg-emerald-700 disabled:opacity-50 disabled:cursor-not-allowed rounded-lg transition-colors",
425
- children: addRoleAction.state.isPending ? 'Creating...' : 'Create Role'
431
+ children: addRoleAction.state.isPending ? say.creating : say.createRole
426
432
  })
427
433
  ]
428
434
  }),
@@ -448,7 +454,7 @@ export function AuthorizationPage({ title = 'Authorization Management', subtitle
448
454
  type: "button",
449
455
  onClick: ()=>handleStartEditRole(role),
450
456
  className: "p-1 text-zinc-500 hover:text-emerald-600 transition-colors",
451
- title: "Edit description",
457
+ title: say.editDescription,
452
458
  children: /*#__PURE__*/ _jsx("svg", {
453
459
  className: "w-4 h-4",
454
460
  fill: "none",
@@ -467,7 +473,7 @@ export function AuthorizationPage({ title = 'Authorization Management', subtitle
467
473
  type: "button",
468
474
  onClick: ()=>handleDeleteRole(role.id),
469
475
  className: "p-1 text-red-500 hover:text-red-700 transition-colors",
470
- title: "Delete role",
476
+ title: say.deleteRole,
471
477
  children: /*#__PURE__*/ _jsx("svg", {
472
478
  className: "w-4 h-4",
473
479
  fill: "none",
@@ -492,7 +498,7 @@ export function AuthorizationPage({ title = 'Authorization Management', subtitle
492
498
  /*#__PURE__*/ _jsx("textarea", {
493
499
  value: store.editRoleDescription,
494
500
  onChange: (e)=>store.setEditRoleDescription(e.target.value),
495
- placeholder: "Enter description...",
501
+ placeholder: say.roleDescriptionPlaceholder,
496
502
  rows: 2,
497
503
  className: "w-full px-2 py-1.5 text-xs border border-zinc-200 dark:border-zinc-700 rounded bg-white dark:bg-zinc-800 text-zinc-900 dark:text-zinc-100 placeholder:text-zinc-400 resize-none"
498
504
  }),
@@ -503,13 +509,13 @@ export function AuthorizationPage({ title = 'Authorization Management', subtitle
503
509
  type: "button",
504
510
  onClick: handleSaveRoleDescription,
505
511
  className: "flex-1 px-2 py-1 text-xs font-medium text-white bg-emerald-600 hover:bg-emerald-700 rounded transition-colors",
506
- children: "Save"
512
+ children: say.save
507
513
  }),
508
514
  /*#__PURE__*/ _jsx("button", {
509
515
  type: "button",
510
516
  onClick: handleCancelEditRole,
511
517
  className: "flex-1 px-2 py-1 text-xs font-medium text-zinc-600 dark:text-zinc-400 bg-zinc-100 dark:bg-zinc-800 hover:bg-zinc-200 dark:hover:bg-zinc-700 rounded transition-colors",
512
- children: "Cancel"
518
+ children: say.cancel
513
519
  })
514
520
  ]
515
521
  })
@@ -528,7 +534,7 @@ export function AuthorizationPage({ title = 'Authorization Management', subtitle
528
534
  children: [
529
535
  /*#__PURE__*/ _jsx("h2", {
530
536
  className: "text-sm font-semibold text-zinc-900 dark:text-zinc-100 mb-3",
531
- children: "Filters"
537
+ children: say.filtersHeading
532
538
  }),
533
539
  /*#__PURE__*/ _jsxs("div", {
534
540
  className: "space-y-3",
@@ -538,7 +544,7 @@ export function AuthorizationPage({ title = 'Authorization Management', subtitle
538
544
  /*#__PURE__*/ _jsx("label", {
539
545
  htmlFor: "claim-search",
540
546
  className: "block text-xs font-medium text-zinc-500 dark:text-zinc-400 mb-1",
541
- children: "Search"
547
+ children: say.searchLabel
542
548
  }),
543
549
  /*#__PURE__*/ _jsx("input", {
544
550
  id: "claim-search",
@@ -548,7 +554,7 @@ export function AuthorizationPage({ title = 'Authorization Management', subtitle
548
554
  setLocalSearch(e.target.value);
549
555
  handleSearchChange(e.target.value);
550
556
  },
551
- placeholder: "Search claims...",
557
+ placeholder: say.searchPlaceholder,
552
558
  className: "w-full px-3 py-2 text-sm border border-zinc-200 dark:border-zinc-700 rounded-lg bg-white dark:bg-zinc-800 text-zinc-900 dark:text-zinc-100 placeholder:text-zinc-400"
553
559
  })
554
560
  ]
@@ -558,7 +564,7 @@ export function AuthorizationPage({ title = 'Authorization Management', subtitle
558
564
  /*#__PURE__*/ _jsx("label", {
559
565
  htmlFor: "entity-filter",
560
566
  className: "block text-xs font-medium text-zinc-500 dark:text-zinc-400 mb-1",
561
- children: "Entity"
567
+ children: say.entityLabel
562
568
  }),
563
569
  /*#__PURE__*/ _jsx("select", {
564
570
  id: "entity-filter",
@@ -577,7 +583,7 @@ export function AuthorizationPage({ title = 'Authorization Management', subtitle
577
583
  /*#__PURE__*/ _jsx("label", {
578
584
  htmlFor: "method-filter",
579
585
  className: "block text-xs font-medium text-zinc-500 dark:text-zinc-400 mb-1",
580
- children: "Method"
586
+ children: say.methodLabel
581
587
  }),
582
588
  /*#__PURE__*/ _jsx("select", {
583
589
  id: "method-filter",
@@ -603,7 +609,7 @@ export function AuthorizationPage({ title = 'Authorization Management', subtitle
603
609
  }),
604
610
  /*#__PURE__*/ _jsx("span", {
605
611
  className: cn('text-sm', !store.selectedRole ? 'text-zinc-400' : 'text-zinc-700 dark:text-zinc-300'),
606
- children: "Show assigned only"
612
+ children: say.showAssignedOnly
607
613
  })
608
614
  ]
609
615
  })
@@ -624,7 +630,7 @@ export function AuthorizationPage({ title = 'Authorization Management', subtitle
624
630
  }),
625
631
  /*#__PURE__*/ _jsx("div", {
626
632
  className: "text-xs text-emerald-700 dark:text-emerald-300",
627
- children: "claims assigned"
633
+ children: say.assignedClaimsCaption
628
634
  })
629
635
  ]
630
636
  })
@@ -640,19 +646,11 @@ export function AuthorizationPage({ title = 'Authorization Management', subtitle
640
646
  children: [
641
647
  /*#__PURE__*/ _jsx("h2", {
642
648
  className: "text-lg font-semibold text-zinc-900 dark:text-zinc-100",
643
- children: "Claims"
649
+ children: say.claimsHeading
644
650
  }),
645
- /*#__PURE__*/ _jsxs("p", {
651
+ /*#__PURE__*/ _jsx("p", {
646
652
  className: "text-sm text-zinc-500 dark:text-zinc-400",
647
- children: [
648
- filteredClaims.length,
649
- " of ",
650
- store.claims.length,
651
- " claims • ",
652
- sortedEntities.length,
653
- ' ',
654
- "entities"
655
- ]
653
+ children: say.claimsSummary(filteredClaims.length, store.claims.length, sortedEntities.length)
656
654
  })
657
655
  ]
658
656
  }),
@@ -663,13 +661,13 @@ export function AuthorizationPage({ title = 'Authorization Management', subtitle
663
661
  type: "button",
664
662
  onClick: expandAll,
665
663
  className: "px-3 py-1.5 text-xs font-medium text-zinc-600 dark:text-zinc-400 hover:text-zinc-900 dark:hover:text-zinc-100 border border-zinc-200 dark:border-zinc-700 rounded-lg transition-colors",
666
- children: "Expand All"
664
+ children: say.expandAll
667
665
  }),
668
666
  /*#__PURE__*/ _jsx("button", {
669
667
  type: "button",
670
668
  onClick: collapseAll,
671
669
  className: "px-3 py-1.5 text-xs font-medium text-zinc-600 dark:text-zinc-400 hover:text-zinc-900 dark:hover:text-zinc-100 border border-zinc-200 dark:border-zinc-700 rounded-lg transition-colors",
672
- children: "Collapse All"
670
+ children: say.collapseAll
673
671
  })
674
672
  ]
675
673
  })
@@ -679,7 +677,7 @@ export function AuthorizationPage({ title = 'Authorization Management', subtitle
679
677
  className: "max-h-[calc(100vh-280px)] overflow-y-auto",
680
678
  children: sortedEntities.length === 0 ? /*#__PURE__*/ _jsx("div", {
681
679
  className: "p-8 text-center text-zinc-500 dark:text-zinc-400",
682
- children: "No claims match your filters"
680
+ children: say.noClaimsMatchYourFilters
683
681
  }) : sortedEntities.map((entity)=>{
684
682
  const entityClaims = groupedFilteredClaims[entity] || [];
685
683
  const isExpanded = expandedEntities.has(entity);
@@ -710,14 +708,11 @@ export function AuthorizationPage({ title = 'Authorization Management', subtitle
710
708
  }),
711
709
  /*#__PURE__*/ _jsx("span", {
712
710
  className: "font-medium text-zinc-900 dark:text-zinc-100",
713
- children: entity
711
+ children: say.entityName(entity)
714
712
  }),
715
- /*#__PURE__*/ _jsxs("span", {
713
+ /*#__PURE__*/ _jsx("span", {
716
714
  className: "text-xs text-zinc-500 dark:text-zinc-400",
717
- children: [
718
- entityClaims.length,
719
- " claims"
720
- ]
715
+ children: say.entityClaimCount(entityClaims.length)
721
716
  }),
722
717
  store.selectedRole && /*#__PURE__*/ _jsxs("span", {
723
718
  className: cn('text-xs px-2 py-0.5 rounded-full', allAssigned ? 'bg-emerald-100 text-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-400' : assignedCount > 0 ? 'bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400' : 'bg-zinc-100 text-zinc-500 dark:bg-zinc-800 dark:text-zinc-400'),
@@ -737,13 +732,13 @@ export function AuthorizationPage({ title = 'Authorization Management', subtitle
737
732
  type: "button",
738
733
  onClick: ()=>handleBulkAssign(entity, true),
739
734
  className: "px-2 py-1 text-xs font-medium text-emerald-600 hover:text-emerald-700 dark:text-emerald-400 dark:hover:text-emerald-300 border border-emerald-200 dark:border-emerald-800 rounded",
740
- children: "Assign All"
735
+ children: say.assignAll
741
736
  }),
742
737
  /*#__PURE__*/ _jsx("button", {
743
738
  type: "button",
744
739
  onClick: ()=>handleBulkAssign(entity, false),
745
740
  className: "px-2 py-1 text-xs font-medium text-red-600 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300 border border-red-200 dark:border-red-800 rounded",
746
- children: "Remove All"
741
+ children: say.removeAll
747
742
  })
748
743
  ]
749
744
  }),
@@ -798,35 +793,32 @@ export function AuthorizationPage({ title = 'Authorization Management', subtitle
798
793
  type: "text",
799
794
  value: store.scopeInputValue,
800
795
  onChange: (e)=>store.setScopeInputValue(e.target.value),
801
- placeholder: "e.g. user_id=123&tenant_id=456",
796
+ placeholder: say.scopePlaceholder,
802
797
  className: "flex-1 px-2 py-1 text-xs border border-zinc-300 dark:border-zinc-600 rounded bg-white dark:bg-zinc-800 text-zinc-900 dark:text-zinc-100 placeholder:text-zinc-400"
803
798
  }),
804
799
  /*#__PURE__*/ _jsx("button", {
805
800
  type: "button",
806
801
  onClick: ()=>handleScopeSubmit(roleClaim.id),
807
802
  className: "px-2 py-1 text-xs font-medium text-white bg-emerald-600 hover:bg-emerald-700 rounded transition-colors",
808
- children: "Save"
803
+ children: say.save
809
804
  }),
810
805
  /*#__PURE__*/ _jsx("button", {
811
806
  type: "button",
812
807
  onClick: ()=>store.setEditingScopeClaimId(null),
813
808
  className: "px-2 py-1 text-xs font-medium text-zinc-500 hover:text-zinc-700 dark:hover:text-zinc-300 transition-colors",
814
- children: "Cancel"
809
+ children: say.cancel
815
810
  })
816
811
  ]
817
812
  }) : /*#__PURE__*/ _jsx("button", {
818
813
  type: "button",
819
814
  onClick: ()=>startEditingScope(claim.id, currentScope),
820
815
  className: "text-xs text-zinc-500 dark:text-zinc-400 hover:text-zinc-700 dark:hover:text-zinc-200 transition-colors",
821
- children: currentScope ? /*#__PURE__*/ _jsxs("span", {
816
+ children: currentScope ? /*#__PURE__*/ _jsx("span", {
822
817
  className: "font-mono bg-zinc-200 dark:bg-zinc-700 px-1.5 py-0.5 rounded",
823
- children: [
824
- "scope: ",
825
- currentScope
826
- ]
818
+ children: say.scopeValue(currentScope)
827
819
  }) : /*#__PURE__*/ _jsx("span", {
828
820
  className: "italic hover:underline",
829
- children: "+ Add scope filter"
821
+ children: say.addScopeFilter
830
822
  })
831
823
  })
832
824
  })
@@ -1,2 +1,2 @@
1
1
  import type { ClaimListProps } from '../types';
2
- export declare function ClaimList({ claims, isLoading }: ClaimListProps): import("react/jsx-runtime").JSX.Element;
2
+ export declare function ClaimList({ claims, isLoading, labels }: ClaimListProps): import("react/jsx-runtime").JSX.Element;
@@ -1,9 +1,14 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { cn } from '../../../utils/cn';
4
+ import { DEFAULT_AUTHORIZATION_LABELS } from '../labels';
4
5
  import { authorizationPageTheme } from '../theme';
5
- export function ClaimList({ claims, isLoading }) {
6
+ export function ClaimList({ claims, isLoading, labels }) {
6
7
  const theme = authorizationPageTheme;
8
+ const say = {
9
+ ...DEFAULT_AUTHORIZATION_LABELS,
10
+ ...labels
11
+ };
7
12
  const getClaimEntity = (action)=>{
8
13
  const parts = action.split('.');
9
14
  if (parts[1] === 'bulk') {
@@ -33,33 +38,28 @@ export function ClaimList({ claims, isLoading }) {
33
38
  children: [
34
39
  /*#__PURE__*/ _jsx("h2", {
35
40
  className: theme.card.header,
36
- children: "All Claims"
41
+ children: say.allClaimsHeading
37
42
  }),
38
43
  isLoading ? /*#__PURE__*/ _jsx("div", {
39
44
  className: theme.loading.wrapper,
40
45
  children: /*#__PURE__*/ _jsx("span", {
41
46
  className: theme.loading.text,
42
- children: "Loading claims..."
47
+ children: say.loadingClaims
43
48
  })
44
49
  }) : Object.keys(groupedClaims).length === 0 ? /*#__PURE__*/ _jsx("div", {
45
50
  className: theme.empty.wrapper,
46
51
  children: /*#__PURE__*/ _jsx("span", {
47
52
  className: theme.empty.text,
48
- children: "No claims match the filters."
53
+ children: say.noClaimsMatchTheFilters
49
54
  })
50
55
  }) : /*#__PURE__*/ _jsx("div", {
51
56
  className: theme.claimList.wrapper,
52
57
  children: Object.entries(groupedClaims).map(([entity, entityClaims])=>/*#__PURE__*/ _jsxs("div", {
53
58
  className: theme.claimList.group,
54
59
  children: [
55
- /*#__PURE__*/ _jsxs("div", {
60
+ /*#__PURE__*/ _jsx("div", {
56
61
  className: theme.claimList.groupHeader,
57
- children: [
58
- entity,
59
- " (",
60
- entityClaims.length,
61
- ")"
62
- ]
62
+ children: say.entityGroupHeader(say.entityName(entity), entityClaims.length)
63
63
  }),
64
64
  /*#__PURE__*/ _jsx("div", {
65
65
  className: "divide-y divide-zinc-200 dark:divide-zinc-700",
@@ -1,2 +1,2 @@
1
1
  import type { RoleClaimEditorProps } from '../types';
2
- export declare function RoleClaimEditor({ selectedRole, claims, roleClaims, isLoading, isToggling, onToggleClaim, onUpdateScope, editingScope, onEditScope, scopeValue, onScopeValueChange, }: RoleClaimEditorProps): import("react/jsx-runtime").JSX.Element;
2
+ export declare function RoleClaimEditor({ labels, selectedRole, claims, roleClaims, isLoading, isToggling, onToggleClaim, onUpdateScope, editingScope, onEditScope, scopeValue, onScopeValueChange, }: RoleClaimEditorProps): import("react/jsx-runtime").JSX.Element;
@@ -1,9 +1,14 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { cn } from '../../../utils/cn';
4
+ import { DEFAULT_AUTHORIZATION_LABELS } from '../labels';
4
5
  import { authorizationPageTheme } from '../theme';
5
- export function RoleClaimEditor({ selectedRole, claims, roleClaims, isLoading, isToggling, onToggleClaim, onUpdateScope, editingScope, onEditScope, scopeValue, onScopeValueChange }) {
6
+ export function RoleClaimEditor({ labels, selectedRole, claims, roleClaims, isLoading, isToggling, onToggleClaim, onUpdateScope, editingScope, onEditScope, scopeValue, onScopeValueChange }) {
6
7
  const theme = authorizationPageTheme;
8
+ const say = {
9
+ ...DEFAULT_AUTHORIZATION_LABELS,
10
+ ...labels
11
+ };
7
12
  const getClaimEntity = (action)=>{
8
13
  const parts = action.split('.');
9
14
  if (parts[1] === 'bulk') {
@@ -40,13 +45,13 @@ export function RoleClaimEditor({ selectedRole, claims, roleClaims, isLoading, i
40
45
  children: [
41
46
  /*#__PURE__*/ _jsx("h2", {
42
47
  className: theme.card.header,
43
- children: "Select a role"
48
+ children: say.selectRoleHeading
44
49
  }),
45
50
  /*#__PURE__*/ _jsx("div", {
46
51
  className: theme.empty.wrapper,
47
52
  children: /*#__PURE__*/ _jsx("span", {
48
53
  className: theme.empty.text,
49
- children: "Select a role from the list to manage its claims"
54
+ children: say.selectRoleHint
50
55
  })
51
56
  })
52
57
  ]
@@ -56,13 +61,9 @@ export function RoleClaimEditor({ selectedRole, claims, roleClaims, isLoading, i
56
61
  return /*#__PURE__*/ _jsxs("div", {
57
62
  className: theme.card.wrapper,
58
63
  children: [
59
- /*#__PURE__*/ _jsxs("h2", {
64
+ /*#__PURE__*/ _jsx("h2", {
60
65
  className: theme.card.header,
61
- children: [
62
- 'Claims for "',
63
- selectedRole.name,
64
- '"'
65
- ]
66
+ children: say.claimsForRole(selectedRole.name)
66
67
  }),
67
68
  /*#__PURE__*/ _jsxs("div", {
68
69
  className: theme.empty.wrapper,
@@ -83,9 +84,9 @@ export function RoleClaimEditor({ selectedRole, claims, roleClaims, isLoading, i
83
84
  /*#__PURE__*/ _jsxs("p", {
84
85
  className: theme.empty.text,
85
86
  children: [
86
- "Godmin role has full access to all resources.",
87
+ say.godminFullAccess,
87
88
  /*#__PURE__*/ _jsx("br", {}),
88
- "Claims cannot be modified."
89
+ say.godminCannotModify
89
90
  ]
90
91
  })
91
92
  ]
@@ -96,46 +97,34 @@ export function RoleClaimEditor({ selectedRole, claims, roleClaims, isLoading, i
96
97
  return /*#__PURE__*/ _jsxs("div", {
97
98
  className: theme.card.wrapper,
98
99
  children: [
99
- /*#__PURE__*/ _jsxs("h2", {
100
+ /*#__PURE__*/ _jsx("h2", {
100
101
  className: theme.card.header,
101
- children: [
102
- 'Claims for "',
103
- selectedRole.name,
104
- '"'
105
- ]
102
+ children: say.claimsForRole(selectedRole.name)
106
103
  }),
107
- /*#__PURE__*/ _jsxs("div", {
104
+ /*#__PURE__*/ _jsx("div", {
108
105
  className: theme.stats.text,
109
- children: [
110
- roleClaims.length,
111
- " claims assigned"
112
- ]
106
+ children: say.assignedClaimCount(roleClaims.length)
113
107
  }),
114
108
  isLoading ? /*#__PURE__*/ _jsx("div", {
115
109
  className: theme.loading.wrapper,
116
110
  children: /*#__PURE__*/ _jsx("span", {
117
111
  className: theme.loading.text,
118
- children: "Loading claims..."
112
+ children: say.loadingClaims
119
113
  })
120
114
  }) : Object.keys(groupedClaims).length === 0 ? /*#__PURE__*/ _jsx("div", {
121
115
  className: theme.empty.wrapper,
122
116
  children: /*#__PURE__*/ _jsx("span", {
123
117
  className: theme.empty.text,
124
- children: "No claims match the filters."
118
+ children: say.noClaimsMatchTheFilters
125
119
  })
126
120
  }) : /*#__PURE__*/ _jsx("div", {
127
121
  className: "max-h-[500px] overflow-y-auto space-y-4",
128
122
  children: Object.entries(groupedClaims).map(([entity, entityClaims])=>/*#__PURE__*/ _jsxs("div", {
129
123
  className: theme.claimList.group,
130
124
  children: [
131
- /*#__PURE__*/ _jsxs("div", {
125
+ /*#__PURE__*/ _jsx("div", {
132
126
  className: theme.claimList.groupHeader,
133
- children: [
134
- entity,
135
- " (",
136
- entityClaims.length,
137
- ")"
138
- ]
127
+ children: say.entityGroupHeader(say.entityName(entity), entityClaims.length)
139
128
  }),
140
129
  /*#__PURE__*/ _jsx("div", {
141
130
  className: "divide-y divide-zinc-200 dark:divide-zinc-700",
@@ -185,35 +174,32 @@ export function RoleClaimEditor({ selectedRole, claims, roleClaims, isLoading, i
185
174
  type: "text",
186
175
  value: scopeValue || '',
187
176
  onChange: (e)=>onScopeValueChange?.(e.target.value),
188
- placeholder: "e.g. user_id=123&tenant_id=456",
177
+ placeholder: say.scopePlaceholder,
189
178
  className: "flex-1 px-2 py-1 text-xs border border-zinc-300 dark:border-zinc-600 rounded bg-white dark:bg-zinc-800 text-zinc-900 dark:text-zinc-100 placeholder:text-zinc-400"
190
179
  }),
191
180
  /*#__PURE__*/ _jsx("button", {
192
181
  type: "button",
193
182
  onClick: ()=>handleScopeSubmit(roleClaim.id),
194
183
  className: "px-2 py-1 text-xs font-medium text-white bg-emerald-600 hover:bg-emerald-700 rounded transition-colors",
195
- children: "Save"
184
+ children: say.save
196
185
  }),
197
186
  /*#__PURE__*/ _jsx("button", {
198
187
  type: "button",
199
188
  onClick: handleScopeCancel,
200
189
  className: "px-2 py-1 text-xs font-medium text-zinc-600 dark:text-zinc-400 hover:text-zinc-900 dark:hover:text-zinc-100 transition-colors",
201
- children: "Cancel"
190
+ children: say.cancel
202
191
  })
203
192
  ]
204
193
  }) : /*#__PURE__*/ _jsx("button", {
205
194
  type: "button",
206
195
  onClick: ()=>startEditingScope(claim.id, currentScope),
207
196
  className: "text-xs text-zinc-500 dark:text-zinc-400 hover:text-zinc-700 dark:hover:text-zinc-200 transition-colors",
208
- children: currentScope ? /*#__PURE__*/ _jsxs("span", {
197
+ children: currentScope ? /*#__PURE__*/ _jsx("span", {
209
198
  className: "font-mono bg-zinc-100 dark:bg-zinc-800 px-1.5 py-0.5 rounded",
210
- children: [
211
- "Scope: ",
212
- currentScope
213
- ]
199
+ children: say.scopeValue(currentScope)
214
200
  }) : /*#__PURE__*/ _jsx("span", {
215
201
  className: "italic",
216
- children: "+ Add scope filter"
202
+ children: say.addScopeFilter
217
203
  })
218
204
  })
219
205
  })
@@ -1,2 +1,2 @@
1
1
  import type { RoleListProps } from '../types';
2
- export declare function RoleList({ roles, selectedRole, isLoading, isCreating, isDeleting, newRoleName, newRoleDescription, onNewRoleNameChange, onNewRoleDescriptionChange, onSelectRole, onDeleteRole, onCreateRole, }: RoleListProps): import("react/jsx-runtime").JSX.Element;
2
+ export declare function RoleList({ labels, roles, selectedRole, isLoading, isCreating, isDeleting, newRoleName, newRoleDescription, onNewRoleNameChange, onNewRoleDescriptionChange, onSelectRole, onDeleteRole, onCreateRole, }: RoleListProps): import("react/jsx-runtime").JSX.Element;