@chenchaolong/plugin-trade-compliance-workbench 0.1.68 → 0.1.69

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/dist/index.js CHANGED
@@ -13,7 +13,7 @@ const plugin = {
13
13
  meta: {
14
14
  name: packageJson.name,
15
15
  version: packageJson.version,
16
- level: 'system',
16
+ level: 'organization',
17
17
  targetApps: ['data-xpert'],
18
18
  targetAppMeta: {
19
19
  'data-xpert': {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,wCAAwC,EAAE,oCAAoC,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClK,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,gCAAgC,EAAE,6BAA6B,EAAE,sCAAsC,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AACzN,OAAO,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AAC5F,OAAO,EAAE,iCAAiC,EAAE,MAAM,+CAA+C,CAAC;AAClG,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACzF,MAAM,YAAY,GAAG,oCAAoC,CAAC;AAC1D,MAAM,MAAM,GAAG;IACX,IAAI,EAAE;QACF,IAAI,EAAE,WAAW,CAAC,IAAI;QACtB,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,KAAK,EAAE,QAAQ;QACf,UAAU,EAAE,CAAC,YAAY,CAAC;QAC1B,aAAa,EAAE;YACX,YAAY,EAAE;gBACV,KAAK,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,CAAC;gBAC/E,YAAY,EAAE;oBACV,wBAAwB;oBACxB,6BAA6B;oBAC7B,6BAA6B;oBAC7B,6BAA6B;oBAC7B,qCAAqC;iBACxC;gBACD,WAAW,EAAE;oBACT,QAAQ,EAAE;wBACN;4BACI,IAAI,EAAE,KAAK;4BACX,IAAI,EAAE,4BAA4B;4BAClC,WAAW,EAAE,4BAA4B;4BACzC,WAAW,EAAE,0FAA0F;4BACvG,IAAI,EAAE;gCACF,IAAI,EAAE,KAAK;gCACX,KAAK,EAAE,qBAAqB;gCAC5B,KAAK,EAAE,SAAS;6BACnB;4BACD,UAAU,EAAE;gCACR;oCACI,IAAI,EAAE,yBAAyB;oCAC/B,WAAW,EAAE,yBAAyB;oCACtC,WAAW,EAAE,iEAAiE;oCAC9E,MAAM,EAAE,OAAO;iCAClB;gCACD;oCACI,IAAI,EAAE,0BAA0B;oCAChC,WAAW,EAAE,0BAA0B;oCACvC,WAAW,EAAE,6DAA6D;oCAC1E,MAAM,EAAE,OAAO;iCAClB;gCACD;oCACI,IAAI,EAAE,4BAA4B;oCAClC,WAAW,EAAE,4BAA4B;oCACzC,WAAW,EAAE,uFAAuF;oCACpG,MAAM,EAAE,OAAO;iCAClB;6BACJ;yBACJ;wBACD;4BACI,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,yBAAyB;4BAC/B,WAAW,EAAE,4BAA4B;4BACzC,WAAW,EAAE,uFAAuF;yBACvG;wBACD;4BACI,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,gCAAgC;4BACtC,WAAW,EAAE,wBAAwB;4BACrC,WAAW,EAAE,8IAA8I;yBAC9J;wBACD;4BACI,IAAI,EAAE,oBAAoB;4BAC1B,IAAI,EAAE,sCAAsC;4BAC5C,WAAW,EAAE,+CAA+C;4BAC5D,WAAW,EAAE,iEAAiE;yBACjF;qBACJ;iBACJ;gBACD,OAAO,EAAE;oBACL,mBAAmB,EAAE,CAAC,gCAAgC,CAAC;oBACvD,aAAa,EAAE,CAAC,6BAA6B,CAAC;oBAC9C,iBAAiB,EAAE,CAAC,sCAAsC,CAAC;iBAC9D;aACJ;SACJ;QACD,QAAQ,EAAE,YAAY;QACtB,IAAI,EAAE;YACF,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,qBAAqB;YAC5B,KAAK,EAAE,SAAS;SACnB;QACD,WAAW,EAAE,4BAA4B;QACzC,WAAW,EAAE,uHAAuH;QACpI,QAAQ,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,SAAS,EAAE,UAAU,EAAE,oBAAoB,CAAC;QAC/F,MAAM,EAAE,cAAc;KACzB;IACD,MAAM,EAAE;QACJ,MAAM,EAAE,YAAY;QACpB,UAAU,EAAE,wCAAwC;QACpD,QAAQ,EAAE,8BAA8B,EAAE;KAC7C;IACD,SAAS,EAAE,iCAAiC;IAC5C,QAAQ,CAAC,GAAG;QACR,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC7D,OAAO,EAAE,MAAM,EAAE,8BAA8B,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACpE,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,GAAG;QACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IAChE,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,GAAG;QACZ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IAChE,CAAC;CACJ,CAAC;AACF,eAAe,MAAM,CAAC;AACtB,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,4CAA4C,CAAC;AAC3D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,mDAAmD,CAAC;AAClE,cAAc,+CAA+C,CAAC;AAC9D,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1443,10 +1443,10 @@
1443
1443
  function iconDataUri(name, tone) {
1444
1444
  const colors = {
1445
1445
  blue: '#2563eb',
1446
- green: '#139160',
1447
- orange: '#e07818',
1448
- violet: '#7c3aed',
1449
- slate: '#526174'
1446
+ green: '#64748b',
1447
+ orange: '#64748b',
1448
+ violet: '#64748b',
1449
+ slate: '#64748b'
1450
1450
  }
1451
1451
  const color = colors[tone] || colors.blue
1452
1452
  const paths = {
@@ -1476,16 +1476,40 @@
1476
1476
  if (!rows || rows.length === 0) return empty(emptyText || '暂无数据。')
1477
1477
  return h('div', { className: 'tcw-table-wrap' },
1478
1478
  h('table', { className: 'tcw-table' },
1479
- h('thead', null, h('tr', null, headers.map((item, index) => h('th', { key: index }, item)))),
1479
+ h('thead', null, h('tr', null, headers.map((item, index) => h('th', { key: index, className: tableHeaderClass(item, index, headers) }, item)))),
1480
1480
  h('tbody', null, rows.map((row, index) =>
1481
1481
  h('tr', { key: row.id || index, className: onRowClick ? 'clickable' : '', onClick: onRowClick ? () => onRowClick(row) : undefined },
1482
- mapRow(row, index).map((cell, cellIndex) => h('td', { key: cellIndex }, cell))
1482
+ mapRow(row, index).map((cell, cellIndex) => h('td', { key: cellIndex, className: tableCellClass(headers[cellIndex], cellIndex, headers) }, normalizeTableCell(cell)))
1483
1483
  )
1484
1484
  ))
1485
1485
  )
1486
1486
  )
1487
1487
  }
1488
1488
 
1489
+ function tableHeaderClass(header, index, headers) {
1490
+ return tableCellClass(header, index, headers)
1491
+ }
1492
+
1493
+ function tableCellClass(header, index, headers) {
1494
+ const classes = []
1495
+ const headerText = String(header || '')
1496
+ if (index === 0 && typeof header !== 'string') classes.push('tcw-select-cell')
1497
+ if (headerText === '序号') classes.push('tcw-index-cell')
1498
+ if (index === headers.length - 1 && headerText === '操作') classes.push('tcw-actions-cell')
1499
+ if (/状态|确认/.test(headerText)) classes.push('tcw-status-cell')
1500
+ if (/说明|描述|英文|商品|文件|标题|买方|卖方|来源|型号|模板工作表/.test(headerText)) classes.push('tcw-text-cell')
1501
+ return classes.join(' ')
1502
+ }
1503
+
1504
+ function normalizeTableCell(cell) {
1505
+ if (cell === undefined || cell === null) return h('span', { className: 'tcw-cell-text muted', title: '-' }, '-')
1506
+ if (typeof cell === 'string' || typeof cell === 'number' || typeof cell === 'boolean') {
1507
+ const text = String(cell)
1508
+ return h('span', { className: 'tcw-cell-text', title: text }, text)
1509
+ }
1510
+ return cell
1511
+ }
1512
+
1489
1513
  function compareBlock(label, data) {
1490
1514
  const entries = Object.entries(isObject(data) ? data : {})
1491
1515
  return h('section', { className: 'tcw-compare' },
@@ -2134,10 +2158,10 @@ button, input, textarea, select { font: inherit; letter-spacing: 0; }
2134
2158
  height: 22px;
2135
2159
  color: currentColor;
2136
2160
  }
2137
- .tcw-metric-icon.blue { background: #e8f0ff; color: var(--tcw-primary); }
2138
- .tcw-metric-icon.green { background: #e7f8ef; color: var(--tcw-success); }
2139
- .tcw-metric-icon.orange { background: #fff2df; color: var(--tcw-warning); }
2140
- .tcw-metric-icon.violet { background: #f1eaff; color: var(--tcw-violet); }
2161
+ .tcw-metric-icon.blue { background: #eef2f7; color: var(--tcw-primary); }
2162
+ .tcw-metric-icon.green { background: #eef2f7; color: var(--tcw-slate); }
2163
+ .tcw-metric-icon.orange { background: #eef2f7; color: var(--tcw-slate); }
2164
+ .tcw-metric-icon.violet { background: #eef2f7; color: var(--tcw-slate); }
2141
2165
  .tcw-metric-icon.slate { background: #eef2f6; color: var(--tcw-slate); }
2142
2166
  .tcw-metric-body { display: grid; gap: 2px; }
2143
2167
  .tcw-metric-body span { color: var(--tcw-muted); font-size: 12px; }
@@ -2148,9 +2172,15 @@ button, input, textarea, select { font: inherit; letter-spacing: 0; }
2148
2172
  .tcw-field-check input { width: 18px; height: 18px; min-height: 18px; padding: 0; }
2149
2173
  .tcw-check { display: inline-flex; align-items: center; gap: 6px; min-height: 36px; color: var(--tcw-muted); font-size: 13px; }
2150
2174
  .tcw-table-wrap { overflow: auto; border: 1px solid var(--tcw-border); border-radius: 8px; }
2151
- .tcw-table { width: 100%; min-width: 840px; border-collapse: collapse; font-size: 12px; }
2152
- .tcw-table th, .tcw-table td { border-bottom: 1px solid var(--tcw-border); padding: 10px; text-align: left; vertical-align: top; }
2175
+ .tcw-table { width: 100%; min-width: 1120px; table-layout: fixed; border-collapse: collapse; font-size: 12px; }
2176
+ .tcw-table th, .tcw-table td { min-width: 96px; border-bottom: 1px solid var(--tcw-border); padding: 10px; text-align: left; vertical-align: top; }
2153
2177
  .tcw-table th { background: var(--tcw-soft); color: var(--tcw-muted); font-size: 11px; font-weight: 900; }
2178
+ .tcw-table th.tcw-select-cell, .tcw-table td.tcw-select-cell, .tcw-table th.tcw-index-cell, .tcw-table td.tcw-index-cell { width: 48px; min-width: 48px; }
2179
+ .tcw-table th.tcw-status-cell, .tcw-table td.tcw-status-cell { width: 108px; min-width: 108px; }
2180
+ .tcw-table th.tcw-actions-cell, .tcw-table td.tcw-actions-cell { position: sticky; right: 0; z-index: 2; width: 118px; min-width: 118px; background: var(--tcw-card); box-shadow: -8px 0 14px rgba(15, 23, 42, .05); }
2181
+ .tcw-table th.tcw-actions-cell { z-index: 3; background: var(--tcw-soft); }
2182
+ .tcw-cell-text { display: block; max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
2183
+ .tcw-text-cell .tcw-cell-text { max-width: 280px; }
2154
2184
  .tcw-table tr:last-child td { border-bottom: 0; }
2155
2185
  .tcw-table tr.clickable { cursor: pointer; }
2156
2186
  .tcw-table tr.clickable:hover td { background: color-mix(in srgb, var(--tcw-primary) 5%, transparent); }
@@ -2159,8 +2189,8 @@ button, input, textarea, select { font: inherit; letter-spacing: 0; }
2159
2189
  .tcw-list-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 8px; }
2160
2190
  .tcw-filter { display: inline-flex; align-items: center; gap: 8px; color: var(--tcw-muted); font-size: 13px; font-weight: 800; }
2161
2191
  .tcw-filter select { min-height: 34px; border: 1px solid var(--tcw-border); border-radius: 6px; background: var(--tcw-card); color: var(--tcw-text); padding: 6px 28px 6px 9px; }
2162
- .tcw-row-actions { display: flex; flex-wrap: wrap; gap: 6px; }
2163
- .tcw-mini-btn { min-height: 28px; border: 1px solid color-mix(in srgb, var(--tcw-primary) 35%, var(--tcw-border)); border-radius: 6px; background: color-mix(in srgb, var(--tcw-primary) 6%, var(--tcw-card)); color: var(--tcw-primary); padding: 4px 8px; cursor: pointer; font-size: 12px; font-weight: 800; }
2192
+ .tcw-row-actions { display: grid; grid-template-columns: repeat(2, 46px); grid-auto-rows: 28px; gap: 6px; width: max-content; }
2193
+ .tcw-mini-btn { display: inline-flex; align-items: center; justify-content: center; width: 46px; min-width: 46px; min-height: 28px; border: 1px solid color-mix(in srgb, var(--tcw-primary) 35%, var(--tcw-border)); border-radius: 6px; background: color-mix(in srgb, var(--tcw-primary) 6%, var(--tcw-card)); color: var(--tcw-primary); padding: 4px 0; cursor: pointer; font-size: 12px; font-weight: 800; white-space: nowrap; }
2164
2194
  .tcw-mini-btn.active { background: var(--tcw-primary); color: #fff; }
2165
2195
  .tcw-mini-btn.danger { border-color: color-mix(in srgb, var(--tcw-danger) 35%, var(--tcw-border)); background: color-mix(in srgb, var(--tcw-danger) 6%, var(--tcw-card)); color: var(--tcw-danger); }
2166
2196
  .tcw-mini-btn:disabled { cursor: not-allowed; opacity: .5; }
@@ -2342,9 +2372,9 @@ button, input, textarea, select { font: inherit; letter-spacing: 0; }
2342
2372
  .tcw-evidence span { color: var(--tcw-muted); font-size: 11px; font-weight: 900; }
2343
2373
  .tcw-evidence strong { overflow-wrap: anywhere; font-size: 12px; }
2344
2374
  .tcw-status { display: inline-flex; width: fit-content; align-items: center; border-radius: 999px; padding: 3px 8px; font-size: 11px; font-weight: 900; }
2345
- .tcw-status.ok { background: #e8f7ef; color: var(--tcw-success); }
2346
- .tcw-status.warn { background: #fff4df; color: var(--tcw-warning); }
2347
- .tcw-status.danger { background: #fde8e6; color: var(--tcw-danger); }
2375
+ .tcw-status.ok { background: #eef2f7; color: var(--tcw-success); }
2376
+ .tcw-status.warn { background: #f1f5f9; color: var(--tcw-warning); }
2377
+ .tcw-status.danger { background: #f8eeee; color: var(--tcw-danger); }
2348
2378
  .tcw-status.muted { background: #eef2f6; color: var(--tcw-muted); }
2349
2379
  @media (max-width: 1040px) {
2350
2380
  .tcw-header, .tcw-main.with-drawer, .tcw-edit-grid { grid-template-columns: 1fr; }
@@ -2358,7 +2388,7 @@ button, input, textarea, select { font: inherit; letter-spacing: 0; }
2358
2388
 
2359
2389
  /* V2 process-oriented shell */
2360
2390
  :root {
2361
- --tcw-bg:#f4f7fb;
2391
+ --tcw-bg:#f6f8fb;
2362
2392
  --tcw-card:#ffffff;
2363
2393
  --tcw-soft:#f8fafc;
2364
2394
  --tcw-text:#172033;
@@ -2366,11 +2396,11 @@ button, input, textarea, select { font: inherit; letter-spacing: 0; }
2366
2396
  --tcw-border:#dbe5f0;
2367
2397
  --tcw-primary:#2563eb;
2368
2398
  --tcw-primary-dark:#1d4ed8;
2369
- --tcw-success:#139160;
2370
- --tcw-warning:#e07818;
2371
- --tcw-danger:#bd2f2f;
2372
- --tcw-violet:#7c3aed;
2373
- --tcw-slate:#526174;
2399
+ --tcw-success:#475569;
2400
+ --tcw-warning:#64748b;
2401
+ --tcw-danger:#b42318;
2402
+ --tcw-violet:#64748b;
2403
+ --tcw-slate:#64748b;
2374
2404
  --tcw-shadow:0 14px 42px rgba(20, 35, 55, .08);
2375
2405
  }
2376
2406
  body { background: var(--tcw-bg); letter-spacing: 0; }
@@ -2405,7 +2435,7 @@ body { background: var(--tcw-bg); letter-spacing: 0; }
2405
2435
  width: 34px;
2406
2436
  height: 34px;
2407
2437
  border-radius: 8px;
2408
- background: #e8f0ff;
2438
+ background: #eef2f7;
2409
2439
  color: var(--tcw-primary);
2410
2440
  font-size: 12px;
2411
2441
  font-weight: 900;
@@ -2428,9 +2458,9 @@ body { background: var(--tcw-bg); letter-spacing: 0; }
2428
2458
  font-weight: 800;
2429
2459
  }
2430
2460
  .tcw-tab.active {
2431
- border-color: #d8e7ff;
2432
- background: #eff6ff;
2433
- color: #174ea6;
2461
+ border-color: #dbe5f0;
2462
+ background: #f1f5f9;
2463
+ color: var(--tcw-primary);
2434
2464
  }
2435
2465
  .tcw-overview-panel {
2436
2466
  display: grid;
@@ -2457,7 +2487,7 @@ body { background: var(--tcw-bg); letter-spacing: 0; }
2457
2487
  }
2458
2488
  .tcw-overview-tab:last-child { border-right: 0; }
2459
2489
  .tcw-overview-tab.active {
2460
- background: #eff6ff;
2490
+ background: #f1f5f9;
2461
2491
  color: var(--tcw-primary);
2462
2492
  }
2463
2493
  .tcw-tab em {
@@ -2484,10 +2514,10 @@ body { background: var(--tcw-bg); letter-spacing: 0; }
2484
2514
  height: 16px;
2485
2515
  color: currentColor;
2486
2516
  }
2487
- .tcw-nav-icon.blue { background: #e8f0ff; color: var(--tcw-primary); }
2488
- .tcw-nav-icon.green { background: #e7f8ef; color: var(--tcw-success); }
2489
- .tcw-nav-icon.orange { background: #fff2df; color: var(--tcw-warning); }
2490
- .tcw-nav-icon.violet { background: #f1eaff; color: var(--tcw-violet); }
2517
+ .tcw-nav-icon.blue { background: #eef2f7; color: var(--tcw-primary); }
2518
+ .tcw-nav-icon.green { background: #eef2f7; color: var(--tcw-slate); }
2519
+ .tcw-nav-icon.orange { background: #eef2f7; color: var(--tcw-slate); }
2520
+ .tcw-nav-icon.violet { background: #eef2f7; color: var(--tcw-slate); }
2491
2521
  .tcw-nav-icon.slate { background: #eef2f6; color: var(--tcw-slate); }
2492
2522
  .tcw-workspace {
2493
2523
  display: grid;
@@ -2540,7 +2570,7 @@ body { background: var(--tcw-bg); letter-spacing: 0; }
2540
2570
  min-height: auto;
2541
2571
  align-items: center;
2542
2572
  border-bottom: 1px solid var(--tcw-border);
2543
- background: linear-gradient(90deg, #ffffff, #f7fbff);
2573
+ background: var(--tcw-card);
2544
2574
  padding: 20px 22px;
2545
2575
  }
2546
2576
  .tcw-business-head h2 { font-size: 18px; }
@@ -2564,8 +2594,8 @@ body { background: var(--tcw-bg); letter-spacing: 0; }
2564
2594
  }
2565
2595
  .tcw-btn-primary:hover:not(:disabled) { background: var(--tcw-primary-dark); }
2566
2596
  .tcw-upload {
2567
- border-color: #bcd3ff;
2568
- background: #eff6ff;
2597
+ border-color: var(--tcw-border);
2598
+ background: var(--tcw-soft);
2569
2599
  color: var(--tcw-primary);
2570
2600
  }
2571
2601
  .tcw-table-wrap {
@@ -2578,10 +2608,11 @@ body { background: var(--tcw-bg); letter-spacing: 0; }
2578
2608
  font-size: 11px;
2579
2609
  }
2580
2610
  .tcw-table td { background: var(--tcw-card); }
2581
- .tcw-table tr:hover td { background: #fbfdff; }
2582
- .tcw-status.ok { background: #e7f8ef; color: var(--tcw-success); }
2583
- .tcw-status.warn { background: #fff2df; color: #b35b00; }
2584
- .tcw-status.danger { background: #fde8e6; color: var(--tcw-danger); }
2611
+ .tcw-table tr:hover td { background: #f8fafc; }
2612
+ .tcw-table tr:hover td.tcw-actions-cell { background: var(--tcw-card); }
2613
+ .tcw-status.ok { background: #eef2f7; color: var(--tcw-success); }
2614
+ .tcw-status.warn { background: #f1f5f9; color: var(--tcw-warning); }
2615
+ .tcw-status.danger { background: #f8eeee; color: var(--tcw-danger); }
2585
2616
  .tcw-status.muted { background: #eef2f6; color: var(--tcw-muted); }
2586
2617
  @media (max-width: 1280px) {
2587
2618
  .tcw-shell { grid-template-columns: 230px minmax(0, 1fr); }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chenchaolong/plugin-trade-compliance-workbench",
3
- "version": "0.1.68",
3
+ "version": "0.1.69",
4
4
  "description": "Trade Compliance Workbench app plugin for controlled goods review, supplier product management, and customs workbook generation.",
5
5
  "author": {
6
6
  "name": "XpertAI",
@@ -39,7 +39,7 @@
39
39
  },
40
40
  "xpert": {
41
41
  "plugin": {
42
- "level": "system"
42
+ "level": "organization"
43
43
  }
44
44
  },
45
45
  "dependencies": {