@byline/admin 4.10.2 → 4.11.1

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 (97) hide show
  1. package/dist/fields/array/array-field.js +10 -10
  2. package/dist/fields/blocks/blocks-field.js +15 -15
  3. package/dist/fields/code/code-field.js +3 -3
  4. package/dist/fields/datetime/datetime-field.js +2 -2
  5. package/dist/fields/draggable-context-menu.js +9 -9
  6. package/dist/fields/field-renderer.js +3 -3
  7. package/dist/fields/file/file-field.js +21 -21
  8. package/dist/fields/file/file-upload-field.js +8 -8
  9. package/dist/fields/group/group-field.js +6 -6
  10. package/dist/fields/image/image-field.js +23 -23
  11. package/dist/fields/image/image-upload-field.js +11 -11
  12. package/dist/fields/locale-badge.js +2 -2
  13. package/dist/fields/relation/relation-display.js +2 -2
  14. package/dist/fields/relation/relation-field.js +7 -7
  15. package/dist/fields/relation/relation-many-field.js +12 -12
  16. package/dist/fields/relation/relation-picker.js +19 -19
  17. package/dist/fields/relation/relation-summary.js +9 -9
  18. package/dist/fields/select/select-field.js +3 -3
  19. package/dist/fields/sortable-item.js +9 -9
  20. package/dist/fields/text/text-field.js +2 -2
  21. package/dist/fields/text-area/text-area-field.js +2 -2
  22. package/dist/forms/available-locales-widget.js +4 -4
  23. package/dist/forms/document-actions.js +40 -40
  24. package/dist/forms/form-modals.js +12 -12
  25. package/dist/forms/form-renderer.js +17 -17
  26. package/dist/forms/form-status-display.js +15 -15
  27. package/dist/forms/path-widget.js +4 -4
  28. package/dist/forms/tree-placement-widget.js +10 -10
  29. package/dist/modules/admin-account/components/change-password.js +6 -6
  30. package/dist/modules/admin-account/components/container.js +28 -28
  31. package/dist/modules/admin-account/components/preferences.js +9 -9
  32. package/dist/modules/admin-account/components/theme-switch.js +4 -4
  33. package/dist/modules/admin-account/components/update.js +6 -6
  34. package/dist/modules/admin-permissions/components/inspector.js +31 -31
  35. package/dist/modules/admin-roles/components/create.js +6 -6
  36. package/dist/modules/admin-roles/components/permissions.js +25 -25
  37. package/dist/modules/admin-roles/components/update.js +6 -6
  38. package/dist/modules/admin-users/components/create.js +8 -8
  39. package/dist/modules/admin-users/components/roles.js +15 -15
  40. package/dist/modules/admin-users/components/set-password.js +6 -6
  41. package/dist/modules/admin-users/components/update.js +7 -7
  42. package/dist/modules/auth/components/sign-in-form.js +8 -8
  43. package/dist/presentation/group.js +3 -3
  44. package/dist/presentation/row.js +2 -2
  45. package/dist/presentation/tabs.js +5 -5
  46. package/dist/widgets/diff-viewer/diff-modal.js +10 -10
  47. package/dist/widgets/source-locale-badge/source-locale-badge.js +2 -2
  48. package/dist/widgets/status-badge/status-badge.js +4 -4
  49. package/package.json +6 -6
  50. package/src/fields/array/array-field.tsx +1 -1
  51. package/src/fields/blocks/blocks-field.tsx +1 -1
  52. package/src/fields/code/code-field.tsx +1 -1
  53. package/src/fields/datetime/datetime-field.tsx +1 -1
  54. package/src/fields/draggable-context-menu.tsx +1 -1
  55. package/src/fields/field-renderer.tsx +1 -1
  56. package/src/fields/file/file-field.tsx +1 -1
  57. package/src/fields/file/file-upload-field.tsx +1 -1
  58. package/src/fields/group/group-field.tsx +1 -1
  59. package/src/fields/image/image-field.tsx +1 -1
  60. package/src/fields/image/image-upload-field.tsx +1 -1
  61. package/src/fields/locale-badge.tsx +1 -1
  62. package/src/fields/relation/relation-display.tsx +1 -1
  63. package/src/fields/relation/relation-field.tsx +1 -1
  64. package/src/fields/relation/relation-many-field.tsx +1 -1
  65. package/src/fields/relation/relation-picker.tsx +1 -1
  66. package/src/fields/relation/relation-summary.tsx +1 -1
  67. package/src/fields/select/select-field.tsx +1 -1
  68. package/src/fields/sortable-item.tsx +1 -1
  69. package/src/fields/text/text-field.tsx +1 -1
  70. package/src/fields/text-area/text-area-field.tsx +1 -1
  71. package/src/forms/available-locales-widget.tsx +1 -1
  72. package/src/forms/document-actions.tsx +1 -1
  73. package/src/forms/form-modals.tsx +1 -1
  74. package/src/forms/form-renderer.tsx +1 -1
  75. package/src/forms/form-status-display.tsx +1 -1
  76. package/src/forms/path-widget.tsx +1 -1
  77. package/src/forms/tree-placement-widget.tsx +1 -1
  78. package/src/modules/admin-account/components/change-password.tsx +1 -1
  79. package/src/modules/admin-account/components/container.tsx +1 -1
  80. package/src/modules/admin-account/components/preferences.tsx +1 -1
  81. package/src/modules/admin-account/components/theme-switch.tsx +1 -1
  82. package/src/modules/admin-account/components/update.tsx +1 -1
  83. package/src/modules/admin-permissions/components/inspector.tsx +1 -1
  84. package/src/modules/admin-roles/components/create.tsx +1 -1
  85. package/src/modules/admin-roles/components/permissions.tsx +1 -1
  86. package/src/modules/admin-roles/components/update.tsx +1 -1
  87. package/src/modules/admin-users/components/create.tsx +1 -1
  88. package/src/modules/admin-users/components/roles.tsx +1 -1
  89. package/src/modules/admin-users/components/set-password.tsx +1 -1
  90. package/src/modules/admin-users/components/update.tsx +1 -1
  91. package/src/modules/auth/components/sign-in-form.tsx +1 -1
  92. package/src/presentation/group.tsx +1 -1
  93. package/src/presentation/row.tsx +1 -1
  94. package/src/presentation/tabs.tsx +1 -1
  95. package/src/widgets/diff-viewer/diff-modal.tsx +1 -1
  96. package/src/widgets/source-locale-badge/source-locale-badge.tsx +1 -1
  97. package/src/widgets/status-badge/status-badge.tsx +1 -1
@@ -5,7 +5,7 @@ import { revalidateLogic, useForm } from "@tanstack/react-form-start";
5
5
  import { passwordSchema } from "@byline/core/validation";
6
6
  import { useTranslation } from "@byline/i18n/react";
7
7
  import { Alert, Button, Checkbox, Input, LoaderEllipsis } from "@byline/ui/react";
8
- import classnames from "classnames";
8
+ import clsx from "clsx";
9
9
  import { z } from "zod";
10
10
  import { translateValidationError } from "../../../lib/translate-validation-error.js";
11
11
  import { useBylineAdminServices } from "../../../services/admin-services-context.js";
@@ -99,7 +99,7 @@ function CreateAdminUser({ onClose, onSuccess }) {
99
99
  }
100
100
  });
101
101
  return /*#__PURE__*/ jsx("div", {
102
- className: classnames('byline-user-create-wrap', create_module.wrap),
102
+ className: clsx('byline-user-create-wrap', create_module.wrap),
103
103
  children: /*#__PURE__*/ jsxs("form", {
104
104
  method: "post",
105
105
  noValidate: true,
@@ -108,14 +108,14 @@ function CreateAdminUser({ onClose, onSuccess }) {
108
108
  event.stopPropagation();
109
109
  form.handleSubmit();
110
110
  },
111
- className: classnames('byline-user-create-form', create_module.form),
111
+ className: clsx('byline-user-create-form', create_module.form),
112
112
  children: [
113
113
  formError ? /*#__PURE__*/ jsx(Alert, {
114
114
  intent: "danger",
115
115
  children: formError
116
116
  }) : null,
117
117
  /*#__PURE__*/ jsxs("div", {
118
- className: classnames('byline-user-create-grid', create_module.grid),
118
+ className: clsx('byline-user-create-grid', create_module.grid),
119
119
  children: [
120
120
  /*#__PURE__*/ jsx(form.Field, {
121
121
  name: "given_name",
@@ -196,7 +196,7 @@ function CreateAdminUser({ onClose, onSuccess }) {
196
196
  })
197
197
  }),
198
198
  /*#__PURE__*/ jsxs("div", {
199
- className: classnames('byline-user-create-flags', create_module.flags),
199
+ className: clsx('byline-user-create-flags', create_module.flags),
200
200
  children: [
201
201
  /*#__PURE__*/ jsx(form.Field, {
202
202
  name: "is_enabled",
@@ -234,14 +234,14 @@ function CreateAdminUser({ onClose, onSuccess }) {
234
234
  ]
235
235
  }),
236
236
  /*#__PURE__*/ jsxs("div", {
237
- className: classnames('byline-user-create-actions', create_module.actions),
237
+ className: clsx('byline-user-create-actions', create_module.actions),
238
238
  children: [
239
239
  /*#__PURE__*/ jsx(Button, {
240
240
  type: "button",
241
241
  intent: "secondary",
242
242
  size: "sm",
243
243
  onClick: onClose,
244
- className: classnames('byline-user-create-action', create_module.action),
244
+ className: clsx('byline-user-create-action', create_module.action),
245
245
  children: t('common.actions.cancel')
246
246
  }),
247
247
  /*#__PURE__*/ jsx(form.Subscribe, {
@@ -254,7 +254,7 @@ function CreateAdminUser({ onClose, onSuccess }) {
254
254
  intent: "primary",
255
255
  type: "submit",
256
256
  disabled: !canSubmit || isSubmitting,
257
- className: classnames('byline-user-create-action', create_module.action),
257
+ className: clsx('byline-user-create-action', create_module.action),
258
258
  children: true === isSubmitting ? /*#__PURE__*/ jsx(LoaderEllipsis, {
259
259
  size: 42
260
260
  }) : t('common.actions.save')
@@ -3,7 +3,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useState } from "react";
4
4
  import { useTranslation } from "@byline/i18n/react";
5
5
  import { Alert, Button, Checkbox, LoaderEllipsis } from "@byline/ui/react";
6
- import classnames from "classnames";
6
+ import clsx from "clsx";
7
7
  import { useBylineAdminServices } from "../../../services/admin-services-context.js";
8
8
  import roles_module from "./roles.module.js";
9
9
  function setsEqual(a, b) {
@@ -55,7 +55,7 @@ function UserRoles({ user, allRoles, initialRoleIds, onClose, onSaved }) {
55
55
  }
56
56
  }
57
57
  return /*#__PURE__*/ jsxs("div", {
58
- className: classnames('byline-user-roles-wrap', roles_module.wrap),
58
+ className: clsx('byline-user-roles-wrap', roles_module.wrap),
59
59
  children: [
60
60
  error ? /*#__PURE__*/ jsx(Alert, {
61
61
  intent: "danger",
@@ -66,12 +66,12 @@ function UserRoles({ user, allRoles, initialRoleIds, onClose, onSaved }) {
66
66
  children: successMessage
67
67
  }) : null,
68
68
  0 === allRoles.length ? /*#__PURE__*/ jsx("p", {
69
- className: classnames('muted', 'byline-user-roles-empty', roles_module.empty),
69
+ className: clsx('muted', 'byline-user-roles-empty', roles_module.empty),
70
70
  children: t('adminUsers.roles.emptyCatalog')
71
71
  }) : /*#__PURE__*/ jsx("div", {
72
- className: classnames('byline-user-roles-list', roles_module.list),
72
+ className: clsx('byline-user-roles-list', roles_module.list),
73
73
  children: allRoles.map((role)=>/*#__PURE__*/ jsxs("div", {
74
- className: classnames('byline-user-roles-row', roles_module.row),
74
+ className: clsx('byline-user-roles-row', roles_module.row),
75
75
  children: [
76
76
  /*#__PURE__*/ jsx(Checkbox, {
77
77
  id: `role-${role.id}`,
@@ -79,28 +79,28 @@ function UserRoles({ user, allRoles, initialRoleIds, onClose, onSaved }) {
79
79
  checked: selected.has(role.id),
80
80
  disabled: saving,
81
81
  onCheckedChange: (checked)=>handleToggle(role.id, true === checked),
82
- containerClasses: classnames('byline-user-roles-checkbox-auto', roles_module["checkbox-auto"]),
83
- componentClasses: classnames('byline-user-roles-checkbox-auto', roles_module["checkbox-auto"])
82
+ containerClasses: clsx('byline-user-roles-checkbox-auto', roles_module["checkbox-auto"]),
83
+ componentClasses: clsx('byline-user-roles-checkbox-auto', roles_module["checkbox-auto"])
84
84
  }),
85
85
  /*#__PURE__*/ jsxs("label", {
86
86
  htmlFor: `role-${role.id}`,
87
- className: classnames('byline-user-roles-label', roles_module.label),
87
+ className: clsx('byline-user-roles-label', roles_module.label),
88
88
  children: [
89
89
  /*#__PURE__*/ jsxs("div", {
90
- className: classnames('byline-user-roles-label-head', roles_module["label-head"]),
90
+ className: clsx('byline-user-roles-label-head', roles_module["label-head"]),
91
91
  children: [
92
92
  /*#__PURE__*/ jsx("span", {
93
- className: classnames('byline-user-roles-name', roles_module.name),
93
+ className: clsx('byline-user-roles-name', roles_module.name),
94
94
  children: role.name
95
95
  }),
96
96
  /*#__PURE__*/ jsx("code", {
97
- className: classnames('byline-user-roles-machine', roles_module.machine),
97
+ className: clsx('byline-user-roles-machine', roles_module.machine),
98
98
  children: role.machine_name
99
99
  })
100
100
  ]
101
101
  }),
102
102
  role.description ? /*#__PURE__*/ jsx("p", {
103
- className: classnames('muted', "byline-user-roles-description", roles_module.description),
103
+ className: clsx('muted', "byline-user-roles-description", roles_module.description),
104
104
  children: role.description
105
105
  }) : null
106
106
  ]
@@ -109,7 +109,7 @@ function UserRoles({ user, allRoles, initialRoleIds, onClose, onSaved }) {
109
109
  }, role.id))
110
110
  }),
111
111
  /*#__PURE__*/ jsxs("div", {
112
- className: classnames('byline-user-roles-actions', roles_module.actions),
112
+ className: clsx('byline-user-roles-actions', roles_module.actions),
113
113
  children: [
114
114
  /*#__PURE__*/ jsx(Button, {
115
115
  type: "button",
@@ -117,7 +117,7 @@ function UserRoles({ user, allRoles, initialRoleIds, onClose, onSaved }) {
117
117
  size: "xs",
118
118
  onClick: onClose,
119
119
  disabled: saving,
120
- className: classnames('byline-user-roles-action', roles_module.action),
120
+ className: clsx('byline-user-roles-action', roles_module.action),
121
121
  children: successMessage ? t('common.actions.close') : t('common.actions.cancel')
122
122
  }),
123
123
  /*#__PURE__*/ jsx(Button, {
@@ -126,7 +126,7 @@ function UserRoles({ user, allRoles, initialRoleIds, onClose, onSaved }) {
126
126
  size: "xs",
127
127
  onClick: ()=>void handleSave(),
128
128
  disabled: saving || !isDirty,
129
- className: classnames('byline-user-roles-action', roles_module.action),
129
+ className: clsx('byline-user-roles-action', roles_module.action),
130
130
  children: saving ? /*#__PURE__*/ jsx(LoaderEllipsis, {
131
131
  size: 30
132
132
  }) : t('common.actions.save')
@@ -5,7 +5,7 @@ import { revalidateLogic, useForm } from "@tanstack/react-form-start";
5
5
  import { passwordSchema } from "@byline/core/validation";
6
6
  import { useTranslation } from "@byline/i18n/react";
7
7
  import { Alert, Button, InputPassword, LoaderEllipsis } from "@byline/ui/react";
8
- import classnames from "classnames";
8
+ import clsx from "clsx";
9
9
  import { z } from "zod";
10
10
  import { translateValidationError } from "../../../lib/translate-validation-error.js";
11
11
  import { useBylineAdminServices } from "../../../services/admin-services-context.js";
@@ -66,7 +66,7 @@ function SetPassword({ user, onClose, onSuccess }) {
66
66
  }
67
67
  });
68
68
  return /*#__PURE__*/ jsx("div", {
69
- className: classnames('byline-user-set-password-wrap', set_password_module.wrap),
69
+ className: clsx('byline-user-set-password-wrap', set_password_module.wrap),
70
70
  children: /*#__PURE__*/ jsxs("form", {
71
71
  method: "post",
72
72
  noValidate: true,
@@ -75,7 +75,7 @@ function SetPassword({ user, onClose, onSuccess }) {
75
75
  event.stopPropagation();
76
76
  form.handleSubmit();
77
77
  },
78
- className: classnames('byline-user-set-password-form', set_password_module.form),
78
+ className: clsx('byline-user-set-password-form', set_password_module.form),
79
79
  children: [
80
80
  formError ? /*#__PURE__*/ jsx(Alert, {
81
81
  intent: "danger",
@@ -122,14 +122,14 @@ function SetPassword({ user, onClose, onSuccess }) {
122
122
  })
123
123
  }),
124
124
  /*#__PURE__*/ jsxs("div", {
125
- className: classnames('byline-user-set-password-actions', set_password_module.actions),
125
+ className: clsx('byline-user-set-password-actions', set_password_module.actions),
126
126
  children: [
127
127
  /*#__PURE__*/ jsx(Button, {
128
128
  type: "button",
129
129
  intent: "secondary",
130
130
  size: "sm",
131
131
  onClick: onClose,
132
- className: classnames('byline-user-set-password-action', set_password_module.action),
132
+ className: clsx('byline-user-set-password-action', set_password_module.action),
133
133
  children: successMessage ? t('common.actions.close') : t('common.actions.cancel')
134
134
  }),
135
135
  /*#__PURE__*/ jsx(form.Subscribe, {
@@ -143,7 +143,7 @@ function SetPassword({ user, onClose, onSuccess }) {
143
143
  intent: "primary",
144
144
  type: "submit",
145
145
  disabled: !canSubmit || isSubmitting,
146
- className: classnames('byline-user-set-password-action', set_password_module.action),
146
+ className: clsx('byline-user-set-password-action', set_password_module.action),
147
147
  children: true === isSubmitting ? /*#__PURE__*/ jsx(LoaderEllipsis, {
148
148
  size: 42
149
149
  }) : t('common.actions.save')
@@ -4,7 +4,7 @@ import { useMemo, useState } from "react";
4
4
  import { revalidateLogic, useForm } from "@tanstack/react-form-start";
5
5
  import { useTranslation } from "@byline/i18n/react";
6
6
  import { Alert, Button, Checkbox, Input, LoaderEllipsis } from "@byline/ui/react";
7
- import classnames from "classnames";
7
+ import clsx from "clsx";
8
8
  import { z } from "zod";
9
9
  import { useBylineAdminServices } from "../../../services/admin-services-context.js";
10
10
  import update_module from "./update.module.js";
@@ -110,7 +110,7 @@ function UpdateUser({ user, onClose, onSuccess }) {
110
110
  }
111
111
  });
112
112
  return /*#__PURE__*/ jsx("div", {
113
- className: classnames('byline-user-update-wrap', update_module.wrap),
113
+ className: clsx('byline-user-update-wrap', update_module.wrap),
114
114
  children: /*#__PURE__*/ jsxs("form", {
115
115
  method: "post",
116
116
  noValidate: true,
@@ -119,7 +119,7 @@ function UpdateUser({ user, onClose, onSuccess }) {
119
119
  event.stopPropagation();
120
120
  form.handleSubmit();
121
121
  },
122
- className: classnames('byline-user-update-form', update_module.form),
122
+ className: clsx('byline-user-update-form', update_module.form),
123
123
  children: [
124
124
  formError ? /*#__PURE__*/ jsx(Alert, {
125
125
  intent: "danger",
@@ -189,7 +189,7 @@ function UpdateUser({ user, onClose, onSuccess }) {
189
189
  })
190
190
  }),
191
191
  /*#__PURE__*/ jsxs("div", {
192
- className: classnames('byline-user-update-flags', update_module.flags),
192
+ className: clsx('byline-user-update-flags', update_module.flags),
193
193
  children: [
194
194
  /*#__PURE__*/ jsx(form.Field, {
195
195
  name: "is_enabled",
@@ -226,14 +226,14 @@ function UpdateUser({ user, onClose, onSuccess }) {
226
226
  ]
227
227
  }),
228
228
  /*#__PURE__*/ jsxs("div", {
229
- className: classnames('byline-user-update-actions', update_module.actions),
229
+ className: clsx('byline-user-update-actions', update_module.actions),
230
230
  children: [
231
231
  /*#__PURE__*/ jsx(Button, {
232
232
  type: "button",
233
233
  intent: "secondary",
234
234
  size: "sm",
235
235
  onClick: onClose,
236
- className: classnames('byline-user-update-action', update_module.action),
236
+ className: clsx('byline-user-update-action', update_module.action),
237
237
  children: successMessage ? t('common.actions.close') : t('common.actions.cancel')
238
238
  }),
239
239
  /*#__PURE__*/ jsx(form.Subscribe, {
@@ -247,7 +247,7 @@ function UpdateUser({ user, onClose, onSuccess }) {
247
247
  intent: "primary",
248
248
  type: "submit",
249
249
  disabled: !canSubmit || isSubmitting,
250
- className: classnames('byline-user-update-action', update_module.action),
250
+ className: clsx('byline-user-update-action', update_module.action),
251
251
  children: true === isSubmitting ? /*#__PURE__*/ jsx(LoaderEllipsis, {
252
252
  size: 42
253
253
  }) : t('common.actions.save')
@@ -4,7 +4,7 @@ import { useState } from "react";
4
4
  import { getClientConfig } from "@byline/core";
5
5
  import { useTranslation } from "@byline/i18n/react";
6
6
  import { Alert, Button, Card, Input, LoaderEllipsis } from "@byline/ui/react";
7
- import classnames from "classnames";
7
+ import clsx from "clsx";
8
8
  import { useBylineAdminServices } from "../../../services/admin-services-context.js";
9
9
  import { normalizeRootRelativeRedirect, resolveSignInFormRedirect } from "../safe-redirect.js";
10
10
  import sign_in_form_module from "./sign-in-form.module.js";
@@ -38,7 +38,7 @@ function SignInForm({ redirectTo, callbackUrl, homeUrl }) {
38
38
  window.location.assign(normalizeRootRelativeRedirect(destination) ?? '/');
39
39
  }
40
40
  return /*#__PURE__*/ jsxs(Card, {
41
- className: classnames('byline-sign-in-card', sign_in_form_module.card),
41
+ className: clsx('byline-sign-in-card', sign_in_form_module.card),
42
42
  children: [
43
43
  /*#__PURE__*/ jsxs(Card.Header, {
44
44
  children: [
@@ -52,7 +52,7 @@ function SignInForm({ redirectTo, callbackUrl, homeUrl }) {
52
52
  }),
53
53
  error && /*#__PURE__*/ jsx(Alert, {
54
54
  intent: "danger",
55
- className: classnames('byline-sign-in-alert', sign_in_form_module.alert),
55
+ className: clsx('byline-sign-in-alert', sign_in_form_module.alert),
56
56
  children: error
57
57
  })
58
58
  ]
@@ -62,10 +62,10 @@ function SignInForm({ redirectTo, callbackUrl, homeUrl }) {
62
62
  method: "post",
63
63
  onSubmit: handleSubmit,
64
64
  noValidate: true,
65
- className: classnames('byline-sign-in-form', sign_in_form_module.form),
65
+ className: clsx('byline-sign-in-form', sign_in_form_module.form),
66
66
  children: [
67
67
  /*#__PURE__*/ jsxs("div", {
68
- className: classnames('byline-sign-in-fields', sign_in_form_module.fields),
68
+ className: clsx('byline-sign-in-fields', sign_in_form_module.fields),
69
69
  children: [
70
70
  /*#__PURE__*/ jsx(Input, {
71
71
  label: t('common.fields.email'),
@@ -92,17 +92,17 @@ function SignInForm({ redirectTo, callbackUrl, homeUrl }) {
92
92
  ]
93
93
  }),
94
94
  /*#__PURE__*/ jsxs("div", {
95
- className: classnames('byline-sign-in-actions', sign_in_form_module.actions),
95
+ className: clsx('byline-sign-in-actions', sign_in_form_module.actions),
96
96
  children: [
97
97
  homeUrl && /*#__PURE__*/ jsx("a", {
98
98
  href: homeUrl,
99
- className: classnames('byline-sign-in-home-link', sign_in_form_module["home-link"]),
99
+ className: clsx('byline-sign-in-home-link', sign_in_form_module["home-link"]),
100
100
  children: t('common.actions.home')
101
101
  }),
102
102
  /*#__PURE__*/ jsx(Button, {
103
103
  type: "submit",
104
104
  disabled: pending,
105
- className: classnames('byline-sign-in-button', sign_in_form_module.button),
105
+ className: clsx('byline-sign-in-button', sign_in_form_module.button),
106
106
  children: pending ? /*#__PURE__*/ jsx(LoaderEllipsis, {
107
107
  size: 30,
108
108
  color: "#aaaaaa"
@@ -1,11 +1,11 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
- import classnames from "classnames";
2
+ import clsx from "clsx";
3
3
  import group_module from "./group.module.js";
4
4
  const AdminGroup = ({ label, children, className })=>/*#__PURE__*/ jsxs("fieldset", {
5
- className: classnames('byline-admin-group', group_module.group, className),
5
+ className: clsx('byline-admin-group', group_module.group, className),
6
6
  children: [
7
7
  label && /*#__PURE__*/ jsx("legend", {
8
- className: classnames('byline-admin-group-legend', group_module.legend),
8
+ className: clsx('byline-admin-group-legend', group_module.legend),
9
9
  children: label
10
10
  }),
11
11
  children
@@ -1,8 +1,8 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
- import classnames from "classnames";
2
+ import clsx from "clsx";
3
3
  import row_module from "./row.module.js";
4
4
  const AdminRow = ({ children, className })=>/*#__PURE__*/ jsx("div", {
5
- className: classnames('byline-admin-row', row_module.row, className),
5
+ className: clsx('byline-admin-row', row_module.row, className),
6
6
  children: children
7
7
  });
8
8
  export { AdminRow };
@@ -2,14 +2,14 @@
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useTranslation } from "@byline/i18n/react";
4
4
  import { Badge } from "@byline/ui/react";
5
- import classnames from "classnames";
5
+ import clsx from "clsx";
6
6
  import tabs_module from "./tabs.module.js";
7
7
  const AdminTabs = ({ tabs, activeTab, onChange, errorCounts, className })=>{
8
8
  const { t } = useTranslation('byline-admin');
9
9
  return /*#__PURE__*/ jsx("div", {
10
10
  role: "tablist",
11
11
  "aria-label": t('presentation.formTabsAriaLabel'),
12
- className: classnames('byline-admin-tabs', tabs_module.tabs, className),
12
+ className: clsx('byline-admin-tabs', tabs_module.tabs, className),
13
13
  children: tabs.map((tab)=>{
14
14
  const isActive = tab.name === activeTab;
15
15
  return /*#__PURE__*/ jsx("button", {
@@ -17,17 +17,17 @@ const AdminTabs = ({ tabs, activeTab, onChange, errorCounts, className })=>{
17
17
  role: "tab",
18
18
  "aria-selected": isActive,
19
19
  onClick: ()=>onChange(tab.name),
20
- className: classnames('byline-admin-tab', tabs_module.tab, isActive && [
20
+ className: clsx('byline-admin-tab', tabs_module.tab, isActive && [
21
21
  'byline-admin-tab-active',
22
22
  tabs_module["tab-active"]
23
23
  ]),
24
24
  children: /*#__PURE__*/ jsxs("span", {
25
- className: classnames('byline-admin-tab-label', tabs_module.label),
25
+ className: clsx('byline-admin-tab-label', tabs_module.label),
26
26
  children: [
27
27
  tab.label,
28
28
  (errorCounts?.[tab.name] ?? 0) > 0 && /*#__PURE__*/ jsx(Badge, {
29
29
  intent: "danger",
30
- className: classnames('byline-admin-tab-badge', tabs_module.badge),
30
+ className: clsx('byline-admin-tab-badge', tabs_module.badge),
31
31
  children: errorCounts?.[tab.name]
32
32
  })
33
33
  ]
@@ -3,7 +3,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useEffect, useState } from "react";
4
4
  import { useTranslation } from "@byline/i18n/react";
5
5
  import { CloseIcon, IconButton, LoaderRing, Modal } from "@byline/ui/react";
6
- import classnames from "classnames";
6
+ import clsx from "clsx";
7
7
  import react_diff_viewer_continued, { DiffMethod } from "react-diff-viewer-continued";
8
8
  import diff_modal_module from "./diff-modal.module.js";
9
9
  const STRIP_KEYS = new Set([
@@ -70,22 +70,22 @@ function DiffModal({ isOpen, onDismiss, collection, documentId, versionId, versi
70
70
  },
71
71
  children: [
72
72
  /*#__PURE__*/ jsxs(Modal.Header, {
73
- className: classnames('byline-diff-modal-header', diff_modal_module.header),
73
+ className: clsx('byline-diff-modal-header', diff_modal_module.header),
74
74
  children: [
75
75
  /*#__PURE__*/ jsxs("div", {
76
- className: classnames('byline-diff-modal-title-stack', diff_modal_module["title-stack"]),
76
+ className: clsx('byline-diff-modal-title-stack', diff_modal_module["title-stack"]),
77
77
  children: [
78
78
  /*#__PURE__*/ jsx("h3", {
79
- className: classnames('byline-diff-modal-title', diff_modal_module.title),
79
+ className: clsx('byline-diff-modal-title', diff_modal_module.title),
80
80
  children: t('diffModal.title')
81
81
  }),
82
82
  /*#__PURE__*/ jsxs("p", {
83
- className: classnames('byline-diff-modal-subtitle', diff_modal_module.subtitle),
83
+ className: clsx('byline-diff-modal-subtitle', diff_modal_module.subtitle),
84
84
  children: [
85
85
  t('diffModal.subtitleBefore'),
86
86
  ' ',
87
87
  /*#__PURE__*/ jsx("span", {
88
- className: classnames('byline-diff-modal-version', diff_modal_module.version),
88
+ className: clsx('byline-diff-modal-version', diff_modal_module.version),
89
89
  children: versionLabel
90
90
  }),
91
91
  ' ',
@@ -106,13 +106,13 @@ function DiffModal({ isOpen, onDismiss, collection, documentId, versionId, versi
106
106
  ]
107
107
  }),
108
108
  /*#__PURE__*/ jsxs(Modal.Content, {
109
- className: classnames('byline-diff-modal-content', diff_modal_module.content),
109
+ className: clsx('byline-diff-modal-content', diff_modal_module.content),
110
110
  style: {
111
111
  minHeight: 0
112
112
  },
113
113
  children: [
114
114
  loading && /*#__PURE__*/ jsxs("div", {
115
- className: classnames('byline-diff-modal-state', diff_modal_module.state),
115
+ className: clsx('byline-diff-modal-state', diff_modal_module.state),
116
116
  children: [
117
117
  /*#__PURE__*/ jsx(LoaderRing, {
118
118
  size: 28,
@@ -124,11 +124,11 @@ function DiffModal({ isOpen, onDismiss, collection, documentId, versionId, versi
124
124
  ]
125
125
  }),
126
126
  error && /*#__PURE__*/ jsx("div", {
127
- className: classnames('byline-diff-modal-state', 'byline-diff-modal-error', diff_modal_module.state, diff_modal_module.error),
127
+ className: clsx('byline-diff-modal-state', 'byline-diff-modal-error', diff_modal_module.state, diff_modal_module.error),
128
128
  children: error
129
129
  }),
130
130
  !loading && !error && historicalDoc && /*#__PURE__*/ jsx("div", {
131
- className: classnames('byline-diff-modal-viewer', diff_modal_module.viewer),
131
+ className: clsx('byline-diff-modal-viewer', diff_modal_module.viewer),
132
132
  children: /*#__PURE__*/ jsx(react_diff_viewer_continued, {
133
133
  oldValue: historicalStr,
134
134
  newValue: currentStr,
@@ -1,12 +1,12 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { Badge } from "@byline/ui/react";
3
- import classnames from "classnames";
3
+ import clsx from "clsx";
4
4
  import source_locale_badge_module from "./source-locale-badge.module.js";
5
5
  const SourceLocaleBadge = ({ locale, className })=>/*#__PURE__*/ jsx(Badge, {
6
6
  intent: "noeffect",
7
7
  render: /*#__PURE__*/ jsx("span", {}),
8
8
  title: `Primary content language: ${locale.toUpperCase()}`,
9
- className: classnames('byline-source-locale-badge', source_locale_badge_module.badge, className),
9
+ className: clsx('byline-source-locale-badge', source_locale_badge_module.badge, className),
10
10
  children: locale.toUpperCase()
11
11
  });
12
12
  SourceLocaleBadge.displayName = 'SourceLocaleBadge';
@@ -2,7 +2,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { WORKFLOW_STATUS_ARCHIVED, WORKFLOW_STATUS_DRAFT, WORKFLOW_STATUS_PUBLISHED } from "@byline/core";
3
3
  import { useTranslation } from "@byline/i18n/react";
4
4
  import { Badge } from "@byline/ui/react";
5
- import classnames from "classnames";
5
+ import clsx from "clsx";
6
6
  import status_badge_module from "./status-badge.module.js";
7
7
  function statusIntent(status) {
8
8
  switch(status){
@@ -20,15 +20,15 @@ const StatusBadge = ({ status, workflowStatuses, hasPublishedVersion })=>{
20
20
  const { t } = useTranslation('byline-admin');
21
21
  const label = workflowStatuses.find((s)=>s.name === status)?.label ?? String(status ?? '');
22
22
  return /*#__PURE__*/ jsxs("span", {
23
- className: classnames('byline-status-badge-wrap', status_badge_module.wrap),
23
+ className: clsx('byline-status-badge-wrap', status_badge_module.wrap),
24
24
  children: [
25
25
  true === hasPublishedVersion && 'published' !== status && /*#__PURE__*/ jsx("span", {
26
26
  title: t('statusBadge.publishedVersionLive'),
27
- className: classnames('byline-status-badge-dot', status_badge_module.dot)
27
+ className: clsx('byline-status-badge-dot', status_badge_module.dot)
28
28
  }),
29
29
  /*#__PURE__*/ jsx(Badge, {
30
30
  intent: statusIntent(status),
31
- className: classnames('byline-status-badge', status_badge_module.badge),
31
+ className: clsx('byline-status-badge', status_badge_module.badge),
32
32
  children: label
33
33
  })
34
34
  ]
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@byline/admin",
3
3
  "private": false,
4
4
  "license": "MPL-2.0",
5
- "version": "4.10.2",
5
+ "version": "4.11.1",
6
6
  "engines": {
7
7
  "node": ">=20.9.0"
8
8
  },
@@ -168,15 +168,15 @@
168
168
  "@codemirror/view": "^6.43.6",
169
169
  "@lezer/highlight": "^1.2.3",
170
170
  "@tanstack/react-form-start": "^1.33.2",
171
- "classnames": "^2.5.1",
171
+ "clsx": "^2.1.1",
172
172
  "jose": "^6.2.3",
173
173
  "react-diff-viewer-continued": "^4.4.0",
174
174
  "uuid": "^14.0.1",
175
175
  "zod": "^4.4.3",
176
- "@byline/auth": "4.10.2",
177
- "@byline/i18n": "4.10.2",
178
- "@byline/ui": "4.10.2",
179
- "@byline/core": "4.10.2"
176
+ "@byline/auth": "4.11.1",
177
+ "@byline/i18n": "4.11.1",
178
+ "@byline/ui": "4.11.1",
179
+ "@byline/core": "4.11.1"
180
180
  },
181
181
  "peerDependencies": {
182
182
  "react": "^19.0.0",
@@ -11,7 +11,7 @@ import { useEffect, useState } from 'react'
11
11
  import type { ArrayField as ArrayFieldType, Field, FieldAdminConfig } from '@byline/core'
12
12
  import { useTranslation } from '@byline/i18n/react'
13
13
  import { DraggableSortable, IconButton, moveItem, PlusIcon } from '@byline/ui/react'
14
- import cx from 'classnames'
14
+ import cx from 'clsx'
15
15
 
16
16
  import { sliceFieldAdmin } from '../../fields/field-admin'
17
17
  import { defaultScalarForField } from '../../fields/field-helpers'
@@ -25,7 +25,7 @@ import {
25
25
  moveItem,
26
26
  PlusIcon,
27
27
  } from '@byline/ui/react'
28
- import cx from 'classnames'
28
+ import cx from 'clsx'
29
29
 
30
30
  import { defaultScalarForField } from '../../fields/field-helpers'
31
31
  import { GroupField } from '../../fields/group/group-field'
@@ -10,7 +10,7 @@ import React, { Suspense, useCallback } from 'react'
10
10
 
11
11
  import type { Field, FieldComponentSlots, CodeField as FieldType } from '@byline/core'
12
12
  import { ErrorText, HelpText, Label } from '@byline/ui/react'
13
- import cx from 'classnames'
13
+ import cx from 'clsx'
14
14
 
15
15
  import { useFieldError, useFieldValue } from '../../forms/form-context'
16
16
  import { LocaleBadge } from '../locale-badge'
@@ -8,7 +8,7 @@
8
8
 
9
9
  import type { DateTimeField as FieldType } from '@byline/core'
10
10
  import { DatePicker, ErrorText } from '@byline/ui/react'
11
- import cx from 'classnames'
11
+ import cx from 'clsx'
12
12
 
13
13
  import { useFieldError, useFieldValue, useIsDirty } from '../../forms/form-context'
14
14
  import styles from './datetime-field.module.css'
@@ -16,7 +16,7 @@ import {
16
16
  IconButton,
17
17
  PlusIcon,
18
18
  } from '@byline/ui/react'
19
- import cx from 'classnames'
19
+ import cx from 'clsx'
20
20
 
21
21
  import styles from './draggable-context-menu.module.css'
22
22
 
@@ -16,7 +16,7 @@ import type {
16
16
  RichTextEditorComponent,
17
17
  } from '@byline/core'
18
18
  import { getClientConfig } from '@byline/core'
19
- import cx from 'classnames'
19
+ import cx from 'clsx'
20
20
 
21
21
  import { useFormContext } from '../forms/form-context'
22
22
  import { ArrayField } from './array/array-field'
@@ -23,7 +23,7 @@ import {
23
23
  LoaderRing,
24
24
  VideoIcon,
25
25
  } from '@byline/ui/react'
26
- import cx from 'classnames'
26
+ import cx from 'clsx'
27
27
 
28
28
  import {
29
29
  useFieldError,