drawui-react 0.3.6 → 0.4.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.
package/dist/styles.css CHANGED
@@ -73,6 +73,14 @@
73
73
  inset: 0;
74
74
  overflow: hidden;
75
75
  background-color: var(--dw-canvas-bg);
76
+ user-select: none;
77
+ -webkit-user-select: none;
78
+ }
79
+ .drawui-canvas-board input,
80
+ .drawui-canvas-board textarea,
81
+ .drawui-canvas-board [contenteditable='true'] {
82
+ user-select: text;
83
+ -webkit-user-select: text;
76
84
  }
77
85
  .drawui-canvas {
78
86
  display: block;
@@ -95,7 +103,7 @@
95
103
  border-radius: 14px;
96
104
  box-shadow: var(--dw-shadow-md);
97
105
  border: 1px solid var(--dw-panel-border);
98
- z-index: 100;
106
+ z-index: 900;
99
107
  }
100
108
  .drawui-toolbar-button {
101
109
  position: relative;
@@ -141,7 +149,7 @@
141
149
  top: 5px;
142
150
  left: 50%;
143
151
  transform: translateX(-50%);
144
- z-index: 100;
152
+ z-index: 900;
145
153
  }
146
154
  .drawui-toolbar-dropdown {
147
155
  position: relative;
@@ -292,6 +300,11 @@
292
300
  white-space: nowrap;
293
301
  justify-content: flex-start;
294
302
  }
303
+ .drawui-toolbar-export-divider {
304
+ height: 1px;
305
+ margin: 4px 8px;
306
+ background: var(--dw-panel-border);
307
+ }
295
308
  .drawui-toolbar-color-chip {
296
309
  position: absolute;
297
310
  right: 4px;
@@ -324,6 +337,241 @@
324
337
  .drawui-highlighter-swatch.active {
325
338
  box-shadow: inset 0 0 0 2px #fff, 0 0 0 2px var(--dw-primary);
326
339
  }
340
+ .drawui-sticky-panel {
341
+ grid-template-columns: 1fr;
342
+ gap: 10px;
343
+ padding: 12px;
344
+ }
345
+ .drawui-sticky-panel-head {
346
+ display: flex;
347
+ align-items: center;
348
+ gap: 6px;
349
+ user-select: none;
350
+ }
351
+ .drawui-sticky-panel-title {
352
+ font-size: 13px;
353
+ font-weight: 500;
354
+ line-height: 1;
355
+ color: var(--dw-text-strong);
356
+ }
357
+ .drawui-sticky-panel-key {
358
+ display: inline-flex;
359
+ align-items: center;
360
+ justify-content: center;
361
+ min-width: 16px;
362
+ height: 16px;
363
+ padding: 0 3px;
364
+ border-radius: 6px;
365
+ background: var(--dw-hover-bg);
366
+ color: var(--dw-text-muted);
367
+ font-size: 10px;
368
+ line-height: 1;
369
+ }
370
+ .drawui-sticky-panel-grid {
371
+ display: grid;
372
+ grid-template-columns: repeat(3, 54px);
373
+ gap: 8px;
374
+ }
375
+ .drawui-sticky-swatch {
376
+ box-sizing: border-box;
377
+ width: 54px;
378
+ height: 54px;
379
+ padding: 0;
380
+ border: 1px solid var(--dw-swatch-border);
381
+ border-radius: 10px;
382
+ cursor: pointer;
383
+ transition: transform 0.12s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.12s cubic-bezier(0.4, 0, 0.2, 1);
384
+ }
385
+ .drawui-sticky-swatch:hover {
386
+ transform: translateY(-1px);
387
+ box-shadow: var(--dw-shadow-sm);
388
+ }
389
+ .drawui-sticky-swatch.active {
390
+ box-shadow: inset 0 0 0 2px #fff, 0 0 0 2px var(--dw-primary);
391
+ }
392
+ .drawui-icon-panel {
393
+ position: absolute;
394
+ top: calc(100% + 14px);
395
+ left: 50%;
396
+ transform: translateX(-50%);
397
+ display: flex;
398
+ flex-direction: column;
399
+ gap: 10px;
400
+ width: 348px;
401
+ padding: 12px;
402
+ background: var(--dw-panel-bg);
403
+ backdrop-filter: blur(16px);
404
+ -webkit-backdrop-filter: blur(16px);
405
+ border-radius: 14px;
406
+ box-shadow: var(--dw-shadow-lg);
407
+ border: 1px solid var(--dw-panel-border);
408
+ background: var(--dw-panel-bg-deep);
409
+ animation: dropdownFadeIn 0.15s cubic-bezier(0.4, 0, 0.2, 1);
410
+ z-index: 500;
411
+ }
412
+ .drawui-icon-search {
413
+ display: flex;
414
+ align-items: center;
415
+ gap: 8px;
416
+ height: 34px;
417
+ padding: 0 10px;
418
+ border: 1px solid var(--dw-border-strong);
419
+ border-radius: 10px;
420
+ background: var(--dw-panel-bg-solid);
421
+ color: var(--dw-text-faint);
422
+ transition: border-color 0.12s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.12s cubic-bezier(0.4, 0, 0.2, 1);
423
+ }
424
+ .drawui-icon-search:focus-within {
425
+ border-color: var(--dw-primary);
426
+ box-shadow: 0 0 0 2px var(--dw-primary-weak);
427
+ }
428
+ .drawui-icon-search input {
429
+ flex: 1;
430
+ min-width: 0;
431
+ border: none;
432
+ outline: none;
433
+ background: transparent;
434
+ color: var(--dw-text-strong);
435
+ font-size: 13px;
436
+ font-family: inherit;
437
+ }
438
+ .drawui-icon-search input::placeholder {
439
+ color: var(--dw-text-faint);
440
+ }
441
+ .drawui-icon-count {
442
+ flex: none;
443
+ min-width: 22px;
444
+ height: 20px;
445
+ padding: 0 6px;
446
+ border-radius: 10px;
447
+ background: var(--dw-hover-bg);
448
+ color: var(--dw-text-muted);
449
+ font-size: 11px;
450
+ line-height: 20px;
451
+ text-align: center;
452
+ font-variant-numeric: tabular-nums;
453
+ }
454
+ .drawui-icon-cats {
455
+ display: flex;
456
+ flex-wrap: wrap;
457
+ gap: 4px;
458
+ }
459
+ .drawui-icon-cat {
460
+ display: inline-flex;
461
+ align-items: center;
462
+ gap: 5px;
463
+ height: 25px;
464
+ padding: 0 9px;
465
+ border: none;
466
+ border-radius: 13px;
467
+ background: transparent;
468
+ color: var(--dw-text-muted);
469
+ font-size: 12px;
470
+ font-family: inherit;
471
+ line-height: 1;
472
+ cursor: pointer;
473
+ transition: background 0.12s cubic-bezier(0.4, 0, 0.2, 1), color 0.12s cubic-bezier(0.4, 0, 0.2, 1);
474
+ }
475
+ .drawui-icon-cat .drawui-icon-dot {
476
+ width: 6px;
477
+ height: 6px;
478
+ border-radius: 50%;
479
+ background: var(--dw-icon-cat, var(--dw-text-faint));
480
+ opacity: 0.5;
481
+ transition: opacity 0.12s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.12s cubic-bezier(0.4, 0, 0.2, 1);
482
+ }
483
+ .drawui-icon-cat:hover {
484
+ background: var(--dw-hover-bg);
485
+ color: var(--dw-text-strong);
486
+ }
487
+ .drawui-icon-cat:hover .drawui-icon-dot {
488
+ opacity: 0.9;
489
+ }
490
+ .drawui-icon-cat.active {
491
+ color: var(--dw-icon-cat, var(--dw-primary));
492
+ background: var(--dw-icon-cat-soft, var(--dw-primary-weak));
493
+ font-weight: 500;
494
+ }
495
+ .drawui-icon-cat.active .drawui-icon-dot {
496
+ opacity: 1;
497
+ box-shadow: 0 0 0 3px var(--dw-icon-cat-soft, transparent);
498
+ }
499
+ .drawui-icon-card {
500
+ border: 1px solid var(--dw-border-strong);
501
+ border-radius: 10px;
502
+ background: var(--dw-panel-bg-solid);
503
+ overflow: hidden;
504
+ }
505
+ .drawui-icon-card-head {
506
+ display: flex;
507
+ align-items: center;
508
+ justify-content: space-between;
509
+ gap: 8px;
510
+ padding: 8px 10px 6px;
511
+ border-bottom: 1px solid var(--dw-border-strong);
512
+ }
513
+ .drawui-icon-card-head .drawui-icon-card-title {
514
+ font-size: 12px;
515
+ font-weight: 600;
516
+ color: var(--dw-text-strong);
517
+ }
518
+ .drawui-icon-card-head .drawui-icon-card-count {
519
+ font-size: 11px;
520
+ color: var(--dw-text-faint);
521
+ font-variant-numeric: tabular-nums;
522
+ }
523
+ .drawui-icon-grid {
524
+ display: grid;
525
+ grid-template-columns: repeat(6, 44px);
526
+ gap: 8px;
527
+ max-height: 248px;
528
+ padding: 10px;
529
+ overflow-y: auto;
530
+ overflow-x: hidden;
531
+ scrollbar-width: thin;
532
+ }
533
+ .drawui-icon-grid::-webkit-scrollbar {
534
+ width: 6px;
535
+ }
536
+ .drawui-icon-grid::-webkit-scrollbar-thumb {
537
+ border-radius: 3px;
538
+ background: var(--dw-border-strong);
539
+ }
540
+ .drawui-icon-grid::-webkit-scrollbar-track {
541
+ background: transparent;
542
+ }
543
+ .drawui-icon-item {
544
+ display: flex;
545
+ align-items: center;
546
+ justify-content: center;
547
+ width: 44px;
548
+ height: 44px;
549
+ padding: 0;
550
+ box-sizing: border-box;
551
+ border: 1px solid var(--dw-border-strong);
552
+ border-radius: 10px;
553
+ background: var(--dw-panel-bg-solid);
554
+ color: var(--dw-text-strong);
555
+ cursor: pointer;
556
+ transition: background 0.12s cubic-bezier(0.4, 0, 0.2, 1), border-color 0.12s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.12s cubic-bezier(0.4, 0, 0.2, 1), transform 0.12s cubic-bezier(0.4, 0, 0.2, 1);
557
+ }
558
+ .drawui-icon-item:hover {
559
+ border-color: var(--dw-icon-accent, var(--dw-primary));
560
+ background: var(--dw-icon-soft, var(--dw-hover-bg));
561
+ box-shadow: 0 2px 6px var(--dw-icon-ring, rgba(59, 130, 246, 0.2));
562
+ transform: translateY(-1px);
563
+ }
564
+ .drawui-icon-item:active {
565
+ transform: translateY(0);
566
+ box-shadow: none;
567
+ }
568
+ .drawui-icon-empty {
569
+ grid-column: 1 / -1;
570
+ padding: 18px 0;
571
+ text-align: center;
572
+ font-size: 12px;
573
+ color: var(--dw-text-faint);
574
+ }
327
575
  .drawui-zoom-control {
328
576
  position: fixed;
329
577
  top: 5px;
@@ -490,6 +738,9 @@
490
738
  color: var(--dw-success-strong);
491
739
  flex-shrink: 0;
492
740
  }
741
+ .drawui-toast-icon-error {
742
+ color: var(--dw-danger);
743
+ }
493
744
  @keyframes drawui-toast-in {
494
745
  from {
495
746
  opacity: 0;
@@ -1024,3 +1275,133 @@
1024
1275
  color: var(--dw-text-faint);
1025
1276
  padding: 0 2px;
1026
1277
  }
1278
+ .drawui-table-picker {
1279
+ position: absolute;
1280
+ top: calc(100% + 14px);
1281
+ left: 50%;
1282
+ transform: translateX(-50%);
1283
+ padding: 10px 12px 8px;
1284
+ background: var(--dw-panel-bg);
1285
+ backdrop-filter: blur(16px);
1286
+ -webkit-backdrop-filter: blur(16px);
1287
+ border-radius: 14px;
1288
+ box-shadow: var(--dw-shadow-lg);
1289
+ border: 1px solid var(--dw-panel-border);
1290
+ background: var(--dw-panel-bg-deep);
1291
+ animation: dropdownFadeIn 0.15s cubic-bezier(0.4, 0, 0.2, 1);
1292
+ z-index: 500;
1293
+ }
1294
+ .drawui-table-picker-hint {
1295
+ font-size: 11px;
1296
+ color: var(--dw-text-muted);
1297
+ margin-bottom: 8px;
1298
+ white-space: nowrap;
1299
+ }
1300
+ .drawui-table-picker-grid {
1301
+ display: grid;
1302
+ grid-template-columns: repeat(8, 18px);
1303
+ grid-auto-rows: 18px;
1304
+ gap: 3px;
1305
+ }
1306
+ .drawui-table-picker-cell {
1307
+ box-sizing: border-box;
1308
+ border: 1px solid var(--dw-dash);
1309
+ background: var(--dw-panel-bg);
1310
+ border-radius: 3px;
1311
+ padding: 0;
1312
+ cursor: pointer;
1313
+ }
1314
+ .drawui-table-picker-cell:hover {
1315
+ border-color: var(--dw-primary);
1316
+ background: var(--dw-primary-weak);
1317
+ }
1318
+ .drawui-table-toolbar {
1319
+ position: absolute;
1320
+ display: flex;
1321
+ align-items: center;
1322
+ gap: 2px;
1323
+ padding: 4px;
1324
+ background: var(--dw-panel-bg);
1325
+ backdrop-filter: blur(16px);
1326
+ -webkit-backdrop-filter: blur(16px);
1327
+ border-radius: 12px;
1328
+ box-shadow: var(--dw-shadow-lg);
1329
+ border: 1px solid var(--dw-panel-border);
1330
+ background: var(--dw-panel-bg-deep);
1331
+ z-index: 100;
1332
+ transform: translateX(-50%);
1333
+ white-space: nowrap;
1334
+ }
1335
+ .drawui-table-toolbar button {
1336
+ border: none;
1337
+ background: transparent;
1338
+ padding: 5px 9px;
1339
+ border-radius: 8px;
1340
+ font-size: 12px;
1341
+ line-height: 1;
1342
+ color: var(--dw-text);
1343
+ cursor: pointer;
1344
+ white-space: nowrap;
1345
+ }
1346
+ .drawui-table-toolbar button:hover:not(:disabled) {
1347
+ background: var(--dw-primary-weak);
1348
+ color: var(--dw-primary-hover);
1349
+ }
1350
+ .drawui-table-toolbar button:disabled {
1351
+ opacity: 0.35;
1352
+ cursor: default;
1353
+ }
1354
+ .drawui-table-split {
1355
+ position: relative;
1356
+ display: flex;
1357
+ align-items: center;
1358
+ }
1359
+ .drawui-table-toolbar .drawui-table-split .drawui-table-btn-caret {
1360
+ padding: 5px 4px;
1361
+ color: var(--dw-text-muted);
1362
+ }
1363
+ .drawui-table-toolbar .drawui-table-split .drawui-table-btn-caret.active {
1364
+ background: var(--dw-primary-weak);
1365
+ color: var(--dw-primary-hover);
1366
+ }
1367
+ .drawui-table-menu {
1368
+ position: absolute;
1369
+ top: calc(100% + 6px);
1370
+ left: 50%;
1371
+ transform: translateX(-50%);
1372
+ display: flex;
1373
+ flex-direction: column;
1374
+ min-width: 132px;
1375
+ padding: 4px;
1376
+ gap: 2px;
1377
+ background: var(--dw-panel-bg);
1378
+ backdrop-filter: blur(16px);
1379
+ -webkit-backdrop-filter: blur(16px);
1380
+ border-radius: 12px;
1381
+ box-shadow: var(--dw-shadow-lg);
1382
+ border: 1px solid var(--dw-panel-border);
1383
+ background: var(--dw-panel-bg-deep);
1384
+ z-index: 500;
1385
+ }
1386
+ .drawui-table-toolbar .drawui-table-menu button {
1387
+ width: 100%;
1388
+ text-align: left;
1389
+ padding: 6px 10px;
1390
+ font-size: 12px;
1391
+ }
1392
+ .drawui-table-cell-input {
1393
+ position: absolute;
1394
+ border: 1.5px solid var(--dw-primary, #3b82f6);
1395
+ border-radius: 4px;
1396
+ background: #ffffff;
1397
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.15);
1398
+ outline: none;
1399
+ font-family: sans-serif;
1400
+ box-sizing: border-box;
1401
+ pointer-events: auto;
1402
+ z-index: 55;
1403
+ white-space: pre-wrap;
1404
+ word-break: break-word;
1405
+ overflow: hidden;
1406
+ resize: none;
1407
+ }
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "drawui-react",
3
- "version": "0.3.6",
3
+ "version": "0.4.1",
4
4
  "type": "module",
5
- "description": "React wrapper for drawui-core canvas drawing (PNG / SVG / PDF export, UML, mind map)",
5
+ "description": "React wrapper for drawui-core canvas drawing (PNG / SVG / PDF export, table, UML, mind map)",
6
6
  "license": "MIT",
7
7
  "files": [
8
8
  "dist"
@@ -30,7 +30,7 @@
30
30
  "access": "public"
31
31
  },
32
32
  "dependencies": {
33
- "drawui-core": "0.3.6"
33
+ "drawui-core": "0.4.1"
34
34
  },
35
35
  "peerDependencies": {
36
36
  "react": "^18.3.1"