whipped 0.4.0 → 0.5.0
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.
|
@@ -21339,29 +21339,29 @@ const createLucideIcon = (iconName, iconNode) => {
|
|
|
21339
21339
|
* This source code is licensed under the ISC license.
|
|
21340
21340
|
* See the LICENSE file in the root directory of this source tree.
|
|
21341
21341
|
*/
|
|
21342
|
-
const __iconNode$
|
|
21342
|
+
const __iconNode$18 = [
|
|
21343
21343
|
["path", { d: "m12 19-7-7 7-7", key: "1l729n" }],
|
|
21344
21344
|
["path", { d: "M19 12H5", key: "x3x0zl" }]
|
|
21345
21345
|
];
|
|
21346
|
-
const ArrowLeft = createLucideIcon("arrow-left", __iconNode$
|
|
21346
|
+
const ArrowLeft = createLucideIcon("arrow-left", __iconNode$18);
|
|
21347
21347
|
/**
|
|
21348
21348
|
* @license lucide-react v0.577.0 - ISC
|
|
21349
21349
|
*
|
|
21350
21350
|
* This source code is licensed under the ISC license.
|
|
21351
21351
|
* See the LICENSE file in the root directory of this source tree.
|
|
21352
21352
|
*/
|
|
21353
|
-
const __iconNode$
|
|
21353
|
+
const __iconNode$17 = [
|
|
21354
21354
|
["path", { d: "M5 12h14", key: "1ays0h" }],
|
|
21355
21355
|
["path", { d: "m12 5 7 7-7 7", key: "xquz4c" }]
|
|
21356
21356
|
];
|
|
21357
|
-
const ArrowRight = createLucideIcon("arrow-right", __iconNode$
|
|
21357
|
+
const ArrowRight = createLucideIcon("arrow-right", __iconNode$17);
|
|
21358
21358
|
/**
|
|
21359
21359
|
* @license lucide-react v0.577.0 - ISC
|
|
21360
21360
|
*
|
|
21361
21361
|
* This source code is licensed under the ISC license.
|
|
21362
21362
|
* See the LICENSE file in the root directory of this source tree.
|
|
21363
21363
|
*/
|
|
21364
|
-
const __iconNode$
|
|
21364
|
+
const __iconNode$16 = [
|
|
21365
21365
|
["path", { d: "M12 7v14", key: "1akyts" }],
|
|
21366
21366
|
[
|
|
21367
21367
|
"path",
|
|
@@ -21371,14 +21371,14 @@ const __iconNode$12 = [
|
|
|
21371
21371
|
}
|
|
21372
21372
|
]
|
|
21373
21373
|
];
|
|
21374
|
-
const BookOpen = createLucideIcon("book-open", __iconNode$
|
|
21374
|
+
const BookOpen = createLucideIcon("book-open", __iconNode$16);
|
|
21375
21375
|
/**
|
|
21376
21376
|
* @license lucide-react v0.577.0 - ISC
|
|
21377
21377
|
*
|
|
21378
21378
|
* This source code is licensed under the ISC license.
|
|
21379
21379
|
* See the LICENSE file in the root directory of this source tree.
|
|
21380
21380
|
*/
|
|
21381
|
-
const __iconNode$
|
|
21381
|
+
const __iconNode$15 = [
|
|
21382
21382
|
[
|
|
21383
21383
|
"path",
|
|
21384
21384
|
{
|
|
@@ -21389,14 +21389,14 @@ const __iconNode$11 = [
|
|
|
21389
21389
|
["path", { d: "M8 11h8", key: "vwpz6n" }],
|
|
21390
21390
|
["path", { d: "M8 7h6", key: "1f0q6e" }]
|
|
21391
21391
|
];
|
|
21392
|
-
const BookText = createLucideIcon("book-text", __iconNode$
|
|
21392
|
+
const BookText = createLucideIcon("book-text", __iconNode$15);
|
|
21393
21393
|
/**
|
|
21394
21394
|
* @license lucide-react v0.577.0 - ISC
|
|
21395
21395
|
*
|
|
21396
21396
|
* This source code is licensed under the ISC license.
|
|
21397
21397
|
* See the LICENSE file in the root directory of this source tree.
|
|
21398
21398
|
*/
|
|
21399
|
-
const __iconNode$
|
|
21399
|
+
const __iconNode$14 = [
|
|
21400
21400
|
["path", { d: "M12 8V4H8", key: "hb8ula" }],
|
|
21401
21401
|
["rect", { width: "16", height: "12", x: "4", y: "8", rx: "2", key: "enze0r" }],
|
|
21402
21402
|
["path", { d: "M2 14h2", key: "vft8re" }],
|
|
@@ -21404,14 +21404,14 @@ const __iconNode$10 = [
|
|
|
21404
21404
|
["path", { d: "M15 13v2", key: "1xurst" }],
|
|
21405
21405
|
["path", { d: "M9 13v2", key: "rq6x2g" }]
|
|
21406
21406
|
];
|
|
21407
|
-
const Bot = createLucideIcon("bot", __iconNode$
|
|
21407
|
+
const Bot = createLucideIcon("bot", __iconNode$14);
|
|
21408
21408
|
/**
|
|
21409
21409
|
* @license lucide-react v0.577.0 - ISC
|
|
21410
21410
|
*
|
|
21411
21411
|
* This source code is licensed under the ISC license.
|
|
21412
21412
|
* See the LICENSE file in the root directory of this source tree.
|
|
21413
21413
|
*/
|
|
21414
|
-
const __iconNode
|
|
21414
|
+
const __iconNode$13 = [
|
|
21415
21415
|
["path", { d: "M12 18V5", key: "adv99a" }],
|
|
21416
21416
|
["path", { d: "M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4", key: "1e3is1" }],
|
|
21417
21417
|
["path", { d: "M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5", key: "1gqd8o" }],
|
|
@@ -21421,110 +21421,136 @@ const __iconNode$$ = [
|
|
|
21421
21421
|
["path", { d: "M6 18a4 4 0 0 1-2-7.464", key: "k1g0md" }],
|
|
21422
21422
|
["path", { d: "M6.003 5.125a4 4 0 0 0-2.526 5.77", key: "q97ue3" }]
|
|
21423
21423
|
];
|
|
21424
|
-
const Brain = createLucideIcon("brain", __iconNode
|
|
21424
|
+
const Brain = createLucideIcon("brain", __iconNode$13);
|
|
21425
21425
|
/**
|
|
21426
21426
|
* @license lucide-react v0.577.0 - ISC
|
|
21427
21427
|
*
|
|
21428
21428
|
* This source code is licensed under the ISC license.
|
|
21429
21429
|
* See the LICENSE file in the root directory of this source tree.
|
|
21430
21430
|
*/
|
|
21431
|
-
const __iconNode$
|
|
21432
|
-
const Check = createLucideIcon("check", __iconNode$
|
|
21431
|
+
const __iconNode$12 = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
|
|
21432
|
+
const Check = createLucideIcon("check", __iconNode$12);
|
|
21433
21433
|
/**
|
|
21434
21434
|
* @license lucide-react v0.577.0 - ISC
|
|
21435
21435
|
*
|
|
21436
21436
|
* This source code is licensed under the ISC license.
|
|
21437
21437
|
* See the LICENSE file in the root directory of this source tree.
|
|
21438
21438
|
*/
|
|
21439
|
-
const __iconNode$
|
|
21440
|
-
const ChevronDown = createLucideIcon("chevron-down", __iconNode$
|
|
21439
|
+
const __iconNode$11 = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
|
|
21440
|
+
const ChevronDown = createLucideIcon("chevron-down", __iconNode$11);
|
|
21441
21441
|
/**
|
|
21442
21442
|
* @license lucide-react v0.577.0 - ISC
|
|
21443
21443
|
*
|
|
21444
21444
|
* This source code is licensed under the ISC license.
|
|
21445
21445
|
* See the LICENSE file in the root directory of this source tree.
|
|
21446
21446
|
*/
|
|
21447
|
-
const __iconNode$
|
|
21448
|
-
const ChevronLeft = createLucideIcon("chevron-left", __iconNode$
|
|
21447
|
+
const __iconNode$10 = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
|
|
21448
|
+
const ChevronLeft = createLucideIcon("chevron-left", __iconNode$10);
|
|
21449
21449
|
/**
|
|
21450
21450
|
* @license lucide-react v0.577.0 - ISC
|
|
21451
21451
|
*
|
|
21452
21452
|
* This source code is licensed under the ISC license.
|
|
21453
21453
|
* See the LICENSE file in the root directory of this source tree.
|
|
21454
21454
|
*/
|
|
21455
|
-
const __iconNode
|
|
21456
|
-
const ChevronRight = createLucideIcon("chevron-right", __iconNode
|
|
21455
|
+
const __iconNode$$ = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
|
|
21456
|
+
const ChevronRight = createLucideIcon("chevron-right", __iconNode$$);
|
|
21457
21457
|
/**
|
|
21458
21458
|
* @license lucide-react v0.577.0 - ISC
|
|
21459
21459
|
*
|
|
21460
21460
|
* This source code is licensed under the ISC license.
|
|
21461
21461
|
* See the LICENSE file in the root directory of this source tree.
|
|
21462
21462
|
*/
|
|
21463
|
-
const __iconNode$
|
|
21464
|
-
const ChevronUp = createLucideIcon("chevron-up", __iconNode$
|
|
21463
|
+
const __iconNode$_ = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
|
|
21464
|
+
const ChevronUp = createLucideIcon("chevron-up", __iconNode$_);
|
|
21465
21465
|
/**
|
|
21466
21466
|
* @license lucide-react v0.577.0 - ISC
|
|
21467
21467
|
*
|
|
21468
21468
|
* This source code is licensed under the ISC license.
|
|
21469
21469
|
* See the LICENSE file in the root directory of this source tree.
|
|
21470
21470
|
*/
|
|
21471
|
-
const __iconNode$
|
|
21471
|
+
const __iconNode$Z = [
|
|
21472
21472
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
21473
21473
|
["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
|
|
21474
21474
|
["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
|
|
21475
21475
|
];
|
|
21476
|
-
const CircleAlert = createLucideIcon("circle-alert", __iconNode$
|
|
21476
|
+
const CircleAlert = createLucideIcon("circle-alert", __iconNode$Z);
|
|
21477
21477
|
/**
|
|
21478
21478
|
* @license lucide-react v0.577.0 - ISC
|
|
21479
21479
|
*
|
|
21480
21480
|
* This source code is licensed under the ISC license.
|
|
21481
21481
|
* See the LICENSE file in the root directory of this source tree.
|
|
21482
21482
|
*/
|
|
21483
|
-
const __iconNode$
|
|
21483
|
+
const __iconNode$Y = [
|
|
21484
21484
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
21485
21485
|
["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
|
|
21486
21486
|
];
|
|
21487
|
-
const CircleCheck = createLucideIcon("circle-check", __iconNode$
|
|
21487
|
+
const CircleCheck = createLucideIcon("circle-check", __iconNode$Y);
|
|
21488
21488
|
/**
|
|
21489
21489
|
* @license lucide-react v0.577.0 - ISC
|
|
21490
21490
|
*
|
|
21491
21491
|
* This source code is licensed under the ISC license.
|
|
21492
21492
|
* See the LICENSE file in the root directory of this source tree.
|
|
21493
21493
|
*/
|
|
21494
|
-
const __iconNode$
|
|
21495
|
-
|
|
21494
|
+
const __iconNode$X = [
|
|
21495
|
+
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
21496
|
+
["path", { d: "m15 9-6 6", key: "1uzhvr" }],
|
|
21497
|
+
["path", { d: "m9 9 6 6", key: "z0biqf" }]
|
|
21498
|
+
];
|
|
21499
|
+
const CircleX = createLucideIcon("circle-x", __iconNode$X);
|
|
21496
21500
|
/**
|
|
21497
21501
|
* @license lucide-react v0.577.0 - ISC
|
|
21498
21502
|
*
|
|
21499
21503
|
* This source code is licensed under the ISC license.
|
|
21500
21504
|
* See the LICENSE file in the root directory of this source tree.
|
|
21501
21505
|
*/
|
|
21502
|
-
const __iconNode$
|
|
21506
|
+
const __iconNode$W = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
|
|
21507
|
+
const Circle = createLucideIcon("circle", __iconNode$W);
|
|
21508
|
+
/**
|
|
21509
|
+
* @license lucide-react v0.577.0 - ISC
|
|
21510
|
+
*
|
|
21511
|
+
* This source code is licensed under the ISC license.
|
|
21512
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
21513
|
+
*/
|
|
21514
|
+
const __iconNode$V = [
|
|
21515
|
+
["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }],
|
|
21516
|
+
["path", { d: "M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2", key: "4jdomd" }],
|
|
21517
|
+
["path", { d: "M16 4h2a2 2 0 0 1 2 2v4", key: "3hqy98" }],
|
|
21518
|
+
["path", { d: "M21 14H11", key: "1bme5i" }],
|
|
21519
|
+
["path", { d: "m15 10-4 4 4 4", key: "5dvupr" }]
|
|
21520
|
+
];
|
|
21521
|
+
const ClipboardCopy = createLucideIcon("clipboard-copy", __iconNode$V);
|
|
21522
|
+
/**
|
|
21523
|
+
* @license lucide-react v0.577.0 - ISC
|
|
21524
|
+
*
|
|
21525
|
+
* This source code is licensed under the ISC license.
|
|
21526
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
21527
|
+
*/
|
|
21528
|
+
const __iconNode$U = [
|
|
21503
21529
|
["path", { d: "M11 14h10", key: "1w8e9d" }],
|
|
21504
21530
|
["path", { d: "M16 4h2a2 2 0 0 1 2 2v1.344", key: "1e62lh" }],
|
|
21505
21531
|
["path", { d: "m17 18 4-4-4-4", key: "z2g111" }],
|
|
21506
21532
|
["path", { d: "M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 1.793-1.113", key: "bjbb7m" }],
|
|
21507
21533
|
["rect", { x: "8", y: "2", width: "8", height: "4", rx: "1", key: "ublpy" }]
|
|
21508
21534
|
];
|
|
21509
|
-
const ClipboardPaste = createLucideIcon("clipboard-paste", __iconNode$
|
|
21535
|
+
const ClipboardPaste = createLucideIcon("clipboard-paste", __iconNode$U);
|
|
21510
21536
|
/**
|
|
21511
21537
|
* @license lucide-react v0.577.0 - ISC
|
|
21512
21538
|
*
|
|
21513
21539
|
* This source code is licensed under the ISC license.
|
|
21514
21540
|
* See the LICENSE file in the root directory of this source tree.
|
|
21515
21541
|
*/
|
|
21516
|
-
const __iconNode$
|
|
21542
|
+
const __iconNode$T = [
|
|
21517
21543
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
21518
21544
|
["path", { d: "M12 6v6l4 2", key: "mmk7yg" }]
|
|
21519
21545
|
];
|
|
21520
|
-
const Clock = createLucideIcon("clock", __iconNode$
|
|
21546
|
+
const Clock = createLucideIcon("clock", __iconNode$T);
|
|
21521
21547
|
/**
|
|
21522
21548
|
* @license lucide-react v0.577.0 - ISC
|
|
21523
21549
|
*
|
|
21524
21550
|
* This source code is licensed under the ISC license.
|
|
21525
21551
|
* See the LICENSE file in the root directory of this source tree.
|
|
21526
21552
|
*/
|
|
21527
|
-
const __iconNode$
|
|
21553
|
+
const __iconNode$S = [
|
|
21528
21554
|
["path", { d: "M12 20v2", key: "1lh1kg" }],
|
|
21529
21555
|
["path", { d: "M12 2v2", key: "tus03m" }],
|
|
21530
21556
|
["path", { d: "M17 20v2", key: "1rnc9c" }],
|
|
@@ -21540,40 +21566,40 @@ const __iconNode$Q = [
|
|
|
21540
21566
|
["rect", { x: "4", y: "4", width: "16", height: "16", rx: "2", key: "1vbyd7" }],
|
|
21541
21567
|
["rect", { x: "8", y: "8", width: "8", height: "8", rx: "1", key: "z9xiuo" }]
|
|
21542
21568
|
];
|
|
21543
|
-
const Cpu = createLucideIcon("cpu", __iconNode$
|
|
21569
|
+
const Cpu = createLucideIcon("cpu", __iconNode$S);
|
|
21544
21570
|
/**
|
|
21545
21571
|
* @license lucide-react v0.577.0 - ISC
|
|
21546
21572
|
*
|
|
21547
21573
|
* This source code is licensed under the ISC license.
|
|
21548
21574
|
* See the LICENSE file in the root directory of this source tree.
|
|
21549
21575
|
*/
|
|
21550
|
-
const __iconNode$
|
|
21576
|
+
const __iconNode$R = [
|
|
21551
21577
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
21552
21578
|
["line", { x1: "22", x2: "18", y1: "12", y2: "12", key: "l9bcsi" }],
|
|
21553
21579
|
["line", { x1: "6", x2: "2", y1: "12", y2: "12", key: "13hhkx" }],
|
|
21554
21580
|
["line", { x1: "12", x2: "12", y1: "6", y2: "2", key: "10w3f3" }],
|
|
21555
21581
|
["line", { x1: "12", x2: "12", y1: "22", y2: "18", key: "15g9kq" }]
|
|
21556
21582
|
];
|
|
21557
|
-
const Crosshair = createLucideIcon("crosshair", __iconNode$
|
|
21583
|
+
const Crosshair = createLucideIcon("crosshair", __iconNode$R);
|
|
21558
21584
|
/**
|
|
21559
21585
|
* @license lucide-react v0.577.0 - ISC
|
|
21560
21586
|
*
|
|
21561
21587
|
* This source code is licensed under the ISC license.
|
|
21562
21588
|
* See the LICENSE file in the root directory of this source tree.
|
|
21563
21589
|
*/
|
|
21564
|
-
const __iconNode$
|
|
21590
|
+
const __iconNode$Q = [
|
|
21565
21591
|
["path", { d: "M15 3h6v6", key: "1q9fwt" }],
|
|
21566
21592
|
["path", { d: "M10 14 21 3", key: "gplh6r" }],
|
|
21567
21593
|
["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
|
|
21568
21594
|
];
|
|
21569
|
-
const ExternalLink = createLucideIcon("external-link", __iconNode$
|
|
21595
|
+
const ExternalLink = createLucideIcon("external-link", __iconNode$Q);
|
|
21570
21596
|
/**
|
|
21571
21597
|
* @license lucide-react v0.577.0 - ISC
|
|
21572
21598
|
*
|
|
21573
21599
|
* This source code is licensed under the ISC license.
|
|
21574
21600
|
* See the LICENSE file in the root directory of this source tree.
|
|
21575
21601
|
*/
|
|
21576
|
-
const __iconNode$
|
|
21602
|
+
const __iconNode$P = [
|
|
21577
21603
|
[
|
|
21578
21604
|
"path",
|
|
21579
21605
|
{
|
|
@@ -21591,14 +21617,14 @@ const __iconNode$N = [
|
|
|
21591
21617
|
],
|
|
21592
21618
|
["path", { d: "m2 2 20 20", key: "1ooewy" }]
|
|
21593
21619
|
];
|
|
21594
|
-
const EyeOff = createLucideIcon("eye-off", __iconNode$
|
|
21620
|
+
const EyeOff = createLucideIcon("eye-off", __iconNode$P);
|
|
21595
21621
|
/**
|
|
21596
21622
|
* @license lucide-react v0.577.0 - ISC
|
|
21597
21623
|
*
|
|
21598
21624
|
* This source code is licensed under the ISC license.
|
|
21599
21625
|
* See the LICENSE file in the root directory of this source tree.
|
|
21600
21626
|
*/
|
|
21601
|
-
const __iconNode$
|
|
21627
|
+
const __iconNode$O = [
|
|
21602
21628
|
[
|
|
21603
21629
|
"path",
|
|
21604
21630
|
{
|
|
@@ -21608,14 +21634,14 @@ const __iconNode$M = [
|
|
|
21608
21634
|
],
|
|
21609
21635
|
["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
|
|
21610
21636
|
];
|
|
21611
|
-
const Eye = createLucideIcon("eye", __iconNode$
|
|
21637
|
+
const Eye = createLucideIcon("eye", __iconNode$O);
|
|
21612
21638
|
/**
|
|
21613
21639
|
* @license lucide-react v0.577.0 - ISC
|
|
21614
21640
|
*
|
|
21615
21641
|
* This source code is licensed under the ISC license.
|
|
21616
21642
|
* See the LICENSE file in the root directory of this source tree.
|
|
21617
21643
|
*/
|
|
21618
|
-
const __iconNode$
|
|
21644
|
+
const __iconNode$N = [
|
|
21619
21645
|
[
|
|
21620
21646
|
"path",
|
|
21621
21647
|
{
|
|
@@ -21628,14 +21654,33 @@ const __iconNode$L = [
|
|
|
21628
21654
|
["path", { d: "M16 13H8", key: "t4e002" }],
|
|
21629
21655
|
["path", { d: "M16 17H8", key: "z1uh3a" }]
|
|
21630
21656
|
];
|
|
21631
|
-
const FileText = createLucideIcon("file-text", __iconNode$
|
|
21657
|
+
const FileText = createLucideIcon("file-text", __iconNode$N);
|
|
21632
21658
|
/**
|
|
21633
21659
|
* @license lucide-react v0.577.0 - ISC
|
|
21634
21660
|
*
|
|
21635
21661
|
* This source code is licensed under the ISC license.
|
|
21636
21662
|
* See the LICENSE file in the root directory of this source tree.
|
|
21637
21663
|
*/
|
|
21638
|
-
const __iconNode$
|
|
21664
|
+
const __iconNode$M = [
|
|
21665
|
+
[
|
|
21666
|
+
"path",
|
|
21667
|
+
{
|
|
21668
|
+
d: "M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",
|
|
21669
|
+
key: "1oefj6"
|
|
21670
|
+
}
|
|
21671
|
+
],
|
|
21672
|
+
["path", { d: "M14 2v5a1 1 0 0 0 1 1h5", key: "wfsgrz" }],
|
|
21673
|
+
["path", { d: "M12 12v6", key: "3ahymv" }],
|
|
21674
|
+
["path", { d: "m15 15-3-3-3 3", key: "15xj92" }]
|
|
21675
|
+
];
|
|
21676
|
+
const FileUp = createLucideIcon("file-up", __iconNode$M);
|
|
21677
|
+
/**
|
|
21678
|
+
* @license lucide-react v0.577.0 - ISC
|
|
21679
|
+
*
|
|
21680
|
+
* This source code is licensed under the ISC license.
|
|
21681
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
21682
|
+
*/
|
|
21683
|
+
const __iconNode$L = [
|
|
21639
21684
|
[
|
|
21640
21685
|
"path",
|
|
21641
21686
|
{
|
|
@@ -21645,14 +21690,14 @@ const __iconNode$K = [
|
|
|
21645
21690
|
],
|
|
21646
21691
|
["path", { d: "M14 2v5a1 1 0 0 0 1 1h5", key: "wfsgrz" }]
|
|
21647
21692
|
];
|
|
21648
|
-
const File$1 = createLucideIcon("file", __iconNode$
|
|
21693
|
+
const File$1 = createLucideIcon("file", __iconNode$L);
|
|
21649
21694
|
/**
|
|
21650
21695
|
* @license lucide-react v0.577.0 - ISC
|
|
21651
21696
|
*
|
|
21652
21697
|
* This source code is licensed under the ISC license.
|
|
21653
21698
|
* See the LICENSE file in the root directory of this source tree.
|
|
21654
21699
|
*/
|
|
21655
|
-
const __iconNode$
|
|
21700
|
+
const __iconNode$K = [
|
|
21656
21701
|
["path", { d: "M18 19a5 5 0 0 1-5-5v8", key: "sz5oeg" }],
|
|
21657
21702
|
[
|
|
21658
21703
|
"path",
|
|
@@ -21664,14 +21709,14 @@ const __iconNode$J = [
|
|
|
21664
21709
|
["circle", { cx: "13", cy: "12", r: "2", key: "1j92g6" }],
|
|
21665
21710
|
["circle", { cx: "20", cy: "19", r: "2", key: "1obnsp" }]
|
|
21666
21711
|
];
|
|
21667
|
-
const FolderGit2 = createLucideIcon("folder-git-2", __iconNode$
|
|
21712
|
+
const FolderGit2 = createLucideIcon("folder-git-2", __iconNode$K);
|
|
21668
21713
|
/**
|
|
21669
21714
|
* @license lucide-react v0.577.0 - ISC
|
|
21670
21715
|
*
|
|
21671
21716
|
* This source code is licensed under the ISC license.
|
|
21672
21717
|
* See the LICENSE file in the root directory of this source tree.
|
|
21673
21718
|
*/
|
|
21674
|
-
const __iconNode$
|
|
21719
|
+
const __iconNode$J = [
|
|
21675
21720
|
[
|
|
21676
21721
|
"path",
|
|
21677
21722
|
{
|
|
@@ -21680,14 +21725,14 @@ const __iconNode$I = [
|
|
|
21680
21725
|
}
|
|
21681
21726
|
]
|
|
21682
21727
|
];
|
|
21683
|
-
const FolderOpen = createLucideIcon("folder-open", __iconNode$
|
|
21728
|
+
const FolderOpen = createLucideIcon("folder-open", __iconNode$J);
|
|
21684
21729
|
/**
|
|
21685
21730
|
* @license lucide-react v0.577.0 - ISC
|
|
21686
21731
|
*
|
|
21687
21732
|
* This source code is licensed under the ISC license.
|
|
21688
21733
|
* See the LICENSE file in the root directory of this source tree.
|
|
21689
21734
|
*/
|
|
21690
|
-
const __iconNode$
|
|
21735
|
+
const __iconNode$I = [
|
|
21691
21736
|
["path", { d: "M12 10v6", key: "1bos4e" }],
|
|
21692
21737
|
["path", { d: "M9 13h6", key: "1uhe8q" }],
|
|
21693
21738
|
[
|
|
@@ -21698,14 +21743,14 @@ const __iconNode$H = [
|
|
|
21698
21743
|
}
|
|
21699
21744
|
]
|
|
21700
21745
|
];
|
|
21701
|
-
const FolderPlus = createLucideIcon("folder-plus", __iconNode$
|
|
21746
|
+
const FolderPlus = createLucideIcon("folder-plus", __iconNode$I);
|
|
21702
21747
|
/**
|
|
21703
21748
|
* @license lucide-react v0.577.0 - ISC
|
|
21704
21749
|
*
|
|
21705
21750
|
* This source code is licensed under the ISC license.
|
|
21706
21751
|
* See the LICENSE file in the root directory of this source tree.
|
|
21707
21752
|
*/
|
|
21708
|
-
const __iconNode$
|
|
21753
|
+
const __iconNode$H = [
|
|
21709
21754
|
[
|
|
21710
21755
|
"path",
|
|
21711
21756
|
{
|
|
@@ -21714,86 +21759,86 @@ const __iconNode$G = [
|
|
|
21714
21759
|
}
|
|
21715
21760
|
]
|
|
21716
21761
|
];
|
|
21717
|
-
const Folder = createLucideIcon("folder", __iconNode$
|
|
21762
|
+
const Folder = createLucideIcon("folder", __iconNode$H);
|
|
21718
21763
|
/**
|
|
21719
21764
|
* @license lucide-react v0.577.0 - ISC
|
|
21720
21765
|
*
|
|
21721
21766
|
* This source code is licensed under the ISC license.
|
|
21722
21767
|
* See the LICENSE file in the root directory of this source tree.
|
|
21723
21768
|
*/
|
|
21724
|
-
const __iconNode$
|
|
21769
|
+
const __iconNode$G = [
|
|
21725
21770
|
["path", { d: "m12 14 4-4", key: "9kzdfg" }],
|
|
21726
21771
|
["path", { d: "M3.34 19a10 10 0 1 1 17.32 0", key: "19p75a" }]
|
|
21727
21772
|
];
|
|
21728
|
-
const Gauge = createLucideIcon("gauge", __iconNode$
|
|
21773
|
+
const Gauge = createLucideIcon("gauge", __iconNode$G);
|
|
21729
21774
|
/**
|
|
21730
21775
|
* @license lucide-react v0.577.0 - ISC
|
|
21731
21776
|
*
|
|
21732
21777
|
* This source code is licensed under the ISC license.
|
|
21733
21778
|
* See the LICENSE file in the root directory of this source tree.
|
|
21734
21779
|
*/
|
|
21735
|
-
const __iconNode$
|
|
21780
|
+
const __iconNode$F = [
|
|
21736
21781
|
["path", { d: "M15 6a9 9 0 0 0-9 9V3", key: "1cii5b" }],
|
|
21737
21782
|
["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }],
|
|
21738
21783
|
["circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" }]
|
|
21739
21784
|
];
|
|
21740
|
-
const GitBranch = createLucideIcon("git-branch", __iconNode$
|
|
21785
|
+
const GitBranch = createLucideIcon("git-branch", __iconNode$F);
|
|
21741
21786
|
/**
|
|
21742
21787
|
* @license lucide-react v0.577.0 - ISC
|
|
21743
21788
|
*
|
|
21744
21789
|
* This source code is licensed under the ISC license.
|
|
21745
21790
|
* See the LICENSE file in the root directory of this source tree.
|
|
21746
21791
|
*/
|
|
21747
|
-
const __iconNode$
|
|
21792
|
+
const __iconNode$E = [
|
|
21748
21793
|
["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }],
|
|
21749
21794
|
["line", { x1: "3", x2: "9", y1: "12", y2: "12", key: "1dyftd" }],
|
|
21750
21795
|
["line", { x1: "15", x2: "21", y1: "12", y2: "12", key: "oup4p8" }]
|
|
21751
21796
|
];
|
|
21752
|
-
const GitCommitHorizontal = createLucideIcon("git-commit-horizontal", __iconNode$
|
|
21797
|
+
const GitCommitHorizontal = createLucideIcon("git-commit-horizontal", __iconNode$E);
|
|
21753
21798
|
/**
|
|
21754
21799
|
* @license lucide-react v0.577.0 - ISC
|
|
21755
21800
|
*
|
|
21756
21801
|
* This source code is licensed under the ISC license.
|
|
21757
21802
|
* See the LICENSE file in the root directory of this source tree.
|
|
21758
21803
|
*/
|
|
21759
|
-
const __iconNode$
|
|
21804
|
+
const __iconNode$D = [
|
|
21760
21805
|
["circle", { cx: "18", cy: "18", r: "3", key: "1xkwt0" }],
|
|
21761
21806
|
["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }],
|
|
21762
21807
|
["path", { d: "M6 21V9a9 9 0 0 0 9 9", key: "7kw0sc" }]
|
|
21763
21808
|
];
|
|
21764
|
-
const GitMerge = createLucideIcon("git-merge", __iconNode$
|
|
21809
|
+
const GitMerge = createLucideIcon("git-merge", __iconNode$D);
|
|
21765
21810
|
/**
|
|
21766
21811
|
* @license lucide-react v0.577.0 - ISC
|
|
21767
21812
|
*
|
|
21768
21813
|
* This source code is licensed under the ISC license.
|
|
21769
21814
|
* See the LICENSE file in the root directory of this source tree.
|
|
21770
21815
|
*/
|
|
21771
|
-
const __iconNode$
|
|
21816
|
+
const __iconNode$C = [
|
|
21772
21817
|
["circle", { cx: "18", cy: "18", r: "3", key: "1xkwt0" }],
|
|
21773
21818
|
["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }],
|
|
21774
21819
|
["path", { d: "M13 6h3a2 2 0 0 1 2 2v7", key: "1yeb86" }],
|
|
21775
21820
|
["line", { x1: "6", x2: "6", y1: "9", y2: "21", key: "rroup" }]
|
|
21776
21821
|
];
|
|
21777
|
-
const GitPullRequest = createLucideIcon("git-pull-request", __iconNode$
|
|
21822
|
+
const GitPullRequest = createLucideIcon("git-pull-request", __iconNode$C);
|
|
21778
21823
|
/**
|
|
21779
21824
|
* @license lucide-react v0.577.0 - ISC
|
|
21780
21825
|
*
|
|
21781
21826
|
* This source code is licensed under the ISC license.
|
|
21782
21827
|
* See the LICENSE file in the root directory of this source tree.
|
|
21783
21828
|
*/
|
|
21784
|
-
const __iconNode$
|
|
21829
|
+
const __iconNode$B = [
|
|
21785
21830
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
21786
21831
|
["path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20", key: "13o1zl" }],
|
|
21787
21832
|
["path", { d: "M2 12h20", key: "9i4pu4" }]
|
|
21788
21833
|
];
|
|
21789
|
-
const Globe = createLucideIcon("globe", __iconNode$
|
|
21834
|
+
const Globe = createLucideIcon("globe", __iconNode$B);
|
|
21790
21835
|
/**
|
|
21791
21836
|
* @license lucide-react v0.577.0 - ISC
|
|
21792
21837
|
*
|
|
21793
21838
|
* This source code is licensed under the ISC license.
|
|
21794
21839
|
* See the LICENSE file in the root directory of this source tree.
|
|
21795
21840
|
*/
|
|
21796
|
-
const __iconNode$
|
|
21841
|
+
const __iconNode$A = [
|
|
21797
21842
|
["circle", { cx: "9", cy: "12", r: "1", key: "1vctgf" }],
|
|
21798
21843
|
["circle", { cx: "9", cy: "5", r: "1", key: "hp0tcf" }],
|
|
21799
21844
|
["circle", { cx: "9", cy: "19", r: "1", key: "fkjjf6" }],
|
|
@@ -21801,14 +21846,14 @@ const __iconNode$z = [
|
|
|
21801
21846
|
["circle", { cx: "15", cy: "5", r: "1", key: "19l28e" }],
|
|
21802
21847
|
["circle", { cx: "15", cy: "19", r: "1", key: "f4zoj3" }]
|
|
21803
21848
|
];
|
|
21804
|
-
const GripVertical = createLucideIcon("grip-vertical", __iconNode$
|
|
21849
|
+
const GripVertical = createLucideIcon("grip-vertical", __iconNode$A);
|
|
21805
21850
|
/**
|
|
21806
21851
|
* @license lucide-react v0.577.0 - ISC
|
|
21807
21852
|
*
|
|
21808
21853
|
* This source code is licensed under the ISC license.
|
|
21809
21854
|
* See the LICENSE file in the root directory of this source tree.
|
|
21810
21855
|
*/
|
|
21811
|
-
const __iconNode$
|
|
21856
|
+
const __iconNode$z = [
|
|
21812
21857
|
[
|
|
21813
21858
|
"path",
|
|
21814
21859
|
{
|
|
@@ -21831,84 +21876,84 @@ const __iconNode$y = [
|
|
|
21831
21876
|
}
|
|
21832
21877
|
]
|
|
21833
21878
|
];
|
|
21834
|
-
const Layers = createLucideIcon("layers", __iconNode$
|
|
21879
|
+
const Layers = createLucideIcon("layers", __iconNode$z);
|
|
21835
21880
|
/**
|
|
21836
21881
|
* @license lucide-react v0.577.0 - ISC
|
|
21837
21882
|
*
|
|
21838
21883
|
* This source code is licensed under the ISC license.
|
|
21839
21884
|
* See the LICENSE file in the root directory of this source tree.
|
|
21840
21885
|
*/
|
|
21841
|
-
const __iconNode$
|
|
21886
|
+
const __iconNode$y = [
|
|
21842
21887
|
["path", { d: "M9 17H7A5 5 0 0 1 7 7h2", key: "8i5ue5" }],
|
|
21843
21888
|
["path", { d: "M15 7h2a5 5 0 1 1 0 10h-2", key: "1b9ql8" }],
|
|
21844
21889
|
["line", { x1: "8", x2: "16", y1: "12", y2: "12", key: "1jonct" }]
|
|
21845
21890
|
];
|
|
21846
|
-
const Link2 = createLucideIcon("link-2", __iconNode$
|
|
21891
|
+
const Link2 = createLucideIcon("link-2", __iconNode$y);
|
|
21847
21892
|
/**
|
|
21848
21893
|
* @license lucide-react v0.577.0 - ISC
|
|
21849
21894
|
*
|
|
21850
21895
|
* This source code is licensed under the ISC license.
|
|
21851
21896
|
* See the LICENSE file in the root directory of this source tree.
|
|
21852
21897
|
*/
|
|
21853
|
-
const __iconNode$
|
|
21898
|
+
const __iconNode$x = [
|
|
21854
21899
|
["path", { d: "M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71", key: "1cjeqo" }],
|
|
21855
21900
|
["path", { d: "M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71", key: "19qd67" }]
|
|
21856
21901
|
];
|
|
21857
|
-
const Link = createLucideIcon("link", __iconNode$
|
|
21902
|
+
const Link = createLucideIcon("link", __iconNode$x);
|
|
21858
21903
|
/**
|
|
21859
21904
|
* @license lucide-react v0.577.0 - ISC
|
|
21860
21905
|
*
|
|
21861
21906
|
* This source code is licensed under the ISC license.
|
|
21862
21907
|
* See the LICENSE file in the root directory of this source tree.
|
|
21863
21908
|
*/
|
|
21864
|
-
const __iconNode$
|
|
21909
|
+
const __iconNode$w = [
|
|
21865
21910
|
["path", { d: "M13 5h8", key: "a7qcls" }],
|
|
21866
21911
|
["path", { d: "M13 12h8", key: "h98zly" }],
|
|
21867
21912
|
["path", { d: "M13 19h8", key: "c3s6r1" }],
|
|
21868
21913
|
["path", { d: "m3 17 2 2 4-4", key: "1jhpwq" }],
|
|
21869
21914
|
["path", { d: "m3 7 2 2 4-4", key: "1obspn" }]
|
|
21870
21915
|
];
|
|
21871
|
-
const ListChecks = createLucideIcon("list-checks", __iconNode$
|
|
21916
|
+
const ListChecks = createLucideIcon("list-checks", __iconNode$w);
|
|
21872
21917
|
/**
|
|
21873
21918
|
* @license lucide-react v0.577.0 - ISC
|
|
21874
21919
|
*
|
|
21875
21920
|
* This source code is licensed under the ISC license.
|
|
21876
21921
|
* See the LICENSE file in the root directory of this source tree.
|
|
21877
21922
|
*/
|
|
21878
|
-
const __iconNode$
|
|
21923
|
+
const __iconNode$v = [
|
|
21879
21924
|
["path", { d: "M8 5h13", key: "1pao27" }],
|
|
21880
21925
|
["path", { d: "M13 12h8", key: "h98zly" }],
|
|
21881
21926
|
["path", { d: "M13 19h8", key: "c3s6r1" }],
|
|
21882
21927
|
["path", { d: "M3 10a2 2 0 0 0 2 2h3", key: "1npucw" }],
|
|
21883
21928
|
["path", { d: "M3 5v12a2 2 0 0 0 2 2h3", key: "x1gjn2" }]
|
|
21884
21929
|
];
|
|
21885
|
-
const ListTree = createLucideIcon("list-tree", __iconNode$
|
|
21930
|
+
const ListTree = createLucideIcon("list-tree", __iconNode$v);
|
|
21886
21931
|
/**
|
|
21887
21932
|
* @license lucide-react v0.577.0 - ISC
|
|
21888
21933
|
*
|
|
21889
21934
|
* This source code is licensed under the ISC license.
|
|
21890
21935
|
* See the LICENSE file in the root directory of this source tree.
|
|
21891
21936
|
*/
|
|
21892
|
-
const __iconNode$
|
|
21893
|
-
const LoaderCircle = createLucideIcon("loader-circle", __iconNode$
|
|
21937
|
+
const __iconNode$u = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
|
|
21938
|
+
const LoaderCircle = createLucideIcon("loader-circle", __iconNode$u);
|
|
21894
21939
|
/**
|
|
21895
21940
|
* @license lucide-react v0.577.0 - ISC
|
|
21896
21941
|
*
|
|
21897
21942
|
* This source code is licensed under the ISC license.
|
|
21898
21943
|
* See the LICENSE file in the root directory of this source tree.
|
|
21899
21944
|
*/
|
|
21900
|
-
const __iconNode$
|
|
21945
|
+
const __iconNode$t = [
|
|
21901
21946
|
["rect", { width: "18", height: "11", x: "3", y: "11", rx: "2", ry: "2", key: "1w4ew1" }],
|
|
21902
21947
|
["path", { d: "M7 11V7a5 5 0 0 1 10 0v4", key: "fwvmzm" }]
|
|
21903
21948
|
];
|
|
21904
|
-
const Lock = createLucideIcon("lock", __iconNode$
|
|
21949
|
+
const Lock = createLucideIcon("lock", __iconNode$t);
|
|
21905
21950
|
/**
|
|
21906
21951
|
* @license lucide-react v0.577.0 - ISC
|
|
21907
21952
|
*
|
|
21908
21953
|
* This source code is licensed under the ISC license.
|
|
21909
21954
|
* See the LICENSE file in the root directory of this source tree.
|
|
21910
21955
|
*/
|
|
21911
|
-
const __iconNode$
|
|
21956
|
+
const __iconNode$s = [
|
|
21912
21957
|
[
|
|
21913
21958
|
"path",
|
|
21914
21959
|
{
|
|
@@ -21917,14 +21962,14 @@ const __iconNode$r = [
|
|
|
21917
21962
|
}
|
|
21918
21963
|
]
|
|
21919
21964
|
];
|
|
21920
|
-
const MessageSquare = createLucideIcon("message-square", __iconNode$
|
|
21965
|
+
const MessageSquare = createLucideIcon("message-square", __iconNode$s);
|
|
21921
21966
|
/**
|
|
21922
21967
|
* @license lucide-react v0.577.0 - ISC
|
|
21923
21968
|
*
|
|
21924
21969
|
* This source code is licensed under the ISC license.
|
|
21925
21970
|
* See the LICENSE file in the root directory of this source tree.
|
|
21926
21971
|
*/
|
|
21927
|
-
const __iconNode$
|
|
21972
|
+
const __iconNode$r = [
|
|
21928
21973
|
["path", { d: "m15 9-6 6", key: "1uzhvr" }],
|
|
21929
21974
|
[
|
|
21930
21975
|
"path",
|
|
@@ -21935,14 +21980,14 @@ const __iconNode$q = [
|
|
|
21935
21980
|
],
|
|
21936
21981
|
["path", { d: "m9 9 6 6", key: "z0biqf" }]
|
|
21937
21982
|
];
|
|
21938
|
-
const OctagonX = createLucideIcon("octagon-x", __iconNode$
|
|
21983
|
+
const OctagonX = createLucideIcon("octagon-x", __iconNode$r);
|
|
21939
21984
|
/**
|
|
21940
21985
|
* @license lucide-react v0.577.0 - ISC
|
|
21941
21986
|
*
|
|
21942
21987
|
* This source code is licensed under the ISC license.
|
|
21943
21988
|
* See the LICENSE file in the root directory of this source tree.
|
|
21944
21989
|
*/
|
|
21945
|
-
const __iconNode$
|
|
21990
|
+
const __iconNode$q = [
|
|
21946
21991
|
[
|
|
21947
21992
|
"path",
|
|
21948
21993
|
{
|
|
@@ -21951,14 +21996,14 @@ const __iconNode$p = [
|
|
|
21951
21996
|
}
|
|
21952
21997
|
]
|
|
21953
21998
|
];
|
|
21954
|
-
const Paperclip = createLucideIcon("paperclip", __iconNode$
|
|
21999
|
+
const Paperclip = createLucideIcon("paperclip", __iconNode$q);
|
|
21955
22000
|
/**
|
|
21956
22001
|
* @license lucide-react v0.577.0 - ISC
|
|
21957
22002
|
*
|
|
21958
22003
|
* This source code is licensed under the ISC license.
|
|
21959
22004
|
* See the LICENSE file in the root directory of this source tree.
|
|
21960
22005
|
*/
|
|
21961
|
-
const __iconNode$
|
|
22006
|
+
const __iconNode$p = [
|
|
21962
22007
|
[
|
|
21963
22008
|
"path",
|
|
21964
22009
|
{
|
|
@@ -21968,14 +22013,14 @@ const __iconNode$o = [
|
|
|
21968
22013
|
],
|
|
21969
22014
|
["path", { d: "m15 5 4 4", key: "1mk7zo" }]
|
|
21970
22015
|
];
|
|
21971
|
-
const Pencil = createLucideIcon("pencil", __iconNode$
|
|
22016
|
+
const Pencil = createLucideIcon("pencil", __iconNode$p);
|
|
21972
22017
|
/**
|
|
21973
22018
|
* @license lucide-react v0.577.0 - ISC
|
|
21974
22019
|
*
|
|
21975
22020
|
* This source code is licensed under the ISC license.
|
|
21976
22021
|
* See the LICENSE file in the root directory of this source tree.
|
|
21977
22022
|
*/
|
|
21978
|
-
const __iconNode$
|
|
22023
|
+
const __iconNode$o = [
|
|
21979
22024
|
[
|
|
21980
22025
|
"path",
|
|
21981
22026
|
{
|
|
@@ -21984,49 +22029,49 @@ const __iconNode$n = [
|
|
|
21984
22029
|
}
|
|
21985
22030
|
]
|
|
21986
22031
|
];
|
|
21987
|
-
const Play = createLucideIcon("play", __iconNode$
|
|
22032
|
+
const Play = createLucideIcon("play", __iconNode$o);
|
|
21988
22033
|
/**
|
|
21989
22034
|
* @license lucide-react v0.577.0 - ISC
|
|
21990
22035
|
*
|
|
21991
22036
|
* This source code is licensed under the ISC license.
|
|
21992
22037
|
* See the LICENSE file in the root directory of this source tree.
|
|
21993
22038
|
*/
|
|
21994
|
-
const __iconNode$
|
|
22039
|
+
const __iconNode$n = [
|
|
21995
22040
|
["path", { d: "M5 12h14", key: "1ays0h" }],
|
|
21996
22041
|
["path", { d: "M12 5v14", key: "s699le" }]
|
|
21997
22042
|
];
|
|
21998
|
-
const Plus = createLucideIcon("plus", __iconNode$
|
|
22043
|
+
const Plus = createLucideIcon("plus", __iconNode$n);
|
|
21999
22044
|
/**
|
|
22000
22045
|
* @license lucide-react v0.577.0 - ISC
|
|
22001
22046
|
*
|
|
22002
22047
|
* This source code is licensed under the ISC license.
|
|
22003
22048
|
* See the LICENSE file in the root directory of this source tree.
|
|
22004
22049
|
*/
|
|
22005
|
-
const __iconNode$
|
|
22050
|
+
const __iconNode$m = [
|
|
22006
22051
|
["path", { d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8", key: "v9h5vc" }],
|
|
22007
22052
|
["path", { d: "M21 3v5h-5", key: "1q7to0" }],
|
|
22008
22053
|
["path", { d: "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16", key: "3uifl3" }],
|
|
22009
22054
|
["path", { d: "M8 16H3v5", key: "1cv678" }]
|
|
22010
22055
|
];
|
|
22011
|
-
const RefreshCw = createLucideIcon("refresh-cw", __iconNode$
|
|
22056
|
+
const RefreshCw = createLucideIcon("refresh-cw", __iconNode$m);
|
|
22012
22057
|
/**
|
|
22013
22058
|
* @license lucide-react v0.577.0 - ISC
|
|
22014
22059
|
*
|
|
22015
22060
|
* This source code is licensed under the ISC license.
|
|
22016
22061
|
* See the LICENSE file in the root directory of this source tree.
|
|
22017
22062
|
*/
|
|
22018
|
-
const __iconNode$
|
|
22063
|
+
const __iconNode$l = [
|
|
22019
22064
|
["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
|
|
22020
22065
|
["path", { d: "M3 3v5h5", key: "1xhq8a" }]
|
|
22021
22066
|
];
|
|
22022
|
-
const RotateCcw = createLucideIcon("rotate-ccw", __iconNode$
|
|
22067
|
+
const RotateCcw = createLucideIcon("rotate-ccw", __iconNode$l);
|
|
22023
22068
|
/**
|
|
22024
22069
|
* @license lucide-react v0.577.0 - ISC
|
|
22025
22070
|
*
|
|
22026
22071
|
* This source code is licensed under the ISC license.
|
|
22027
22072
|
* See the LICENSE file in the root directory of this source tree.
|
|
22028
22073
|
*/
|
|
22029
|
-
const __iconNode$
|
|
22074
|
+
const __iconNode$k = [
|
|
22030
22075
|
[
|
|
22031
22076
|
"path",
|
|
22032
22077
|
{
|
|
@@ -22037,14 +22082,14 @@ const __iconNode$j = [
|
|
|
22037
22082
|
["path", { d: "M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7", key: "1ydtos" }],
|
|
22038
22083
|
["path", { d: "M7 3v4a1 1 0 0 0 1 1h7", key: "t51u73" }]
|
|
22039
22084
|
];
|
|
22040
|
-
const Save = createLucideIcon("save", __iconNode$
|
|
22085
|
+
const Save = createLucideIcon("save", __iconNode$k);
|
|
22041
22086
|
/**
|
|
22042
22087
|
* @license lucide-react v0.577.0 - ISC
|
|
22043
22088
|
*
|
|
22044
22089
|
* This source code is licensed under the ISC license.
|
|
22045
22090
|
* See the LICENSE file in the root directory of this source tree.
|
|
22046
22091
|
*/
|
|
22047
|
-
const __iconNode$
|
|
22092
|
+
const __iconNode$j = [
|
|
22048
22093
|
["path", { d: "M15 12h-5", key: "r7krc0" }],
|
|
22049
22094
|
["path", { d: "M15 8h-5", key: "1khuty" }],
|
|
22050
22095
|
["path", { d: "M19 17V5a2 2 0 0 0-2-2H4", key: "zz82l3" }],
|
|
@@ -22056,14 +22101,14 @@ const __iconNode$i = [
|
|
|
22056
22101
|
}
|
|
22057
22102
|
]
|
|
22058
22103
|
];
|
|
22059
|
-
const ScrollText = createLucideIcon("scroll-text", __iconNode$
|
|
22104
|
+
const ScrollText = createLucideIcon("scroll-text", __iconNode$j);
|
|
22060
22105
|
/**
|
|
22061
22106
|
* @license lucide-react v0.577.0 - ISC
|
|
22062
22107
|
*
|
|
22063
22108
|
* This source code is licensed under the ISC license.
|
|
22064
22109
|
* See the LICENSE file in the root directory of this source tree.
|
|
22065
22110
|
*/
|
|
22066
|
-
const __iconNode$
|
|
22111
|
+
const __iconNode$i = [
|
|
22067
22112
|
[
|
|
22068
22113
|
"path",
|
|
22069
22114
|
{
|
|
@@ -22073,27 +22118,27 @@ const __iconNode$h = [
|
|
|
22073
22118
|
],
|
|
22074
22119
|
["path", { d: "m21.854 2.147-10.94 10.939", key: "12cjpa" }]
|
|
22075
22120
|
];
|
|
22076
|
-
const Send = createLucideIcon("send", __iconNode$
|
|
22121
|
+
const Send = createLucideIcon("send", __iconNode$i);
|
|
22077
22122
|
/**
|
|
22078
22123
|
* @license lucide-react v0.577.0 - ISC
|
|
22079
22124
|
*
|
|
22080
22125
|
* This source code is licensed under the ISC license.
|
|
22081
22126
|
* See the LICENSE file in the root directory of this source tree.
|
|
22082
22127
|
*/
|
|
22083
|
-
const __iconNode$
|
|
22128
|
+
const __iconNode$h = [
|
|
22084
22129
|
["rect", { width: "20", height: "8", x: "2", y: "2", rx: "2", ry: "2", key: "ngkwjq" }],
|
|
22085
22130
|
["rect", { width: "20", height: "8", x: "2", y: "14", rx: "2", ry: "2", key: "iecqi9" }],
|
|
22086
22131
|
["line", { x1: "6", x2: "6.01", y1: "6", y2: "6", key: "16zg32" }],
|
|
22087
22132
|
["line", { x1: "6", x2: "6.01", y1: "18", y2: "18", key: "nzw8ys" }]
|
|
22088
22133
|
];
|
|
22089
|
-
const Server = createLucideIcon("server", __iconNode$
|
|
22134
|
+
const Server = createLucideIcon("server", __iconNode$h);
|
|
22090
22135
|
/**
|
|
22091
22136
|
* @license lucide-react v0.577.0 - ISC
|
|
22092
22137
|
*
|
|
22093
22138
|
* This source code is licensed under the ISC license.
|
|
22094
22139
|
* See the LICENSE file in the root directory of this source tree.
|
|
22095
22140
|
*/
|
|
22096
|
-
const __iconNode$
|
|
22141
|
+
const __iconNode$g = [
|
|
22097
22142
|
[
|
|
22098
22143
|
"path",
|
|
22099
22144
|
{
|
|
@@ -22103,14 +22148,14 @@ const __iconNode$f = [
|
|
|
22103
22148
|
],
|
|
22104
22149
|
["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
|
|
22105
22150
|
];
|
|
22106
|
-
const Settings = createLucideIcon("settings", __iconNode$
|
|
22151
|
+
const Settings = createLucideIcon("settings", __iconNode$g);
|
|
22107
22152
|
/**
|
|
22108
22153
|
* @license lucide-react v0.577.0 - ISC
|
|
22109
22154
|
*
|
|
22110
22155
|
* This source code is licensed under the ISC license.
|
|
22111
22156
|
* See the LICENSE file in the root directory of this source tree.
|
|
22112
22157
|
*/
|
|
22113
|
-
const __iconNode$
|
|
22158
|
+
const __iconNode$f = [
|
|
22114
22159
|
["rect", { width: "3", height: "8", x: "13", y: "2", rx: "1.5", key: "diqz80" }],
|
|
22115
22160
|
["path", { d: "M19 8.5V10h1.5A1.5 1.5 0 1 0 19 8.5", key: "183iwg" }],
|
|
22116
22161
|
["rect", { width: "3", height: "8", x: "8", y: "14", rx: "1.5", key: "hqg7r1" }],
|
|
@@ -22120,14 +22165,14 @@ const __iconNode$e = [
|
|
|
22120
22165
|
["rect", { width: "8", height: "3", x: "2", y: "8", rx: "1.5", key: "1omvl4" }],
|
|
22121
22166
|
["path", { d: "M8.5 5H10V3.5A1.5 1.5 0 1 0 8.5 5", key: "16f3cl" }]
|
|
22122
22167
|
];
|
|
22123
|
-
const Slack = createLucideIcon("slack", __iconNode$
|
|
22168
|
+
const Slack = createLucideIcon("slack", __iconNode$f);
|
|
22124
22169
|
/**
|
|
22125
22170
|
* @license lucide-react v0.577.0 - ISC
|
|
22126
22171
|
*
|
|
22127
22172
|
* This source code is licensed under the ISC license.
|
|
22128
22173
|
* See the LICENSE file in the root directory of this source tree.
|
|
22129
22174
|
*/
|
|
22130
|
-
const __iconNode$
|
|
22175
|
+
const __iconNode$e = [
|
|
22131
22176
|
["path", { d: "M10 5H3", key: "1qgfaw" }],
|
|
22132
22177
|
["path", { d: "M12 19H3", key: "yhmn1j" }],
|
|
22133
22178
|
["path", { d: "M14 3v4", key: "1sua03" }],
|
|
@@ -22138,14 +22183,14 @@ const __iconNode$d = [
|
|
|
22138
22183
|
["path", { d: "M8 10v4", key: "tgpxqk" }],
|
|
22139
22184
|
["path", { d: "M8 12H3", key: "a7s4jb" }]
|
|
22140
22185
|
];
|
|
22141
|
-
const SlidersHorizontal = createLucideIcon("sliders-horizontal", __iconNode$
|
|
22186
|
+
const SlidersHorizontal = createLucideIcon("sliders-horizontal", __iconNode$e);
|
|
22142
22187
|
/**
|
|
22143
22188
|
* @license lucide-react v0.577.0 - ISC
|
|
22144
22189
|
*
|
|
22145
22190
|
* This source code is licensed under the ISC license.
|
|
22146
22191
|
* See the LICENSE file in the root directory of this source tree.
|
|
22147
22192
|
*/
|
|
22148
|
-
const __iconNode$
|
|
22193
|
+
const __iconNode$d = [
|
|
22149
22194
|
[
|
|
22150
22195
|
"path",
|
|
22151
22196
|
{
|
|
@@ -22157,50 +22202,50 @@ const __iconNode$c = [
|
|
|
22157
22202
|
["path", { d: "M22 4h-4", key: "gwowj6" }],
|
|
22158
22203
|
["circle", { cx: "4", cy: "20", r: "2", key: "6kqj1y" }]
|
|
22159
22204
|
];
|
|
22160
|
-
const Sparkles = createLucideIcon("sparkles", __iconNode$
|
|
22205
|
+
const Sparkles = createLucideIcon("sparkles", __iconNode$d);
|
|
22161
22206
|
/**
|
|
22162
22207
|
* @license lucide-react v0.577.0 - ISC
|
|
22163
22208
|
*
|
|
22164
22209
|
* This source code is licensed under the ISC license.
|
|
22165
22210
|
* See the LICENSE file in the root directory of this source tree.
|
|
22166
22211
|
*/
|
|
22167
|
-
const __iconNode$
|
|
22212
|
+
const __iconNode$c = [
|
|
22168
22213
|
[
|
|
22169
22214
|
"path",
|
|
22170
22215
|
{ d: "M21 10.656V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h12.344", key: "2acyp4" }
|
|
22171
22216
|
],
|
|
22172
22217
|
["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
|
|
22173
22218
|
];
|
|
22174
|
-
const SquareCheckBig = createLucideIcon("square-check-big", __iconNode$
|
|
22219
|
+
const SquareCheckBig = createLucideIcon("square-check-big", __iconNode$c);
|
|
22175
22220
|
/**
|
|
22176
22221
|
* @license lucide-react v0.577.0 - ISC
|
|
22177
22222
|
*
|
|
22178
22223
|
* This source code is licensed under the ISC license.
|
|
22179
22224
|
* See the LICENSE file in the root directory of this source tree.
|
|
22180
22225
|
*/
|
|
22181
|
-
const __iconNode$
|
|
22226
|
+
const __iconNode$b = [
|
|
22182
22227
|
["path", { d: "m7 11 2-2-2-2", key: "1lz0vl" }],
|
|
22183
22228
|
["path", { d: "M11 13h4", key: "1p7l4v" }],
|
|
22184
22229
|
["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }]
|
|
22185
22230
|
];
|
|
22186
|
-
const SquareTerminal = createLucideIcon("square-terminal", __iconNode$
|
|
22231
|
+
const SquareTerminal = createLucideIcon("square-terminal", __iconNode$b);
|
|
22187
22232
|
/**
|
|
22188
22233
|
* @license lucide-react v0.577.0 - ISC
|
|
22189
22234
|
*
|
|
22190
22235
|
* This source code is licensed under the ISC license.
|
|
22191
22236
|
* See the LICENSE file in the root directory of this source tree.
|
|
22192
22237
|
*/
|
|
22193
|
-
const __iconNode$
|
|
22238
|
+
const __iconNode$a = [
|
|
22194
22239
|
["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }]
|
|
22195
22240
|
];
|
|
22196
|
-
const Square = createLucideIcon("square", __iconNode$
|
|
22241
|
+
const Square = createLucideIcon("square", __iconNode$a);
|
|
22197
22242
|
/**
|
|
22198
22243
|
* @license lucide-react v0.577.0 - ISC
|
|
22199
22244
|
*
|
|
22200
22245
|
* This source code is licensed under the ISC license.
|
|
22201
22246
|
* See the LICENSE file in the root directory of this source tree.
|
|
22202
22247
|
*/
|
|
22203
|
-
const __iconNode$
|
|
22248
|
+
const __iconNode$9 = [
|
|
22204
22249
|
[
|
|
22205
22250
|
"path",
|
|
22206
22251
|
{
|
|
@@ -22209,39 +22254,39 @@ const __iconNode$8 = [
|
|
|
22209
22254
|
}
|
|
22210
22255
|
]
|
|
22211
22256
|
];
|
|
22212
|
-
const Star = createLucideIcon("star", __iconNode$
|
|
22257
|
+
const Star = createLucideIcon("star", __iconNode$9);
|
|
22213
22258
|
/**
|
|
22214
22259
|
* @license lucide-react v0.577.0 - ISC
|
|
22215
22260
|
*
|
|
22216
22261
|
* This source code is licensed under the ISC license.
|
|
22217
22262
|
* See the LICENSE file in the root directory of this source tree.
|
|
22218
22263
|
*/
|
|
22219
|
-
const __iconNode$
|
|
22264
|
+
const __iconNode$8 = [
|
|
22220
22265
|
["path", { d: "M12 19h8", key: "baeox8" }],
|
|
22221
22266
|
["path", { d: "m4 17 6-6-6-6", key: "1yngyt" }]
|
|
22222
22267
|
];
|
|
22223
|
-
const Terminal = createLucideIcon("terminal", __iconNode$
|
|
22268
|
+
const Terminal = createLucideIcon("terminal", __iconNode$8);
|
|
22224
22269
|
/**
|
|
22225
22270
|
* @license lucide-react v0.577.0 - ISC
|
|
22226
22271
|
*
|
|
22227
22272
|
* This source code is licensed under the ISC license.
|
|
22228
22273
|
* See the LICENSE file in the root directory of this source tree.
|
|
22229
22274
|
*/
|
|
22230
|
-
const __iconNode$
|
|
22275
|
+
const __iconNode$7 = [
|
|
22231
22276
|
["path", { d: "M10 11v6", key: "nco0om" }],
|
|
22232
22277
|
["path", { d: "M14 11v6", key: "outv1u" }],
|
|
22233
22278
|
["path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6", key: "miytrc" }],
|
|
22234
22279
|
["path", { d: "M3 6h18", key: "d0wm0j" }],
|
|
22235
22280
|
["path", { d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2", key: "e791ji" }]
|
|
22236
22281
|
];
|
|
22237
|
-
const Trash2 = createLucideIcon("trash-2", __iconNode$
|
|
22282
|
+
const Trash2 = createLucideIcon("trash-2", __iconNode$7);
|
|
22238
22283
|
/**
|
|
22239
22284
|
* @license lucide-react v0.577.0 - ISC
|
|
22240
22285
|
*
|
|
22241
22286
|
* This source code is licensed under the ISC license.
|
|
22242
22287
|
* See the LICENSE file in the root directory of this source tree.
|
|
22243
22288
|
*/
|
|
22244
|
-
const __iconNode$
|
|
22289
|
+
const __iconNode$6 = [
|
|
22245
22290
|
[
|
|
22246
22291
|
"path",
|
|
22247
22292
|
{
|
|
@@ -22252,19 +22297,31 @@ const __iconNode$5 = [
|
|
|
22252
22297
|
["path", { d: "M12 9v4", key: "juzpu7" }],
|
|
22253
22298
|
["path", { d: "M12 17h.01", key: "p32p05" }]
|
|
22254
22299
|
];
|
|
22255
|
-
const TriangleAlert = createLucideIcon("triangle-alert", __iconNode$
|
|
22300
|
+
const TriangleAlert = createLucideIcon("triangle-alert", __iconNode$6);
|
|
22256
22301
|
/**
|
|
22257
22302
|
* @license lucide-react v0.577.0 - ISC
|
|
22258
22303
|
*
|
|
22259
22304
|
* This source code is licensed under the ISC license.
|
|
22260
22305
|
* See the LICENSE file in the root directory of this source tree.
|
|
22261
22306
|
*/
|
|
22262
|
-
const __iconNode$
|
|
22307
|
+
const __iconNode$5 = [
|
|
22263
22308
|
["path", { d: "M12 4v16", key: "1654pz" }],
|
|
22264
22309
|
["path", { d: "M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2", key: "e0r10z" }],
|
|
22265
22310
|
["path", { d: "M9 20h6", key: "s66wpe" }]
|
|
22266
22311
|
];
|
|
22267
|
-
const Type = createLucideIcon("type", __iconNode$
|
|
22312
|
+
const Type = createLucideIcon("type", __iconNode$5);
|
|
22313
|
+
/**
|
|
22314
|
+
* @license lucide-react v0.577.0 - ISC
|
|
22315
|
+
*
|
|
22316
|
+
* This source code is licensed under the ISC license.
|
|
22317
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
22318
|
+
*/
|
|
22319
|
+
const __iconNode$4 = [
|
|
22320
|
+
["path", { d: "M12 3v12", key: "1x0j5s" }],
|
|
22321
|
+
["path", { d: "m17 8-5-5-5 5", key: "7q97r8" }],
|
|
22322
|
+
["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }]
|
|
22323
|
+
];
|
|
22324
|
+
const Upload = createLucideIcon("upload", __iconNode$4);
|
|
22268
22325
|
/**
|
|
22269
22326
|
* @license lucide-react v0.577.0 - ISC
|
|
22270
22327
|
*
|
|
@@ -27322,6 +27379,10 @@ const workflowSchema = object({
|
|
|
27322
27379
|
forStory: boolean$1().default(false),
|
|
27323
27380
|
slots: array(workflowSlotSchema)
|
|
27324
27381
|
});
|
|
27382
|
+
function resolveWorkflowForCard(workflows, card) {
|
|
27383
|
+
const isStory = card.type === "story";
|
|
27384
|
+
return workflows.find((w) => w.id === card.workflowId) ?? workflows.find((w) => w.isDefault && w.forStory === isStory) ?? workflows.find((w) => w.forStory === isStory) ?? workflows[0];
|
|
27385
|
+
}
|
|
27325
27386
|
function highestWorkflowLevel(workflow) {
|
|
27326
27387
|
let bestIdx = -1;
|
|
27327
27388
|
for (const slot of (workflow == null ? void 0 : workflow.slots) ?? []) {
|
|
@@ -27599,6 +27660,14 @@ const runtimeCardCreateRequestSchema = object({
|
|
|
27599
27660
|
modelConfig: cardModelConfigSchema.optional(),
|
|
27600
27661
|
activeLevel: tierLevelSchema.optional()
|
|
27601
27662
|
});
|
|
27663
|
+
const runtimeBulkCardImportItemSchema = runtimeCardCreateRequestSchema.extend({
|
|
27664
|
+
tempId: string$2().optional()
|
|
27665
|
+
});
|
|
27666
|
+
object({
|
|
27667
|
+
// Batch-wide base branch; an item's own baseRef overrides it, else resolved server-side.
|
|
27668
|
+
baseRef: string$2().optional(),
|
|
27669
|
+
cards: array(runtimeBulkCardImportItemSchema).min(1)
|
|
27670
|
+
});
|
|
27602
27671
|
object({
|
|
27603
27672
|
cardId: string$2(),
|
|
27604
27673
|
targetColumnId: runtimeBoardColumnIdSchema,
|
|
@@ -74232,6 +74301,429 @@ function CardDetailPanel({
|
|
|
74232
74301
|
/* @__PURE__ */ jsxRuntimeExports.jsx(RunBar, { workspaceId })
|
|
74233
74302
|
] });
|
|
74234
74303
|
}
|
|
74304
|
+
const workflowLine = (w) => ` - ${w.id} — ${w.name}${w.isDefault ? " (default)" : ""}`;
|
|
74305
|
+
function buildImportPrompt(workflows) {
|
|
74306
|
+
var _a3, _b2, _c3;
|
|
74307
|
+
const taskWorkflows = workflows.filter((w) => !w.forStory);
|
|
74308
|
+
const storyWorkflows = workflows.filter((w) => w.forStory);
|
|
74309
|
+
const hasStory = storyWorkflows.length > 0;
|
|
74310
|
+
const sections = [];
|
|
74311
|
+
sections.push(
|
|
74312
|
+
"You generate tickets for the Whipped kanban board. Return your answer as a single ```json fenced code block containing a JSON array of ticket objects, and nothing else — no prose before or after the block."
|
|
74313
|
+
);
|
|
74314
|
+
const fields = [
|
|
74315
|
+
'- "description" (string, required): the ticket body. Its FIRST line is the title.',
|
|
74316
|
+
`- "workflowId" (string, optional): one of the workflow ids below. If omitted or unknown, the default workflow is used.`,
|
|
74317
|
+
`- "priority" (string, optional): one of ${runtimeCardPrioritySchema.options.join(", ")}.`,
|
|
74318
|
+
`- "activeLevel" (string, optional): one of ${tierLevelSchema.options.join(", ")}.`,
|
|
74319
|
+
'- "branchName" (string, optional): "<type>/<slug>"; auto-derived from the title if omitted.'
|
|
74320
|
+
];
|
|
74321
|
+
if (hasStory) {
|
|
74322
|
+
fields.push(
|
|
74323
|
+
'- "type" (string, optional): "task" (default), "story", or "subtask".',
|
|
74324
|
+
'- "tempId" (string, optional): a local id so other rows can reference this ticket within the same import.',
|
|
74325
|
+
`- "dependsOn" (string, optional): a tempId — this ticket continues in that ticket's branch once it reaches review.`,
|
|
74326
|
+
'- "waitsFor" (string[], optional): tempIds — this ticket starts fresh once all listed tickets are merged. Mutually exclusive with dependsOn.',
|
|
74327
|
+
'- "subtaskIds" (string[], optional): on a "story", the tempIds of its subtasks.'
|
|
74328
|
+
);
|
|
74329
|
+
} else {
|
|
74330
|
+
fields.push(
|
|
74331
|
+
'- "tempId" (string, optional): a local id so other rows can reference this ticket within the same import.',
|
|
74332
|
+
`- "dependsOn" (string, optional): a tempId — this ticket continues in that ticket's branch once it reaches review.`,
|
|
74333
|
+
'- "waitsFor" (string[], optional): tempIds — this ticket starts fresh once all listed tickets are merged. Mutually exclusive with dependsOn.'
|
|
74334
|
+
);
|
|
74335
|
+
}
|
|
74336
|
+
sections.push(`Each ticket object supports these fields:
|
|
74337
|
+
${fields.join("\n")}`);
|
|
74338
|
+
const wfSections = [
|
|
74339
|
+
`Task workflows (use these ids for normal tickets):
|
|
74340
|
+
${taskWorkflows.map(workflowLine).join("\n")}`
|
|
74341
|
+
];
|
|
74342
|
+
if (hasStory) {
|
|
74343
|
+
wfSections.push(
|
|
74344
|
+
`Story workflows (use these ids on "type": "story" tickets):
|
|
74345
|
+
${storyWorkflows.map(workflowLine).join("\n")}`
|
|
74346
|
+
);
|
|
74347
|
+
}
|
|
74348
|
+
sections.push(wfSections.join("\n\n"));
|
|
74349
|
+
const example = hasStory ? `[
|
|
74350
|
+
{
|
|
74351
|
+
"tempId": "epic",
|
|
74352
|
+
"type": "story",
|
|
74353
|
+
"description": "Checkout revamp\\n\\nSplit the checkout flow into payment and shipping steps.",
|
|
74354
|
+
"workflowId": "${((_a3 = storyWorkflows[0]) == null ? void 0 : _a3.id) ?? "wf_story_default"}",
|
|
74355
|
+
"subtaskIds": ["pay", "ship"]
|
|
74356
|
+
},
|
|
74357
|
+
{
|
|
74358
|
+
"tempId": "pay",
|
|
74359
|
+
"type": "subtask",
|
|
74360
|
+
"description": "Build the payment step",
|
|
74361
|
+
"workflowId": "${((_b2 = taskWorkflows[0]) == null ? void 0 : _b2.id) ?? "wf_default"}"
|
|
74362
|
+
},
|
|
74363
|
+
{
|
|
74364
|
+
"tempId": "ship",
|
|
74365
|
+
"type": "subtask",
|
|
74366
|
+
"description": "Build the shipping step",
|
|
74367
|
+
"dependsOn": "pay",
|
|
74368
|
+
"priority": "high"
|
|
74369
|
+
}
|
|
74370
|
+
]` : `[
|
|
74371
|
+
{
|
|
74372
|
+
"description": "Add a dark mode toggle\\n\\nPersist the choice in localStorage.",
|
|
74373
|
+
"workflowId": "${((_c3 = taskWorkflows[0]) == null ? void 0 : _c3.id) ?? "wf_default"}",
|
|
74374
|
+
"priority": "high"
|
|
74375
|
+
},
|
|
74376
|
+
{
|
|
74377
|
+
"description": "Rate-limit the login endpoint"
|
|
74378
|
+
}
|
|
74379
|
+
]`;
|
|
74380
|
+
sections.push(`Example output:
|
|
74381
|
+
\`\`\`json
|
|
74382
|
+
${example}
|
|
74383
|
+
\`\`\``);
|
|
74384
|
+
return sections.join("\n\n");
|
|
74385
|
+
}
|
|
74386
|
+
const HEADER = "px-3 py-2 text-left text-[10px] font-semibold uppercase tracking-wide text-[#60607a]";
|
|
74387
|
+
const CELL = "px-3 py-2 align-top text-[#c8c8d4]";
|
|
74388
|
+
function ImportPreviewTable({ rows }) {
|
|
74389
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "overflow-auto rounded-lg border border-[#2a2a35]", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("table", { className: "w-full border-collapse text-xs", children: [
|
|
74390
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("thead", { className: "sticky top-0 bg-[#16161c]", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("tr", { className: "border-b border-[#2a2a35]", children: [
|
|
74391
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("th", { className: HEADER, children: "#" }),
|
|
74392
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("th", { className: HEADER, children: "Title" }),
|
|
74393
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("th", { className: HEADER, children: "Type" }),
|
|
74394
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("th", { className: HEADER, children: "Workflow" }),
|
|
74395
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("th", { className: HEADER, children: "Priority" }),
|
|
74396
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("th", { className: HEADER, children: "Deps" }),
|
|
74397
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("th", { className: HEADER, children: "Status" })
|
|
74398
|
+
] }) }),
|
|
74399
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("tbody", { children: rows.map((row) => {
|
|
74400
|
+
const invalid = row.errors.length > 0;
|
|
74401
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
74402
|
+
"tr",
|
|
74403
|
+
{
|
|
74404
|
+
className: classNames(
|
|
74405
|
+
"border-b border-[#21212a] last:border-0",
|
|
74406
|
+
invalid ? "bg-red-500/5" : "hover:bg-[#1a1a22]"
|
|
74407
|
+
),
|
|
74408
|
+
children: [
|
|
74409
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: classNames(CELL, "text-[#60607a]"), children: row.index + 1 }),
|
|
74410
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: classNames(CELL, "max-w-[280px]"), children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "line-clamp-2", children: row.title }) }),
|
|
74411
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: CELL, children: row.type }),
|
|
74412
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: CELL, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "flex items-center gap-1.5", children: [
|
|
74413
|
+
row.resolvedWorkflowName,
|
|
74414
|
+
row.defaulted && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
74415
|
+
"span",
|
|
74416
|
+
{
|
|
74417
|
+
title: "No matching workflow — using the default",
|
|
74418
|
+
className: "flex items-center gap-0.5 rounded bg-amber-500/15 px-1.5 py-0.5 text-[10px] font-medium text-amber-300",
|
|
74419
|
+
children: [
|
|
74420
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(TriangleAlert, { size: 9 }),
|
|
74421
|
+
"default"
|
|
74422
|
+
]
|
|
74423
|
+
}
|
|
74424
|
+
)
|
|
74425
|
+
] }) }),
|
|
74426
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: CELL, children: row.priority || "—" }),
|
|
74427
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: classNames(CELL, "max-w-[160px]"), children: row.deps.length > 0 ? /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "line-clamp-2", children: row.deps.join(", ") }) : "—" }),
|
|
74428
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: CELL, children: invalid ? /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "flex items-start gap-1 text-red-400", children: [
|
|
74429
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(CircleX, { size: 12, className: "mt-0.5 shrink-0" }),
|
|
74430
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: row.errors.join("; ") })
|
|
74431
|
+
] }) : /* @__PURE__ */ jsxRuntimeExports.jsx(CircleCheck, { size: 13, className: "text-emerald-400" }) })
|
|
74432
|
+
]
|
|
74433
|
+
},
|
|
74434
|
+
row.index
|
|
74435
|
+
);
|
|
74436
|
+
}) })
|
|
74437
|
+
] }) });
|
|
74438
|
+
}
|
|
74439
|
+
const stripFence = (text2) => {
|
|
74440
|
+
const fence = text2.match(/```(?:json)?\s*([\s\S]*?)```/i);
|
|
74441
|
+
return fence ? fence[1].trim() : text2;
|
|
74442
|
+
};
|
|
74443
|
+
const asArray = (input) => {
|
|
74444
|
+
if (Array.isArray(input)) return input;
|
|
74445
|
+
if (input && typeof input === "object" && Array.isArray(input.cards)) {
|
|
74446
|
+
return input.cards;
|
|
74447
|
+
}
|
|
74448
|
+
return null;
|
|
74449
|
+
};
|
|
74450
|
+
const enumError = (value, allowed, field) => typeof value === "string" && !allowed.includes(value) ? `${field} "${value}" is invalid (allowed: ${allowed.join(", ")})` : null;
|
|
74451
|
+
const refList = (value) => Array.isArray(value) ? value.filter((v2) => typeof v2 === "string") : [];
|
|
74452
|
+
function parseImport(raw2, workflows, allCards) {
|
|
74453
|
+
const trimmed = stripFence(raw2.trim());
|
|
74454
|
+
if (!trimmed) return { rows: [], valid: false };
|
|
74455
|
+
let json;
|
|
74456
|
+
try {
|
|
74457
|
+
json = JSON.parse(trimmed);
|
|
74458
|
+
} catch (err) {
|
|
74459
|
+
return { rows: [], valid: false, fatal: `Not valid JSON: ${err instanceof Error ? err.message : String(err)}` };
|
|
74460
|
+
}
|
|
74461
|
+
const list2 = asArray(json);
|
|
74462
|
+
if (!list2) return { rows: [], valid: false, fatal: "Expected a JSON array of tickets." };
|
|
74463
|
+
if (list2.length === 0) return { rows: [], valid: false, fatal: "The array is empty — nothing to import." };
|
|
74464
|
+
const hasStoryWorkflow = workflows.some((w) => w.forStory);
|
|
74465
|
+
const existingIds = new Set(Object.keys(allCards));
|
|
74466
|
+
const tempIds = new Set(
|
|
74467
|
+
list2.map((el2) => el2 && typeof el2 === "object" ? el2.tempId : void 0).filter((t2) => typeof t2 === "string")
|
|
74468
|
+
);
|
|
74469
|
+
const rows = list2.map((el2, index2) => {
|
|
74470
|
+
const errors = [];
|
|
74471
|
+
if (!el2 || typeof el2 !== "object" || Array.isArray(el2)) {
|
|
74472
|
+
return {
|
|
74473
|
+
index: index2,
|
|
74474
|
+
title: "—",
|
|
74475
|
+
type: "task",
|
|
74476
|
+
priority: "",
|
|
74477
|
+
resolvedWorkflowName: "—",
|
|
74478
|
+
defaulted: false,
|
|
74479
|
+
deps: [],
|
|
74480
|
+
errors: ["Each ticket must be a JSON object."]
|
|
74481
|
+
};
|
|
74482
|
+
}
|
|
74483
|
+
const obj = el2;
|
|
74484
|
+
const description = typeof obj.description === "string" ? obj.description : "";
|
|
74485
|
+
if (!description.trim()) errors.push("description is required");
|
|
74486
|
+
const type = typeof obj.type === "string" ? obj.type : "task";
|
|
74487
|
+
for (const e of [
|
|
74488
|
+
enumError(obj.type, cardTypeSchema.options, "type"),
|
|
74489
|
+
enumError(obj.priority, runtimeCardPrioritySchema.options, "priority"),
|
|
74490
|
+
enumError(obj.agentId, runtimeAgentIdSchema.options, "agentId"),
|
|
74491
|
+
enumError(obj.activeLevel, tierLevelSchema.options, "activeLevel")
|
|
74492
|
+
]) {
|
|
74493
|
+
if (e) errors.push(e);
|
|
74494
|
+
}
|
|
74495
|
+
if ((type === "story" || type === "subtask") && !hasStoryWorkflow) {
|
|
74496
|
+
errors.push("story/subtask tickets require a story workflow — create one first");
|
|
74497
|
+
}
|
|
74498
|
+
const workflowId = typeof obj.workflowId === "string" ? obj.workflowId : void 0;
|
|
74499
|
+
const resolved = resolveWorkflowForCard(workflows, { workflowId, type });
|
|
74500
|
+
const defaulted = !workflowId || (resolved == null ? void 0 : resolved.id) !== workflowId;
|
|
74501
|
+
const dependsOn = typeof obj.dependsOn === "string" ? obj.dependsOn : void 0;
|
|
74502
|
+
const waitsFor = refList(obj.waitsFor);
|
|
74503
|
+
const subtaskIds = refList(obj.subtaskIds);
|
|
74504
|
+
const deps = [...dependsOn ? [dependsOn] : [], ...waitsFor, ...subtaskIds];
|
|
74505
|
+
for (const ref of deps) {
|
|
74506
|
+
if (!tempIds.has(ref) && !existingIds.has(ref)) errors.push(`unknown reference "${ref}"`);
|
|
74507
|
+
}
|
|
74508
|
+
const item = errors.length === 0 ? {
|
|
74509
|
+
description: description.trim(),
|
|
74510
|
+
tempId: typeof obj.tempId === "string" ? obj.tempId : void 0,
|
|
74511
|
+
type: type === "task" ? void 0 : type,
|
|
74512
|
+
priority: typeof obj.priority === "string" ? obj.priority : void 0,
|
|
74513
|
+
agentId: typeof obj.agentId === "string" ? obj.agentId : void 0,
|
|
74514
|
+
activeLevel: typeof obj.activeLevel === "string" ? obj.activeLevel : void 0,
|
|
74515
|
+
workflowId,
|
|
74516
|
+
readyForDev: typeof obj.readyForDev === "boolean" ? obj.readyForDev : void 0,
|
|
74517
|
+
branchName: typeof obj.branchName === "string" ? obj.branchName : void 0,
|
|
74518
|
+
baseRef: typeof obj.baseRef === "string" ? obj.baseRef : void 0,
|
|
74519
|
+
githubIssueUrl: typeof obj.githubIssueUrl === "string" ? obj.githubIssueUrl : void 0,
|
|
74520
|
+
dependsOn,
|
|
74521
|
+
waitsFor: waitsFor.length > 0 ? waitsFor : void 0,
|
|
74522
|
+
subtaskIds: subtaskIds.length > 0 ? subtaskIds : void 0
|
|
74523
|
+
} : void 0;
|
|
74524
|
+
return {
|
|
74525
|
+
index: index2,
|
|
74526
|
+
title: description.trim().split("\n")[0] || "—",
|
|
74527
|
+
type,
|
|
74528
|
+
priority: typeof obj.priority === "string" ? obj.priority : "",
|
|
74529
|
+
resolvedWorkflowName: (resolved == null ? void 0 : resolved.name) ?? "none",
|
|
74530
|
+
defaulted,
|
|
74531
|
+
deps,
|
|
74532
|
+
errors,
|
|
74533
|
+
item
|
|
74534
|
+
};
|
|
74535
|
+
});
|
|
74536
|
+
return { rows, valid: rows.every((r2) => r2.errors.length === 0) };
|
|
74537
|
+
}
|
|
74538
|
+
function ImportDialog({
|
|
74539
|
+
open,
|
|
74540
|
+
onClose,
|
|
74541
|
+
workspaceId,
|
|
74542
|
+
workflows,
|
|
74543
|
+
allCards,
|
|
74544
|
+
onRefresh,
|
|
74545
|
+
navigate
|
|
74546
|
+
}) {
|
|
74547
|
+
const [rawJson, setRawJson] = reactExports.useState("");
|
|
74548
|
+
const [parsed, setParsed] = reactExports.useState(null);
|
|
74549
|
+
const [loading, setLoading] = reactExports.useState(false);
|
|
74550
|
+
const fileInputRef = reactExports.useRef(null);
|
|
74551
|
+
const { trigger: createBulk } = useWrite((api) => api("cards/bulk").POST());
|
|
74552
|
+
const hasTaskWorkflow = workflows.some((w) => !w.forStory);
|
|
74553
|
+
const handleClose = () => {
|
|
74554
|
+
setRawJson("");
|
|
74555
|
+
setParsed(null);
|
|
74556
|
+
onClose();
|
|
74557
|
+
};
|
|
74558
|
+
const validate = (text2) => setParsed(parseImport(text2, workflows, allCards));
|
|
74559
|
+
const handleFile = (file) => {
|
|
74560
|
+
const reader = new FileReader();
|
|
74561
|
+
reader.onload = () => {
|
|
74562
|
+
const text2 = String(reader.result ?? "");
|
|
74563
|
+
setRawJson(text2);
|
|
74564
|
+
validate(text2);
|
|
74565
|
+
};
|
|
74566
|
+
reader.readAsText(file);
|
|
74567
|
+
};
|
|
74568
|
+
const handleCopyPrompt = async () => {
|
|
74569
|
+
try {
|
|
74570
|
+
await navigator.clipboard.writeText(buildImportPrompt(workflows));
|
|
74571
|
+
toast.success("Prompt copied — paste it into any AI assistant to generate tickets");
|
|
74572
|
+
} catch {
|
|
74573
|
+
toast.error("Couldn't copy to clipboard");
|
|
74574
|
+
}
|
|
74575
|
+
};
|
|
74576
|
+
const handleImport = async () => {
|
|
74577
|
+
var _a3;
|
|
74578
|
+
const items = (parsed == null ? void 0 : parsed.rows.map((r2) => r2.item).filter((i2) => Boolean(i2))) ?? [];
|
|
74579
|
+
if (items.length === 0) return;
|
|
74580
|
+
setLoading(true);
|
|
74581
|
+
try {
|
|
74582
|
+
const res = await createBulk({ body: { workspaceId, cards: items } });
|
|
74583
|
+
if (res.error || !res.data) {
|
|
74584
|
+
toast.error(((_a3 = res.error) == null ? void 0 : _a3.message) ?? "Failed to import tickets");
|
|
74585
|
+
return;
|
|
74586
|
+
}
|
|
74587
|
+
toast.success(`Imported ${res.data.cards.length} ticket${res.data.cards.length === 1 ? "" : "s"}`);
|
|
74588
|
+
handleClose();
|
|
74589
|
+
onRefresh();
|
|
74590
|
+
} finally {
|
|
74591
|
+
setLoading(false);
|
|
74592
|
+
}
|
|
74593
|
+
};
|
|
74594
|
+
if (!open) return null;
|
|
74595
|
+
const validCount = (parsed == null ? void 0 : parsed.rows.filter((r2) => r2.errors.length === 0).length) ?? 0;
|
|
74596
|
+
const totalCount = (parsed == null ? void 0 : parsed.rows.length) ?? 0;
|
|
74597
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "fixed inset-0 z-50 flex items-center justify-center", children: [
|
|
74598
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-black/70", onClick: handleClose }),
|
|
74599
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative flex h-[850px] max-h-[calc(100vh-80px)] w-[1100px] max-w-[calc(100vw-80px)] flex-col overflow-hidden rounded-xl border border-[#2a2a35] bg-[#141418] shadow-[0_8px_40px_4px_#00000060]", children: [
|
|
74600
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex shrink-0 items-center gap-3 border-b border-[#2a2a35] px-6 py-3.5", children: [
|
|
74601
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[15px] font-semibold text-[#f0f0f5]", children: "Import Tickets" }),
|
|
74602
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1" }),
|
|
74603
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
74604
|
+
"button",
|
|
74605
|
+
{
|
|
74606
|
+
onClick: handleCopyPrompt,
|
|
74607
|
+
disabled: !hasTaskWorkflow,
|
|
74608
|
+
title: "Copy a prompt to generate tickets with an AI assistant",
|
|
74609
|
+
className: "flex items-center gap-1.5 rounded-md border border-[#2a2a35] bg-[#1a1a1f] px-3 py-1.5 text-xs text-[#c8c8d4] transition-colors hover:border-[#3a3a48] disabled:cursor-not-allowed disabled:opacity-40",
|
|
74610
|
+
children: [
|
|
74611
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ClipboardCopy, { size: 13 }),
|
|
74612
|
+
"Copy prompt"
|
|
74613
|
+
]
|
|
74614
|
+
}
|
|
74615
|
+
),
|
|
74616
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("button", { onClick: handleClose, className: "text-[#60607a] transition-colors hover:text-[#f0f0f5]", children: /* @__PURE__ */ jsxRuntimeExports.jsx(X$1, { size: 18 }) })
|
|
74617
|
+
] }),
|
|
74618
|
+
!hasTaskWorkflow ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-1 flex-col items-center justify-center gap-3 px-6 text-center", children: [
|
|
74619
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "max-w-sm text-sm text-[#8888a0]", children: "You need at least one workflow before importing tickets. Create one in Settings → Workflows." }),
|
|
74620
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
74621
|
+
"button",
|
|
74622
|
+
{
|
|
74623
|
+
onClick: () => {
|
|
74624
|
+
handleClose();
|
|
74625
|
+
navigate(`/${encodeURIComponent(workspaceId)}/settings/workflows`);
|
|
74626
|
+
},
|
|
74627
|
+
className: "rounded-md bg-[#7c6aff] px-4 py-2 text-xs font-semibold text-white transition-colors hover:bg-[#6a5ae0]",
|
|
74628
|
+
children: "Go to Workflows"
|
|
74629
|
+
}
|
|
74630
|
+
)
|
|
74631
|
+
] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex min-h-0 flex-1 flex-col gap-3 px-6 py-4", children: [
|
|
74632
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex shrink-0 items-center gap-2", children: [
|
|
74633
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[11px] font-medium text-[#60607a]", children: "Paste a JSON array of tickets, or load a file" }),
|
|
74634
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1" }),
|
|
74635
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
74636
|
+
"input",
|
|
74637
|
+
{
|
|
74638
|
+
ref: fileInputRef,
|
|
74639
|
+
type: "file",
|
|
74640
|
+
accept: ".json,application/json",
|
|
74641
|
+
className: "hidden",
|
|
74642
|
+
onChange: (e) => {
|
|
74643
|
+
var _a3;
|
|
74644
|
+
const file = (_a3 = e.target.files) == null ? void 0 : _a3[0];
|
|
74645
|
+
if (file) handleFile(file);
|
|
74646
|
+
e.target.value = "";
|
|
74647
|
+
}
|
|
74648
|
+
}
|
|
74649
|
+
),
|
|
74650
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
74651
|
+
"button",
|
|
74652
|
+
{
|
|
74653
|
+
onClick: () => {
|
|
74654
|
+
var _a3;
|
|
74655
|
+
return (_a3 = fileInputRef.current) == null ? void 0 : _a3.click();
|
|
74656
|
+
},
|
|
74657
|
+
className: "flex items-center gap-1.5 rounded-md border border-[#2a2a35] bg-[#1a1a1f] px-3 py-1.5 text-xs text-[#c8c8d4] transition-colors hover:border-[#3a3a48]",
|
|
74658
|
+
children: [
|
|
74659
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(FileUp, { size: 13 }),
|
|
74660
|
+
"Load file"
|
|
74661
|
+
]
|
|
74662
|
+
}
|
|
74663
|
+
)
|
|
74664
|
+
] }),
|
|
74665
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
74666
|
+
"textarea",
|
|
74667
|
+
{
|
|
74668
|
+
value: rawJson,
|
|
74669
|
+
onChange: (e) => {
|
|
74670
|
+
setRawJson(e.target.value);
|
|
74671
|
+
if (parsed) setParsed(null);
|
|
74672
|
+
},
|
|
74673
|
+
spellCheck: false,
|
|
74674
|
+
placeholder: '[ { "description": "Add dark mode toggle", "workflowId": "wf_default", "priority": "high" } ]',
|
|
74675
|
+
className: "h-44 shrink-0 resize-none rounded-lg border border-[#2a2a35] bg-[#0e0e12] px-3 py-2.5 font-mono text-xs text-[#e0e0ea] outline-none placeholder:text-[#3a3a48] focus:border-[#3a3a48]"
|
|
74676
|
+
}
|
|
74677
|
+
),
|
|
74678
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex shrink-0 items-center gap-3", children: [
|
|
74679
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
74680
|
+
"button",
|
|
74681
|
+
{
|
|
74682
|
+
onClick: () => validate(rawJson),
|
|
74683
|
+
disabled: !rawJson.trim(),
|
|
74684
|
+
className: "rounded-md border border-[#2a2a35] bg-[#1a1a1f] px-3 py-1.5 text-xs text-[#c8c8d4] transition-colors hover:border-[#3a3a48] disabled:cursor-not-allowed disabled:opacity-40",
|
|
74685
|
+
children: "Validate"
|
|
74686
|
+
}
|
|
74687
|
+
),
|
|
74688
|
+
parsed && !parsed.fatal && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-[11px] text-[#8888a0]", children: [
|
|
74689
|
+
validCount,
|
|
74690
|
+
"/",
|
|
74691
|
+
totalCount,
|
|
74692
|
+
" valid",
|
|
74693
|
+
validCount < totalCount && " — fix the highlighted rows to import"
|
|
74694
|
+
] })
|
|
74695
|
+
] }),
|
|
74696
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "min-h-0 flex-1 overflow-hidden", children: [
|
|
74697
|
+
(parsed == null ? void 0 : parsed.fatal) && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "rounded-lg border border-red-500/40 bg-red-500/5 px-3 py-2.5 text-xs text-red-400", children: parsed.fatal }),
|
|
74698
|
+
parsed && !parsed.fatal && /* @__PURE__ */ jsxRuntimeExports.jsx(ImportPreviewTable, { rows: parsed.rows })
|
|
74699
|
+
] })
|
|
74700
|
+
] }),
|
|
74701
|
+
hasTaskWorkflow && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex shrink-0 items-center gap-2.5 border-t border-[#2a2a35] px-6 py-3.5", children: [
|
|
74702
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1" }),
|
|
74703
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
74704
|
+
"button",
|
|
74705
|
+
{
|
|
74706
|
+
onClick: handleClose,
|
|
74707
|
+
className: "px-4 py-2 text-xs font-medium text-[#8888a0] transition-colors hover:text-[#f0f0f5]",
|
|
74708
|
+
children: "Cancel"
|
|
74709
|
+
}
|
|
74710
|
+
),
|
|
74711
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
74712
|
+
"button",
|
|
74713
|
+
{
|
|
74714
|
+
onClick: handleImport,
|
|
74715
|
+
disabled: loading || !(parsed == null ? void 0 : parsed.valid),
|
|
74716
|
+
className: "flex items-center gap-1.5 rounded-md bg-[#7c6aff] px-5 py-2 text-xs font-semibold text-white transition-opacity disabled:cursor-not-allowed disabled:opacity-40",
|
|
74717
|
+
children: [
|
|
74718
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Upload, { size: 14 }),
|
|
74719
|
+
loading ? "Importing..." : `Import ${totalCount > 0 ? totalCount : ""} ${totalCount === 1 ? "ticket" : "tickets"}`.trim()
|
|
74720
|
+
]
|
|
74721
|
+
}
|
|
74722
|
+
)
|
|
74723
|
+
] })
|
|
74724
|
+
] })
|
|
74725
|
+
] });
|
|
74726
|
+
}
|
|
74235
74727
|
const promptValueFormSchema = discriminatedUnion("source", [
|
|
74236
74728
|
object({ source: literal("inline"), text: string$2() }),
|
|
74237
74729
|
object({ source: literal("file"), path: string$2() })
|
|
@@ -75978,6 +76470,16 @@ function KanbanCard({
|
|
|
75978
76470
|
return col === "ready_for_review" || col === "done";
|
|
75979
76471
|
});
|
|
75980
76472
|
const allDepsMet = deps.length > 0 && metDeps.length === deps.length;
|
|
76473
|
+
const subtaskIds = card.subtaskIds ?? [];
|
|
76474
|
+
const metSubtasks = subtaskIds.filter((id) => {
|
|
76475
|
+
var _a4;
|
|
76476
|
+
const col = (_a4 = allCards[id]) == null ? void 0 : _a4.columnId;
|
|
76477
|
+
return col === "ready_for_review" || col === "done";
|
|
76478
|
+
});
|
|
76479
|
+
const parentStory = isSubtask ? Object.values(allCards).find((c) => {
|
|
76480
|
+
var _a4;
|
|
76481
|
+
return c.type === "story" && ((_a4 = c.subtaskIds) == null ? void 0 : _a4.includes(card.id));
|
|
76482
|
+
}) : void 0;
|
|
75981
76483
|
const borderClass = (snapshot_isDragging) => {
|
|
75982
76484
|
if (snapshot_isDragging) return "border-blue-500 shadow-lg shadow-blue-500/20 rotate-1";
|
|
75983
76485
|
if (isStory) return "border-purple-800";
|
|
@@ -75988,7 +76490,7 @@ function KanbanCard({
|
|
|
75988
76490
|
return "border-[#2a2a35]";
|
|
75989
76491
|
};
|
|
75990
76492
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(PublicDraggable, { draggableId: card.id, index: index2, children: (provided, snapshot) => {
|
|
75991
|
-
var _a4, _b3, _c4, _d2;
|
|
76493
|
+
var _a4, _b3, _c4, _d2, _e3, _f;
|
|
75992
76494
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
75993
76495
|
"div",
|
|
75994
76496
|
{
|
|
@@ -76028,25 +76530,39 @@ function KanbanCard({
|
|
|
76028
76530
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Clock, { size: 11, className: "text-amber-400 shrink-0 mt-px" }),
|
|
76029
76531
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[11px] text-amber-300/90 leading-snug line-clamp-2", children: lastActivity })
|
|
76030
76532
|
] }),
|
|
76031
|
-
isStory &&
|
|
76533
|
+
isStory && subtaskIds.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-2.5", children: [
|
|
76032
76534
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between mb-1", children: [
|
|
76033
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
76535
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-[10px] text-gray-500", children: [
|
|
76536
|
+
subtaskIds.length,
|
|
76537
|
+
" subtask",
|
|
76538
|
+
subtaskIds.length === 1 ? "" : "s"
|
|
76539
|
+
] }),
|
|
76034
76540
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-[10px] text-gray-400", children: [
|
|
76035
|
-
|
|
76541
|
+
metSubtasks.length,
|
|
76036
76542
|
"/",
|
|
76037
|
-
|
|
76543
|
+
subtaskIds.length
|
|
76038
76544
|
] })
|
|
76039
76545
|
] }),
|
|
76040
76546
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "h-1 bg-[#2a2a35] rounded-full overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
76041
76547
|
"div",
|
|
76042
76548
|
{
|
|
76043
76549
|
className: "h-full bg-purple-500 rounded-full transition-all",
|
|
76044
|
-
style: { width: `${
|
|
76550
|
+
style: { width: `${metSubtasks.length / subtaskIds.length * 100}%` }
|
|
76045
76551
|
}
|
|
76046
76552
|
) })
|
|
76047
76553
|
] }),
|
|
76048
76554
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-2.5 flex items-center gap-2 flex-wrap", children: [
|
|
76049
|
-
isSubtask && /* @__PURE__ */ jsxRuntimeExports.
|
|
76555
|
+
isSubtask && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
76556
|
+
"span",
|
|
76557
|
+
{
|
|
76558
|
+
title: parentStory ? `Subtask of: ${(_c4 = parentStory.description) == null ? void 0 : _c4.split("\n")[0]}` : "Subtask",
|
|
76559
|
+
className: "flex items-center gap-1 text-[10px] text-gray-500 bg-[#2a2a35] rounded px-1.5 py-0.5 font-medium max-w-[180px]",
|
|
76560
|
+
children: [
|
|
76561
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Layers, { size: 10, className: "shrink-0 text-purple-400/70" }),
|
|
76562
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", children: ((_d2 = parentStory == null ? void 0 : parentStory.description) == null ? void 0 : _d2.split("\n")[0]) ?? "subtask" })
|
|
76563
|
+
]
|
|
76564
|
+
}
|
|
76565
|
+
),
|
|
76050
76566
|
!isStory && card.columnId === "todo" && card.readyForDev && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "flex items-center gap-1 text-xs text-emerald-400 bg-emerald-400/10 rounded px-1.5 py-0.5 font-medium", children: [
|
|
76051
76567
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Zap, { size: 10 }),
|
|
76052
76568
|
"Ready"
|
|
@@ -76103,10 +76619,10 @@ function KanbanCard({
|
|
|
76103
76619
|
card.autoFixAttempts,
|
|
76104
76620
|
"x"
|
|
76105
76621
|
] }),
|
|
76106
|
-
((
|
|
76622
|
+
((_e3 = card.pr) == null ? void 0 : _e3.url) && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
76107
76623
|
"a",
|
|
76108
76624
|
{
|
|
76109
|
-
href: (
|
|
76625
|
+
href: (_f = card.pr) == null ? void 0 : _f.url,
|
|
76110
76626
|
target: "_blank",
|
|
76111
76627
|
rel: "noreferrer",
|
|
76112
76628
|
onClick: (e) => e.stopPropagation(),
|
|
@@ -76338,6 +76854,7 @@ function KanbanBoard({
|
|
|
76338
76854
|
const detailCard = detailCardId ? state.board.cards[detailCardId] ?? null : null;
|
|
76339
76855
|
const [createDialogOpen, setCreateDialogOpen] = reactExports.useState(false);
|
|
76340
76856
|
const [createDialogMode, setCreateDialogMode] = reactExports.useState("task");
|
|
76857
|
+
const [importDialogOpen, setImportDialogOpen] = reactExports.useState(false);
|
|
76341
76858
|
const [editDialogCard, setEditDialogCard] = reactExports.useState(null);
|
|
76342
76859
|
const { data: branchesData } = useRead((api) => api("cards/branches").GET({ query: { workspaceId } }));
|
|
76343
76860
|
const { trigger: deleteCard } = useWrite((api) => api("cards/:id").DELETE());
|
|
@@ -76496,6 +77013,18 @@ function KanbanBoard({
|
|
|
76496
77013
|
]
|
|
76497
77014
|
}
|
|
76498
77015
|
),
|
|
77016
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
77017
|
+
"button",
|
|
77018
|
+
{
|
|
77019
|
+
onClick: () => setImportDialogOpen(true),
|
|
77020
|
+
title: "Bulk import tickets from JSON",
|
|
77021
|
+
className: "flex items-center gap-1.5 px-3 py-1.5 rounded-md bg-[#1a1a1f] border border-[#2a2a35] text-xs text-gray-500 hover:border-[#3a3a48] transition-colors",
|
|
77022
|
+
children: [
|
|
77023
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Upload, { size: 12 }),
|
|
77024
|
+
"Import"
|
|
77025
|
+
]
|
|
77026
|
+
}
|
|
77027
|
+
),
|
|
76499
77028
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
76500
77029
|
"button",
|
|
76501
77030
|
{
|
|
@@ -76603,6 +77132,18 @@ function KanbanBoard({
|
|
|
76603
77132
|
navigate: (path2) => navigate(path2)
|
|
76604
77133
|
}
|
|
76605
77134
|
),
|
|
77135
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
77136
|
+
ImportDialog,
|
|
77137
|
+
{
|
|
77138
|
+
open: importDialogOpen,
|
|
77139
|
+
onClose: () => setImportDialogOpen(false),
|
|
77140
|
+
workspaceId,
|
|
77141
|
+
allCards: state.board.cards,
|
|
77142
|
+
workflows: state.projectConfig.workflows,
|
|
77143
|
+
onRefresh,
|
|
77144
|
+
navigate: (path2) => navigate(path2)
|
|
77145
|
+
}
|
|
77146
|
+
),
|
|
76606
77147
|
editDialogCard && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
76607
77148
|
EditTaskDialog,
|
|
76608
77149
|
{
|
|
@@ -76617,6 +77158,7 @@ function KanbanBoard({
|
|
|
76617
77158
|
] });
|
|
76618
77159
|
}
|
|
76619
77160
|
const DISMISSED_KEY = (v2) => `whipped:update-dismissed:${v2}`;
|
|
77161
|
+
const CHANGELOG_URL = "https://github.com/nxnom/whipped/blob/HEAD/CHANGELOG.md";
|
|
76620
77162
|
function UpdateBanner() {
|
|
76621
77163
|
const update2 = useUpdateAvailable();
|
|
76622
77164
|
const [dismissed, setDismissed] = reactExports.useState(
|
|
@@ -76637,6 +77179,16 @@ function UpdateBanner() {
|
|
|
76637
77179
|
update2.latestVersion,
|
|
76638
77180
|
" is out."
|
|
76639
77181
|
] }),
|
|
77182
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
77183
|
+
"a",
|
|
77184
|
+
{
|
|
77185
|
+
href: CHANGELOG_URL,
|
|
77186
|
+
target: "_blank",
|
|
77187
|
+
rel: "noopener noreferrer",
|
|
77188
|
+
className: "text-[11px] underline underline-offset-2 hover:text-[#e0d080] transition-colors",
|
|
77189
|
+
children: "What's new"
|
|
77190
|
+
}
|
|
77191
|
+
),
|
|
76640
77192
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
76641
77193
|
"button",
|
|
76642
77194
|
{
|