@serve.zone/catalog 2.2.0 → 2.4.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.
@@ -1397,7 +1397,7 @@ var init_Subscription = __esm({
1397
1397
  this._finalizers = null;
1398
1398
  }
1399
1399
  Subscription2.prototype.unsubscribe = function() {
1400
- var e_1, _a41, e_2, _b;
1400
+ var e_1, _a47, e_2, _b;
1401
1401
  var errors;
1402
1402
  if (!this.closed) {
1403
1403
  this.closed = true;
@@ -1414,7 +1414,7 @@ var init_Subscription = __esm({
1414
1414
  e_1 = { error: e_1_1 };
1415
1415
  } finally {
1416
1416
  try {
1417
- if (_parentage_1_1 && !_parentage_1_1.done && (_a41 = _parentage_1.return)) _a41.call(_parentage_1);
1417
+ if (_parentage_1_1 && !_parentage_1_1.done && (_a47 = _parentage_1.return)) _a47.call(_parentage_1);
1418
1418
  } finally {
1419
1419
  if (e_1) throw e_1.error;
1420
1420
  }
@@ -1464,7 +1464,7 @@ var init_Subscription = __esm({
1464
1464
  }
1465
1465
  };
1466
1466
  Subscription2.prototype.add = function(teardown) {
1467
- var _a41;
1467
+ var _a47;
1468
1468
  if (teardown && teardown !== this) {
1469
1469
  if (this.closed) {
1470
1470
  execFinalizer(teardown);
@@ -1475,7 +1475,7 @@ var init_Subscription = __esm({
1475
1475
  }
1476
1476
  teardown._addParent(this);
1477
1477
  }
1478
- (this._finalizers = (_a41 = this._finalizers) !== null && _a41 !== void 0 ? _a41 : []).push(teardown);
1478
+ (this._finalizers = (_a47 = this._finalizers) !== null && _a47 !== void 0 ? _a47 : []).push(teardown);
1479
1479
  }
1480
1480
  }
1481
1481
  };
@@ -1611,7 +1611,7 @@ function errorContext(cb) {
1611
1611
  }
1612
1612
  cb();
1613
1613
  if (isRoot) {
1614
- var _a41 = context, errorThrown = _a41.errorThrown, error = _a41.error;
1614
+ var _a47 = context, errorThrown = _a47.errorThrown, error = _a47.error;
1615
1615
  context = null;
1616
1616
  if (errorThrown) {
1617
1617
  throw error;
@@ -1862,8 +1862,8 @@ var init_pipe = __esm({
1862
1862
 
1863
1863
  // node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Observable.js
1864
1864
  function getPromiseCtor(promiseCtor) {
1865
- var _a41;
1866
- return (_a41 = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a41 !== void 0 ? _a41 : Promise;
1865
+ var _a47;
1866
+ return (_a47 = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a47 !== void 0 ? _a47 : Promise;
1867
1867
  }
1868
1868
  function isObserver(value2) {
1869
1869
  return value2 && isFunction(value2.next) && isFunction(value2.error) && isFunction(value2.complete);
@@ -1897,7 +1897,7 @@ var init_Observable = __esm({
1897
1897
  var _this = this;
1898
1898
  var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);
1899
1899
  errorContext(function() {
1900
- var _a41 = _this, operator = _a41.operator, source = _a41.source;
1900
+ var _a47 = _this, operator = _a47.operator, source = _a47.source;
1901
1901
  subscriber.add(operator ? operator.call(subscriber, source) : source ? _this._subscribe(subscriber) : _this._trySubscribe(subscriber));
1902
1902
  });
1903
1903
  return subscriber;
@@ -1929,8 +1929,8 @@ var init_Observable = __esm({
1929
1929
  });
1930
1930
  };
1931
1931
  Observable2.prototype._subscribe = function(subscriber) {
1932
- var _a41;
1933
- return (_a41 = this.source) === null || _a41 === void 0 ? void 0 : _a41.subscribe(subscriber);
1932
+ var _a47;
1933
+ return (_a47 = this.source) === null || _a47 === void 0 ? void 0 : _a47.subscribe(subscriber);
1934
1934
  };
1935
1935
  Observable2.prototype[observable] = function() {
1936
1936
  return this;
@@ -2031,11 +2031,11 @@ var init_OperatorSubscriber = __esm({
2031
2031
  return _this;
2032
2032
  }
2033
2033
  OperatorSubscriber2.prototype.unsubscribe = function() {
2034
- var _a41;
2034
+ var _a47;
2035
2035
  if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {
2036
2036
  var closed_1 = this.closed;
2037
2037
  _super.prototype.unsubscribe.call(this);
2038
- !closed_1 && ((_a41 = this.onFinalize) === null || _a41 === void 0 ? void 0 : _a41.call(this));
2038
+ !closed_1 && ((_a47 = this.onFinalize) === null || _a47 === void 0 ? void 0 : _a47.call(this));
2039
2039
  }
2040
2040
  };
2041
2041
  return OperatorSubscriber2;
@@ -2291,7 +2291,7 @@ var init_Subject = __esm({
2291
2291
  Subject2.prototype.next = function(value2) {
2292
2292
  var _this = this;
2293
2293
  errorContext(function() {
2294
- var e_1, _a41;
2294
+ var e_1, _a47;
2295
2295
  _this._throwIfClosed();
2296
2296
  if (!_this.isStopped) {
2297
2297
  if (!_this.currentObservers) {
@@ -2306,7 +2306,7 @@ var init_Subject = __esm({
2306
2306
  e_1 = { error: e_1_1 };
2307
2307
  } finally {
2308
2308
  try {
2309
- if (_c && !_c.done && (_a41 = _b.return)) _a41.call(_b);
2309
+ if (_c && !_c.done && (_a47 = _b.return)) _a47.call(_b);
2310
2310
  } finally {
2311
2311
  if (e_1) throw e_1.error;
2312
2312
  }
@@ -2347,8 +2347,8 @@ var init_Subject = __esm({
2347
2347
  };
2348
2348
  Object.defineProperty(Subject2.prototype, "observed", {
2349
2349
  get: function() {
2350
- var _a41;
2351
- return ((_a41 = this.observers) === null || _a41 === void 0 ? void 0 : _a41.length) > 0;
2350
+ var _a47;
2351
+ return ((_a47 = this.observers) === null || _a47 === void 0 ? void 0 : _a47.length) > 0;
2352
2352
  },
2353
2353
  enumerable: false,
2354
2354
  configurable: true
@@ -2364,7 +2364,7 @@ var init_Subject = __esm({
2364
2364
  };
2365
2365
  Subject2.prototype._innerSubscribe = function(subscriber) {
2366
2366
  var _this = this;
2367
- var _a41 = this, hasError = _a41.hasError, isStopped = _a41.isStopped, observers = _a41.observers;
2367
+ var _a47 = this, hasError = _a47.hasError, isStopped = _a47.isStopped, observers = _a47.observers;
2368
2368
  if (hasError || isStopped) {
2369
2369
  return EMPTY_SUBSCRIPTION;
2370
2370
  }
@@ -2376,7 +2376,7 @@ var init_Subject = __esm({
2376
2376
  });
2377
2377
  };
2378
2378
  Subject2.prototype._checkFinalizedStatuses = function(subscriber) {
2379
- var _a41 = this, hasError = _a41.hasError, thrownError = _a41.thrownError, isStopped = _a41.isStopped;
2379
+ var _a47 = this, hasError = _a47.hasError, thrownError = _a47.thrownError, isStopped = _a47.isStopped;
2380
2380
  if (hasError) {
2381
2381
  subscriber.error(thrownError);
2382
2382
  } else if (isStopped) {
@@ -2402,20 +2402,20 @@ var init_Subject = __esm({
2402
2402
  return _this;
2403
2403
  }
2404
2404
  AnonymousSubject2.prototype.next = function(value2) {
2405
- var _a41, _b;
2406
- (_b = (_a41 = this.destination) === null || _a41 === void 0 ? void 0 : _a41.next) === null || _b === void 0 ? void 0 : _b.call(_a41, value2);
2405
+ var _a47, _b;
2406
+ (_b = (_a47 = this.destination) === null || _a47 === void 0 ? void 0 : _a47.next) === null || _b === void 0 ? void 0 : _b.call(_a47, value2);
2407
2407
  };
2408
2408
  AnonymousSubject2.prototype.error = function(err) {
2409
- var _a41, _b;
2410
- (_b = (_a41 = this.destination) === null || _a41 === void 0 ? void 0 : _a41.error) === null || _b === void 0 ? void 0 : _b.call(_a41, err);
2409
+ var _a47, _b;
2410
+ (_b = (_a47 = this.destination) === null || _a47 === void 0 ? void 0 : _a47.error) === null || _b === void 0 ? void 0 : _b.call(_a47, err);
2411
2411
  };
2412
2412
  AnonymousSubject2.prototype.complete = function() {
2413
- var _a41, _b;
2414
- (_b = (_a41 = this.destination) === null || _a41 === void 0 ? void 0 : _a41.complete) === null || _b === void 0 ? void 0 : _b.call(_a41);
2413
+ var _a47, _b;
2414
+ (_b = (_a47 = this.destination) === null || _a47 === void 0 ? void 0 : _a47.complete) === null || _b === void 0 ? void 0 : _b.call(_a47);
2415
2415
  };
2416
2416
  AnonymousSubject2.prototype._subscribe = function(subscriber) {
2417
- var _a41, _b;
2418
- return (_b = (_a41 = this.source) === null || _a41 === void 0 ? void 0 : _a41.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;
2417
+ var _a47, _b;
2418
+ return (_b = (_a47 = this.source) === null || _a47 === void 0 ? void 0 : _a47.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;
2419
2419
  };
2420
2420
  return AnonymousSubject2;
2421
2421
  })(Subject);
@@ -2448,7 +2448,7 @@ var init_BehaviorSubject = __esm({
2448
2448
  return subscription;
2449
2449
  };
2450
2450
  BehaviorSubject2.prototype.getValue = function() {
2451
- var _a41 = this, hasError = _a41.hasError, thrownError = _a41.thrownError, _value2 = _a41._value;
2451
+ var _a47 = this, hasError = _a47.hasError, thrownError = _a47.thrownError, _value2 = _a47._value;
2452
2452
  if (hasError) {
2453
2453
  throw thrownError;
2454
2454
  }
@@ -2507,7 +2507,7 @@ var init_ReplaySubject = __esm({
2507
2507
  return _this;
2508
2508
  }
2509
2509
  ReplaySubject2.prototype.next = function(value2) {
2510
- var _a41 = this, isStopped = _a41.isStopped, _buffer = _a41._buffer, _infiniteTimeWindow = _a41._infiniteTimeWindow, _timestampProvider = _a41._timestampProvider, _windowTime = _a41._windowTime;
2510
+ var _a47 = this, isStopped = _a47.isStopped, _buffer = _a47._buffer, _infiniteTimeWindow = _a47._infiniteTimeWindow, _timestampProvider = _a47._timestampProvider, _windowTime = _a47._windowTime;
2511
2511
  if (!isStopped) {
2512
2512
  _buffer.push(value2);
2513
2513
  !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);
@@ -2519,7 +2519,7 @@ var init_ReplaySubject = __esm({
2519
2519
  this._throwIfClosed();
2520
2520
  this._trimBuffer();
2521
2521
  var subscription = this._innerSubscribe(subscriber);
2522
- var _a41 = this, _infiniteTimeWindow = _a41._infiniteTimeWindow, _buffer = _a41._buffer;
2522
+ var _a47 = this, _infiniteTimeWindow = _a47._infiniteTimeWindow, _buffer = _a47._buffer;
2523
2523
  var copy = _buffer.slice();
2524
2524
  for (var i11 = 0; i11 < copy.length && !subscriber.closed; i11 += _infiniteTimeWindow ? 1 : 2) {
2525
2525
  subscriber.next(copy[i11]);
@@ -2528,7 +2528,7 @@ var init_ReplaySubject = __esm({
2528
2528
  return subscription;
2529
2529
  };
2530
2530
  ReplaySubject2.prototype._trimBuffer = function() {
2531
- var _a41 = this, _bufferSize = _a41._bufferSize, _timestampProvider = _a41._timestampProvider, _buffer = _a41._buffer, _infiniteTimeWindow = _a41._infiniteTimeWindow;
2531
+ var _a47 = this, _bufferSize = _a47._bufferSize, _timestampProvider = _a47._timestampProvider, _buffer = _a47._buffer, _infiniteTimeWindow = _a47._infiniteTimeWindow;
2532
2532
  var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;
2533
2533
  _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);
2534
2534
  if (!_infiniteTimeWindow) {
@@ -2561,7 +2561,7 @@ var init_AsyncSubject = __esm({
2561
2561
  return _this;
2562
2562
  }
2563
2563
  AsyncSubject2.prototype._checkFinalizedStatuses = function(subscriber) {
2564
- var _a41 = this, hasError = _a41.hasError, _hasValue = _a41._hasValue, _value2 = _a41._value, thrownError = _a41.thrownError, isStopped = _a41.isStopped, _isComplete = _a41._isComplete;
2564
+ var _a47 = this, hasError = _a47.hasError, _hasValue = _a47._hasValue, _value2 = _a47._value, thrownError = _a47.thrownError, isStopped = _a47.isStopped, _isComplete = _a47._isComplete;
2565
2565
  if (hasError) {
2566
2566
  subscriber.error(thrownError);
2567
2567
  } else if (isStopped || _isComplete) {
@@ -2576,7 +2576,7 @@ var init_AsyncSubject = __esm({
2576
2576
  }
2577
2577
  };
2578
2578
  AsyncSubject2.prototype.complete = function() {
2579
- var _a41 = this, _hasValue = _a41._hasValue, _value2 = _a41._value, _isComplete = _a41._isComplete;
2579
+ var _a47 = this, _hasValue = _a47._hasValue, _value2 = _a47._value, _isComplete = _a47._isComplete;
2580
2580
  if (!_isComplete) {
2581
2581
  this._isComplete = true;
2582
2582
  _hasValue && _super.prototype.next.call(this, _value2);
@@ -2654,7 +2654,7 @@ var init_AsyncAction = __esm({
2654
2654
  return _this;
2655
2655
  }
2656
2656
  AsyncAction2.prototype.schedule = function(state, delay2) {
2657
- var _a41;
2657
+ var _a47;
2658
2658
  if (delay2 === void 0) {
2659
2659
  delay2 = 0;
2660
2660
  }
@@ -2669,7 +2669,7 @@ var init_AsyncAction = __esm({
2669
2669
  }
2670
2670
  this.pending = true;
2671
2671
  this.delay = delay2;
2672
- this.id = (_a41 = this.id) !== null && _a41 !== void 0 ? _a41 : this.requestAsyncId(scheduler, this.id, delay2);
2672
+ this.id = (_a47 = this.id) !== null && _a47 !== void 0 ? _a47 : this.requestAsyncId(scheduler, this.id, delay2);
2673
2673
  return this;
2674
2674
  };
2675
2675
  AsyncAction2.prototype.requestAsyncId = function(scheduler, _id, delay2) {
@@ -2718,7 +2718,7 @@ var init_AsyncAction = __esm({
2718
2718
  };
2719
2719
  AsyncAction2.prototype.unsubscribe = function() {
2720
2720
  if (!this.closed) {
2721
- var _a41 = this, id = _a41.id, scheduler = _a41.scheduler;
2721
+ var _a47 = this, id = _a47.id, scheduler = _a47.scheduler;
2722
2722
  var actions = scheduler.actions;
2723
2723
  this.work = this.state = this.scheduler = null;
2724
2724
  this.pending = false;
@@ -2823,7 +2823,7 @@ var init_AsapAction = __esm({
2823
2823
  return scheduler._scheduled || (scheduler._scheduled = immediateProvider.setImmediate(scheduler.flush.bind(scheduler, void 0)));
2824
2824
  };
2825
2825
  AsapAction2.prototype.recycleAsyncId = function(scheduler, id, delay2) {
2826
- var _a41;
2826
+ var _a47;
2827
2827
  if (delay2 === void 0) {
2828
2828
  delay2 = 0;
2829
2829
  }
@@ -2831,7 +2831,7 @@ var init_AsapAction = __esm({
2831
2831
  return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay2);
2832
2832
  }
2833
2833
  var actions = scheduler.actions;
2834
- if (id != null && ((_a41 = actions[actions.length - 1]) === null || _a41 === void 0 ? void 0 : _a41.id) !== id) {
2834
+ if (id != null && ((_a47 = actions[actions.length - 1]) === null || _a47 === void 0 ? void 0 : _a47.id) !== id) {
2835
2835
  immediateProvider.clearImmediate(id);
2836
2836
  if (scheduler._scheduled === id) {
2837
2837
  scheduler._scheduled = void 0;
@@ -3069,7 +3069,7 @@ var init_AnimationFrameAction = __esm({
3069
3069
  }));
3070
3070
  };
3071
3071
  AnimationFrameAction2.prototype.recycleAsyncId = function(scheduler, id, delay2) {
3072
- var _a41;
3072
+ var _a47;
3073
3073
  if (delay2 === void 0) {
3074
3074
  delay2 = 0;
3075
3075
  }
@@ -3077,7 +3077,7 @@ var init_AnimationFrameAction = __esm({
3077
3077
  return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay2);
3078
3078
  }
3079
3079
  var actions = scheduler.actions;
3080
- if (id != null && id === scheduler._scheduled && ((_a41 = actions[actions.length - 1]) === null || _a41 === void 0 ? void 0 : _a41.id) !== id) {
3080
+ if (id != null && id === scheduler._scheduled && ((_a47 = actions[actions.length - 1]) === null || _a47 === void 0 ? void 0 : _a47.id) !== id) {
3081
3081
  animationFrameProvider.cancelAnimationFrame(id);
3082
3082
  scheduler._scheduled = void 0;
3083
3083
  }
@@ -3166,7 +3166,7 @@ var init_VirtualTimeScheduler = __esm({
3166
3166
  return _this;
3167
3167
  }
3168
3168
  VirtualTimeScheduler2.prototype.flush = function() {
3169
- var _a41 = this, actions = _a41.actions, maxFrames = _a41.maxFrames;
3169
+ var _a47 = this, actions = _a47.actions, maxFrames = _a47.maxFrames;
3170
3170
  var error;
3171
3171
  var action;
3172
3172
  while ((action = actions[0]) && action.delay <= maxFrames) {
@@ -3386,7 +3386,7 @@ var init_isIterable = __esm({
3386
3386
  // node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js
3387
3387
  function readableStreamLikeToAsyncGenerator(readableStream) {
3388
3388
  return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {
3389
- var reader, _a41, value2, done;
3389
+ var reader, _a47, value2, done;
3390
3390
  return __generator(this, function(_b) {
3391
3391
  switch (_b.label) {
3392
3392
  case 0:
@@ -3399,7 +3399,7 @@ function readableStreamLikeToAsyncGenerator(readableStream) {
3399
3399
  if (false) return [3, 8];
3400
3400
  return [4, __await(reader.read())];
3401
3401
  case 3:
3402
- _a41 = _b.sent(), value2 = _a41.value, done = _a41.done;
3402
+ _a47 = _b.sent(), value2 = _a47.value, done = _a47.done;
3403
3403
  if (!done) return [3, 5];
3404
3404
  return [4, __await(void 0)];
3405
3405
  case 4:
@@ -3490,7 +3490,7 @@ function fromPromise(promise) {
3490
3490
  }
3491
3491
  function fromIterable(iterable) {
3492
3492
  return new Observable(function(subscriber) {
3493
- var e_1, _a41;
3493
+ var e_1, _a47;
3494
3494
  try {
3495
3495
  for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {
3496
3496
  var value2 = iterable_1_1.value;
@@ -3503,7 +3503,7 @@ function fromIterable(iterable) {
3503
3503
  e_1 = { error: e_1_1 };
3504
3504
  } finally {
3505
3505
  try {
3506
- if (iterable_1_1 && !iterable_1_1.done && (_a41 = iterable_1.return)) _a41.call(iterable_1);
3506
+ if (iterable_1_1 && !iterable_1_1.done && (_a47 = iterable_1.return)) _a47.call(iterable_1);
3507
3507
  } finally {
3508
3508
  if (e_1) throw e_1.error;
3509
3509
  }
@@ -3523,7 +3523,7 @@ function fromReadableStreamLike(readableStream) {
3523
3523
  }
3524
3524
  function process2(asyncIterable, subscriber) {
3525
3525
  var asyncIterable_1, asyncIterable_1_1;
3526
- var e_2, _a41;
3526
+ var e_2, _a47;
3527
3527
  return __awaiter(this, void 0, void 0, function() {
3528
3528
  var value2, e_2_1;
3529
3529
  return __generator(this, function(_b) {
@@ -3552,8 +3552,8 @@ function process2(asyncIterable, subscriber) {
3552
3552
  return [3, 11];
3553
3553
  case 6:
3554
3554
  _b.trys.push([6, , 9, 10]);
3555
- if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a41 = asyncIterable_1.return))) return [3, 8];
3556
- return [4, _a41.call(asyncIterable_1)];
3555
+ if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a47 = asyncIterable_1.return))) return [3, 8];
3556
+ return [4, _a47.call(asyncIterable_1)];
3557
3557
  case 7:
3558
3558
  _b.sent();
3559
3559
  _b.label = 8;
@@ -3713,11 +3713,11 @@ function scheduleIterable(input, scheduler) {
3713
3713
  executeSchedule(subscriber, scheduler, function() {
3714
3714
  iterator2 = input[iterator]();
3715
3715
  executeSchedule(subscriber, scheduler, function() {
3716
- var _a41;
3716
+ var _a47;
3717
3717
  var value2;
3718
3718
  var done;
3719
3719
  try {
3720
- _a41 = iterator2.next(), value2 = _a41.value, done = _a41.done;
3720
+ _a47 = iterator2.next(), value2 = _a47.value, done = _a47.done;
3721
3721
  } catch (err) {
3722
3722
  subscriber.error(err);
3723
3723
  return;
@@ -3871,12 +3871,12 @@ var init_throwError = __esm({
3871
3871
 
3872
3872
  // node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Notification.js
3873
3873
  function observeNotification(notification, observer) {
3874
- var _a41, _b, _c;
3874
+ var _a47, _b, _c;
3875
3875
  var _d = notification, kind = _d.kind, value2 = _d.value, error = _d.error;
3876
3876
  if (typeof kind !== "string") {
3877
3877
  throw new TypeError('Invalid notification, missing "kind"');
3878
3878
  }
3879
- kind === "N" ? (_a41 = observer.next) === null || _a41 === void 0 ? void 0 : _a41.call(observer, value2) : kind === "E" ? (_b = observer.error) === null || _b === void 0 ? void 0 : _b.call(observer, error) : (_c = observer.complete) === null || _c === void 0 ? void 0 : _c.call(observer);
3879
+ kind === "N" ? (_a47 = observer.next) === null || _a47 === void 0 ? void 0 : _a47.call(observer, value2) : kind === "E" ? (_b = observer.error) === null || _b === void 0 ? void 0 : _b.call(observer, error) : (_c = observer.complete) === null || _c === void 0 ? void 0 : _c.call(observer);
3880
3880
  }
3881
3881
  var NotificationKind, Notification;
3882
3882
  var init_Notification = __esm({
@@ -3901,15 +3901,15 @@ var init_Notification = __esm({
3901
3901
  return observeNotification(this, observer);
3902
3902
  };
3903
3903
  Notification2.prototype.do = function(nextHandler, errorHandler, completeHandler) {
3904
- var _a41 = this, kind = _a41.kind, value2 = _a41.value, error = _a41.error;
3904
+ var _a47 = this, kind = _a47.kind, value2 = _a47.value, error = _a47.error;
3905
3905
  return kind === "N" ? nextHandler === null || nextHandler === void 0 ? void 0 : nextHandler(value2) : kind === "E" ? errorHandler === null || errorHandler === void 0 ? void 0 : errorHandler(error) : completeHandler === null || completeHandler === void 0 ? void 0 : completeHandler();
3906
3906
  };
3907
3907
  Notification2.prototype.accept = function(nextOrObserver, error, complete) {
3908
- var _a41;
3909
- return isFunction((_a41 = nextOrObserver) === null || _a41 === void 0 ? void 0 : _a41.next) ? this.observe(nextOrObserver) : this.do(nextOrObserver, error, complete);
3908
+ var _a47;
3909
+ return isFunction((_a47 = nextOrObserver) === null || _a47 === void 0 ? void 0 : _a47.next) ? this.observe(nextOrObserver) : this.do(nextOrObserver, error, complete);
3910
3910
  };
3911
3911
  Notification2.prototype.toObservable = function() {
3912
- var _a41 = this, kind = _a41.kind, value2 = _a41.value, error = _a41.error;
3912
+ var _a47 = this, kind = _a47.kind, value2 = _a47.value, error = _a47.error;
3913
3913
  var result = kind === "N" ? of(value2) : kind === "E" ? throwError(function() {
3914
3914
  return error;
3915
3915
  }) : kind === "C" ? EMPTY : 0;
@@ -4022,7 +4022,7 @@ var init_isDate = __esm({
4022
4022
 
4023
4023
  // node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/timeout.js
4024
4024
  function timeout(config3, schedulerArg) {
4025
- var _a41 = isValidDate(config3) ? { first: config3 } : typeof config3 === "number" ? { each: config3 } : config3, first2 = _a41.first, each = _a41.each, _b = _a41.with, _with = _b === void 0 ? timeoutErrorFactory : _b, _c = _a41.scheduler, scheduler = _c === void 0 ? schedulerArg !== null && schedulerArg !== void 0 ? schedulerArg : asyncScheduler : _c, _d = _a41.meta, meta = _d === void 0 ? null : _d;
4025
+ var _a47 = isValidDate(config3) ? { first: config3 } : typeof config3 === "number" ? { each: config3 } : config3, first2 = _a47.first, each = _a47.each, _b = _a47.with, _with = _b === void 0 ? timeoutErrorFactory : _b, _c = _a47.scheduler, scheduler = _c === void 0 ? schedulerArg !== null && schedulerArg !== void 0 ? schedulerArg : asyncScheduler : _c, _d = _a47.meta, meta = _d === void 0 ? null : _d;
4026
4026
  if (first2 == null && each == null) {
4027
4027
  throw new TypeError("No timeout provided.");
4028
4028
  }
@@ -4300,11 +4300,11 @@ function fromEvent(target, eventName, options, resultSelector) {
4300
4300
  if (resultSelector) {
4301
4301
  return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs(resultSelector));
4302
4302
  }
4303
- var _a41 = __read(isEventTarget(target) ? eventTargetMethods.map(function(methodName) {
4303
+ var _a47 = __read(isEventTarget(target) ? eventTargetMethods.map(function(methodName) {
4304
4304
  return function(handler2) {
4305
4305
  return target[methodName](eventName, handler2, options);
4306
4306
  };
4307
- }) : isNodeStyleEventEmitter(target) ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName)) : isJQueryStyleEventEmitter(target) ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName)) : [], 2), add3 = _a41[0], remove2 = _a41[1];
4307
+ }) : isNodeStyleEventEmitter(target) ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName)) : isJQueryStyleEventEmitter(target) ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName)) : [], 2), add3 = _a47[0], remove2 = _a47[1];
4308
4308
  if (!add3) {
4309
4309
  if (isArrayLike(target)) {
4310
4310
  return mergeMap(function(subTarget) {
@@ -4562,7 +4562,7 @@ function bufferCount(bufferSize, startBufferEvery) {
4562
4562
  var buffers = [];
4563
4563
  var count2 = 0;
4564
4564
  source.subscribe(createOperatorSubscriber(subscriber, function(value2) {
4565
- var e_1, _a41, e_2, _b;
4565
+ var e_1, _a47, e_2, _b;
4566
4566
  var toEmit = null;
4567
4567
  if (count2++ % startBufferEvery === 0) {
4568
4568
  buffers.push([]);
@@ -4580,7 +4580,7 @@ function bufferCount(bufferSize, startBufferEvery) {
4580
4580
  e_1 = { error: e_1_1 };
4581
4581
  } finally {
4582
4582
  try {
4583
- if (buffers_1_1 && !buffers_1_1.done && (_a41 = buffers_1.return)) _a41.call(buffers_1);
4583
+ if (buffers_1_1 && !buffers_1_1.done && (_a47 = buffers_1.return)) _a47.call(buffers_1);
4584
4584
  } finally {
4585
4585
  if (e_1) throw e_1.error;
4586
4586
  }
@@ -4603,7 +4603,7 @@ function bufferCount(bufferSize, startBufferEvery) {
4603
4603
  }
4604
4604
  }
4605
4605
  }, function() {
4606
- var e_3, _a41;
4606
+ var e_3, _a47;
4607
4607
  try {
4608
4608
  for (var buffers_2 = __values(buffers), buffers_2_1 = buffers_2.next(); !buffers_2_1.done; buffers_2_1 = buffers_2.next()) {
4609
4609
  var buffer2 = buffers_2_1.value;
@@ -4613,7 +4613,7 @@ function bufferCount(bufferSize, startBufferEvery) {
4613
4613
  e_3 = { error: e_3_1 };
4614
4614
  } finally {
4615
4615
  try {
4616
- if (buffers_2_1 && !buffers_2_1.done && (_a41 = buffers_2.return)) _a41.call(buffers_2);
4616
+ if (buffers_2_1 && !buffers_2_1.done && (_a47 = buffers_2.return)) _a47.call(buffers_2);
4617
4617
  } finally {
4618
4618
  if (e_3) throw e_3.error;
4619
4619
  }
@@ -4635,12 +4635,12 @@ var init_bufferCount = __esm({
4635
4635
 
4636
4636
  // node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/bufferTime.js
4637
4637
  function bufferTime(bufferTimeSpan) {
4638
- var _a41, _b;
4638
+ var _a47, _b;
4639
4639
  var otherArgs = [];
4640
4640
  for (var _i = 1; _i < arguments.length; _i++) {
4641
4641
  otherArgs[_i - 1] = arguments[_i];
4642
4642
  }
4643
- var scheduler = (_a41 = popScheduler(otherArgs)) !== null && _a41 !== void 0 ? _a41 : asyncScheduler;
4643
+ var scheduler = (_a47 = popScheduler(otherArgs)) !== null && _a47 !== void 0 ? _a47 : asyncScheduler;
4644
4644
  var bufferCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null;
4645
4645
  var maxBufferSize = otherArgs[1] || Infinity;
4646
4646
  return operate(function(source, subscriber) {
@@ -4675,7 +4675,7 @@ function bufferTime(bufferTimeSpan) {
4675
4675
  }
4676
4676
  startBuffer();
4677
4677
  var bufferTimeSubscriber = createOperatorSubscriber(subscriber, function(value2) {
4678
- var e_1, _a42;
4678
+ var e_1, _a48;
4679
4679
  var recordsCopy = bufferRecords.slice();
4680
4680
  try {
4681
4681
  for (var recordsCopy_1 = __values(recordsCopy), recordsCopy_1_1 = recordsCopy_1.next(); !recordsCopy_1_1.done; recordsCopy_1_1 = recordsCopy_1.next()) {
@@ -4688,7 +4688,7 @@ function bufferTime(bufferTimeSpan) {
4688
4688
  e_1 = { error: e_1_1 };
4689
4689
  } finally {
4690
4690
  try {
4691
- if (recordsCopy_1_1 && !recordsCopy_1_1.done && (_a42 = recordsCopy_1.return)) _a42.call(recordsCopy_1);
4691
+ if (recordsCopy_1_1 && !recordsCopy_1_1.done && (_a48 = recordsCopy_1.return)) _a48.call(recordsCopy_1);
4692
4692
  } finally {
4693
4693
  if (e_1) throw e_1.error;
4694
4694
  }
@@ -5323,7 +5323,7 @@ var init_tap = __esm({
5323
5323
  // node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/throttle.js
5324
5324
  function throttle(durationSelector, config3) {
5325
5325
  return operate(function(source, subscriber) {
5326
- var _a41 = config3 !== null && config3 !== void 0 ? config3 : {}, _b = _a41.leading, leading = _b === void 0 ? true : _b, _c = _a41.trailing, trailing = _c === void 0 ? false : _c;
5326
+ var _a47 = config3 !== null && config3 !== void 0 ? config3 : {}, _b = _a47.leading, leading = _b === void 0 ? true : _b, _c = _a47.trailing, trailing = _c === void 0 ? false : _c;
5327
5327
  var hasValue = false;
5328
5328
  var sendValue = null;
5329
5329
  var throttled = null;
@@ -50059,7 +50059,7 @@ var require_sweet_scroll = __commonJS({
50059
50059
  hash: null
50060
50060
  };
50061
50061
  this.loop = function(time) {
50062
- var _a41 = _this, $el = _a41.$el, ctx = _a41.ctx;
50062
+ var _a47 = _this, $el = _a47.$el, ctx = _a47.ctx;
50063
50063
  if (!ctx.start) {
50064
50064
  ctx.start = time;
50065
50065
  }
@@ -50154,7 +50154,7 @@ var require_sweet_scroll = __commonJS({
50154
50154
  if (!canUseDOM) {
50155
50155
  return;
50156
50156
  }
50157
- var _a41 = this, $el = _a41.$el, ctx = _a41.ctx, currentOptions = _a41.opts;
50157
+ var _a47 = this, $el = _a47.$el, ctx = _a47.ctx, currentOptions = _a47.opts;
50158
50158
  var $trigger = ctx.$trigger;
50159
50159
  var opts = __assign2({}, currentOptions, options || {});
50160
50160
  var optOffset = opts.offset, vertical = opts.vertical, horizontal = opts.horizontal;
@@ -50221,7 +50221,7 @@ var require_sweet_scroll = __commonJS({
50221
50221
  if (gotoEnd === void 0) {
50222
50222
  gotoEnd = false;
50223
50223
  }
50224
- var _a41 = this, $el = _a41.$el, ctx = _a41.ctx;
50224
+ var _a47 = this, $el = _a47.$el, ctx = _a47.ctx;
50225
50225
  var pos = ctx.pos;
50226
50226
  if (!$el || !ctx.progress) {
50227
50227
  return;
@@ -50277,7 +50277,7 @@ var require_sweet_scroll = __commonJS({
50277
50277
  ctx.id = SweetScroll4.raf(this.loop);
50278
50278
  };
50279
50279
  SweetScroll4.prototype.complete = function() {
50280
- var _a41 = this, $el = _a41.$el, ctx = _a41.ctx;
50280
+ var _a47 = this, $el = _a47.$el, ctx = _a47.ctx;
50281
50281
  var hash = ctx.hash, cancel = ctx.cancel, opts = ctx.opts, pos = ctx.pos, $trigger = ctx.$trigger;
50282
50282
  if (!$el || !opts) {
50283
50283
  return;
@@ -50303,18 +50303,18 @@ var require_sweet_scroll = __commonJS({
50303
50303
  for (var _i = 2; _i < arguments.length; _i++) {
50304
50304
  args[_i - 2] = arguments[_i];
50305
50305
  }
50306
- var _a41;
50306
+ var _a47;
50307
50307
  var callback = options[type5];
50308
50308
  var callbackResult;
50309
50309
  var methodResult;
50310
50310
  if (isFunction2(callback)) {
50311
50311
  callbackResult = callback.apply(this, args.concat([this]));
50312
50312
  }
50313
- methodResult = (_a41 = this)["on" + (type5[0].toUpperCase() + type5.slice(1))].apply(_a41, args);
50313
+ methodResult = (_a47 = this)["on" + (type5[0].toUpperCase() + type5.slice(1))].apply(_a47, args);
50314
50314
  return callbackResult !== void 0 ? callbackResult : methodResult;
50315
50315
  };
50316
50316
  SweetScroll4.prototype.bind = function(click, stop) {
50317
- var _a41 = this, $el = _a41.$el, opts = _a41.ctx.opts;
50317
+ var _a47 = this, $el = _a47.$el, opts = _a47.ctx.opts;
50318
50318
  if ($el) {
50319
50319
  if (click) {
50320
50320
  addEvent($el, CONTAINER_CLICK_EVENT, this.handleClick, false);
@@ -50325,7 +50325,7 @@ var require_sweet_scroll = __commonJS({
50325
50325
  }
50326
50326
  };
50327
50327
  SweetScroll4.prototype.unbind = function(click, stop) {
50328
- var _a41 = this, $el = _a41.$el, opts = _a41.ctx.opts;
50328
+ var _a47 = this, $el = _a47.$el, opts = _a47.ctx.opts;
50329
50329
  if ($el) {
50330
50330
  if (click) {
50331
50331
  removeEvent($el, CONTAINER_CLICK_EVENT, this.handleClick, false);
@@ -54869,26 +54869,26 @@ var init_fontawesome_svg_core = __esm({
54869
54869
  }
54870
54870
  };
54871
54871
  parse9 = {
54872
- icon: function icon(_icon2) {
54873
- if (_icon2 === null) {
54872
+ icon: function icon(_icon3) {
54873
+ if (_icon3 === null) {
54874
54874
  return null;
54875
54875
  }
54876
- if (_typeof(_icon2) === "object" && _icon2.prefix && _icon2.iconName) {
54876
+ if (_typeof(_icon3) === "object" && _icon3.prefix && _icon3.iconName) {
54877
54877
  return {
54878
- prefix: _icon2.prefix,
54879
- iconName: byAlias(_icon2.prefix, _icon2.iconName) || _icon2.iconName
54878
+ prefix: _icon3.prefix,
54879
+ iconName: byAlias(_icon3.prefix, _icon3.iconName) || _icon3.iconName
54880
54880
  };
54881
54881
  }
54882
- if (Array.isArray(_icon2) && _icon2.length === 2) {
54883
- var iconName = _icon2[1].indexOf("fa-") === 0 ? _icon2[1].slice(3) : _icon2[1];
54884
- var prefix4 = getCanonicalPrefix(_icon2[0]);
54882
+ if (Array.isArray(_icon3) && _icon3.length === 2) {
54883
+ var iconName = _icon3[1].indexOf("fa-") === 0 ? _icon3[1].slice(3) : _icon3[1];
54884
+ var prefix4 = getCanonicalPrefix(_icon3[0]);
54885
54885
  return {
54886
54886
  prefix: prefix4,
54887
54887
  iconName: byAlias(prefix4, iconName) || iconName
54888
54888
  };
54889
54889
  }
54890
- if (typeof _icon2 === "string" && (_icon2.indexOf("".concat(config2.cssPrefix, "-")) > -1 || _icon2.match(ICON_SELECTION_SYNTAX_PATTERN))) {
54891
- var canonicalIcon = getCanonicalIcon(_icon2.split(" "), {
54890
+ if (typeof _icon3 === "string" && (_icon3.indexOf("".concat(config2.cssPrefix, "-")) > -1 || _icon3.match(ICON_SELECTION_SYNTAX_PATTERN))) {
54891
+ var canonicalIcon = getCanonicalIcon(_icon3.split(" "), {
54892
54892
  skipLookups: true
54893
54893
  });
54894
54894
  return {
@@ -54896,11 +54896,11 @@ var init_fontawesome_svg_core = __esm({
54896
54896
  iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName
54897
54897
  };
54898
54898
  }
54899
- if (typeof _icon2 === "string") {
54899
+ if (typeof _icon3 === "string") {
54900
54900
  var _prefix = getDefaultUsablePrefix();
54901
54901
  return {
54902
54902
  prefix: _prefix,
54903
- iconName: byAlias(_prefix, _icon2) || _icon2
54903
+ iconName: byAlias(_prefix, _icon3) || _icon3
54904
54904
  };
54905
54905
  }
54906
54906
  }
@@ -96697,11 +96697,15 @@ var setupWccTools = (configOrElements, pagesArg) => {
96697
96697
  var elements_exports = {};
96698
96698
  __export(elements_exports, {
96699
96699
  SzCertificatesCard: () => SzCertificatesCard,
96700
+ SzConfigOverview: () => SzConfigOverview,
96701
+ SzConfigSection: () => SzConfigSection,
96700
96702
  SzDashboardView: () => SzDashboardView,
96703
+ SzDemoViewConfig: () => SzDemoViewConfig,
96701
96704
  SzDemoViewDashboard: () => SzDemoViewDashboard,
96702
96705
  SzDemoViewMta: () => SzDemoViewMta,
96703
96706
  SzDemoViewNetwork: () => SzDemoViewNetwork,
96704
96707
  SzDemoViewRegistries: () => SzDemoViewRegistries,
96708
+ SzDemoViewRoutes: () => SzDemoViewRoutes,
96705
96709
  SzDemoViewServices: () => SzDemoViewServices,
96706
96710
  SzDemoViewSettings: () => SzDemoViewSettings,
96707
96711
  SzDemoViewTokens: () => SzDemoViewTokens,
@@ -96720,6 +96724,8 @@ __export(elements_exports, {
96720
96724
  SzRegistryExternalView: () => SzRegistryExternalView,
96721
96725
  SzResourceUsageCard: () => SzResourceUsageCard,
96722
96726
  SzReverseProxyCard: () => SzReverseProxyCard,
96727
+ SzRouteCard: () => SzRouteCard,
96728
+ SzRouteListView: () => SzRouteListView,
96723
96729
  SzServiceCreateView: () => SzServiceCreateView,
96724
96730
  SzServiceDetailView: () => SzServiceDetailView,
96725
96731
  SzServicesBackupsView: () => SzServicesBackupsView,
@@ -105634,11 +105640,1435 @@ __publicField(SzMtaDetailView, "styles", [
105634
105640
  ]);
105635
105641
  __runInitializers(_init29, 1, SzMtaDetailView);
105636
105642
 
105643
+ // ts_web/elements/sz-route-card.ts
105644
+ init_dist_ts29();
105645
+ var _route_dec, _a30, _SzRouteCard_decorators, _init30, _route;
105646
+ function formatPorts(ports) {
105647
+ if (typeof ports === "number") return String(ports);
105648
+ if (Array.isArray(ports)) {
105649
+ return ports.map((p7) => {
105650
+ if (typeof p7 === "number") return String(p7);
105651
+ return `${p7.from}\u2013${p7.to}`;
105652
+ }).join(", ");
105653
+ }
105654
+ return String(ports);
105655
+ }
105656
+ function formatTargets(targets) {
105657
+ const result = [];
105658
+ for (const t9 of targets) {
105659
+ const hosts = Array.isArray(t9.host) ? t9.host : [t9.host];
105660
+ const portStr = t9.port === "preserve" ? "(preserve)" : String(t9.port);
105661
+ for (const h9 of hosts) {
105662
+ result.push(`${h9}:${portStr}`);
105663
+ }
105664
+ }
105665
+ return result;
105666
+ }
105667
+ _SzRouteCard_decorators = [t4("sz-route-card")];
105668
+ var SzRouteCard = class extends (_a30 = DeesElement, _route_dec = [n5({ type: Object })], _a30) {
105669
+ constructor() {
105670
+ super(...arguments);
105671
+ __privateAdd(this, _route, __runInitializers(_init30, 8, this, null)), __runInitializers(_init30, 11, this);
105672
+ }
105673
+ render() {
105674
+ if (!this.route) {
105675
+ return b2`<div class="card"><div class="no-route">No route data</div></div>`;
105676
+ }
105677
+ const r11 = this.route;
105678
+ const isEnabled = r11.enabled !== false;
105679
+ const match2 = r11.match;
105680
+ const action = r11.action;
105681
+ const security = r11.security;
105682
+ return b2`
105683
+ <div class="card">
105684
+ <!-- Header -->
105685
+ <div class="header">
105686
+ <div class="header-left">
105687
+ <span class="status-dot ${isEnabled ? "enabled" : "disabled"}"></span>
105688
+ <span class="route-name">${r11.name || r11.id || "Unnamed Route"}</span>
105689
+ </div>
105690
+ <div class="header-badges">
105691
+ <span class="badge ${action.type}">${action.type}</span>
105692
+ <span class="badge ${isEnabled ? "enabled" : "disabled"}">${isEnabled ? "enabled" : "disabled"}</span>
105693
+ </div>
105694
+ </div>
105695
+
105696
+ ${r11.description ? b2`<div class="description">${r11.description}</div>` : ""}
105697
+
105698
+ <div class="meta-row">
105699
+ ${r11.tags && r11.tags.length > 0 ? b2`<div class="tags">${r11.tags.map((t9) => b2`<span class="tag">${t9}</span>`)}</div>` : b2`<div></div>`}
105700
+ ${r11.priority != null ? b2`<span class="priority">Priority: ${r11.priority}</span>` : ""}
105701
+ </div>
105702
+
105703
+ <!-- Match Section -->
105704
+ <div class="section match">
105705
+ <div class="section-label">Match</div>
105706
+ <div class="field-row">
105707
+ <span class="field-key">Ports</span>
105708
+ <span class="field-value mono">${formatPorts(match2.ports)}</span>
105709
+ </div>
105710
+ ${match2.domains ? b2`
105711
+ <div class="field-row">
105712
+ <span class="field-key">Domains</span>
105713
+ <span class="field-value">${this.renderDomains(match2.domains)}</span>
105714
+ </div>
105715
+ ` : ""}
105716
+ ${match2.path ? b2`
105717
+ <div class="field-row">
105718
+ <span class="field-key">Path</span>
105719
+ <span class="field-value mono">${match2.path}</span>
105720
+ </div>
105721
+ ` : ""}
105722
+ ${match2.protocol ? b2`
105723
+ <div class="field-row">
105724
+ <span class="field-key">Protocol</span>
105725
+ <span class="field-value">
105726
+ <span class="protocol-badge ${match2.protocol}">${match2.protocol}</span>
105727
+ </span>
105728
+ </div>
105729
+ ` : ""}
105730
+ ${match2.clientIp && match2.clientIp.length > 0 ? b2`
105731
+ <div class="field-row">
105732
+ <span class="field-key">Client</span>
105733
+ <span class="field-value mono">${match2.clientIp.join(", ")}</span>
105734
+ </div>
105735
+ ` : ""}
105736
+ ${match2.tlsVersion && match2.tlsVersion.length > 0 ? b2`
105737
+ <div class="field-row">
105738
+ <span class="field-key">TLS Ver</span>
105739
+ <span class="field-value">${match2.tlsVersion.join(", ")}</span>
105740
+ </div>
105741
+ ` : ""}
105742
+ ${match2.headers ? b2`
105743
+ <div class="field-row">
105744
+ <span class="field-key">Headers</span>
105745
+ <span class="field-value">
105746
+ ${Object.entries(match2.headers).map(
105747
+ ([k4, v5]) => b2`<span class="header-pair">${k4}=${v5}</span> `
105748
+ )}
105749
+ </span>
105750
+ </div>
105751
+ ` : ""}
105752
+ </div>
105753
+
105754
+ <!-- Action Section -->
105755
+ <div class="section action">
105756
+ <div class="section-label">Action</div>
105757
+ ${action.targets && action.targets.length > 0 ? b2`
105758
+ <div class="field-row">
105759
+ <span class="field-key">Targets</span>
105760
+ <span class="field-value mono">${formatTargets(action.targets).join(", ")}</span>
105761
+ </div>
105762
+ ` : ""}
105763
+ ${action.tls ? b2`
105764
+ <div class="field-row">
105765
+ <span class="field-key">TLS</span>
105766
+ <span class="field-value">
105767
+ ${action.tls.mode}
105768
+ ${action.tls.certificate ? action.tls.certificate === "auto" ? b2` <span class="tls-badge auto">auto cert</span>` : b2` <span class="tls-badge custom">custom cert</span>` : ""}
105769
+ </span>
105770
+ </div>
105771
+ ` : ""}
105772
+ ${action.forwardingEngine ? b2`
105773
+ <div class="field-row">
105774
+ <span class="field-key">Engine</span>
105775
+ <span class="field-value"><span class="engine-badge">${action.forwardingEngine}</span></span>
105776
+ </div>
105777
+ ` : ""}
105778
+ ${action.loadBalancing ? b2`
105779
+ <div class="field-row">
105780
+ <span class="field-key">LB</span>
105781
+ <span class="field-value">${action.loadBalancing.algorithm}</span>
105782
+ </div>
105783
+ ` : ""}
105784
+ ${action.websocket?.enabled ? b2`
105785
+ <div class="field-row">
105786
+ <span class="field-key">WS</span>
105787
+ <span class="field-value"><span class="badge enabled">enabled</span></span>
105788
+ </div>
105789
+ ` : ""}
105790
+ </div>
105791
+
105792
+ <!-- Security Section -->
105793
+ ${security ? b2`
105794
+ <div class="section security">
105795
+ <div class="section-label">Security</div>
105796
+ ${security.ipAllowList && security.ipAllowList.length > 0 ? b2`
105797
+ <div class="field-row">
105798
+ <span class="field-key">Allow</span>
105799
+ <span class="field-value mono">${security.ipAllowList.join(", ")}</span>
105800
+ </div>
105801
+ ` : ""}
105802
+ ${security.ipBlockList && security.ipBlockList.length > 0 ? b2`
105803
+ <div class="field-row">
105804
+ <span class="field-key">Block</span>
105805
+ <span class="field-value mono">${security.ipBlockList.join(", ")}</span>
105806
+ </div>
105807
+ ` : ""}
105808
+ ${security.rateLimit?.enabled ? b2`
105809
+ <div class="field-row">
105810
+ <span class="field-key">Rate</span>
105811
+ <span class="field-value">${security.rateLimit.maxRequests} req / ${security.rateLimit.window}s</span>
105812
+ </div>
105813
+ ` : ""}
105814
+ ${security.maxConnections ? b2`
105815
+ <div class="field-row">
105816
+ <span class="field-key">Max Conn</span>
105817
+ <span class="field-value">${security.maxConnections}</span>
105818
+ </div>
105819
+ ` : ""}
105820
+ </div>
105821
+ ` : ""}
105822
+
105823
+ <!-- Feature Icons Row -->
105824
+ ${this.renderFeatures()}
105825
+ </div>
105826
+ `;
105827
+ }
105828
+ renderDomains(domains) {
105829
+ const list5 = Array.isArray(domains) ? domains : [domains];
105830
+ return b2`${list5.map(
105831
+ (d6) => b2`<span class="domain-chip ${d6.includes("*") ? "glob" : ""}">${d6}</span>`
105832
+ )}`;
105833
+ }
105834
+ renderFeatures() {
105835
+ if (!this.route) return b2``;
105836
+ const features = [];
105837
+ const action = this.route.action;
105838
+ const security = this.route.security;
105839
+ const headers = this.route.headers;
105840
+ if (action.tls) {
105841
+ features.push(b2`<span class="feature"><span class="feature-icon">&#x1f512;</span>TLS</span>`);
105842
+ }
105843
+ if (action.websocket?.enabled) {
105844
+ features.push(b2`<span class="feature"><span class="feature-icon">&#x2194;</span>WS</span>`);
105845
+ }
105846
+ if (action.loadBalancing) {
105847
+ features.push(b2`<span class="feature"><span class="feature-icon">&#x2696;</span>LB</span>`);
105848
+ }
105849
+ if (security) {
105850
+ features.push(b2`<span class="feature"><span class="feature-icon">&#x1f6e1;</span>Security</span>`);
105851
+ }
105852
+ if (headers) {
105853
+ features.push(b2`<span class="feature"><span class="feature-icon">&#x2699;</span>Headers</span>`);
105854
+ }
105855
+ if (features.length === 0) return b2``;
105856
+ return b2`<div class="features-row">${features}</div>`;
105857
+ }
105858
+ };
105859
+ _init30 = __decoratorStart(_a30);
105860
+ _route = new WeakMap();
105861
+ __decorateElement(_init30, 4, "route", _route_dec, SzRouteCard, _route);
105862
+ SzRouteCard = __decorateElement(_init30, 0, "SzRouteCard", _SzRouteCard_decorators, SzRouteCard);
105863
+ __publicField(SzRouteCard, "demo", () => b2`
105864
+ <div style="padding: 24px; max-width: 520px;">
105865
+ <sz-route-card
105866
+ .route=${{
105867
+ name: "API Gateway",
105868
+ description: "Main API gateway with TLS termination and load balancing",
105869
+ enabled: true,
105870
+ priority: 10,
105871
+ tags: ["web", "api", "production"],
105872
+ match: {
105873
+ ports: [443, 8443],
105874
+ domains: ["api.example.com", "*.api.serve.zone"],
105875
+ path: "/api/*",
105876
+ protocol: "http",
105877
+ clientIp: ["10.0.0.0/8"]
105878
+ },
105879
+ action: {
105880
+ type: "forward",
105881
+ targets: [
105882
+ { host: ["10.0.0.1", "10.0.0.2"], port: 8080 }
105883
+ ],
105884
+ tls: { mode: "terminate", certificate: "auto" },
105885
+ websocket: { enabled: true },
105886
+ loadBalancing: { algorithm: "round-robin" },
105887
+ forwardingEngine: "nftables"
105888
+ },
105889
+ security: {
105890
+ ipAllowList: ["10.0.0.0/8"],
105891
+ ipBlockList: ["192.168.100.0/24"],
105892
+ rateLimit: { enabled: true, maxRequests: 100, window: 60 },
105893
+ maxConnections: 1e3
105894
+ }
105895
+ }}
105896
+ ></sz-route-card>
105897
+ </div>
105898
+ `);
105899
+ __publicField(SzRouteCard, "demoGroups", ["Routes"]);
105900
+ __publicField(SzRouteCard, "styles", [
105901
+ cssManager.defaultStyles,
105902
+ i`
105903
+ :host {
105904
+ display: block;
105905
+ }
105906
+
105907
+ .card {
105908
+ background: ${cssManager.bdTheme("#ffffff", "#09090b")};
105909
+ border: 1px solid ${cssManager.bdTheme("#e4e4e7", "#27272a")};
105910
+ border-radius: 8px;
105911
+ padding: 20px;
105912
+ transition: border-color 200ms ease, box-shadow 200ms ease;
105913
+ }
105914
+
105915
+ .card:hover {
105916
+ border-color: ${cssManager.bdTheme("#d4d4d8", "#3f3f46")};
105917
+ box-shadow: 0 2px 8px ${cssManager.bdTheme("rgba(0,0,0,0.06)", "rgba(0,0,0,0.2)")};
105918
+ }
105919
+
105920
+ /* Header */
105921
+ .header {
105922
+ display: flex;
105923
+ align-items: flex-start;
105924
+ justify-content: space-between;
105925
+ gap: 12px;
105926
+ margin-bottom: 4px;
105927
+ }
105928
+
105929
+ .header-left {
105930
+ display: flex;
105931
+ align-items: center;
105932
+ gap: 8px;
105933
+ min-width: 0;
105934
+ }
105935
+
105936
+ .status-dot {
105937
+ width: 8px;
105938
+ height: 8px;
105939
+ border-radius: 50%;
105940
+ flex-shrink: 0;
105941
+ }
105942
+
105943
+ .status-dot.enabled {
105944
+ background: ${cssManager.bdTheme("#22c55e", "#22c55e")};
105945
+ box-shadow: 0 0 6px ${cssManager.bdTheme("rgba(34,197,94,0.4)", "rgba(34,197,94,0.3)")};
105946
+ }
105947
+
105948
+ .status-dot.disabled {
105949
+ background: ${cssManager.bdTheme("#a1a1aa", "#52525b")};
105950
+ }
105951
+
105952
+ .route-name {
105953
+ font-size: 15px;
105954
+ font-weight: 600;
105955
+ color: ${cssManager.bdTheme("#18181b", "#fafafa")};
105956
+ white-space: nowrap;
105957
+ overflow: hidden;
105958
+ text-overflow: ellipsis;
105959
+ }
105960
+
105961
+ .header-badges {
105962
+ display: flex;
105963
+ gap: 6px;
105964
+ flex-shrink: 0;
105965
+ }
105966
+
105967
+ .badge {
105968
+ display: inline-flex;
105969
+ align-items: center;
105970
+ padding: 2px 8px;
105971
+ border-radius: 9999px;
105972
+ font-size: 11px;
105973
+ font-weight: 500;
105974
+ white-space: nowrap;
105975
+ }
105976
+
105977
+ .badge.forward {
105978
+ background: ${cssManager.bdTheme("#dbeafe", "rgba(59, 130, 246, 0.2)")};
105979
+ color: ${cssManager.bdTheme("#2563eb", "#60a5fa")};
105980
+ }
105981
+
105982
+ .badge.socket-handler {
105983
+ background: ${cssManager.bdTheme("#ede9fe", "rgba(139, 92, 246, 0.2)")};
105984
+ color: ${cssManager.bdTheme("#7c3aed", "#a78bfa")};
105985
+ }
105986
+
105987
+ .badge.enabled {
105988
+ background: ${cssManager.bdTheme("#dcfce7", "rgba(34, 197, 94, 0.2)")};
105989
+ color: ${cssManager.bdTheme("#16a34a", "#22c55e")};
105990
+ }
105991
+
105992
+ .badge.disabled {
105993
+ background: ${cssManager.bdTheme("#f4f4f5", "rgba(113, 113, 122, 0.2)")};
105994
+ color: ${cssManager.bdTheme("#71717a", "#a1a1aa")};
105995
+ }
105996
+
105997
+ .description {
105998
+ font-size: 13px;
105999
+ color: ${cssManager.bdTheme("#71717a", "#a1a1aa")};
106000
+ margin-bottom: 8px;
106001
+ line-height: 1.4;
106002
+ }
106003
+
106004
+ .meta-row {
106005
+ display: flex;
106006
+ align-items: center;
106007
+ justify-content: space-between;
106008
+ flex-wrap: wrap;
106009
+ gap: 6px;
106010
+ margin-bottom: 16px;
106011
+ }
106012
+
106013
+ .tags {
106014
+ display: flex;
106015
+ flex-wrap: wrap;
106016
+ gap: 4px;
106017
+ }
106018
+
106019
+ .tag {
106020
+ padding: 2px 8px;
106021
+ background: ${cssManager.bdTheme("#f4f4f5", "#27272a")};
106022
+ border-radius: 4px;
106023
+ font-size: 11px;
106024
+ font-weight: 500;
106025
+ color: ${cssManager.bdTheme("#52525b", "#a1a1aa")};
106026
+ }
106027
+
106028
+ .priority {
106029
+ font-size: 11px;
106030
+ color: ${cssManager.bdTheme("#a1a1aa", "#71717a")};
106031
+ font-weight: 500;
106032
+ }
106033
+
106034
+ /* Sections */
106035
+ .section {
106036
+ border-left: 3px solid;
106037
+ padding: 10px 14px;
106038
+ margin-bottom: 12px;
106039
+ border-radius: 0 6px 6px 0;
106040
+ background: ${cssManager.bdTheme("#fafafa", "#0a0a0a")};
106041
+ }
106042
+
106043
+ .section:last-of-type {
106044
+ margin-bottom: 0;
106045
+ }
106046
+
106047
+ .section.match {
106048
+ border-left-color: ${cssManager.bdTheme("#3b82f6", "#3b82f6")};
106049
+ }
106050
+
106051
+ .section.action {
106052
+ border-left-color: ${cssManager.bdTheme("#22c55e", "#22c55e")};
106053
+ }
106054
+
106055
+ .section.security {
106056
+ border-left-color: ${cssManager.bdTheme("#f59e0b", "#f59e0b")};
106057
+ }
106058
+
106059
+ .section-label {
106060
+ font-size: 10px;
106061
+ font-weight: 600;
106062
+ text-transform: uppercase;
106063
+ letter-spacing: 0.08em;
106064
+ color: ${cssManager.bdTheme("#a1a1aa", "#71717a")};
106065
+ margin-bottom: 8px;
106066
+ }
106067
+
106068
+ .field-row {
106069
+ display: flex;
106070
+ gap: 8px;
106071
+ margin-bottom: 5px;
106072
+ font-size: 13px;
106073
+ line-height: 1.5;
106074
+ }
106075
+
106076
+ .field-row:last-child {
106077
+ margin-bottom: 0;
106078
+ }
106079
+
106080
+ .field-key {
106081
+ color: ${cssManager.bdTheme("#71717a", "#a1a1aa")};
106082
+ min-width: 64px;
106083
+ flex-shrink: 0;
106084
+ font-weight: 500;
106085
+ }
106086
+
106087
+ .field-value {
106088
+ color: ${cssManager.bdTheme("#18181b", "#e4e4e7")};
106089
+ word-break: break-all;
106090
+ }
106091
+
106092
+ .domain-chip {
106093
+ display: inline-flex;
106094
+ padding: 1px 6px;
106095
+ background: ${cssManager.bdTheme("#eff6ff", "rgba(59, 130, 246, 0.1)")};
106096
+ border-radius: 3px;
106097
+ font-size: 12px;
106098
+ margin-right: 4px;
106099
+ margin-bottom: 2px;
106100
+ font-family: monospace;
106101
+ }
106102
+
106103
+ .domain-chip.glob {
106104
+ background: ${cssManager.bdTheme("#fef3c7", "rgba(245, 158, 11, 0.15)")};
106105
+ color: ${cssManager.bdTheme("#92400e", "#fbbf24")};
106106
+ }
106107
+
106108
+ .mono {
106109
+ font-family: monospace;
106110
+ font-size: 12px;
106111
+ }
106112
+
106113
+ .protocol-badge {
106114
+ display: inline-flex;
106115
+ padding: 1px 6px;
106116
+ border-radius: 3px;
106117
+ font-size: 11px;
106118
+ font-weight: 500;
106119
+ }
106120
+
106121
+ .protocol-badge.http {
106122
+ background: ${cssManager.bdTheme("#dbeafe", "rgba(59, 130, 246, 0.2)")};
106123
+ color: ${cssManager.bdTheme("#2563eb", "#60a5fa")};
106124
+ }
106125
+
106126
+ .protocol-badge.tcp {
106127
+ background: ${cssManager.bdTheme("#dcfce7", "rgba(34, 197, 94, 0.2)")};
106128
+ color: ${cssManager.bdTheme("#16a34a", "#22c55e")};
106129
+ }
106130
+
106131
+ .tls-badge {
106132
+ display: inline-flex;
106133
+ padding: 1px 6px;
106134
+ border-radius: 3px;
106135
+ font-size: 11px;
106136
+ font-weight: 500;
106137
+ }
106138
+
106139
+ .tls-badge.auto {
106140
+ background: ${cssManager.bdTheme("#dcfce7", "rgba(34, 197, 94, 0.2)")};
106141
+ color: ${cssManager.bdTheme("#16a34a", "#22c55e")};
106142
+ }
106143
+
106144
+ .tls-badge.custom {
106145
+ background: ${cssManager.bdTheme("#ffedd5", "rgba(249, 115, 22, 0.2)")};
106146
+ color: ${cssManager.bdTheme("#c2410c", "#fb923c")};
106147
+ }
106148
+
106149
+ .engine-badge {
106150
+ display: inline-flex;
106151
+ padding: 1px 6px;
106152
+ border-radius: 3px;
106153
+ font-size: 11px;
106154
+ font-weight: 500;
106155
+ background: ${cssManager.bdTheme("#fae8ff", "rgba(168, 85, 247, 0.2)")};
106156
+ color: ${cssManager.bdTheme("#7e22ce", "#c084fc")};
106157
+ }
106158
+
106159
+ .header-pair {
106160
+ display: inline;
106161
+ font-family: monospace;
106162
+ font-size: 12px;
106163
+ }
106164
+
106165
+ /* Feature icons */
106166
+ .features-row {
106167
+ display: flex;
106168
+ flex-wrap: wrap;
106169
+ gap: 10px;
106170
+ margin-top: 14px;
106171
+ padding-top: 12px;
106172
+ border-top: 1px solid ${cssManager.bdTheme("#f4f4f5", "#1a1a1a")};
106173
+ }
106174
+
106175
+ .feature {
106176
+ display: flex;
106177
+ align-items: center;
106178
+ gap: 4px;
106179
+ font-size: 11px;
106180
+ font-weight: 500;
106181
+ color: ${cssManager.bdTheme("#71717a", "#a1a1aa")};
106182
+ }
106183
+
106184
+ .feature-icon {
106185
+ font-size: 13px;
106186
+ }
106187
+
106188
+ .no-route {
106189
+ text-align: center;
106190
+ padding: 24px;
106191
+ color: ${cssManager.bdTheme("#a1a1aa", "#52525b")};
106192
+ font-size: 13px;
106193
+ }
106194
+ `
106195
+ ]);
106196
+ __runInitializers(_init30, 1, SzRouteCard);
106197
+
106198
+ // ts_web/elements/sz-route-list-view.ts
106199
+ init_dist_ts29();
106200
+ var _enabledFilter_dec, _actionFilter_dec, _searchQuery_dec2, _routes_dec, _a31, _SzRouteListView_decorators, _init31, _routes, _searchQuery2, _actionFilter, _enabledFilter;
106201
+ _SzRouteListView_decorators = [t4("sz-route-list-view")];
106202
+ var SzRouteListView = class extends (_a31 = DeesElement, _routes_dec = [n5({ type: Array })], _searchQuery_dec2 = [r5()], _actionFilter_dec = [r5()], _enabledFilter_dec = [r5()], _a31) {
106203
+ constructor() {
106204
+ super(...arguments);
106205
+ __privateAdd(this, _routes, __runInitializers(_init31, 8, this, [])), __runInitializers(_init31, 11, this);
106206
+ __privateAdd(this, _searchQuery2, __runInitializers(_init31, 12, this, "")), __runInitializers(_init31, 15, this);
106207
+ __privateAdd(this, _actionFilter, __runInitializers(_init31, 16, this, "all")), __runInitializers(_init31, 19, this);
106208
+ __privateAdd(this, _enabledFilter, __runInitializers(_init31, 20, this, "all")), __runInitializers(_init31, 23, this);
106209
+ }
106210
+ get filteredRoutes() {
106211
+ return this.routes.filter((route) => {
106212
+ if (this.actionFilter !== "all" && route.action.type !== this.actionFilter) return false;
106213
+ if (this.enabledFilter === "enabled" && route.enabled === false) return false;
106214
+ if (this.enabledFilter === "disabled" && route.enabled !== false) return false;
106215
+ if (this.searchQuery) {
106216
+ const q = this.searchQuery.toLowerCase();
106217
+ return this.routeMatchesSearch(route, q);
106218
+ }
106219
+ return true;
106220
+ });
106221
+ }
106222
+ routeMatchesSearch(route, q) {
106223
+ if (route.name?.toLowerCase().includes(q)) return true;
106224
+ if (route.description?.toLowerCase().includes(q)) return true;
106225
+ if (route.match.domains) {
106226
+ const domains = Array.isArray(route.match.domains) ? route.match.domains : [route.match.domains];
106227
+ if (domains.some((d6) => d6.toLowerCase().includes(q))) return true;
106228
+ }
106229
+ const portsStr = this.formatPortsForSearch(route.match.ports);
106230
+ if (portsStr.includes(q)) return true;
106231
+ if (route.match.path?.toLowerCase().includes(q)) return true;
106232
+ if (route.match.clientIp?.some((ip) => ip.includes(q))) return true;
106233
+ if (route.action.targets) {
106234
+ for (const t9 of route.action.targets) {
106235
+ const hosts = Array.isArray(t9.host) ? t9.host : [t9.host];
106236
+ if (hosts.some((h9) => h9.toLowerCase().includes(q))) return true;
106237
+ }
106238
+ }
106239
+ if (route.tags?.some((t9) => t9.toLowerCase().includes(q))) return true;
106240
+ return false;
106241
+ }
106242
+ formatPortsForSearch(ports) {
106243
+ if (typeof ports === "number") return String(ports);
106244
+ if (Array.isArray(ports)) {
106245
+ return ports.map((p7) => typeof p7 === "number" ? String(p7) : `${p7.from}-${p7.to}`).join(" ");
106246
+ }
106247
+ return String(ports);
106248
+ }
106249
+ render() {
106250
+ const filtered = this.filteredRoutes;
106251
+ return b2`
106252
+ <div class="filter-bar">
106253
+ <input
106254
+ class="search-input"
106255
+ type="text"
106256
+ placeholder="Search routes by domain, IP, port, path, or tag..."
106257
+ .value=${this.searchQuery}
106258
+ @input=${(e11) => {
106259
+ this.searchQuery = e11.target.value;
106260
+ }}
106261
+ />
106262
+ <div class="chip-group">
106263
+ ${["all", "forward", "socket-handler"].map(
106264
+ (type5) => b2`
106265
+ <button
106266
+ class="chip ${this.actionFilter === type5 ? "active" : ""}"
106267
+ @click=${() => {
106268
+ this.actionFilter = type5;
106269
+ }}
106270
+ >
106271
+ ${type5 === "all" ? "All" : type5 === "forward" ? "Forward" : "Socket Handler"}
106272
+ </button>
106273
+ `
106274
+ )}
106275
+ </div>
106276
+ <div class="chip-group">
106277
+ ${["all", "enabled", "disabled"].map(
106278
+ (status) => b2`
106279
+ <button
106280
+ class="chip ${this.enabledFilter === status ? "active" : ""}"
106281
+ @click=${() => {
106282
+ this.enabledFilter = status;
106283
+ }}
106284
+ >
106285
+ ${status.charAt(0).toUpperCase() + status.slice(1)}
106286
+ </button>
106287
+ `
106288
+ )}
106289
+ </div>
106290
+ </div>
106291
+
106292
+ <div class="results-count">
106293
+ Showing ${filtered.length} of ${this.routes.length} routes
106294
+ </div>
106295
+
106296
+ ${filtered.length > 0 ? b2`
106297
+ <div class="grid">
106298
+ ${filtered.map(
106299
+ (route) => b2`
106300
+ <sz-route-card
106301
+ .route=${route}
106302
+ @click=${() => this.handleRouteClick(route)}
106303
+ ></sz-route-card>
106304
+ `
106305
+ )}
106306
+ </div>
106307
+ ` : b2`
106308
+ <div class="empty-state">
106309
+ <div class="empty-state-icon">&#x1f50d;</div>
106310
+ <div>No routes match your filters</div>
106311
+ </div>
106312
+ `}
106313
+ `;
106314
+ }
106315
+ handleRouteClick(route) {
106316
+ this.dispatchEvent(
106317
+ new CustomEvent("route-click", {
106318
+ detail: route,
106319
+ bubbles: true,
106320
+ composed: true
106321
+ })
106322
+ );
106323
+ }
106324
+ };
106325
+ _init31 = __decoratorStart(_a31);
106326
+ _routes = new WeakMap();
106327
+ _searchQuery2 = new WeakMap();
106328
+ _actionFilter = new WeakMap();
106329
+ _enabledFilter = new WeakMap();
106330
+ __decorateElement(_init31, 4, "routes", _routes_dec, SzRouteListView, _routes);
106331
+ __decorateElement(_init31, 4, "searchQuery", _searchQuery_dec2, SzRouteListView, _searchQuery2);
106332
+ __decorateElement(_init31, 4, "actionFilter", _actionFilter_dec, SzRouteListView, _actionFilter);
106333
+ __decorateElement(_init31, 4, "enabledFilter", _enabledFilter_dec, SzRouteListView, _enabledFilter);
106334
+ SzRouteListView = __decorateElement(_init31, 0, "SzRouteListView", _SzRouteListView_decorators, SzRouteListView);
106335
+ __publicField(SzRouteListView, "demo", () => b2`
106336
+ <div style="padding: 24px; max-width: 1200px;">
106337
+ <sz-route-list-view
106338
+ .routes=${[
106339
+ {
106340
+ name: "HTTPS Gateway",
106341
+ description: "Main web gateway with TLS termination",
106342
+ enabled: true,
106343
+ tags: ["web", "https", "production"],
106344
+ match: { ports: 443, domains: ["*.example.com", "serve.zone"], protocol: "http" },
106345
+ action: {
106346
+ type: "forward",
106347
+ targets: [{ host: "10.0.0.1", port: 8080 }],
106348
+ tls: { mode: "terminate", certificate: "auto" }
106349
+ }
106350
+ },
106351
+ {
106352
+ name: "SMTP Inbound",
106353
+ description: "Email relay for incoming mail",
106354
+ enabled: true,
106355
+ tags: ["email", "smtp"],
106356
+ match: { ports: 25, domains: "mail.serve.zone" },
106357
+ action: {
106358
+ type: "forward",
106359
+ targets: [{ host: "10.0.1.5", port: 25 }]
106360
+ }
106361
+ },
106362
+ {
106363
+ name: "WebSocket API",
106364
+ description: "Real-time WebSocket connections",
106365
+ enabled: true,
106366
+ tags: ["web", "api"],
106367
+ match: { ports: 443, domains: "ws.example.com", path: "/ws/*" },
106368
+ action: {
106369
+ type: "forward",
106370
+ targets: [{ host: "10.0.0.3", port: 9090 }],
106371
+ websocket: { enabled: true },
106372
+ tls: { mode: "terminate", certificate: "auto" }
106373
+ }
106374
+ },
106375
+ {
106376
+ name: "Maintenance Page",
106377
+ enabled: false,
106378
+ tags: ["web"],
106379
+ match: { ports: [80, 443], domains: "old.example.com" },
106380
+ action: { type: "socket-handler" }
106381
+ }
106382
+ ]}
106383
+ ></sz-route-list-view>
106384
+ </div>
106385
+ `);
106386
+ __publicField(SzRouteListView, "demoGroups", ["Routes"]);
106387
+ __publicField(SzRouteListView, "styles", [
106388
+ cssManager.defaultStyles,
106389
+ i`
106390
+ :host {
106391
+ display: block;
106392
+ }
106393
+
106394
+ .filter-bar {
106395
+ display: flex;
106396
+ flex-wrap: wrap;
106397
+ gap: 12px;
106398
+ align-items: center;
106399
+ margin-bottom: 12px;
106400
+ }
106401
+
106402
+ .search-input {
106403
+ flex: 1;
106404
+ min-width: 200px;
106405
+ padding: 8px 12px;
106406
+ background: ${cssManager.bdTheme("#ffffff", "#09090b")};
106407
+ border: 1px solid ${cssManager.bdTheme("#e4e4e7", "#27272a")};
106408
+ border-radius: 6px;
106409
+ font-size: 14px;
106410
+ color: ${cssManager.bdTheme("#18181b", "#fafafa")};
106411
+ outline: none;
106412
+ transition: border-color 200ms ease;
106413
+ }
106414
+
106415
+ .search-input::placeholder {
106416
+ color: ${cssManager.bdTheme("#a1a1aa", "#52525b")};
106417
+ }
106418
+
106419
+ .search-input:focus {
106420
+ border-color: ${cssManager.bdTheme("#2563eb", "#3b82f6")};
106421
+ }
106422
+
106423
+ .chip-group {
106424
+ display: flex;
106425
+ gap: 4px;
106426
+ }
106427
+
106428
+ .chip {
106429
+ padding: 6px 12px;
106430
+ background: transparent;
106431
+ border: 1px solid ${cssManager.bdTheme("#e4e4e7", "#27272a")};
106432
+ border-radius: 9999px;
106433
+ font-size: 12px;
106434
+ font-weight: 500;
106435
+ color: ${cssManager.bdTheme("#71717a", "#a1a1aa")};
106436
+ cursor: pointer;
106437
+ transition: all 200ms ease;
106438
+ white-space: nowrap;
106439
+ }
106440
+
106441
+ .chip:hover {
106442
+ background: ${cssManager.bdTheme("#f4f4f5", "#18181b")};
106443
+ color: ${cssManager.bdTheme("#18181b", "#fafafa")};
106444
+ }
106445
+
106446
+ .chip.active {
106447
+ background: ${cssManager.bdTheme("#18181b", "#fafafa")};
106448
+ color: ${cssManager.bdTheme("#fafafa", "#18181b")};
106449
+ border-color: ${cssManager.bdTheme("#18181b", "#fafafa")};
106450
+ }
106451
+
106452
+ .results-count {
106453
+ font-size: 13px;
106454
+ color: ${cssManager.bdTheme("#71717a", "#a1a1aa")};
106455
+ margin-bottom: 16px;
106456
+ }
106457
+
106458
+ .grid {
106459
+ display: grid;
106460
+ grid-template-columns: repeat(auto-fill, minmax(420px, 1fr));
106461
+ gap: 16px;
106462
+ }
106463
+
106464
+ .grid sz-route-card {
106465
+ cursor: pointer;
106466
+ }
106467
+
106468
+ .empty-state {
106469
+ text-align: center;
106470
+ padding: 48px 24px;
106471
+ color: ${cssManager.bdTheme("#71717a", "#a1a1aa")};
106472
+ font-size: 14px;
106473
+ }
106474
+
106475
+ .empty-state-icon {
106476
+ font-size: 32px;
106477
+ margin-bottom: 12px;
106478
+ opacity: 0.5;
106479
+ }
106480
+ `
106481
+ ]);
106482
+ __runInitializers(_init31, 1, SzRouteListView);
106483
+
106484
+ // ts_web/elements/sz-config-section.ts
106485
+ init_dist_ts29();
106486
+ var _isCollapsed_dec, _collapsed_dec, _collapsible_dec, _fields_dec, _status_dec2, _icon_dec2, _subtitle_dec2, _title_dec2, _a32, _SzConfigSection_decorators, _init32, _title2, _subtitle2, _icon2, _status2, _fields, _collapsible, _collapsed, _isCollapsed;
106487
+ _SzConfigSection_decorators = [t4("sz-config-section")];
106488
+ var SzConfigSection = class extends (_a32 = DeesElement, _title_dec2 = [n5({ type: String })], _subtitle_dec2 = [n5({ type: String })], _icon_dec2 = [n5({ type: String })], _status_dec2 = [n5({ type: String })], _fields_dec = [n5({ type: Array })], _collapsible_dec = [n5({ type: Boolean })], _collapsed_dec = [n5({ type: Boolean })], _isCollapsed_dec = [r5()], _a32) {
106489
+ constructor() {
106490
+ super(...arguments);
106491
+ __privateAdd(this, _title2, __runInitializers(_init32, 8, this, "")), __runInitializers(_init32, 11, this);
106492
+ __privateAdd(this, _subtitle2, __runInitializers(_init32, 12, this, "")), __runInitializers(_init32, 15, this);
106493
+ __privateAdd(this, _icon2, __runInitializers(_init32, 16, this, "")), __runInitializers(_init32, 19, this);
106494
+ __privateAdd(this, _status2, __runInitializers(_init32, 20, this, "enabled")), __runInitializers(_init32, 23, this);
106495
+ __privateAdd(this, _fields, __runInitializers(_init32, 24, this, [])), __runInitializers(_init32, 27, this);
106496
+ __privateAdd(this, _collapsible, __runInitializers(_init32, 28, this, false)), __runInitializers(_init32, 31, this);
106497
+ __privateAdd(this, _collapsed, __runInitializers(_init32, 32, this, false)), __runInitializers(_init32, 35, this);
106498
+ __privateAdd(this, _isCollapsed, __runInitializers(_init32, 36, this, false)), __runInitializers(_init32, 39, this);
106499
+ }
106500
+ async connectedCallback() {
106501
+ await super.connectedCallback();
106502
+ this.isCollapsed = this.collapsed;
106503
+ if (this.collapsible) {
106504
+ this.setAttribute("collapsible", "");
106505
+ }
106506
+ }
106507
+ render() {
106508
+ const statusLabels = {
106509
+ "enabled": "Enabled",
106510
+ "disabled": "Disabled",
106511
+ "not-configured": "Not Configured",
106512
+ "warning": "Warning"
106513
+ };
106514
+ return b2`
106515
+ <div class="section">
106516
+ <div
106517
+ class="section-header"
106518
+ @click=${() => {
106519
+ if (this.collapsible) {
106520
+ this.isCollapsed = !this.isCollapsed;
106521
+ }
106522
+ }}
106523
+ >
106524
+ <div class="header-left">
106525
+ ${this.icon ? b2`
106526
+ <div class="header-icon">
106527
+ <dees-icon .icon=${this.icon}></dees-icon>
106528
+ </div>
106529
+ ` : ""}
106530
+ <div class="header-text">
106531
+ <div class="header-title">${this.title}</div>
106532
+ ${this.subtitle ? b2`<div class="header-subtitle">${this.subtitle}</div>` : ""}
106533
+ </div>
106534
+ </div>
106535
+ <div class="header-right">
106536
+ ${this.status ? b2`
106537
+ <span class="status-badge ${this.status}">
106538
+ <span class="status-dot"></span>
106539
+ ${statusLabels[this.status] || this.status}
106540
+ </span>
106541
+ ` : ""}
106542
+ ${this.collapsible ? b2`
106543
+ <span class="chevron ${this.isCollapsed ? "collapsed" : ""}">
106544
+ <dees-icon .icon=${"lucide:chevronDown"}></dees-icon>
106545
+ </span>
106546
+ ` : ""}
106547
+ </div>
106548
+ </div>
106549
+ <div class="section-content ${this.isCollapsed ? "collapsed" : ""}">
106550
+ ${this.fields.map((field) => this.renderField(field))}
106551
+ <div class="slot-content">
106552
+ <slot></slot>
106553
+ </div>
106554
+ </div>
106555
+ </div>
106556
+ `;
106557
+ }
106558
+ renderField(field) {
106559
+ return b2`
106560
+ <div class="field-row">
106561
+ <div class="field-key">${field.key}</div>
106562
+ <div>
106563
+ ${this.renderFieldValue(field)}
106564
+ ${field.description ? b2`<div class="field-description">${field.description}</div>` : ""}
106565
+ </div>
106566
+ </div>
106567
+ `;
106568
+ }
106569
+ renderFieldValue(field) {
106570
+ const value2 = field.value;
106571
+ const type5 = field.type || this.inferType(value2);
106572
+ if (value2 === null || value2 === void 0) {
106573
+ return b2`<span class="field-value null-value">Not configured</span>`;
106574
+ }
106575
+ switch (type5) {
106576
+ case "boolean":
106577
+ return b2`
106578
+ <span class="bool-value ${value2 ? "true" : "false"}">
106579
+ <span class="bool-dot"></span>
106580
+ ${value2 ? "Enabled" : "Disabled"}
106581
+ </span>
106582
+ `;
106583
+ case "pills":
106584
+ if (Array.isArray(value2) && value2.length === 0) {
106585
+ return b2`<span class="field-value null-value">None</span>`;
106586
+ }
106587
+ return b2`
106588
+ <div class="pills">
106589
+ ${value2.map((v5) => b2`<span class="pill">${v5}</span>`)}
106590
+ </div>
106591
+ `;
106592
+ case "code":
106593
+ return b2`<span class="code-value">${String(value2)}</span>`;
106594
+ case "badge":
106595
+ return b2`<span class="badge-value">${String(value2)}</span>`;
106596
+ case "link":
106597
+ return b2`
106598
+ <span
106599
+ class="link-value"
106600
+ @click=${() => {
106601
+ if (field.linkTo) {
106602
+ this.dispatchEvent(new CustomEvent("navigate", {
106603
+ detail: { target: field.linkTo },
106604
+ bubbles: true,
106605
+ composed: true
106606
+ }));
106607
+ }
106608
+ }}
106609
+ >${String(value2)}</span>
106610
+ `;
106611
+ default:
106612
+ return b2`<span class="field-value">${String(value2)}</span>`;
106613
+ }
106614
+ }
106615
+ inferType(value2) {
106616
+ if (typeof value2 === "boolean") return "boolean";
106617
+ if (Array.isArray(value2)) return "pills";
106618
+ return "text";
106619
+ }
106620
+ };
106621
+ _init32 = __decoratorStart(_a32);
106622
+ _title2 = new WeakMap();
106623
+ _subtitle2 = new WeakMap();
106624
+ _icon2 = new WeakMap();
106625
+ _status2 = new WeakMap();
106626
+ _fields = new WeakMap();
106627
+ _collapsible = new WeakMap();
106628
+ _collapsed = new WeakMap();
106629
+ _isCollapsed = new WeakMap();
106630
+ __decorateElement(_init32, 4, "title", _title_dec2, SzConfigSection, _title2);
106631
+ __decorateElement(_init32, 4, "subtitle", _subtitle_dec2, SzConfigSection, _subtitle2);
106632
+ __decorateElement(_init32, 4, "icon", _icon_dec2, SzConfigSection, _icon2);
106633
+ __decorateElement(_init32, 4, "status", _status_dec2, SzConfigSection, _status2);
106634
+ __decorateElement(_init32, 4, "fields", _fields_dec, SzConfigSection, _fields);
106635
+ __decorateElement(_init32, 4, "collapsible", _collapsible_dec, SzConfigSection, _collapsible);
106636
+ __decorateElement(_init32, 4, "collapsed", _collapsed_dec, SzConfigSection, _collapsed);
106637
+ __decorateElement(_init32, 4, "isCollapsed", _isCollapsed_dec, SzConfigSection, _isCollapsed);
106638
+ SzConfigSection = __decorateElement(_init32, 0, "SzConfigSection", _SzConfigSection_decorators, SzConfigSection);
106639
+ __publicField(SzConfigSection, "demo", () => b2`
106640
+ <sz-config-section
106641
+ title="SmartProxy"
106642
+ subtitle="HTTP/HTTPS and TCP/SNI reverse proxy"
106643
+ icon="lucide:network"
106644
+ status="enabled"
106645
+ .fields=${[
106646
+ { key: "Route Count", value: 12 },
106647
+ { key: "ACME Enabled", value: true, type: "boolean" },
106648
+ { key: "Account Email", value: "admin@example.com" },
106649
+ { key: "Use Production", value: true, type: "boolean" },
106650
+ { key: "Auto Renew", value: true, type: "boolean" },
106651
+ { key: "Renew Threshold", value: "30 days" }
106652
+ ]}
106653
+ ></sz-config-section>
106654
+ <sz-config-section
106655
+ title="Email Server"
106656
+ subtitle="SMTP email handling with smartmta"
106657
+ icon="lucide:mail"
106658
+ status="disabled"
106659
+ .fields=${[
106660
+ { key: "Ports", value: ["25", "465", "587"], type: "pills" },
106661
+ { key: "Hostname", value: null },
106662
+ { key: "Domains", value: ["example.com", "mail.example.com"], type: "pills" }
106663
+ ]}
106664
+ ></sz-config-section>
106665
+ <sz-config-section
106666
+ title="DNS Server"
106667
+ subtitle="Authoritative DNS with smartdns"
106668
+ icon="lucide:globe"
106669
+ status="not-configured"
106670
+ collapsible
106671
+ .fields=${[
106672
+ { key: "Port", value: 53 },
106673
+ { key: "NS Domains", value: ["ns1.example.com", "ns2.example.com"], type: "pills" }
106674
+ ]}
106675
+ ></sz-config-section>
106676
+ `);
106677
+ __publicField(SzConfigSection, "demoGroups", ["Configuration"]);
106678
+ __publicField(SzConfigSection, "styles", [
106679
+ cssManager.defaultStyles,
106680
+ i`
106681
+ :host {
106682
+ display: block;
106683
+ margin-bottom: 16px;
106684
+ }
106685
+
106686
+ .section {
106687
+ background: ${cssManager.bdTheme("#ffffff", "#09090b")};
106688
+ border: 1px solid ${cssManager.bdTheme("#e4e4e7", "#27272a")};
106689
+ border-radius: 8px;
106690
+ overflow: hidden;
106691
+ }
106692
+
106693
+ .section-header {
106694
+ display: flex;
106695
+ align-items: center;
106696
+ justify-content: space-between;
106697
+ padding: 14px 20px;
106698
+ background: ${cssManager.bdTheme("#f4f4f5", "#18181b")};
106699
+ border-bottom: 1px solid ${cssManager.bdTheme("#e4e4e7", "#27272a")};
106700
+ cursor: default;
106701
+ user-select: none;
106702
+ }
106703
+
106704
+ :host([collapsible]) .section-header {
106705
+ cursor: pointer;
106706
+ }
106707
+
106708
+ :host([collapsible]) .section-header:hover {
106709
+ background: ${cssManager.bdTheme("#ebebed", "#1c1c1f")};
106710
+ }
106711
+
106712
+ .header-left {
106713
+ display: flex;
106714
+ align-items: center;
106715
+ gap: 12px;
106716
+ min-width: 0;
106717
+ }
106718
+
106719
+ .header-icon {
106720
+ display: flex;
106721
+ align-items: center;
106722
+ justify-content: center;
106723
+ width: 36px;
106724
+ height: 36px;
106725
+ background: ${cssManager.bdTheme("#e4e4e7", "#27272a")};
106726
+ border-radius: 8px;
106727
+ flex-shrink: 0;
106728
+ }
106729
+
106730
+ .header-icon dees-icon {
106731
+ font-size: 18px;
106732
+ color: ${cssManager.bdTheme("#52525b", "#a1a1aa")};
106733
+ }
106734
+
106735
+ .header-text {
106736
+ min-width: 0;
106737
+ }
106738
+
106739
+ .header-title {
106740
+ font-size: 15px;
106741
+ font-weight: 600;
106742
+ color: ${cssManager.bdTheme("#18181b", "#fafafa")};
106743
+ line-height: 1.3;
106744
+ }
106745
+
106746
+ .header-subtitle {
106747
+ font-size: 12px;
106748
+ color: ${cssManager.bdTheme("#71717a", "#a1a1aa")};
106749
+ line-height: 1.3;
106750
+ margin-top: 1px;
106751
+ }
106752
+
106753
+ .header-right {
106754
+ display: flex;
106755
+ align-items: center;
106756
+ gap: 10px;
106757
+ flex-shrink: 0;
106758
+ }
106759
+
106760
+ /* Status badge */
106761
+ .status-badge {
106762
+ display: inline-flex;
106763
+ align-items: center;
106764
+ gap: 6px;
106765
+ padding: 3px 10px;
106766
+ border-radius: 9999px;
106767
+ font-size: 12px;
106768
+ font-weight: 500;
106769
+ white-space: nowrap;
106770
+ }
106771
+
106772
+ .status-badge.enabled {
106773
+ background: ${cssManager.bdTheme("#dcfce7", "rgba(34,197,94,0.2)")};
106774
+ color: ${cssManager.bdTheme("#16a34a", "#22c55e")};
106775
+ }
106776
+
106777
+ .status-badge.disabled {
106778
+ background: ${cssManager.bdTheme("#fee2e2", "rgba(239,68,68,0.2)")};
106779
+ color: ${cssManager.bdTheme("#dc2626", "#ef4444")};
106780
+ }
106781
+
106782
+ .status-badge.not-configured {
106783
+ background: ${cssManager.bdTheme("#f4f4f5", "rgba(113,113,122,0.2)")};
106784
+ color: ${cssManager.bdTheme("#71717a", "#a1a1aa")};
106785
+ }
106786
+
106787
+ .status-badge.warning {
106788
+ background: ${cssManager.bdTheme("#fef3c7", "rgba(245,158,11,0.15)")};
106789
+ color: ${cssManager.bdTheme("#92400e", "#fbbf24")};
106790
+ }
106791
+
106792
+ .status-dot {
106793
+ width: 7px;
106794
+ height: 7px;
106795
+ border-radius: 50%;
106796
+ }
106797
+
106798
+ .status-badge.enabled .status-dot {
106799
+ background: ${cssManager.bdTheme("#16a34a", "#22c55e")};
106800
+ }
106801
+
106802
+ .status-badge.disabled .status-dot {
106803
+ background: ${cssManager.bdTheme("#dc2626", "#ef4444")};
106804
+ }
106805
+
106806
+ .status-badge.not-configured .status-dot {
106807
+ background: ${cssManager.bdTheme("#a1a1aa", "#52525b")};
106808
+ }
106809
+
106810
+ .status-badge.warning .status-dot {
106811
+ background: ${cssManager.bdTheme("#f59e0b", "#fbbf24")};
106812
+ }
106813
+
106814
+ /* Chevron */
106815
+ .chevron {
106816
+ display: flex;
106817
+ align-items: center;
106818
+ transition: transform 200ms ease;
106819
+ }
106820
+
106821
+ .chevron.collapsed {
106822
+ transform: rotate(-90deg);
106823
+ }
106824
+
106825
+ .chevron dees-icon {
106826
+ font-size: 16px;
106827
+ color: ${cssManager.bdTheme("#a1a1aa", "#52525b")};
106828
+ }
106829
+
106830
+ /* Content */
106831
+ .section-content {
106832
+ padding: 0;
106833
+ }
106834
+
106835
+ .section-content.collapsed {
106836
+ display: none;
106837
+ }
106838
+
106839
+ /* Field rows */
106840
+ .field-row {
106841
+ display: flex;
106842
+ align-items: flex-start;
106843
+ justify-content: space-between;
106844
+ padding: 10px 20px;
106845
+ border-bottom: 1px solid ${cssManager.bdTheme("#f4f4f5", "#1a1a1e")};
106846
+ gap: 16px;
106847
+ }
106848
+
106849
+ .field-row:last-child {
106850
+ border-bottom: none;
106851
+ }
106852
+
106853
+ .field-key {
106854
+ font-size: 13px;
106855
+ font-weight: 500;
106856
+ color: ${cssManager.bdTheme("#71717a", "#a1a1aa")};
106857
+ flex-shrink: 0;
106858
+ min-width: 140px;
106859
+ padding-top: 1px;
106860
+ }
106861
+
106862
+ .field-value {
106863
+ font-size: 13px;
106864
+ font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;
106865
+ color: ${cssManager.bdTheme("#18181b", "#fafafa")};
106866
+ text-align: right;
106867
+ word-break: break-all;
106868
+ }
106869
+
106870
+ .field-value.null-value {
106871
+ color: ${cssManager.bdTheme("#a1a1aa", "#52525b")};
106872
+ font-style: italic;
106873
+ font-family: inherit;
106874
+ }
106875
+
106876
+ /* Boolean display */
106877
+ .bool-value {
106878
+ display: inline-flex;
106879
+ align-items: center;
106880
+ gap: 5px;
106881
+ font-family: inherit;
106882
+ font-size: 13px;
106883
+ font-weight: 500;
106884
+ }
106885
+
106886
+ .bool-value.true {
106887
+ color: ${cssManager.bdTheme("#16a34a", "#22c55e")};
106888
+ }
106889
+
106890
+ .bool-value.false {
106891
+ color: ${cssManager.bdTheme("#dc2626", "#ef4444")};
106892
+ }
106893
+
106894
+ .bool-dot {
106895
+ width: 6px;
106896
+ height: 6px;
106897
+ border-radius: 50%;
106898
+ }
106899
+
106900
+ .bool-value.true .bool-dot {
106901
+ background: ${cssManager.bdTheme("#16a34a", "#22c55e")};
106902
+ }
106903
+
106904
+ .bool-value.false .bool-dot {
106905
+ background: ${cssManager.bdTheme("#dc2626", "#ef4444")};
106906
+ }
106907
+
106908
+ /* Pills */
106909
+ .pills {
106910
+ display: flex;
106911
+ flex-wrap: wrap;
106912
+ gap: 5px;
106913
+ justify-content: flex-end;
106914
+ }
106915
+
106916
+ .pill {
106917
+ display: inline-flex;
106918
+ align-items: center;
106919
+ padding: 2px 9px;
106920
+ border-radius: 9999px;
106921
+ font-size: 12px;
106922
+ font-weight: 500;
106923
+ font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;
106924
+ background: ${cssManager.bdTheme("#eff6ff", "rgba(59,130,246,0.1)")};
106925
+ color: ${cssManager.bdTheme("#2563eb", "#60a5fa")};
106926
+ }
106927
+
106928
+ /* Code value */
106929
+ .code-value {
106930
+ font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;
106931
+ font-size: 12px;
106932
+ background: ${cssManager.bdTheme("#f4f4f5", "#18181b")};
106933
+ padding: 2px 8px;
106934
+ border-radius: 4px;
106935
+ color: ${cssManager.bdTheme("#18181b", "#fafafa")};
106936
+ }
106937
+
106938
+ /* Link value */
106939
+ .link-value {
106940
+ color: ${cssManager.bdTheme("#2563eb", "#60a5fa")};
106941
+ cursor: pointer;
106942
+ text-decoration: none;
106943
+ font-family: inherit;
106944
+ font-size: 13px;
106945
+ }
106946
+
106947
+ .link-value:hover {
106948
+ text-decoration: underline;
106949
+ }
106950
+
106951
+ /* Description hint */
106952
+ .field-description {
106953
+ font-size: 11px;
106954
+ color: ${cssManager.bdTheme("#a1a1aa", "#52525b")};
106955
+ margin-top: 3px;
106956
+ text-align: right;
106957
+ }
106958
+
106959
+ /* Slot for custom content */
106960
+ .slot-content {
106961
+ border-top: 1px solid ${cssManager.bdTheme("#f4f4f5", "#1a1a1e")};
106962
+ }
106963
+
106964
+ .slot-content:empty {
106965
+ display: none;
106966
+ border-top: none;
106967
+ }
106968
+
106969
+ /* Badge type */
106970
+ .badge-value {
106971
+ display: inline-flex;
106972
+ align-items: center;
106973
+ padding: 2px 9px;
106974
+ border-radius: 9999px;
106975
+ font-size: 12px;
106976
+ font-weight: 500;
106977
+ background: ${cssManager.bdTheme("#f4f4f5", "#27272a")};
106978
+ color: ${cssManager.bdTheme("#52525b", "#a1a1aa")};
106979
+ }
106980
+ `
106981
+ ]);
106982
+ __runInitializers(_init32, 1, SzConfigSection);
106983
+
106984
+ // ts_web/elements/sz-config-overview.ts
106985
+ init_dist_ts29();
106986
+ var _infoText_dec, _heading_dec, _a33, _SzConfigOverview_decorators, _init33, _heading, _infoText;
106987
+ _SzConfigOverview_decorators = [t4("sz-config-overview")];
106988
+ var SzConfigOverview = class extends (_a33 = DeesElement, _heading_dec = [n5({ type: String })], _infoText_dec = [n5({ type: String })], _a33) {
106989
+ constructor() {
106990
+ super(...arguments);
106991
+ __privateAdd(this, _heading, __runInitializers(_init33, 8, this, "")), __runInitializers(_init33, 11, this);
106992
+ __privateAdd(this, _infoText, __runInitializers(_init33, 12, this, "")), __runInitializers(_init33, 15, this);
106993
+ }
106994
+ render() {
106995
+ return b2`
106996
+ ${this.heading ? b2`<div class="heading">${this.heading}</div>` : ""}
106997
+ ${this.infoText ? b2`
106998
+ <div class="info-banner">
106999
+ <dees-icon .icon=${"lucide:info"}></dees-icon>
107000
+ <span>${this.infoText}</span>
107001
+ </div>
107002
+ ` : ""}
107003
+ <slot></slot>
107004
+ `;
107005
+ }
107006
+ };
107007
+ _init33 = __decoratorStart(_a33);
107008
+ _heading = new WeakMap();
107009
+ _infoText = new WeakMap();
107010
+ __decorateElement(_init33, 4, "heading", _heading_dec, SzConfigOverview, _heading);
107011
+ __decorateElement(_init33, 4, "infoText", _infoText_dec, SzConfigOverview, _infoText);
107012
+ SzConfigOverview = __decorateElement(_init33, 0, "SzConfigOverview", _SzConfigOverview_decorators, SzConfigOverview);
107013
+ __publicField(SzConfigOverview, "demo", () => b2`<sz-config-overview
107014
+ heading="Configuration"
107015
+ infoText="This is a read-only view of the current running configuration."
107016
+ >
107017
+ <div style="padding: 20px; text-align: center; color: #71717a; font-size: 14px;">
107018
+ Place &lt;sz-config-section&gt; elements here
107019
+ </div>
107020
+ </sz-config-overview>`);
107021
+ __publicField(SzConfigOverview, "demoGroups", ["Configuration"]);
107022
+ __publicField(SzConfigOverview, "styles", [
107023
+ cssManager.defaultStyles,
107024
+ i`
107025
+ :host {
107026
+ display: block;
107027
+ }
107028
+
107029
+ .heading {
107030
+ font-size: 20px;
107031
+ font-weight: 600;
107032
+ color: ${cssManager.bdTheme("#18181b", "#fafafa")};
107033
+ margin-bottom: 16px;
107034
+ }
107035
+
107036
+ .info-banner {
107037
+ display: flex;
107038
+ align-items: flex-start;
107039
+ gap: 12px;
107040
+ padding: 14px 18px;
107041
+ margin-bottom: 20px;
107042
+ border-radius: 8px;
107043
+ background: ${cssManager.bdTheme("#eff6ff", "rgba(59,130,246,0.08)")};
107044
+ border: 1px solid ${cssManager.bdTheme("#bfdbfe", "rgba(59,130,246,0.2)")};
107045
+ color: ${cssManager.bdTheme("#1e40af", "#93c5fd")};
107046
+ font-size: 13px;
107047
+ line-height: 1.5;
107048
+ }
107049
+
107050
+ .info-banner dees-icon {
107051
+ flex-shrink: 0;
107052
+ font-size: 18px;
107053
+ margin-top: 1px;
107054
+ }
107055
+
107056
+ ::slotted(sz-config-section) {
107057
+ margin-bottom: 12px;
107058
+ }
107059
+
107060
+ ::slotted(sz-config-section:last-child) {
107061
+ margin-bottom: 0;
107062
+ }
107063
+ `
107064
+ ]);
107065
+ __runInitializers(_init33, 1, SzConfigOverview);
107066
+
105637
107067
  // ts_web/elements/sz-demo-view-dashboard.ts
105638
107068
  init_dist_ts29();
105639
- var _SzDemoViewDashboard_decorators, _init30, _a30;
107069
+ var _SzDemoViewDashboard_decorators, _init34, _a34;
105640
107070
  _SzDemoViewDashboard_decorators = [t4("sz-demo-view-dashboard")];
105641
- var SzDemoViewDashboard = class extends (_a30 = DeesElement) {
107071
+ var SzDemoViewDashboard = class extends (_a34 = DeesElement) {
105642
107072
  appui = null;
105643
107073
  async onActivate(context2) {
105644
107074
  this.appui = context2.appui;
@@ -105774,21 +107204,21 @@ var SzDemoViewDashboard = class extends (_a30 = DeesElement) {
105774
107204
  `;
105775
107205
  }
105776
107206
  };
105777
- _init30 = __decoratorStart(_a30);
105778
- SzDemoViewDashboard = __decorateElement(_init30, 0, "SzDemoViewDashboard", _SzDemoViewDashboard_decorators, SzDemoViewDashboard);
105779
- __runInitializers(_init30, 1, SzDemoViewDashboard);
107207
+ _init34 = __decoratorStart(_a34);
107208
+ SzDemoViewDashboard = __decorateElement(_init34, 0, "SzDemoViewDashboard", _SzDemoViewDashboard_decorators, SzDemoViewDashboard);
107209
+ __runInitializers(_init34, 1, SzDemoViewDashboard);
105780
107210
 
105781
107211
  // ts_web/elements/sz-demo-view-services.ts
105782
107212
  init_dist_ts29();
105783
- var _selectedPlatformService_dec, _selectedService_dec, _currentView_dec2, _a31, _SzDemoViewServices_decorators, _init31, _currentView2, _selectedService, _selectedPlatformService;
107213
+ var _selectedPlatformService_dec, _selectedService_dec, _currentView_dec2, _a35, _SzDemoViewServices_decorators, _init35, _currentView2, _selectedService, _selectedPlatformService;
105784
107214
  _SzDemoViewServices_decorators = [t4("sz-demo-view-services")];
105785
- var SzDemoViewServices = class extends (_a31 = DeesElement, _currentView_dec2 = [r5()], _selectedService_dec = [r5()], _selectedPlatformService_dec = [r5()], _a31) {
107215
+ var SzDemoViewServices = class extends (_a35 = DeesElement, _currentView_dec2 = [r5()], _selectedService_dec = [r5()], _selectedPlatformService_dec = [r5()], _a35) {
105786
107216
  constructor() {
105787
107217
  super(...arguments);
105788
107218
  __publicField(this, "appui", null);
105789
- __privateAdd(this, _currentView2, __runInitializers(_init31, 8, this, "list")), __runInitializers(_init31, 11, this);
105790
- __privateAdd(this, _selectedService, __runInitializers(_init31, 12, this, null)), __runInitializers(_init31, 15, this);
105791
- __privateAdd(this, _selectedPlatformService, __runInitializers(_init31, 16, this, null)), __runInitializers(_init31, 19, this);
107219
+ __privateAdd(this, _currentView2, __runInitializers(_init35, 8, this, "list")), __runInitializers(_init35, 11, this);
107220
+ __privateAdd(this, _selectedService, __runInitializers(_init35, 12, this, null)), __runInitializers(_init35, 15, this);
107221
+ __privateAdd(this, _selectedPlatformService, __runInitializers(_init35, 16, this, null)), __runInitializers(_init35, 19, this);
105792
107222
  __publicField(this, "demoServices", [
105793
107223
  {
105794
107224
  id: "1",
@@ -106069,14 +107499,14 @@ var SzDemoViewServices = class extends (_a31 = DeesElement, _currentView_dec2 =
106069
107499
  onDeactivate() {
106070
107500
  }
106071
107501
  };
106072
- _init31 = __decoratorStart(_a31);
107502
+ _init35 = __decoratorStart(_a35);
106073
107503
  _currentView2 = new WeakMap();
106074
107504
  _selectedService = new WeakMap();
106075
107505
  _selectedPlatformService = new WeakMap();
106076
- __decorateElement(_init31, 4, "currentView", _currentView_dec2, SzDemoViewServices, _currentView2);
106077
- __decorateElement(_init31, 4, "selectedService", _selectedService_dec, SzDemoViewServices, _selectedService);
106078
- __decorateElement(_init31, 4, "selectedPlatformService", _selectedPlatformService_dec, SzDemoViewServices, _selectedPlatformService);
106079
- SzDemoViewServices = __decorateElement(_init31, 0, "SzDemoViewServices", _SzDemoViewServices_decorators, SzDemoViewServices);
107506
+ __decorateElement(_init35, 4, "currentView", _currentView_dec2, SzDemoViewServices, _currentView2);
107507
+ __decorateElement(_init35, 4, "selectedService", _selectedService_dec, SzDemoViewServices, _selectedService);
107508
+ __decorateElement(_init35, 4, "selectedPlatformService", _selectedPlatformService_dec, SzDemoViewServices, _selectedPlatformService);
107509
+ SzDemoViewServices = __decorateElement(_init35, 0, "SzDemoViewServices", _SzDemoViewServices_decorators, SzDemoViewServices);
106080
107510
  __publicField(SzDemoViewServices, "styles", [
106081
107511
  cssManager.defaultStyles,
106082
107512
  i`
@@ -106208,18 +107638,18 @@ __publicField(SzDemoViewServices, "styles", [
106208
107638
  }
106209
107639
  `
106210
107640
  ]);
106211
- __runInitializers(_init31, 1, SzDemoViewServices);
107641
+ __runInitializers(_init35, 1, SzDemoViewServices);
106212
107642
 
106213
107643
  // ts_web/elements/sz-demo-view-network.ts
106214
107644
  init_dist_ts29();
106215
- var _selectedDomain_dec, _currentTab_dec, _a32, _SzDemoViewNetwork_decorators, _init32, _currentTab, _selectedDomain;
107645
+ var _selectedDomain_dec, _currentTab_dec, _a36, _SzDemoViewNetwork_decorators, _init36, _currentTab, _selectedDomain;
106216
107646
  _SzDemoViewNetwork_decorators = [t4("sz-demo-view-network")];
106217
- var SzDemoViewNetwork = class extends (_a32 = DeesElement, _currentTab_dec = [r5()], _selectedDomain_dec = [r5()], _a32) {
107647
+ var SzDemoViewNetwork = class extends (_a36 = DeesElement, _currentTab_dec = [r5()], _selectedDomain_dec = [r5()], _a36) {
106218
107648
  constructor() {
106219
107649
  super(...arguments);
106220
107650
  __publicField(this, "appui", null);
106221
- __privateAdd(this, _currentTab, __runInitializers(_init32, 8, this, "proxy")), __runInitializers(_init32, 11, this);
106222
- __privateAdd(this, _selectedDomain, __runInitializers(_init32, 12, this, null)), __runInitializers(_init32, 15, this);
107651
+ __privateAdd(this, _currentTab, __runInitializers(_init36, 8, this, "proxy")), __runInitializers(_init36, 11, this);
107652
+ __privateAdd(this, _selectedDomain, __runInitializers(_init36, 12, this, null)), __runInitializers(_init36, 15, this);
106223
107653
  __publicField(this, "demoProxyRoutes", [
106224
107654
  { id: "1", domain: "api.example.com", target: "http://api-gateway:3000", ssl: true, status: "active" },
106225
107655
  { id: "2", domain: "app.example.com", target: "http://frontend:8080", ssl: true, status: "active" },
@@ -106467,12 +107897,12 @@ var SzDemoViewNetwork = class extends (_a32 = DeesElement, _currentTab_dec = [r5
106467
107897
  `;
106468
107898
  }
106469
107899
  };
106470
- _init32 = __decoratorStart(_a32);
107900
+ _init36 = __decoratorStart(_a36);
106471
107901
  _currentTab = new WeakMap();
106472
107902
  _selectedDomain = new WeakMap();
106473
- __decorateElement(_init32, 4, "currentTab", _currentTab_dec, SzDemoViewNetwork, _currentTab);
106474
- __decorateElement(_init32, 4, "selectedDomain", _selectedDomain_dec, SzDemoViewNetwork, _selectedDomain);
106475
- SzDemoViewNetwork = __decorateElement(_init32, 0, "SzDemoViewNetwork", _SzDemoViewNetwork_decorators, SzDemoViewNetwork);
107903
+ __decorateElement(_init36, 4, "currentTab", _currentTab_dec, SzDemoViewNetwork, _currentTab);
107904
+ __decorateElement(_init36, 4, "selectedDomain", _selectedDomain_dec, SzDemoViewNetwork, _selectedDomain);
107905
+ SzDemoViewNetwork = __decorateElement(_init36, 0, "SzDemoViewNetwork", _SzDemoViewNetwork_decorators, SzDemoViewNetwork);
106476
107906
  __publicField(SzDemoViewNetwork, "styles", [
106477
107907
  cssManager.defaultStyles,
106478
107908
  i`
@@ -106560,17 +107990,17 @@ __publicField(SzDemoViewNetwork, "styles", [
106560
107990
  }
106561
107991
  `
106562
107992
  ]);
106563
- __runInitializers(_init32, 1, SzDemoViewNetwork);
107993
+ __runInitializers(_init36, 1, SzDemoViewNetwork);
106564
107994
 
106565
107995
  // ts_web/elements/sz-demo-view-registries.ts
106566
107996
  init_dist_ts29();
106567
- var _currentTab_dec2, _a33, _SzDemoViewRegistries_decorators, _init33, _currentTab2;
107997
+ var _currentTab_dec2, _a37, _SzDemoViewRegistries_decorators, _init37, _currentTab2;
106568
107998
  _SzDemoViewRegistries_decorators = [t4("sz-demo-view-registries")];
106569
- var SzDemoViewRegistries = class extends (_a33 = DeesElement, _currentTab_dec2 = [r5()], _a33) {
107999
+ var SzDemoViewRegistries = class extends (_a37 = DeesElement, _currentTab_dec2 = [r5()], _a37) {
106570
108000
  constructor() {
106571
108001
  super(...arguments);
106572
108002
  __publicField(this, "appui", null);
106573
- __privateAdd(this, _currentTab2, __runInitializers(_init33, 8, this, "onebox")), __runInitializers(_init33, 11, this);
108003
+ __privateAdd(this, _currentTab2, __runInitializers(_init37, 8, this, "onebox")), __runInitializers(_init37, 11, this);
106574
108004
  __publicField(this, "demoOneboxImages", [
106575
108005
  { id: "1", name: "api-gateway", tags: ["latest", "v2.1.0", "v2.0.0"], size: "256 MB", updated: "2024-01-20", pulls: 142 },
106576
108006
  { id: "2", name: "frontend", tags: ["latest", "v1.5.0"], size: "128 MB", updated: "2024-01-19", pulls: 89 },
@@ -106687,10 +108117,10 @@ var SzDemoViewRegistries = class extends (_a33 = DeesElement, _currentTab_dec2 =
106687
108117
  `;
106688
108118
  }
106689
108119
  };
106690
- _init33 = __decoratorStart(_a33);
108120
+ _init37 = __decoratorStart(_a37);
106691
108121
  _currentTab2 = new WeakMap();
106692
- __decorateElement(_init33, 4, "currentTab", _currentTab_dec2, SzDemoViewRegistries, _currentTab2);
106693
- SzDemoViewRegistries = __decorateElement(_init33, 0, "SzDemoViewRegistries", _SzDemoViewRegistries_decorators, SzDemoViewRegistries);
108122
+ __decorateElement(_init37, 4, "currentTab", _currentTab_dec2, SzDemoViewRegistries, _currentTab2);
108123
+ SzDemoViewRegistries = __decorateElement(_init37, 0, "SzDemoViewRegistries", _SzDemoViewRegistries_decorators, SzDemoViewRegistries);
106694
108124
  __publicField(SzDemoViewRegistries, "styles", [
106695
108125
  cssManager.defaultStyles,
106696
108126
  i`
@@ -106758,13 +108188,13 @@ __publicField(SzDemoViewRegistries, "styles", [
106758
108188
  }
106759
108189
  `
106760
108190
  ]);
106761
- __runInitializers(_init33, 1, SzDemoViewRegistries);
108191
+ __runInitializers(_init37, 1, SzDemoViewRegistries);
106762
108192
 
106763
108193
  // ts_web/elements/sz-demo-view-tokens.ts
106764
108194
  init_dist_ts29();
106765
- var _SzDemoViewTokens_decorators, _init34, _a34;
108195
+ var _SzDemoViewTokens_decorators, _init38, _a38;
106766
108196
  _SzDemoViewTokens_decorators = [t4("sz-demo-view-tokens")];
106767
- var SzDemoViewTokens = class extends (_a34 = DeesElement) {
108197
+ var SzDemoViewTokens = class extends (_a38 = DeesElement) {
106768
108198
  appui = null;
106769
108199
  async onActivate(context2) {
106770
108200
  this.appui = context2.appui;
@@ -106855,15 +108285,15 @@ var SzDemoViewTokens = class extends (_a34 = DeesElement) {
106855
108285
  `;
106856
108286
  }
106857
108287
  };
106858
- _init34 = __decoratorStart(_a34);
106859
- SzDemoViewTokens = __decorateElement(_init34, 0, "SzDemoViewTokens", _SzDemoViewTokens_decorators, SzDemoViewTokens);
106860
- __runInitializers(_init34, 1, SzDemoViewTokens);
108288
+ _init38 = __decoratorStart(_a38);
108289
+ SzDemoViewTokens = __decorateElement(_init38, 0, "SzDemoViewTokens", _SzDemoViewTokens_decorators, SzDemoViewTokens);
108290
+ __runInitializers(_init38, 1, SzDemoViewTokens);
106861
108291
 
106862
108292
  // ts_web/elements/sz-demo-view-settings.ts
106863
108293
  init_dist_ts29();
106864
- var _SzDemoViewSettings_decorators, _init35, _a35;
108294
+ var _SzDemoViewSettings_decorators, _init39, _a39;
106865
108295
  _SzDemoViewSettings_decorators = [t4("sz-demo-view-settings")];
106866
- var SzDemoViewSettings = class extends (_a35 = DeesElement) {
108296
+ var SzDemoViewSettings = class extends (_a39 = DeesElement) {
106867
108297
  appui = null;
106868
108298
  async onActivate(context2) {
106869
108299
  this.appui = context2.appui;
@@ -106970,21 +108400,21 @@ var SzDemoViewSettings = class extends (_a35 = DeesElement) {
106970
108400
  `;
106971
108401
  }
106972
108402
  };
106973
- _init35 = __decoratorStart(_a35);
106974
- SzDemoViewSettings = __decorateElement(_init35, 0, "SzDemoViewSettings", _SzDemoViewSettings_decorators, SzDemoViewSettings);
106975
- __runInitializers(_init35, 1, SzDemoViewSettings);
108403
+ _init39 = __decoratorStart(_a39);
108404
+ SzDemoViewSettings = __decorateElement(_init39, 0, "SzDemoViewSettings", _SzDemoViewSettings_decorators, SzDemoViewSettings);
108405
+ __runInitializers(_init39, 1, SzDemoViewSettings);
106976
108406
 
106977
108407
  // ts_web/elements/sz-demo-view-mta.ts
106978
108408
  init_dist_ts29();
106979
- var _currentDirectionFilter_dec, _selectedEmail_dec, _currentView_dec3, _a36, _SzDemoViewMta_decorators, _init36, _currentView3, _selectedEmail, _currentDirectionFilter;
108409
+ var _currentDirectionFilter_dec, _selectedEmail_dec, _currentView_dec3, _a40, _SzDemoViewMta_decorators, _init40, _currentView3, _selectedEmail, _currentDirectionFilter;
106980
108410
  _SzDemoViewMta_decorators = [t4("sz-demo-view-mta")];
106981
- var SzDemoViewMta = class extends (_a36 = DeesElement, _currentView_dec3 = [r5()], _selectedEmail_dec = [r5()], _currentDirectionFilter_dec = [r5()], _a36) {
108411
+ var SzDemoViewMta = class extends (_a40 = DeesElement, _currentView_dec3 = [r5()], _selectedEmail_dec = [r5()], _currentDirectionFilter_dec = [r5()], _a40) {
106982
108412
  constructor() {
106983
108413
  super(...arguments);
106984
108414
  __publicField(this, "appui", null);
106985
- __privateAdd(this, _currentView3, __runInitializers(_init36, 8, this, "list")), __runInitializers(_init36, 11, this);
106986
- __privateAdd(this, _selectedEmail, __runInitializers(_init36, 12, this, null)), __runInitializers(_init36, 15, this);
106987
- __privateAdd(this, _currentDirectionFilter, __runInitializers(_init36, 16, this, "all")), __runInitializers(_init36, 19, this);
108415
+ __privateAdd(this, _currentView3, __runInitializers(_init40, 8, this, "list")), __runInitializers(_init40, 11, this);
108416
+ __privateAdd(this, _selectedEmail, __runInitializers(_init40, 12, this, null)), __runInitializers(_init40, 15, this);
108417
+ __privateAdd(this, _currentDirectionFilter, __runInitializers(_init40, 16, this, "all")), __runInitializers(_init40, 19, this);
106988
108418
  __publicField(this, "demoEmails", [
106989
108419
  { id: "1", direction: "outbound", status: "delivered", from: "noreply@serve.zone", to: "user@example.com", subject: "Welcome to serve.zone", timestamp: "2024-01-15 14:30:22", messageId: "<abc123@serve.zone>", size: "12.4 KB" },
106990
108420
  { id: "2", direction: "outbound", status: "bounced", from: "alerts@serve.zone", to: "invalid@nowhere.test", subject: "Service Alert: CPU Usage High", timestamp: "2024-01-15 14:28:10", messageId: "<def456@serve.zone>", size: "8.2 KB" },
@@ -107277,14 +108707,14 @@ var SzDemoViewMta = class extends (_a36 = DeesElement, _currentView_dec3 = [r5()
107277
108707
  }
107278
108708
  }
107279
108709
  };
107280
- _init36 = __decoratorStart(_a36);
108710
+ _init40 = __decoratorStart(_a40);
107281
108711
  _currentView3 = new WeakMap();
107282
108712
  _selectedEmail = new WeakMap();
107283
108713
  _currentDirectionFilter = new WeakMap();
107284
- __decorateElement(_init36, 4, "currentView", _currentView_dec3, SzDemoViewMta, _currentView3);
107285
- __decorateElement(_init36, 4, "selectedEmail", _selectedEmail_dec, SzDemoViewMta, _selectedEmail);
107286
- __decorateElement(_init36, 4, "currentDirectionFilter", _currentDirectionFilter_dec, SzDemoViewMta, _currentDirectionFilter);
107287
- SzDemoViewMta = __decorateElement(_init36, 0, "SzDemoViewMta", _SzDemoViewMta_decorators, SzDemoViewMta);
108714
+ __decorateElement(_init40, 4, "currentView", _currentView_dec3, SzDemoViewMta, _currentView3);
108715
+ __decorateElement(_init40, 4, "selectedEmail", _selectedEmail_dec, SzDemoViewMta, _selectedEmail);
108716
+ __decorateElement(_init40, 4, "currentDirectionFilter", _currentDirectionFilter_dec, SzDemoViewMta, _currentDirectionFilter);
108717
+ SzDemoViewMta = __decorateElement(_init40, 0, "SzDemoViewMta", _SzDemoViewMta_decorators, SzDemoViewMta);
107288
108718
  __publicField(SzDemoViewMta, "styles", [
107289
108719
  cssManager.defaultStyles,
107290
108720
  i`
@@ -107297,7 +108727,493 @@ __publicField(SzDemoViewMta, "styles", [
107297
108727
  }
107298
108728
  `
107299
108729
  ]);
107300
- __runInitializers(_init36, 1, SzDemoViewMta);
108730
+ __runInitializers(_init40, 1, SzDemoViewMta);
108731
+
108732
+ // ts_web/elements/sz-demo-view-routes.ts
108733
+ init_dist_ts29();
108734
+ var _currentTab_dec3, _a41, _SzDemoViewRoutes_decorators, _init41, _currentTab3;
108735
+ _SzDemoViewRoutes_decorators = [t4("sz-demo-view-routes")];
108736
+ var SzDemoViewRoutes = class extends (_a41 = DeesElement, _currentTab_dec3 = [r5()], _a41) {
108737
+ constructor() {
108738
+ super(...arguments);
108739
+ __publicField(this, "appui", null);
108740
+ __privateAdd(this, _currentTab3, __runInitializers(_init41, 8, this, "all")), __runInitializers(_init41, 11, this);
108741
+ __publicField(this, "demoRoutes", [
108742
+ // 1. HTTPS with TLS termination + auto cert
108743
+ {
108744
+ id: "route-1",
108745
+ name: "Web Frontend",
108746
+ description: "Main website with TLS termination and automatic certificates",
108747
+ enabled: true,
108748
+ priority: 10,
108749
+ tags: ["web", "https", "production"],
108750
+ match: {
108751
+ ports: 443,
108752
+ domains: ["serve.zone", "www.serve.zone"],
108753
+ protocol: "http"
108754
+ },
108755
+ action: {
108756
+ type: "forward",
108757
+ targets: [{ host: "10.0.0.10", port: 3e3 }],
108758
+ tls: { mode: "terminate", certificate: "auto" }
108759
+ }
108760
+ },
108761
+ // 2. HTTP to HTTPS redirect
108762
+ {
108763
+ id: "route-2",
108764
+ name: "HTTP Redirect",
108765
+ description: "Redirects all HTTP traffic to HTTPS",
108766
+ enabled: true,
108767
+ priority: 100,
108768
+ tags: ["web", "http", "redirect"],
108769
+ match: {
108770
+ ports: 80,
108771
+ domains: ["serve.zone", "www.serve.zone"],
108772
+ protocol: "http"
108773
+ },
108774
+ action: {
108775
+ type: "socket-handler"
108776
+ }
108777
+ },
108778
+ // 3. Email SMTP route
108779
+ {
108780
+ id: "route-3",
108781
+ name: "SMTP Inbound",
108782
+ description: "Inbound email relay for serve.zone domain",
108783
+ enabled: true,
108784
+ tags: ["email", "smtp", "production"],
108785
+ match: {
108786
+ ports: 25,
108787
+ domains: "mail.serve.zone"
108788
+ },
108789
+ action: {
108790
+ type: "forward",
108791
+ targets: [{ host: "10.0.1.5", port: 25 }],
108792
+ tls: { mode: "terminate", certificate: "auto" }
108793
+ }
108794
+ },
108795
+ // 4. API gateway with path matching, rate limiting, CORS
108796
+ {
108797
+ id: "route-4",
108798
+ name: "API Gateway",
108799
+ description: "API gateway with rate limiting, CORS headers, and load balancing",
108800
+ enabled: true,
108801
+ priority: 20,
108802
+ tags: ["web", "api", "https", "production"],
108803
+ match: {
108804
+ ports: 443,
108805
+ domains: "api.serve.zone",
108806
+ path: "/v2/*",
108807
+ protocol: "http"
108808
+ },
108809
+ action: {
108810
+ type: "forward",
108811
+ targets: [
108812
+ { host: ["10.0.0.20", "10.0.0.21", "10.0.0.22"], port: 8080 }
108813
+ ],
108814
+ tls: { mode: "terminate", certificate: "auto" },
108815
+ loadBalancing: { algorithm: "round-robin" }
108816
+ },
108817
+ security: {
108818
+ rateLimit: { enabled: true, maxRequests: 200, window: 60 },
108819
+ maxConnections: 5e3
108820
+ },
108821
+ headers: {
108822
+ response: {
108823
+ "Access-Control-Allow-Origin": "*",
108824
+ "X-Request-Id": "{{requestId}}"
108825
+ }
108826
+ }
108827
+ },
108828
+ // 5. WebSocket route
108829
+ {
108830
+ id: "route-5",
108831
+ name: "WebSocket Realtime",
108832
+ description: "Real-time WebSocket connections for live updates",
108833
+ enabled: true,
108834
+ tags: ["web", "https", "websocket"],
108835
+ match: {
108836
+ ports: 443,
108837
+ domains: "ws.serve.zone",
108838
+ path: "/ws/*",
108839
+ protocol: "http"
108840
+ },
108841
+ action: {
108842
+ type: "forward",
108843
+ targets: [{ host: "10.0.0.30", port: 9090 }],
108844
+ tls: { mode: "terminate", certificate: "auto" },
108845
+ websocket: { enabled: true }
108846
+ }
108847
+ },
108848
+ // 6. Wildcard domain route
108849
+ {
108850
+ id: "route-6",
108851
+ name: "Tenant Wildcard",
108852
+ description: "Multi-tenant wildcard routing for customer subdomains",
108853
+ enabled: true,
108854
+ priority: 50,
108855
+ tags: ["web", "https", "multi-tenant"],
108856
+ match: {
108857
+ ports: 443,
108858
+ domains: "*.customers.serve.zone",
108859
+ protocol: "http"
108860
+ },
108861
+ action: {
108862
+ type: "forward",
108863
+ targets: [{ host: "10.0.0.40", port: 8080 }],
108864
+ tls: { mode: "terminate", certificate: "auto" }
108865
+ },
108866
+ security: {
108867
+ ipAllowList: ["10.0.0.0/8", "172.16.0.0/12"]
108868
+ }
108869
+ },
108870
+ // 7. Load-balanced route with health check
108871
+ {
108872
+ id: "route-7",
108873
+ name: "Microservices LB",
108874
+ description: "Load-balanced microservices backend with IP-hash affinity",
108875
+ enabled: true,
108876
+ tags: ["web", "https", "production"],
108877
+ match: {
108878
+ ports: [443, 8443],
108879
+ domains: "services.serve.zone",
108880
+ protocol: "http"
108881
+ },
108882
+ action: {
108883
+ type: "forward",
108884
+ targets: [
108885
+ { host: ["10.0.2.1", "10.0.2.2", "10.0.2.3", "10.0.2.4"], port: 3e3 }
108886
+ ],
108887
+ tls: { mode: "terminate-and-reencrypt", certificate: "auto" },
108888
+ loadBalancing: { algorithm: "ip-hash" }
108889
+ }
108890
+ },
108891
+ // 8. DNS-over-HTTPS route
108892
+ {
108893
+ id: "route-8",
108894
+ name: "DNS over HTTPS",
108895
+ description: "DNS-over-HTTPS resolver endpoint",
108896
+ enabled: true,
108897
+ tags: ["dns", "https"],
108898
+ match: {
108899
+ ports: 443,
108900
+ domains: "dns.serve.zone",
108901
+ path: "/dns-query",
108902
+ protocol: "http"
108903
+ },
108904
+ action: {
108905
+ type: "forward",
108906
+ targets: [{ host: "10.0.3.1", port: 8053 }],
108907
+ tls: { mode: "terminate", certificate: "auto" }
108908
+ }
108909
+ },
108910
+ // 9. NFTables high-performance route
108911
+ {
108912
+ id: "route-9",
108913
+ name: "High-Perf TCP Proxy",
108914
+ description: "NFTables-accelerated TCP proxy for game servers",
108915
+ enabled: true,
108916
+ tags: ["tcp", "nftables", "production"],
108917
+ match: {
108918
+ ports: [{ from: 27e3, to: 27050 }],
108919
+ protocol: "tcp"
108920
+ },
108921
+ action: {
108922
+ type: "forward",
108923
+ targets: [{ host: "10.0.4.1", port: "preserve" }],
108924
+ forwardingEngine: "nftables"
108925
+ }
108926
+ },
108927
+ // 10. Disabled maintenance route
108928
+ {
108929
+ id: "route-10",
108930
+ name: "Legacy Admin Panel",
108931
+ description: "Deprecated admin panel \u2014 disabled for maintenance",
108932
+ enabled: false,
108933
+ tags: ["web", "https", "deprecated"],
108934
+ match: {
108935
+ ports: 443,
108936
+ domains: "admin-old.serve.zone",
108937
+ protocol: "http"
108938
+ },
108939
+ action: {
108940
+ type: "socket-handler"
108941
+ },
108942
+ security: {
108943
+ ipBlockList: ["0.0.0.0/0"]
108944
+ }
108945
+ }
108946
+ ]);
108947
+ }
108948
+ get filteredRoutes() {
108949
+ if (this.currentTab === "all") return this.demoRoutes;
108950
+ if (this.currentTab === "https") {
108951
+ return this.demoRoutes.filter(
108952
+ (r11) => r11.tags?.some((t9) => ["web", "https", "http"].includes(t9))
108953
+ );
108954
+ }
108955
+ if (this.currentTab === "email") {
108956
+ return this.demoRoutes.filter(
108957
+ (r11) => r11.tags?.some((t9) => ["email", "smtp"].includes(t9))
108958
+ );
108959
+ }
108960
+ if (this.currentTab === "dns") {
108961
+ return this.demoRoutes.filter(
108962
+ (r11) => r11.tags?.some((t9) => ["dns"].includes(t9))
108963
+ );
108964
+ }
108965
+ return this.demoRoutes;
108966
+ }
108967
+ async onActivate(context2) {
108968
+ this.appui = context2.appui;
108969
+ this.appui.setContentTabs([
108970
+ {
108971
+ key: "All Routes",
108972
+ action: () => {
108973
+ this.currentTab = "all";
108974
+ this.updateSecondaryMenu();
108975
+ }
108976
+ },
108977
+ {
108978
+ key: "HTTP/S",
108979
+ action: () => {
108980
+ this.currentTab = "https";
108981
+ this.updateSecondaryMenu();
108982
+ }
108983
+ },
108984
+ {
108985
+ key: "Email",
108986
+ action: () => {
108987
+ this.currentTab = "email";
108988
+ this.updateSecondaryMenu();
108989
+ }
108990
+ },
108991
+ {
108992
+ key: "DNS",
108993
+ action: () => {
108994
+ this.currentTab = "dns";
108995
+ this.updateSecondaryMenu();
108996
+ }
108997
+ }
108998
+ ]);
108999
+ this.updateSecondaryMenu();
109000
+ }
109001
+ updateSecondaryMenu() {
109002
+ if (!this.appui) return;
109003
+ const total = this.demoRoutes.length;
109004
+ const active = this.demoRoutes.filter((r11) => r11.enabled !== false).length;
109005
+ const forwardCount = this.demoRoutes.filter((r11) => r11.action.type === "forward").length;
109006
+ this.appui.setSecondaryMenu({
109007
+ heading: "Routes",
109008
+ groups: [
109009
+ {
109010
+ name: "Actions",
109011
+ items: [
109012
+ {
109013
+ type: "action",
109014
+ key: "Refresh",
109015
+ iconName: "lucide:RefreshCw",
109016
+ action: () => {
109017
+ console.log("Refresh routes");
109018
+ }
109019
+ },
109020
+ {
109021
+ type: "action",
109022
+ key: "Add Route",
109023
+ iconName: "lucide:Plus",
109024
+ action: () => {
109025
+ console.log("Add route");
109026
+ }
109027
+ }
109028
+ ]
109029
+ },
109030
+ {
109031
+ name: "Statistics",
109032
+ items: [
109033
+ { type: "header", label: `${total} Total Routes` },
109034
+ { type: "header", label: `${active} Active` },
109035
+ { type: "header", label: `${forwardCount} Forward` },
109036
+ { type: "header", label: `${total - forwardCount} Socket Handler` }
109037
+ ]
109038
+ }
109039
+ ]
109040
+ });
109041
+ }
109042
+ onDeactivate() {
109043
+ }
109044
+ render() {
109045
+ return b2`
109046
+ <sz-route-list-view
109047
+ .routes=${this.filteredRoutes}
109048
+ @route-click=${(e11) => {
109049
+ console.log("Route clicked:", e11.detail.name);
109050
+ }}
109051
+ ></sz-route-list-view>
109052
+ `;
109053
+ }
109054
+ };
109055
+ _init41 = __decoratorStart(_a41);
109056
+ _currentTab3 = new WeakMap();
109057
+ __decorateElement(_init41, 4, "currentTab", _currentTab_dec3, SzDemoViewRoutes, _currentTab3);
109058
+ SzDemoViewRoutes = __decorateElement(_init41, 0, "SzDemoViewRoutes", _SzDemoViewRoutes_decorators, SzDemoViewRoutes);
109059
+ __publicField(SzDemoViewRoutes, "styles", [
109060
+ cssManager.defaultStyles,
109061
+ i`
109062
+ :host {
109063
+ display: block;
109064
+ padding: 24px;
109065
+ height: 100%;
109066
+ overflow-y: auto;
109067
+ box-sizing: border-box;
109068
+ }
109069
+ `
109070
+ ]);
109071
+ __runInitializers(_init41, 1, SzDemoViewRoutes);
109072
+
109073
+ // ts_web/elements/sz-demo-view-config.ts
109074
+ init_dist_ts29();
109075
+ var _SzDemoViewConfig_decorators, _init42, _a42;
109076
+ _SzDemoViewConfig_decorators = [t4("sz-demo-view-config")];
109077
+ var SzDemoViewConfig = class extends (_a42 = DeesElement) {
109078
+ static styles = [
109079
+ cssManager.defaultStyles,
109080
+ i`
109081
+ :host {
109082
+ display: block;
109083
+ padding: 24px;
109084
+ height: 100%;
109085
+ overflow-y: auto;
109086
+ box-sizing: border-box;
109087
+ }
109088
+ `
109089
+ ];
109090
+ render() {
109091
+ const systemFields = [
109092
+ { key: "Base Directory", value: "/home/user/.serve.zone/dcrouter" },
109093
+ { key: "Data Directory", value: "/home/user/.serve.zone/dcrouter/data" },
109094
+ { key: "Public IP", value: "203.0.113.50" },
109095
+ { key: "Proxy IPs", value: ["203.0.113.10", "203.0.113.11"], type: "pills" },
109096
+ { key: "Uptime", value: "3d 14h 22m" },
109097
+ { key: "Storage Backend", value: "filesystem", type: "badge" }
109098
+ ];
109099
+ const proxyFields = [
109100
+ { key: "Route Count", value: 12 },
109101
+ { key: "ACME Enabled", value: true, type: "boolean" },
109102
+ { key: "Account Email", value: "admin@serve.zone" },
109103
+ { key: "Use Production", value: true, type: "boolean" },
109104
+ { key: "Auto Renew", value: true, type: "boolean" },
109105
+ { key: "Renew Threshold", value: "30 days" }
109106
+ ];
109107
+ const emailFields = [
109108
+ { key: "Ports", value: ["25", "465", "587"], type: "pills" },
109109
+ { key: "Hostname", value: "mail.serve.zone" },
109110
+ { key: "Domains", value: ["serve.zone", "mail.serve.zone"], type: "pills" },
109111
+ { key: "Email Routes", value: 5 },
109112
+ { key: "Received Path", value: "/data/emails" }
109113
+ ];
109114
+ const dnsFields = [
109115
+ { key: "Port", value: 53 },
109116
+ { key: "NS Domains", value: ["ns1.serve.zone", "ns2.serve.zone"], type: "pills" },
109117
+ { key: "Scopes", value: ["serve.zone", "example.com"], type: "pills" },
109118
+ { key: "Record Count", value: 24 },
109119
+ { key: "DNS Challenge", value: true, type: "boolean" }
109120
+ ];
109121
+ const tlsFields = [
109122
+ { key: "Contact Email", value: "admin@serve.zone" },
109123
+ { key: "Domain", value: "serve.zone" },
109124
+ { key: "Source", value: "acme", type: "badge" },
109125
+ { key: "Certificate Path", value: null },
109126
+ { key: "Key Path", value: null }
109127
+ ];
109128
+ const cacheFields = [
109129
+ { key: "Storage Path", value: "/home/user/.serve.zone/dcrouter/tsmdb" },
109130
+ { key: "DB Name", value: "dcrouter" },
109131
+ { key: "Default TTL", value: "30 days" },
109132
+ { key: "Cleanup Interval", value: "1 hour" }
109133
+ ];
109134
+ const radiusFields = [
109135
+ { key: "Auth Port", value: null },
109136
+ { key: "Accounting Port", value: null }
109137
+ ];
109138
+ const remoteIngressFields = [
109139
+ { key: "Tunnel Port", value: 8443 },
109140
+ { key: "Hub Domain", value: "hub.serve.zone" },
109141
+ { key: "TLS Configured", value: true, type: "boolean" }
109142
+ ];
109143
+ return b2`
109144
+ <sz-config-overview
109145
+ infoText="This view displays the current running configuration. DcRouter is configured through code or remote management."
109146
+ >
109147
+ <sz-config-section
109148
+ title="System"
109149
+ subtitle="Base paths and infrastructure"
109150
+ icon="lucide:server"
109151
+ status="enabled"
109152
+ .fields=${systemFields}
109153
+ ></sz-config-section>
109154
+
109155
+ <sz-config-section
109156
+ title="SmartProxy"
109157
+ subtitle="HTTP/HTTPS and TCP/SNI reverse proxy"
109158
+ icon="lucide:network"
109159
+ status="enabled"
109160
+ .fields=${proxyFields}
109161
+ ></sz-config-section>
109162
+
109163
+ <sz-config-section
109164
+ title="Email Server"
109165
+ subtitle="SMTP email handling with smartmta"
109166
+ icon="lucide:mail"
109167
+ status="enabled"
109168
+ .fields=${emailFields}
109169
+ ></sz-config-section>
109170
+
109171
+ <sz-config-section
109172
+ title="DNS Server"
109173
+ subtitle="Authoritative DNS with smartdns"
109174
+ icon="lucide:globe"
109175
+ status="enabled"
109176
+ .fields=${dnsFields}
109177
+ ></sz-config-section>
109178
+
109179
+ <sz-config-section
109180
+ title="TLS / Certificates"
109181
+ subtitle="Certificate management and ACME"
109182
+ icon="lucide:shield-check"
109183
+ status="enabled"
109184
+ .fields=${tlsFields}
109185
+ ></sz-config-section>
109186
+
109187
+ <sz-config-section
109188
+ title="Cache Database"
109189
+ subtitle="Persistent caching with smartdata"
109190
+ icon="lucide:database"
109191
+ status="enabled"
109192
+ .fields=${cacheFields}
109193
+ ></sz-config-section>
109194
+
109195
+ <sz-config-section
109196
+ title="RADIUS Server"
109197
+ subtitle="Network authentication and VLAN assignment"
109198
+ icon="lucide:wifi"
109199
+ status="not-configured"
109200
+ .fields=${radiusFields}
109201
+ ></sz-config-section>
109202
+
109203
+ <sz-config-section
109204
+ title="Remote Ingress"
109205
+ subtitle="Edge tunnel nodes"
109206
+ icon="lucide:cloud"
109207
+ status="enabled"
109208
+ .fields=${remoteIngressFields}
109209
+ ></sz-config-section>
109210
+ </sz-config-overview>
109211
+ `;
109212
+ }
109213
+ };
109214
+ _init42 = __decoratorStart(_a42);
109215
+ SzDemoViewConfig = __decorateElement(_init42, 0, "SzDemoViewConfig", _SzDemoViewConfig_decorators, SzDemoViewConfig);
109216
+ __runInitializers(_init42, 1, SzDemoViewConfig);
107301
109217
 
107302
109218
  // ts_web/pages/index.ts
107303
109219
  var pages_exports = {};
@@ -111015,9 +112931,9 @@ var DeesAppuiBar = (() => {
111015
112931
 
111016
112932
  // node_modules/.pnpm/@design.estate+dees-catalog@3.43.0_@tiptap+pm@2.27.2/node_modules/@design.estate/dees-catalog/dist_ts_web/elements/00group-appui/dees-appui-bottombar/dees-appui-bottombar.demo.js
111017
112933
  init_dist_ts29();
111018
- var _a37;
112934
+ var _a43;
111019
112935
  var demoFunc5 = () => {
111020
- return b2(_a37 || (_a37 = __template([`
112936
+ return b2(_a43 || (_a43 = __template([`
111021
112937
  <dees-demowrapper>
111022
112938
  <style>
111023
112939
  .demo-container {
@@ -112069,7 +113985,7 @@ var DeesPanel = (() => {
112069
113985
 
112070
113986
  // node_modules/.pnpm/@design.estate+dees-catalog@3.43.0_@tiptap+pm@2.27.2/node_modules/@design.estate/dees-catalog/dist_ts_web/elements/00group-dataview/dees-statsgrid/dees-statsgrid.demo.js
112071
113987
  init_dist_ts29();
112072
- var _a38;
113988
+ var _a44;
112073
113989
  var generateCpuCores = (count2) => {
112074
113990
  return Array.from({ length: count2 }, (_4, i11) => ({
112075
113991
  id: i11,
@@ -112078,7 +113994,7 @@ var generateCpuCores = (count2) => {
112078
113994
  }));
112079
113995
  };
112080
113996
  var demoFunc7 = () => {
112081
- return b2(_a38 || (_a38 = __template(["\n <dees-demowrapper>\n <style>\n ", '\n </style>\n \n <div class="demo-container">\n <dees-panel .title=', " .subtitle=", ">\n <dees-statsgrid\n .tiles=", "\n .gridActions=", "\n .minTileWidth=", "\n .gap=", '\n ></dees-statsgrid>\n \n <div id="action-output" style="margin-top: 16px; padding: 12px; background: ', "; border-radius: 6px; font-size: 14px; font-family: monospace; color: ", ';">\n <em>Click on tile actions or grid actions to see the result...</em>\n </div>\n </dees-panel>\n \n <dees-panel .title=', " .subtitle=", ">\n <dees-statsgrid\n .tiles=", "\n .minTileWidth=", "\n .gap=", '\n ></dees-statsgrid>\n \n <div class="tile-config">\n <div class="config-section">\n <div class="config-title">Configuration Options</div>\n <div class="config-description">\n Each tile type supports different properties:\n <ul style="margin: 8px 0; padding-left: 20px;">\n <li><strong>Number:</strong> value, unit, color, description</li>\n <li><strong>Gauge:</strong> value, unit, gaugeOptions (min, max, thresholds)</li>\n <li><strong>Percentage:</strong> value (0-100), color, description</li>\n <li><strong>Trend:</strong> value, unit, trendData array, description</li>\n <li><strong>Text:</strong> value (string), color, description</li>\n </ul>\n </div>\n </div>\n </div>\n </dees-panel>\n \n <dees-panel .title=', " .subtitle=", '>\n <h4 style="margin: 0 0 16px 0; font-size: 16px; font-weight: 600;">Compact Layout (180px tiles)</h4>\n <dees-statsgrid\n .tiles=', "\n .minTileWidth=", "\n .gap=", '\n ></dees-statsgrid>\n \n <h4 style="margin: 24px 0 16px 0; font-size: 16px; font-weight: 600;">Spacious Layout (320px tiles)</h4>\n <dees-statsgrid\n .tiles=', "\n .minTileWidth=", "\n .gap=", "\n ></dees-statsgrid>\n </dees-panel>\n \n <dees-panel .title=", " .subtitle=", '>\n <dees-statsgrid\n id="cpu-cores-grid"\n .tiles=', "\n .gridActions=", "\n .minTileWidth=", "\n .gap=", "\n ></dees-statsgrid>\n </dees-panel>\n\n <dees-panel .title=", " .subtitle=", '>\n <dees-statsgrid\n id="interactive-grid"\n .tiles=', "\n .gridActions=", "\n .minTileWidth=", "\n .gap=", "\n ></dees-statsgrid>\n </dees-panel>\n \n <dees-panel .title=", " .subtitle=", '>\n <div class="code-block">', "</div>\n </dees-panel>\n\n <dees-panel .title=", " .subtitle=", ">\n <dees-statsgrid\n .tiles=", "\n .minTileWidth=", "\n .gap=", `
113997
+ return b2(_a44 || (_a44 = __template(["\n <dees-demowrapper>\n <style>\n ", '\n </style>\n \n <div class="demo-container">\n <dees-panel .title=', " .subtitle=", ">\n <dees-statsgrid\n .tiles=", "\n .gridActions=", "\n .minTileWidth=", "\n .gap=", '\n ></dees-statsgrid>\n \n <div id="action-output" style="margin-top: 16px; padding: 12px; background: ', "; border-radius: 6px; font-size: 14px; font-family: monospace; color: ", ';">\n <em>Click on tile actions or grid actions to see the result...</em>\n </div>\n </dees-panel>\n \n <dees-panel .title=', " .subtitle=", ">\n <dees-statsgrid\n .tiles=", "\n .minTileWidth=", "\n .gap=", '\n ></dees-statsgrid>\n \n <div class="tile-config">\n <div class="config-section">\n <div class="config-title">Configuration Options</div>\n <div class="config-description">\n Each tile type supports different properties:\n <ul style="margin: 8px 0; padding-left: 20px;">\n <li><strong>Number:</strong> value, unit, color, description</li>\n <li><strong>Gauge:</strong> value, unit, gaugeOptions (min, max, thresholds)</li>\n <li><strong>Percentage:</strong> value (0-100), color, description</li>\n <li><strong>Trend:</strong> value, unit, trendData array, description</li>\n <li><strong>Text:</strong> value (string), color, description</li>\n </ul>\n </div>\n </div>\n </div>\n </dees-panel>\n \n <dees-panel .title=', " .subtitle=", '>\n <h4 style="margin: 0 0 16px 0; font-size: 16px; font-weight: 600;">Compact Layout (180px tiles)</h4>\n <dees-statsgrid\n .tiles=', "\n .minTileWidth=", "\n .gap=", '\n ></dees-statsgrid>\n \n <h4 style="margin: 24px 0 16px 0; font-size: 16px; font-weight: 600;">Spacious Layout (320px tiles)</h4>\n <dees-statsgrid\n .tiles=', "\n .minTileWidth=", "\n .gap=", "\n ></dees-statsgrid>\n </dees-panel>\n \n <dees-panel .title=", " .subtitle=", '>\n <dees-statsgrid\n id="cpu-cores-grid"\n .tiles=', "\n .gridActions=", "\n .minTileWidth=", "\n .gap=", "\n ></dees-statsgrid>\n </dees-panel>\n\n <dees-panel .title=", " .subtitle=", '>\n <dees-statsgrid\n id="interactive-grid"\n .tiles=', "\n .gridActions=", "\n .minTileWidth=", "\n .gap=", "\n ></dees-statsgrid>\n </dees-panel>\n \n <dees-panel .title=", " .subtitle=", '>\n <div class="code-block">', "</div>\n </dees-panel>\n\n <dees-panel .title=", " .subtitle=", ">\n <dees-statsgrid\n .tiles=", "\n .minTileWidth=", "\n .gap=", `
112082
113998
  ></dees-statsgrid>
112083
113999
 
112084
114000
  <div class="tile-config">
@@ -144975,8 +146891,8 @@ var DeesInputRichtext = (() => {
144975
146891
 
144976
146892
  // node_modules/.pnpm/@design.estate+dees-catalog@3.43.0_@tiptap+pm@2.27.2/node_modules/@design.estate/dees-catalog/dist_ts_web/elements/00group-input/dees-input-tags/dees-input-tags.demo.js
144977
146893
  init_dist_ts29();
144978
- var _a39;
144979
- var demoFunc42 = () => b2(_a39 || (_a39 = __template(["\n <dees-demowrapper>\n <style>\n ", '\n </style>\n \n <div class="demo-container">\n <dees-panel .title=', " .subtitle=", ">\n <dees-input-tags\n .label=", "\n .placeholder=", "\n .value=", "\n .description=", "\n ></dees-input-tags>\n </dees-panel>\n\n <dees-panel .title=", " .subtitle=", ">\n <dees-input-tags\n .label=", "\n .placeholder=", "\n .suggestions=", "\n .value=", "\n .description=", "\n ></dees-input-tags>\n </dees-panel>\n\n <dees-panel .title=", " .subtitle=", '>\n <div class="grid-layout">\n <dees-input-tags\n .label=', "\n .placeholder=", "\n .maxTags=", "\n .value=", "\n .description=", "\n ></dees-input-tags>\n \n <dees-input-tags\n .label=", "\n .placeholder=", "\n .maxTags=", "\n .suggestions=", "\n .value=", "\n .description=", "\n ></dees-input-tags>\n </div>\n </dees-panel>\n\n <dees-panel .title=", " .subtitle=", ">\n <dees-input-tags\n .label=", "\n .placeholder=", "\n .required=", "\n .description=", "\n ></dees-input-tags>\n </dees-panel>\n\n <dees-panel .title=", " .subtitle=", ">\n <dees-input-tags\n .label=", "\n .value=", "\n .disabled=", "\n .description=", "\n ></dees-input-tags>\n </dees-panel>\n\n <dees-panel .title=", " .subtitle=", ">\n <dees-form>\n <dees-input-text\n .label=", "\n .placeholder=", "\n .required=", "\n .key=", '\n ></dees-input-text>\n \n <div class="grid-layout">\n <dees-input-tags\n .label=', "\n .placeholder=", "\n .required=", "\n .key=", "\n .suggestions=", "\n ></dees-input-tags>\n \n <dees-input-tags\n .label=", "\n .placeholder=", "\n .key=", "\n .maxTags=", "\n .suggestions=", "\n ></dees-input-tags>\n </div>\n \n <dees-input-text\n .label=", "\n .inputType=", "\n .placeholder=", "\n .key=", "\n ></dees-input-text>\n \n <dees-form-submit .text=", "></dees-form-submit>\n </dees-form>\n </dees-panel>\n\n <dees-panel .title=", " .subtitle=", '>\n <dees-input-tags\n id="interactive-tags"\n .label=', "\n .placeholder=", "\n .suggestions=", "\n @change=", `
146894
+ var _a45;
146895
+ var demoFunc42 = () => b2(_a45 || (_a45 = __template(["\n <dees-demowrapper>\n <style>\n ", '\n </style>\n \n <div class="demo-container">\n <dees-panel .title=', " .subtitle=", ">\n <dees-input-tags\n .label=", "\n .placeholder=", "\n .value=", "\n .description=", "\n ></dees-input-tags>\n </dees-panel>\n\n <dees-panel .title=", " .subtitle=", ">\n <dees-input-tags\n .label=", "\n .placeholder=", "\n .suggestions=", "\n .value=", "\n .description=", "\n ></dees-input-tags>\n </dees-panel>\n\n <dees-panel .title=", " .subtitle=", '>\n <div class="grid-layout">\n <dees-input-tags\n .label=', "\n .placeholder=", "\n .maxTags=", "\n .value=", "\n .description=", "\n ></dees-input-tags>\n \n <dees-input-tags\n .label=", "\n .placeholder=", "\n .maxTags=", "\n .suggestions=", "\n .value=", "\n .description=", "\n ></dees-input-tags>\n </div>\n </dees-panel>\n\n <dees-panel .title=", " .subtitle=", ">\n <dees-input-tags\n .label=", "\n .placeholder=", "\n .required=", "\n .description=", "\n ></dees-input-tags>\n </dees-panel>\n\n <dees-panel .title=", " .subtitle=", ">\n <dees-input-tags\n .label=", "\n .value=", "\n .disabled=", "\n .description=", "\n ></dees-input-tags>\n </dees-panel>\n\n <dees-panel .title=", " .subtitle=", ">\n <dees-form>\n <dees-input-text\n .label=", "\n .placeholder=", "\n .required=", "\n .key=", '\n ></dees-input-text>\n \n <div class="grid-layout">\n <dees-input-tags\n .label=', "\n .placeholder=", "\n .required=", "\n .key=", "\n .suggestions=", "\n ></dees-input-tags>\n \n <dees-input-tags\n .label=", "\n .placeholder=", "\n .key=", "\n .maxTags=", "\n .suggestions=", "\n ></dees-input-tags>\n </div>\n \n <dees-input-text\n .label=", "\n .inputType=", "\n .placeholder=", "\n .key=", "\n ></dees-input-text>\n \n <dees-form-submit .text=", "></dees-form-submit>\n </dees-form>\n </dees-panel>\n\n <dees-panel .title=", " .subtitle=", '>\n <dees-input-tags\n id="interactive-tags"\n .label=', "\n .placeholder=", "\n .suggestions=", "\n @change=", `
144980
146896
  ></dees-input-tags>
144981
146897
 
144982
146898
  <div class="tag-preview" id="tags-preview">
@@ -177248,9 +179164,9 @@ init_group_runtime();
177248
179164
 
177249
179165
  // ts_web/pages/sz-demo-app-shell.ts
177250
179166
  init_dist_ts29();
177251
- var _SzDemoAppShell_decorators, _init37, _a40;
179167
+ var _SzDemoAppShell_decorators, _init43, _a46;
177252
179168
  _SzDemoAppShell_decorators = [t4("sz-demo-app-shell")];
177253
- var SzDemoAppShell = class extends (_a40 = DeesElement) {
179169
+ var SzDemoAppShell = class extends (_a46 = DeesElement) {
177254
179170
  static styles = [
177255
179171
  cssManager.defaultStyles,
177256
179172
  i`
@@ -177402,6 +179318,12 @@ var SzDemoAppShell = class extends (_a40 = DeesElement) {
177402
179318
  iconName: "lucide:Mail",
177403
179319
  content: "sz-demo-view-mta"
177404
179320
  },
179321
+ {
179322
+ id: "routes",
179323
+ name: "Routes",
179324
+ iconName: "lucide:Route",
179325
+ content: "sz-demo-view-routes"
179326
+ },
177405
179327
  {
177406
179328
  id: "settings",
177407
179329
  name: "Settings",
@@ -177417,7 +179339,7 @@ var SzDemoAppShell = class extends (_a40 = DeesElement) {
177417
179339
  },
177418
179340
  {
177419
179341
  name: "Infrastructure",
177420
- views: ["services", "network", "registries", "mta"]
179342
+ views: ["services", "network", "registries", "mta", "routes"]
177421
179343
  },
177422
179344
  {
177423
179345
  name: "Administration",
@@ -177449,9 +179371,9 @@ var SzDemoAppShell = class extends (_a40 = DeesElement) {
177449
179371
  ]);
177450
179372
  }
177451
179373
  };
177452
- _init37 = __decoratorStart(_a40);
177453
- SzDemoAppShell = __decorateElement(_init37, 0, "SzDemoAppShell", _SzDemoAppShell_decorators, SzDemoAppShell);
177454
- __runInitializers(_init37, 1, SzDemoAppShell);
179374
+ _init43 = __decoratorStart(_a46);
179375
+ SzDemoAppShell = __decorateElement(_init43, 0, "SzDemoAppShell", _SzDemoAppShell_decorators, SzDemoAppShell);
179376
+ __runInitializers(_init43, 1, SzDemoAppShell);
177455
179377
 
177456
179378
  // html/index.ts
177457
179379
  setupWccTools({