@taicode/common-web 1.1.14 → 1.1.16

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.
Files changed (84) hide show
  1. package/output/cache-api/cache-api.d.ts +5 -1
  2. package/output/cache-api/cache-api.d.ts.map +1 -1
  3. package/output/cache-api/cache-api.js +13 -2
  4. package/output/cache-api/cache-api.test.js +161 -0
  5. package/output/catalyst/avatar.d.ts +1 -0
  6. package/output/catalyst/avatar.d.ts.map +1 -1
  7. package/output/catalyst/badge.d.ts +1 -0
  8. package/output/catalyst/badge.d.ts.map +1 -1
  9. package/output/catalyst/link.d.ts +1 -0
  10. package/output/catalyst/link.d.ts.map +1 -1
  11. package/output/catalyst/link.js +26 -2
  12. package/output/catalyst/navbar.d.ts +1 -0
  13. package/output/catalyst/navbar.d.ts.map +1 -1
  14. package/output/catalyst/sidebar.d.ts +1 -0
  15. package/output/catalyst/sidebar.d.ts.map +1 -1
  16. package/output/catalyst-config/catalyst-config.d.ts +14 -0
  17. package/output/catalyst-config/catalyst-config.d.ts.map +1 -0
  18. package/output/catalyst-config/catalyst-config.js +14 -0
  19. package/output/catalyst-config/index.d.ts +3 -0
  20. package/output/catalyst-config/index.d.ts.map +1 -0
  21. package/output/catalyst-config/index.js +1 -0
  22. package/package.json +1 -1
  23. package/output/catalyst/alert.jsx +0 -55
  24. package/output/catalyst/auth-layout.jsx +0 -7
  25. package/output/catalyst/avatar.jsx +0 -45
  26. package/output/catalyst/badge.jsx +0 -53
  27. package/output/catalyst/button.jsx +0 -187
  28. package/output/catalyst/checkbox.jsx +0 -105
  29. package/output/catalyst/combobox.jsx +0 -120
  30. package/output/catalyst/description-list.jsx +0 -24
  31. package/output/catalyst/dialog.jsx +0 -55
  32. package/output/catalyst/divider.jsx +0 -16
  33. package/output/catalyst/dropdown.jsx +0 -102
  34. package/output/catalyst/fieldset.jsx +0 -41
  35. package/output/catalyst/heading.jsx +0 -22
  36. package/output/catalyst/input.jsx +0 -73
  37. package/output/catalyst/link.jsx +0 -14
  38. package/output/catalyst/listbox.jsx +0 -120
  39. package/output/catalyst/navbar.jsx +0 -67
  40. package/output/catalyst/pagination.jsx +0 -52
  41. package/output/catalyst/radio.jsx +0 -103
  42. package/output/catalyst/select.jsx +0 -59
  43. package/output/catalyst/sidebar-layout.jsx +0 -58
  44. package/output/catalyst/sidebar.jsx +0 -85
  45. package/output/catalyst/stacked-layout.jsx +0 -55
  46. package/output/catalyst/switch.jsx +0 -161
  47. package/output/catalyst/table.jsx +0 -68
  48. package/output/catalyst/text.jsx +0 -29
  49. package/output/catalyst/textarea.jsx +0 -49
  50. package/output/helpers/cache-api/cache-api.d.ts +0 -13
  51. package/output/helpers/cache-api/cache-api.d.ts.map +0 -1
  52. package/output/helpers/cache-api/cache-api.js +0 -114
  53. package/output/helpers/cache-api/cache-api.test.d.ts +0 -2
  54. package/output/helpers/cache-api/cache-api.test.d.ts.map +0 -1
  55. package/output/helpers/cache-api/cache-api.test.js +0 -348
  56. package/output/helpers/cache-api/index.d.ts +0 -2
  57. package/output/helpers/cache-api/index.d.ts.map +0 -1
  58. package/output/helpers/cache-api/index.js +0 -1
  59. package/output/helpers/service/index.d.ts +0 -1
  60. package/output/helpers/service/index.d.ts.map +0 -1
  61. package/output/helpers/service/index.js +0 -1
  62. package/output/helpers/service/service.d.ts +0 -5
  63. package/output/helpers/service/service.d.ts.map +0 -1
  64. package/output/helpers/service/service.js +0 -2
  65. package/output/helpers/side-cache/index.d.ts +0 -2
  66. package/output/helpers/side-cache/index.d.ts.map +0 -1
  67. package/output/helpers/side-cache/index.js +0 -1
  68. package/output/helpers/side-cache/side-cache.d.ts +0 -10
  69. package/output/helpers/side-cache/side-cache.d.ts.map +0 -1
  70. package/output/helpers/side-cache/side-cache.js +0 -137
  71. package/output/helpers/side-cache/side-cache.test.d.ts +0 -2
  72. package/output/helpers/side-cache/side-cache.test.d.ts.map +0 -1
  73. package/output/helpers/side-cache/side-cache.test.js +0 -179
  74. package/output/helpers/use-observer/index.d.ts +0 -2
  75. package/output/helpers/use-observer/index.d.ts.map +0 -1
  76. package/output/helpers/use-observer/index.js +0 -1
  77. package/output/helpers/use-observer/use-observer.d.ts +0 -3
  78. package/output/helpers/use-observer/use-observer.d.ts.map +0 -1
  79. package/output/helpers/use-observer/use-observer.js +0 -16
  80. package/output/helpers/use-observer/use-observer.test.d.ts +0 -2
  81. package/output/helpers/use-observer/use-observer.test.d.ts.map +0 -1
  82. package/output/helpers/use-observer/use-observer.test.jsx +0 -134
  83. package/output/service/service.test.jsx +0 -367
  84. package/output/use-observer/use-observer.test.jsx +0 -134
@@ -1,7 +1,7 @@
1
1
  type ApiFunc<P extends unknown[], R = unknown> = (...args: P) => Promise<R>;
2
2
  export declare class CacheApi<P extends unknown[], R> {
3
3
  private func;
4
- private cache;
4
+ private readonly cache;
5
5
  private lastArgs;
6
6
  private accessor pendingRequests;
7
7
  constructor(func: ApiFunc<P, R>);
@@ -14,6 +14,10 @@ export declare class CacheApi<P extends unknown[], R> {
14
14
  * @param force 强制刷新,清除缓存
15
15
  */
16
16
  refresh(force?: boolean): Promise<R>;
17
+ /**
18
+ * 重置缓存和状态
19
+ */
20
+ reset(): Promise<void>;
17
21
  }
18
22
  export {};
19
23
  //# sourceMappingURL=cache-api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cache-api.d.ts","sourceRoot":"","sources":["../../source/cache-api/cache-api.ts"],"names":[],"mappings":"AAKA,KAAK,OAAO,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;AAE3E,qBAAa,QAAQ,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC;IAU9B,OAAO,CAAC,IAAI;IATxB,OAAO,CAAC,KAAK,CAAqB;IAGlC,OAAO,CAAC,QAAQ,CAAe;IAI/B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAI;gBAEhB,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAIvC,IACI,OAAO,IAAI,OAAO,CAErB;IAED,IACI,KAAK,IAAI,OAAO,CAEnB;IAED,IACI,KAAK,IAAI,CAAC,GAAG,SAAS,CAEzB;IAGK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAuBlC;;;OAGG;IAEG,OAAO,CAAC,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,CAAC,CAAC;CAalD"}
1
+ {"version":3,"file":"cache-api.d.ts","sourceRoot":"","sources":["../../source/cache-api/cache-api.ts"],"names":[],"mappings":"AAKA,KAAK,OAAO,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;AAE3E,qBAAa,QAAQ,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC;IAW9B,OAAO,CAAC,IAAI;IATxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAG3C,OAAO,CAAC,QAAQ,CAAe;IAI/B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAI;gBAEhB,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAIvC,IACI,OAAO,IAAI,OAAO,CAErB;IAED,IACI,KAAK,IAAI,OAAO,CAEnB;IAED,IACI,KAAK,IAAI,CAAC,GAAG,SAAS,CAEzB;IAGK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAuBlC;;;OAGG;IAEG,OAAO,CAAC,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,CAAC,CAAC;IAcjD;;OAEG;IAEG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAK7B"}
@@ -43,12 +43,12 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
43
43
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
44
44
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
45
45
  };
46
- import { action, computed, observable } from 'mobx';
46
+ import { action, computed, observable, when } from 'mobx';
47
47
  import { catchIt } from '@taicode/common-base';
48
48
  import { SideCache } from '../side-cache';
49
49
  let CacheApi = (() => {
50
50
  var _a, _CacheApi_pendingRequests_accessor_storage;
51
- var _b, _c;
51
+ var _b, _c, _d;
52
52
  let _instanceExtraInitializers = [];
53
53
  let _pendingRequests_decorators;
54
54
  let _pendingRequests_initializers = [];
@@ -58,6 +58,7 @@ let CacheApi = (() => {
58
58
  let _get_value_decorators;
59
59
  let _call_decorators;
60
60
  let _refresh_decorators;
61
+ let _reset_decorators;
61
62
  return _a = class CacheApi {
62
63
  // 记录当前正在进行的请求数量
63
64
  get pendingRequests() { return __classPrivateFieldGet(this, _CacheApi_pendingRequests_accessor_storage, "f"); }
@@ -111,6 +112,14 @@ let CacheApi = (() => {
111
112
  // 重新调用最近一次的参数
112
113
  return await this.call(...this.lastArgs);
113
114
  }
115
+ /**
116
+ * 重置缓存和状态
117
+ */
118
+ async reset() {
119
+ await when(() => this.pendingRequests === 0);
120
+ this.lastArgs = undefined;
121
+ this.cache.clear();
122
+ }
114
123
  },
115
124
  _CacheApi_pendingRequests_accessor_storage = new WeakMap(),
116
125
  (() => {
@@ -121,12 +130,14 @@ let CacheApi = (() => {
121
130
  _get_value_decorators = [computed];
122
131
  _call_decorators = [(_b = action).bound.bind(_b)];
123
132
  _refresh_decorators = [(_c = action).bound.bind(_c)];
133
+ _reset_decorators = [(_d = action).bound.bind(_d)];
124
134
  __esDecorate(_a, null, _pendingRequests_decorators, { kind: "accessor", name: "pendingRequests", static: false, private: false, access: { has: obj => "pendingRequests" in obj, get: obj => obj.pendingRequests, set: (obj, value) => { obj.pendingRequests = value; } }, metadata: _metadata }, _pendingRequests_initializers, _pendingRequests_extraInitializers);
125
135
  __esDecorate(_a, null, _get_loading_decorators, { kind: "getter", name: "loading", static: false, private: false, access: { has: obj => "loading" in obj, get: obj => obj.loading }, metadata: _metadata }, null, _instanceExtraInitializers);
126
136
  __esDecorate(_a, null, _get_empty_decorators, { kind: "getter", name: "empty", static: false, private: false, access: { has: obj => "empty" in obj, get: obj => obj.empty }, metadata: _metadata }, null, _instanceExtraInitializers);
127
137
  __esDecorate(_a, null, _get_value_decorators, { kind: "getter", name: "value", static: false, private: false, access: { has: obj => "value" in obj, get: obj => obj.value }, metadata: _metadata }, null, _instanceExtraInitializers);
128
138
  __esDecorate(_a, null, _call_decorators, { kind: "method", name: "call", static: false, private: false, access: { has: obj => "call" in obj, get: obj => obj.call }, metadata: _metadata }, null, _instanceExtraInitializers);
129
139
  __esDecorate(_a, null, _refresh_decorators, { kind: "method", name: "refresh", static: false, private: false, access: { has: obj => "refresh" in obj, get: obj => obj.refresh }, metadata: _metadata }, null, _instanceExtraInitializers);
140
+ __esDecorate(_a, null, _reset_decorators, { kind: "method", name: "reset", static: false, private: false, access: { has: obj => "reset" in obj, get: obj => obj.reset }, metadata: _metadata }, null, _instanceExtraInitializers);
130
141
  if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
131
142
  })(),
132
143
  _a;
@@ -446,4 +446,165 @@ describe('CacheApi', () => {
446
446
  expect(noParamMockFunc).toHaveBeenCalledTimes(2);
447
447
  });
448
448
  });
449
+ describe('reset 方法', () => {
450
+ it('应该清除所有缓存数据', async () => {
451
+ mockApiFunc.mockResolvedValue('test-result');
452
+ // 先调用 API 产生缓存
453
+ await cacheApi.call('param1', 123);
454
+ expect(cacheApi.value).toBe('test-result');
455
+ expect(cacheApi.empty).toBe(false);
456
+ // 重置
457
+ await cacheApi.reset();
458
+ // 验证缓存被清除
459
+ expect(cacheApi.value).toBeUndefined();
460
+ expect(cacheApi.empty).toBe(true);
461
+ });
462
+ it('应该清除 lastArgs 参数记录', async () => {
463
+ mockApiFunc.mockResolvedValue('test-result');
464
+ // 先调用 API
465
+ await cacheApi.call('param1', 123);
466
+ // 重置
467
+ await cacheApi.reset();
468
+ // 尝试刷新应该抛出错误,因为 lastArgs 已被清除
469
+ await expect(cacheApi.refresh()).rejects.toThrow('没有可用的参数来刷新数据,请先调用 call 方法');
470
+ });
471
+ it('应该在没有任何调用时也能正常重置', async () => {
472
+ // 直接重置,不应该抛出错误
473
+ await expect(cacheApi.reset()).resolves.toBeUndefined();
474
+ // 验证状态
475
+ expect(cacheApi.value).toBeUndefined();
476
+ expect(cacheApi.empty).toBe(true);
477
+ expect(cacheApi.loading).toBe(false);
478
+ });
479
+ it('应该等待所有进行中的请求完成后再重置', async () => {
480
+ let resolveFn;
481
+ const promise = new Promise((resolve) => {
482
+ resolveFn = resolve;
483
+ });
484
+ mockApiFunc.mockReturnValue(promise);
485
+ // 启动一个异步请求
486
+ const callPromise = cacheApi.call('test', 1);
487
+ expect(cacheApi.loading).toBe(true);
488
+ // 开始重置(应该等待请求完成)
489
+ const resetPromise = cacheApi.reset();
490
+ // 此时请求还在进行中,缓存应该还有值
491
+ await new Promise(resolve => setTimeout(resolve, 10));
492
+ // 完成请求
493
+ resolveFn('result');
494
+ await callPromise;
495
+ // 等待重置完成
496
+ await resetPromise;
497
+ // 验证重置后的状态
498
+ expect(cacheApi.value).toBeUndefined();
499
+ expect(cacheApi.empty).toBe(true);
500
+ expect(cacheApi.loading).toBe(false);
501
+ });
502
+ it('应该等待多个并发请求都完成后再重置', async () => {
503
+ const resolvers = [];
504
+ mockApiFunc.mockImplementation((param) => {
505
+ return new Promise((resolve) => {
506
+ resolvers.push((value) => resolve(`${param}-${value}`));
507
+ });
508
+ });
509
+ // 启动三个并发请求
510
+ const promise1 = cacheApi.call('req1', 1);
511
+ const promise2 = cacheApi.call('req2', 2);
512
+ const promise3 = cacheApi.call('req3', 3);
513
+ expect(cacheApi.loading).toBe(true);
514
+ // 开始重置
515
+ const resetPromise = cacheApi.reset();
516
+ // 等待一下
517
+ await new Promise(resolve => setTimeout(resolve, 10));
518
+ // 依次完成所有请求
519
+ resolvers[0]('result1');
520
+ await promise1;
521
+ resolvers[1]('result2');
522
+ await promise2;
523
+ resolvers[2]('result3');
524
+ await promise3;
525
+ // 等待重置完成
526
+ await resetPromise;
527
+ // 验证重置后的状态
528
+ expect(cacheApi.value).toBeUndefined();
529
+ expect(cacheApi.empty).toBe(true);
530
+ expect(cacheApi.loading).toBe(false);
531
+ });
532
+ it('应该在请求失败后也能正常重置', async () => {
533
+ const error = new Error('API Error');
534
+ mockApiFunc.mockRejectedValue(error);
535
+ // 调用失败的请求
536
+ try {
537
+ await cacheApi.call('test', 1);
538
+ }
539
+ catch (e) {
540
+ // 忽略错误
541
+ }
542
+ // 重置应该成功
543
+ await expect(cacheApi.reset()).resolves.toBeUndefined();
544
+ // 验证状态
545
+ expect(cacheApi.value).toBeUndefined();
546
+ expect(cacheApi.empty).toBe(true);
547
+ expect(cacheApi.loading).toBe(false);
548
+ });
549
+ it('重置后应该能够正常调用新的请求', async () => {
550
+ mockApiFunc.mockResolvedValueOnce('first-result');
551
+ mockApiFunc.mockResolvedValueOnce('second-result');
552
+ // 第一次调用
553
+ await cacheApi.call('param1', 123);
554
+ expect(cacheApi.value).toBe('first-result');
555
+ // 重置
556
+ await cacheApi.reset();
557
+ expect(cacheApi.value).toBeUndefined();
558
+ // 重置后再次调用
559
+ await cacheApi.call('param2', 456);
560
+ expect(cacheApi.value).toBe('second-result');
561
+ expect(cacheApi.empty).toBe(false);
562
+ });
563
+ it('重置后 refresh 应该需要先调用 call', async () => {
564
+ mockApiFunc.mockResolvedValue('test-result');
565
+ // 先调用并刷新
566
+ await cacheApi.call('test', 1);
567
+ await cacheApi.refresh();
568
+ // 重置
569
+ await cacheApi.reset();
570
+ // 重置后 refresh 应该抛出错误
571
+ await expect(cacheApi.refresh()).rejects.toThrow('没有可用的参数来刷新数据,请先调用 call 方法');
572
+ });
573
+ it('应该正确处理重置期间的 loading 状态', async () => {
574
+ let resolveFn;
575
+ const promise = new Promise((resolve) => {
576
+ resolveFn = resolve;
577
+ });
578
+ mockApiFunc.mockReturnValue(promise);
579
+ // 启动请求
580
+ const callPromise = cacheApi.call('test', 1);
581
+ expect(cacheApi.loading).toBe(true);
582
+ // 启动重置(会等待请求完成)
583
+ const resetPromise = cacheApi.reset();
584
+ // loading 应该还是 true
585
+ expect(cacheApi.loading).toBe(true);
586
+ // 完成请求
587
+ resolveFn('result');
588
+ await callPromise;
589
+ // loading 变为 false
590
+ expect(cacheApi.loading).toBe(false);
591
+ // 等待重置完成
592
+ await resetPromise;
593
+ // 重置后 loading 应该仍然是 false
594
+ expect(cacheApi.loading).toBe(false);
595
+ });
596
+ it('应该清除所有缓存的 key', async () => {
597
+ mockApiFunc.mockResolvedValue('result');
598
+ // 调用多次产生多个缓存
599
+ await cacheApi.call('param1', 1);
600
+ await cacheApi.call('param2', 2);
601
+ await cacheApi.call('param3', 3);
602
+ expect(cacheApi.empty).toBe(false);
603
+ // 重置
604
+ await cacheApi.reset();
605
+ // 验证所有缓存都被清除
606
+ expect(cacheApi.empty).toBe(true);
607
+ expect(cacheApi.value).toBeUndefined();
608
+ });
609
+ });
449
610
  });
@@ -10,6 +10,7 @@ type AvatarProps = {
10
10
  export declare function Avatar({ src, square, initials, alt, className, ...props }: AvatarProps & React.ComponentPropsWithoutRef<'span'>): import("react/jsx-runtime").JSX.Element;
11
11
  export declare const AvatarButton: React.ForwardRefExoticComponent<(AvatarProps & (Omit<Headless.ButtonProps<"button">, "className" | "as"> | Omit<Omit<{
12
12
  href: string;
13
+ as?: React.ElementType;
13
14
  } & Omit<React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "ref"> & React.RefAttributes<HTMLAnchorElement>, "ref">, "className">)) & React.RefAttributes<HTMLElement>>;
14
15
  export {};
15
16
  //# sourceMappingURL=avatar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../source/catalyst/avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAE7C,OAAO,KAAqB,MAAM,OAAO,CAAA;AAIzC,KAAK,WAAW,GAAG;IACjB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,wBAAgB,MAAM,CAAC,EACrB,GAAU,EACV,MAAc,EACd,QAAQ,EACR,GAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,WAAW,GAAG,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,2CA6BtD;AAED,eAAO,MAAM,YAAY;;+MA+BvB,CAAA"}
1
+ {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../source/catalyst/avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAE7C,OAAO,KAAqB,MAAM,OAAO,CAAA;AAIzC,KAAK,WAAW,GAAG;IACjB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,wBAAgB,MAAM,CAAC,EACrB,GAAU,EACV,MAAc,EACd,QAAQ,EACR,GAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,WAAW,GAAG,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,2CA6BtD;AAED,eAAO,MAAM,YAAY;;;+MA+BvB,CAAA"}
@@ -29,6 +29,7 @@ export declare const BadgeButton: React.ForwardRefExoticComponent<(BadgeProps &
29
29
  children: React.ReactNode;
30
30
  } & (Omit<Headless.ButtonProps<"button">, "className" | "as"> | Omit<Omit<{
31
31
  href: string;
32
+ as?: React.ElementType;
32
33
  } & Omit<React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "ref"> & React.RefAttributes<HTMLAnchorElement>, "ref">, "className">))) & React.RefAttributes<HTMLElement>>;
33
34
  export {};
34
35
  //# sourceMappingURL=badge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../source/catalyst/badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAE7C,OAAO,KAAqB,MAAM,OAAO,CAAA;AAIzC,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;CA4BX,CAAA;AAED,KAAK,UAAU,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,OAAO,MAAM,CAAA;CAAE,CAAA;AAEjD,wBAAgB,KAAK,CAAC,EAAE,KAAc,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,GAAG,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,2CAWjH;AAED,eAAO,MAAM,WAAW;gBAMQ,MAAM;cAAY,KAAK,CAAC,SAAS;;;gNAwB/D,CAAA"}
1
+ {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../source/catalyst/badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAE7C,OAAO,KAAqB,MAAM,OAAO,CAAA;AAIzC,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;CA4BX,CAAA;AAED,KAAK,UAAU,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,OAAO,MAAM,CAAA;CAAE,CAAA;AAEjD,wBAAgB,KAAK,CAAC,EAAE,KAAc,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,GAAG,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,2CAWjH;AAED,eAAO,MAAM,WAAW;gBAMQ,MAAM;cAAY,KAAK,CAAC,SAAS;;;;gNAwB/D,CAAA"}
@@ -8,5 +8,6 @@
8
8
  import React from 'react';
9
9
  export declare const Link: React.ForwardRefExoticComponent<{
10
10
  href: string;
11
+ as?: React.ElementType;
11
12
  } & Omit<React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "ref"> & React.RefAttributes<HTMLAnchorElement>>;
12
13
  //# sourceMappingURL=link.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../source/catalyst/link.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAqB,MAAM,OAAO,CAAA;AAEzC,eAAO,MAAM,IAAI;UACA,MAAM;oJAQrB,CAAA"}
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../source/catalyst/link.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAqB,MAAM,OAAO,CAAA;AAIzC,eAAO,MAAM,IAAI;UAEP,MAAM;SACP,KAAK,CAAC,WAAW;oJA0BxB,CAAA"}
@@ -1,3 +1,14 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
1
12
  import { jsx as _jsx } from "react/jsx-runtime";
2
13
  /**
3
14
  * TODO: Update this component to use your client-side framework's link
@@ -6,8 +17,21 @@ import { jsx as _jsx } from "react/jsx-runtime";
6
17
  *
7
18
  * https://catalyst.tailwindui.com/docs#client-side-router-integration
8
19
  */
9
- import * as Headless from '@headlessui/react';
10
20
  import { forwardRef } from 'react';
21
+ import * as Headless from '@headlessui/react';
22
+ import { useCatalystConfig } from '../catalyst-config/catalyst-config';
11
23
  export const Link = forwardRef(function Link(props, ref) {
12
- return (_jsx(Headless.DataInteractive, { children: _jsx("a", Object.assign({}, props, { ref: ref })) }));
24
+ const params = Object.assign({}, props);
25
+ const { link = {} } = useCatalystConfig();
26
+ if (link.defaultAs && params.as == undefined) {
27
+ params.as = link.defaultAs;
28
+ }
29
+ if (link.forceAs) {
30
+ params.as = link.forceAs;
31
+ }
32
+ if (!params.as) {
33
+ params.as = 'a';
34
+ }
35
+ const { as: Component } = params, restProps = __rest(params, ["as"]);
36
+ return (_jsx(Headless.DataInteractive, { children: _jsx(Component, Object.assign({}, params, { ref: ref })) }));
13
37
  });
@@ -10,6 +10,7 @@ export declare const NavbarItem: React.ForwardRefExoticComponent<({
10
10
  children: React.ReactNode;
11
11
  } & (Omit<Headless.ButtonProps<"button">, "className" | "as"> | Omit<Omit<{
12
12
  href: string;
13
+ as?: React.ElementType;
13
14
  } & Omit<React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "ref"> & React.RefAttributes<HTMLAnchorElement>, "ref">, "className">)) & React.RefAttributes<HTMLAnchorElement | HTMLButtonElement>>;
14
15
  export declare function NavbarLabel({ className, ...props }: React.ComponentPropsWithoutRef<'span'>): import("react/jsx-runtime").JSX.Element;
15
16
  //# sourceMappingURL=navbar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"navbar.d.ts","sourceRoot":"","sources":["../../source/catalyst/navbar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAG7C,OAAO,KAA4B,MAAM,OAAO,CAAA;AAIhD,wBAAgB,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,2CAEpF;AAED,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,2CAE3F;AAED,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,2CAQ3F;AAED,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,2CAE1F;AAED,eAAO,MAAM,UAAU;cAMN,OAAO;gBAAc,MAAM;cAAY,KAAK,CAAC,SAAS;;;yOAsDrE,CAAA;AAEF,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,2CAE1F"}
1
+ {"version":3,"file":"navbar.d.ts","sourceRoot":"","sources":["../../source/catalyst/navbar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAG7C,OAAO,KAA4B,MAAM,OAAO,CAAA;AAIhD,wBAAgB,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,2CAEpF;AAED,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,2CAE3F;AAED,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,2CAQ3F;AAED,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,2CAE1F;AAED,eAAO,MAAM,UAAU;cAMN,OAAO;gBAAc,MAAM;cAAY,KAAK,CAAC,SAAS;;;;yOAsDrE,CAAA;AAEF,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,2CAE1F"}
@@ -14,6 +14,7 @@ export declare const SidebarItem: React.ForwardRefExoticComponent<({
14
14
  children: React.ReactNode;
15
15
  } & (Omit<Headless.ButtonProps<"button">, "className" | "as"> | Omit<Headless.ButtonProps<React.ForwardRefExoticComponent<{
16
16
  href: string;
17
+ as?: React.ElementType;
17
18
  } & Omit<React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "ref"> & React.RefAttributes<HTMLAnchorElement>>>, "className" | "as">)) & React.RefAttributes<HTMLAnchorElement | HTMLButtonElement>>;
18
19
  export declare function SidebarLabel({ className, ...props }: React.ComponentPropsWithoutRef<'span'>): import("react/jsx-runtime").JSX.Element;
19
20
  //# sourceMappingURL=sidebar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../source/catalyst/sidebar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAG7C,OAAO,KAA4B,MAAM,OAAO,CAAA;AAIhD,wBAAgB,OAAO,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,2CAErF;AAED,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,2CAU3F;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,2CAUzF;AAED,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,2CAU3F;AAED,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,2CAQ5F;AAED,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,2CAE3F;AAED,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,2CAE3F;AAED,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,2CAI3F;AAED,eAAO,MAAM,WAAW;cAMP,OAAO;gBAAc,MAAM;cAAY,KAAK,CAAC,SAAS;;;0OA0DrE,CAAA;AAEF,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,2CAE3F"}
1
+ {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../source/catalyst/sidebar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAG7C,OAAO,KAA4B,MAAM,OAAO,CAAA;AAIhD,wBAAgB,OAAO,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,2CAErF;AAED,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,2CAU3F;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,2CAUzF;AAED,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,2CAU3F;AAED,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,2CAQ5F;AAED,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,2CAE3F;AAED,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,2CAE3F;AAED,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,2CAI3F;AAED,eAAO,MAAM,WAAW;cAMP,OAAO;gBAAc,MAAM;cAAY,KAAK,CAAC,SAAS;;;;0OA0DrE,CAAA;AAEF,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,2CAE3F"}
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ export interface CatalystConfig {
3
+ link?: {
4
+ forceAs?: React.ElementType;
5
+ defaultAs?: React.ElementType;
6
+ };
7
+ }
8
+ export interface CatalystConfigProviderProps {
9
+ children: React.ReactNode;
10
+ config?: Partial<CatalystConfig>;
11
+ }
12
+ export declare function CatalystConfig({ children, config }: CatalystConfigProviderProps): import("react/jsx-runtime").JSX.Element;
13
+ export declare function useCatalystConfig(): CatalystConfig;
14
+ //# sourceMappingURL=catalyst-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalyst-config.d.ts","sourceRoot":"","sources":["../../source/catalyst-config/catalyst-config.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAA;AAGxD,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,KAAK,CAAC,WAAW,CAAA;QAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,WAAW,CAAA;KAC9B,CAAA;CACF;AASD,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;CACjC;AAED,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,MAAW,EAAE,EAAE,2BAA2B,2CAQpF;AAGD,wBAAgB,iBAAiB,IAAI,cAAc,CAElD"}
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useContext } from 'react';
3
+ // 默认配置
4
+ const defaultConfig = {};
5
+ // Context
6
+ const CatalystContext = createContext(defaultConfig);
7
+ export function CatalystConfig({ children, config = {} }) {
8
+ const mergedConfig = Object.assign(Object.assign({}, defaultConfig), config);
9
+ return (_jsx(CatalystContext.Provider, { value: mergedConfig, children: children }));
10
+ }
11
+ // Hook 用于获取配置
12
+ export function useCatalystConfig() {
13
+ return useContext(CatalystContext);
14
+ }
@@ -0,0 +1,3 @@
1
+ export type { CatalystConfig, CatalystConfigProviderProps } from './catalyst-config';
2
+ export { CatalystConfig as CatalystConfigProvider, useCatalystConfig } from './catalyst-config';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/catalyst-config/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAA;AACpF,OAAO,EAAE,cAAc,IAAI,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA"}
@@ -0,0 +1 @@
1
+ export { CatalystConfig as CatalystConfigProvider, useCatalystConfig } from './catalyst-config';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taicode/common-web",
3
- "version": "1.1.14",
3
+ "version": "1.1.16",
4
4
  "author": "Alain",
5
5
  "license": "ISC",
6
6
  "description": "",
@@ -1,55 +0,0 @@
1
- var __rest = (this && this.__rest) || function (s, e) {
2
- var t = {};
3
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
- t[p] = s[p];
5
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
- t[p[i]] = s[p[i]];
9
- }
10
- return t;
11
- };
12
- import * as Headless from '@headlessui/react';
13
- import clsx from 'clsx';
14
- import { Text } from './text';
15
- const sizes = {
16
- xs: 'sm:max-w-xs',
17
- sm: 'sm:max-w-sm',
18
- md: 'sm:max-w-md',
19
- lg: 'sm:max-w-lg',
20
- xl: 'sm:max-w-xl',
21
- '2xl': 'sm:max-w-2xl',
22
- '3xl': 'sm:max-w-3xl',
23
- '4xl': 'sm:max-w-4xl',
24
- '5xl': 'sm:max-w-5xl',
25
- };
26
- export function Alert(_a) {
27
- var { size = 'md', className, children } = _a, props = __rest(_a, ["size", "className", "children"]);
28
- return (<Headless.Dialog {...props}>
29
- <Headless.DialogBackdrop transition className="fixed inset-0 flex w-screen justify-center overflow-y-auto bg-zinc-950/15 px-2 py-2 transition duration-100 focus:outline-0 data-closed:opacity-0 data-enter:ease-out data-leave:ease-in sm:px-6 sm:py-8 lg:px-8 lg:py-16 dark:bg-zinc-950/50"/>
30
-
31
- <div className="fixed inset-0 w-screen overflow-y-auto pt-6 sm:pt-0">
32
- <div className="grid min-h-full grid-rows-[1fr_auto_1fr] justify-items-center p-8 sm:grid-rows-[1fr_auto_3fr] sm:p-4">
33
- <Headless.DialogPanel transition className={clsx(className, sizes[size], 'row-start-2 w-full rounded-2xl bg-white p-8 shadow-lg ring-1 ring-zinc-950/10 sm:rounded-2xl sm:p-6 dark:bg-zinc-900 dark:ring-white/10 forced-colors:outline', 'transition duration-100 will-change-transform data-closed:opacity-0 data-enter:ease-out data-closed:data-enter:scale-95 data-leave:ease-in')}>
34
- {children}
35
- </Headless.DialogPanel>
36
- </div>
37
- </div>
38
- </Headless.Dialog>);
39
- }
40
- export function AlertTitle(_a) {
41
- var { className } = _a, props = __rest(_a, ["className"]);
42
- return (<Headless.DialogTitle {...props} className={clsx(className, 'text-center text-base/6 font-semibold text-balance text-zinc-950 sm:text-left sm:text-sm/6 sm:text-wrap dark:text-white')}/>);
43
- }
44
- export function AlertDescription(_a) {
45
- var { className } = _a, props = __rest(_a, ["className"]);
46
- return (<Headless.Description as={Text} {...props} className={clsx(className, 'mt-2 text-center text-pretty sm:text-left')}/>);
47
- }
48
- export function AlertBody(_a) {
49
- var { className } = _a, props = __rest(_a, ["className"]);
50
- return <div {...props} className={clsx(className, 'mt-4')}/>;
51
- }
52
- export function AlertActions(_a) {
53
- var { className } = _a, props = __rest(_a, ["className"]);
54
- return (<div {...props} className={clsx(className, 'mt-6 flex flex-col-reverse items-center justify-end gap-3 *:w-full sm:mt-4 sm:flex-row sm:*:w-auto')}/>);
55
- }
@@ -1,7 +0,0 @@
1
- export function AuthLayout({ children }) {
2
- return (<main className="flex min-h-dvh flex-col p-2">
3
- <div className="flex grow items-center justify-center p-6 lg:rounded-lg lg:bg-white lg:p-10 lg:shadow-xs lg:ring-1 lg:ring-zinc-950/5 dark:lg:bg-zinc-900 dark:lg:ring-white/10">
4
- {children}
5
- </div>
6
- </main>);
7
- }
@@ -1,45 +0,0 @@
1
- var __rest = (this && this.__rest) || function (s, e) {
2
- var t = {};
3
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
- t[p] = s[p];
5
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
- t[p[i]] = s[p[i]];
9
- }
10
- return t;
11
- };
12
- import * as Headless from '@headlessui/react';
13
- import clsx from 'clsx';
14
- import React, { forwardRef } from 'react';
15
- import { TouchTarget } from './button';
16
- import { Link } from './link';
17
- export function Avatar(_a) {
18
- var { src = null, square = false, initials, alt = '', className } = _a, props = __rest(_a, ["src", "square", "initials", "alt", "className"]);
19
- return (<span data-slot="avatar" {...props} className={clsx(className,
20
- // Basic layout
21
- 'inline-grid shrink-0 align-middle [--avatar-radius:20%] *:col-start-1 *:row-start-1', 'outline -outline-offset-1 outline-black/10 dark:outline-white/10',
22
- // Border radius
23
- square ? 'rounded-(--avatar-radius) *:rounded-(--avatar-radius)' : 'rounded-full *:rounded-full')}>
24
- {initials && (<svg className="size-full fill-current p-[5%] text-[48px] font-medium uppercase select-none" viewBox="0 0 100 100" aria-hidden={alt ? undefined : 'true'}>
25
- {alt && <title>{alt}</title>}
26
- <text x="50%" y="50%" alignmentBaseline="middle" dominantBaseline="middle" textAnchor="middle" dy=".125em">
27
- {initials}
28
- </text>
29
- </svg>)}
30
- {src && <img className="size-full" src={src} alt={alt}/>}
31
- </span>);
32
- }
33
- export const AvatarButton = forwardRef(function AvatarButton(_a, ref) {
34
- var { src, square = false, initials, alt, className } = _a, props = __rest(_a, ["src", "square", "initials", "alt", "className"]);
35
- let classes = clsx(className, square ? 'rounded-[20%]' : 'rounded-full', 'relative inline-grid focus:not-data-focus:outline-hidden data-focus:outline-2 data-focus:outline-offset-2 data-focus:outline-blue-500');
36
- return 'href' in props ? (<Link {...props} className={classes} ref={ref}>
37
- <TouchTarget>
38
- <Avatar src={src} square={square} initials={initials} alt={alt}/>
39
- </TouchTarget>
40
- </Link>) : (<Headless.Button {...props} className={classes} ref={ref}>
41
- <TouchTarget>
42
- <Avatar src={src} square={square} initials={initials} alt={alt}/>
43
- </TouchTarget>
44
- </Headless.Button>);
45
- });
@@ -1,53 +0,0 @@
1
- var __rest = (this && this.__rest) || function (s, e) {
2
- var t = {};
3
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
- t[p] = s[p];
5
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
- t[p[i]] = s[p[i]];
9
- }
10
- return t;
11
- };
12
- import * as Headless from '@headlessui/react';
13
- import clsx from 'clsx';
14
- import React, { forwardRef } from 'react';
15
- import { TouchTarget } from './button';
16
- import { Link } from './link';
17
- const colors = {
18
- red: 'bg-red-500/15 text-red-700 group-data-hover:bg-red-500/25 dark:bg-red-500/10 dark:text-red-400 dark:group-data-hover:bg-red-500/20',
19
- orange: 'bg-orange-500/15 text-orange-700 group-data-hover:bg-orange-500/25 dark:bg-orange-500/10 dark:text-orange-400 dark:group-data-hover:bg-orange-500/20',
20
- amber: 'bg-amber-400/20 text-amber-700 group-data-hover:bg-amber-400/30 dark:bg-amber-400/10 dark:text-amber-400 dark:group-data-hover:bg-amber-400/15',
21
- yellow: 'bg-yellow-400/20 text-yellow-700 group-data-hover:bg-yellow-400/30 dark:bg-yellow-400/10 dark:text-yellow-300 dark:group-data-hover:bg-yellow-400/15',
22
- lime: 'bg-lime-400/20 text-lime-700 group-data-hover:bg-lime-400/30 dark:bg-lime-400/10 dark:text-lime-300 dark:group-data-hover:bg-lime-400/15',
23
- green: 'bg-green-500/15 text-green-700 group-data-hover:bg-green-500/25 dark:bg-green-500/10 dark:text-green-400 dark:group-data-hover:bg-green-500/20',
24
- emerald: 'bg-emerald-500/15 text-emerald-700 group-data-hover:bg-emerald-500/25 dark:bg-emerald-500/10 dark:text-emerald-400 dark:group-data-hover:bg-emerald-500/20',
25
- teal: 'bg-teal-500/15 text-teal-700 group-data-hover:bg-teal-500/25 dark:bg-teal-500/10 dark:text-teal-300 dark:group-data-hover:bg-teal-500/20',
26
- cyan: 'bg-cyan-400/20 text-cyan-700 group-data-hover:bg-cyan-400/30 dark:bg-cyan-400/10 dark:text-cyan-300 dark:group-data-hover:bg-cyan-400/15',
27
- sky: 'bg-sky-500/15 text-sky-700 group-data-hover:bg-sky-500/25 dark:bg-sky-500/10 dark:text-sky-300 dark:group-data-hover:bg-sky-500/20',
28
- blue: 'bg-blue-500/15 text-blue-700 group-data-hover:bg-blue-500/25 dark:text-blue-400 dark:group-data-hover:bg-blue-500/25',
29
- indigo: 'bg-indigo-500/15 text-indigo-700 group-data-hover:bg-indigo-500/25 dark:text-indigo-400 dark:group-data-hover:bg-indigo-500/20',
30
- violet: 'bg-violet-500/15 text-violet-700 group-data-hover:bg-violet-500/25 dark:text-violet-400 dark:group-data-hover:bg-violet-500/20',
31
- purple: 'bg-purple-500/15 text-purple-700 group-data-hover:bg-purple-500/25 dark:text-purple-400 dark:group-data-hover:bg-purple-500/20',
32
- fuchsia: 'bg-fuchsia-400/15 text-fuchsia-700 group-data-hover:bg-fuchsia-400/25 dark:bg-fuchsia-400/10 dark:text-fuchsia-400 dark:group-data-hover:bg-fuchsia-400/20',
33
- pink: 'bg-pink-400/15 text-pink-700 group-data-hover:bg-pink-400/25 dark:bg-pink-400/10 dark:text-pink-400 dark:group-data-hover:bg-pink-400/20',
34
- rose: 'bg-rose-400/15 text-rose-700 group-data-hover:bg-rose-400/25 dark:bg-rose-400/10 dark:text-rose-400 dark:group-data-hover:bg-rose-400/20',
35
- zinc: 'bg-zinc-600/10 text-zinc-700 group-data-hover:bg-zinc-600/20 dark:bg-white/5 dark:text-zinc-400 dark:group-data-hover:bg-white/10',
36
- };
37
- export function Badge(_a) {
38
- var { color = 'zinc', className } = _a, props = __rest(_a, ["color", "className"]);
39
- return (<span {...props} className={clsx(className, 'inline-flex items-center gap-x-1.5 rounded-md px-1.5 py-0.5 text-sm/5 font-medium sm:text-xs/5 forced-colors:outline', colors[color])}/>);
40
- }
41
- export const BadgeButton = forwardRef(function BadgeButton(_a, ref) {
42
- var { color = 'zinc', className, children } = _a, props = __rest(_a, ["color", "className", "children"]);
43
- let classes = clsx(className, 'group relative inline-flex rounded-md focus:not-data-focus:outline-hidden data-focus:outline-2 data-focus:outline-offset-2 data-focus:outline-blue-500');
44
- return 'href' in props ? (<Link {...props} className={classes} ref={ref}>
45
- <TouchTarget>
46
- <Badge color={color}>{children}</Badge>
47
- </TouchTarget>
48
- </Link>) : (<Headless.Button {...props} className={classes} ref={ref}>
49
- <TouchTarget>
50
- <Badge color={color}>{children}</Badge>
51
- </TouchTarget>
52
- </Headless.Button>);
53
- });