@open-mercato/core 0.6.8-develop.7059.1.f45d1ae6a1 → 0.6.8-develop.7063.1.664341cf65

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-mercato/core",
3
- "version": "0.6.8-develop.7059.1.f45d1ae6a1",
3
+ "version": "0.6.8-develop.7063.1.664341cf65",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -252,16 +252,16 @@
252
252
  "zod": "^4.4.3"
253
253
  },
254
254
  "peerDependencies": {
255
- "@open-mercato/ai-assistant": "0.6.8-develop.7059.1.f45d1ae6a1",
256
- "@open-mercato/shared": "0.6.8-develop.7059.1.f45d1ae6a1",
257
- "@open-mercato/ui": "0.6.8-develop.7059.1.f45d1ae6a1",
255
+ "@open-mercato/ai-assistant": "0.6.8-develop.7063.1.664341cf65",
256
+ "@open-mercato/shared": "0.6.8-develop.7063.1.664341cf65",
257
+ "@open-mercato/ui": "0.6.8-develop.7063.1.664341cf65",
258
258
  "react": "^19.0.0",
259
259
  "react-dom": "^19.0.0"
260
260
  },
261
261
  "devDependencies": {
262
- "@open-mercato/ai-assistant": "0.6.8-develop.7059.1.f45d1ae6a1",
263
- "@open-mercato/shared": "0.6.8-develop.7059.1.f45d1ae6a1",
264
- "@open-mercato/ui": "0.6.8-develop.7059.1.f45d1ae6a1",
262
+ "@open-mercato/ai-assistant": "0.6.8-develop.7063.1.664341cf65",
263
+ "@open-mercato/shared": "0.6.8-develop.7063.1.664341cf65",
264
+ "@open-mercato/ui": "0.6.8-develop.7063.1.664341cf65",
265
265
  "@testing-library/dom": "^10.4.1",
266
266
  "@testing-library/jest-dom": "^7.0.0",
267
267
  "@testing-library/react": "^16.3.1",
@@ -1,14 +1,38 @@
1
1
  // Module-level features declaration for RBAC
2
2
  export const features = [
3
3
  { id: 'auth.users.list', title: 'List users', module: 'auth' },
4
- { id: 'auth.users.create', title: 'Create users', module: 'auth' },
5
- { id: 'auth.users.edit', title: 'Edit users', module: 'auth' },
6
- { id: 'auth.users.delete', title: 'Delete users', module: 'auth' },
4
+ {
5
+ id: 'auth.users.create',
6
+ title: 'Create users',
7
+ module: 'auth',
8
+ dependsOn: ['auth.users.list', 'auth.roles.list', 'directory.organizations.view'],
9
+ },
10
+ {
11
+ id: 'auth.users.edit',
12
+ title: 'Edit users',
13
+ module: 'auth',
14
+ dependsOn: ['auth.users.list', 'auth.roles.list'],
15
+ },
16
+ {
17
+ id: 'auth.users.delete',
18
+ title: 'Delete users',
19
+ module: 'auth',
20
+ dependsOn: ['auth.users.list'],
21
+ },
7
22
  { id: 'auth.roles.list', title: 'List roles', module: 'auth' },
8
- { id: 'auth.roles.manage', title: 'Manage roles', module: 'auth' },
9
- { id: 'auth.acl.manage', title: 'Manage ACLs', module: 'auth' },
23
+ {
24
+ id: 'auth.roles.manage',
25
+ title: 'Manage roles',
26
+ module: 'auth',
27
+ dependsOn: ['auth.roles.list'],
28
+ },
29
+ {
30
+ id: 'auth.acl.manage',
31
+ title: 'Manage ACLs',
32
+ module: 'auth',
33
+ dependsOn: ['auth.users.list', 'auth.roles.list'],
34
+ },
10
35
  { id: 'auth.sidebar.manage', title: 'Manage sidebar presets', module: 'auth' },
11
36
  ]
12
37
 
13
38
  export default features
14
-
@@ -200,9 +200,9 @@ export default function CustomersCompaniesPage() {
200
200
  const [total, setTotal] = React.useState(0)
201
201
  const [totalPages, setTotalPages] = React.useState(1)
202
202
  const [totalIsCapped, setTotalIsCapped] = React.useState(false)
203
- const [search, setSearch] = React.useState('')
204
203
  const pathname = usePathname()
205
204
  const searchParams = useSearchParams()
205
+ const [search, setSearch] = React.useState(() => searchParams?.get('search')?.trim() ?? '')
206
206
  // One-shot URL hydration used as the hook's initial value. The hook is the
207
207
  // single source of truth from this point on — the page MUST NOT keep a
208
208
  // parallel `useState<AdvancedFilterTree>` (see spec "Migration & Backward
@@ -208,9 +208,9 @@ export default function CustomersPeoplePage() {
208
208
  const [total, setTotal] = React.useState(0)
209
209
  const [totalPages, setTotalPages] = React.useState(1)
210
210
  const [totalIsCapped, setTotalIsCapped] = React.useState(false)
211
- const [search, setSearch] = React.useState('')
212
211
  const pathname = usePathname()
213
212
  const searchParams = useSearchParams()
213
+ const [search, setSearch] = React.useState(() => searchParams?.get('search')?.trim() ?? '')
214
214
  // One-shot URL hydration used as the hook's initial value. The hook is the
215
215
  // single source of truth from this point on — the page MUST NOT keep a
216
216
  // parallel `useState<AdvancedFilterTree>` (see spec "Migration & Backward
@@ -1311,6 +1311,7 @@ export function SalesDocumentForm({ onCreated, isSubmitting = false, initialKind
1311
1311
  id: 'lines',
1312
1312
  label: '',
1313
1313
  type: 'custom',
1314
+ rendersOwnError: true,
1314
1315
  component: ({ value, error, values, setValue }) => values?.documentKind === 'order' ? (
1315
1316
  <SalesOrderDraftLines
1316
1317
  currencyCode={typeof values.currencyCode === 'string' ? values.currencyCode : defaultCurrency}
@@ -161,7 +161,7 @@ export function SalesOrderDraftLines({
161
161
  {t('sales.documents.items.add', 'Add item')}
162
162
  </Button>
163
163
  </div>
164
- {error ? <p className="text-sm text-destructive" role="alert">{error}</p> : null}
164
+ {error ? <p className="text-sm text-status-error-text" role="alert">{error}</p> : null}
165
165
  <DataTable
166
166
  columns={columns}
167
167
  data={lines}