@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.
- package/output/cache-api/cache-api.d.ts +5 -1
- package/output/cache-api/cache-api.d.ts.map +1 -1
- package/output/cache-api/cache-api.js +13 -2
- package/output/cache-api/cache-api.test.js +161 -0
- package/output/catalyst/avatar.d.ts +1 -0
- package/output/catalyst/avatar.d.ts.map +1 -1
- package/output/catalyst/badge.d.ts +1 -0
- package/output/catalyst/badge.d.ts.map +1 -1
- package/output/catalyst/link.d.ts +1 -0
- package/output/catalyst/link.d.ts.map +1 -1
- package/output/catalyst/link.js +26 -2
- package/output/catalyst/navbar.d.ts +1 -0
- package/output/catalyst/navbar.d.ts.map +1 -1
- package/output/catalyst/sidebar.d.ts +1 -0
- package/output/catalyst/sidebar.d.ts.map +1 -1
- package/output/catalyst-config/catalyst-config.d.ts +14 -0
- package/output/catalyst-config/catalyst-config.d.ts.map +1 -0
- package/output/catalyst-config/catalyst-config.js +14 -0
- package/output/catalyst-config/index.d.ts +3 -0
- package/output/catalyst-config/index.d.ts.map +1 -0
- package/output/catalyst-config/index.js +1 -0
- package/package.json +1 -1
- package/output/catalyst/alert.jsx +0 -55
- package/output/catalyst/auth-layout.jsx +0 -7
- package/output/catalyst/avatar.jsx +0 -45
- package/output/catalyst/badge.jsx +0 -53
- package/output/catalyst/button.jsx +0 -187
- package/output/catalyst/checkbox.jsx +0 -105
- package/output/catalyst/combobox.jsx +0 -120
- package/output/catalyst/description-list.jsx +0 -24
- package/output/catalyst/dialog.jsx +0 -55
- package/output/catalyst/divider.jsx +0 -16
- package/output/catalyst/dropdown.jsx +0 -102
- package/output/catalyst/fieldset.jsx +0 -41
- package/output/catalyst/heading.jsx +0 -22
- package/output/catalyst/input.jsx +0 -73
- package/output/catalyst/link.jsx +0 -14
- package/output/catalyst/listbox.jsx +0 -120
- package/output/catalyst/navbar.jsx +0 -67
- package/output/catalyst/pagination.jsx +0 -52
- package/output/catalyst/radio.jsx +0 -103
- package/output/catalyst/select.jsx +0 -59
- package/output/catalyst/sidebar-layout.jsx +0 -58
- package/output/catalyst/sidebar.jsx +0 -85
- package/output/catalyst/stacked-layout.jsx +0 -55
- package/output/catalyst/switch.jsx +0 -161
- package/output/catalyst/table.jsx +0 -68
- package/output/catalyst/text.jsx +0 -29
- package/output/catalyst/textarea.jsx +0 -49
- package/output/helpers/cache-api/cache-api.d.ts +0 -13
- package/output/helpers/cache-api/cache-api.d.ts.map +0 -1
- package/output/helpers/cache-api/cache-api.js +0 -114
- package/output/helpers/cache-api/cache-api.test.d.ts +0 -2
- package/output/helpers/cache-api/cache-api.test.d.ts.map +0 -1
- package/output/helpers/cache-api/cache-api.test.js +0 -348
- package/output/helpers/cache-api/index.d.ts +0 -2
- package/output/helpers/cache-api/index.d.ts.map +0 -1
- package/output/helpers/cache-api/index.js +0 -1
- package/output/helpers/service/index.d.ts +0 -1
- package/output/helpers/service/index.d.ts.map +0 -1
- package/output/helpers/service/index.js +0 -1
- package/output/helpers/service/service.d.ts +0 -5
- package/output/helpers/service/service.d.ts.map +0 -1
- package/output/helpers/service/service.js +0 -2
- package/output/helpers/side-cache/index.d.ts +0 -2
- package/output/helpers/side-cache/index.d.ts.map +0 -1
- package/output/helpers/side-cache/index.js +0 -1
- package/output/helpers/side-cache/side-cache.d.ts +0 -10
- package/output/helpers/side-cache/side-cache.d.ts.map +0 -1
- package/output/helpers/side-cache/side-cache.js +0 -137
- package/output/helpers/side-cache/side-cache.test.d.ts +0 -2
- package/output/helpers/side-cache/side-cache.test.d.ts.map +0 -1
- package/output/helpers/side-cache/side-cache.test.js +0 -179
- package/output/helpers/use-observer/index.d.ts +0 -2
- package/output/helpers/use-observer/index.d.ts.map +0 -1
- package/output/helpers/use-observer/index.js +0 -1
- package/output/helpers/use-observer/use-observer.d.ts +0 -3
- package/output/helpers/use-observer/use-observer.d.ts.map +0 -1
- package/output/helpers/use-observer/use-observer.js +0 -16
- package/output/helpers/use-observer/use-observer.test.d.ts +0 -2
- package/output/helpers/use-observer/use-observer.test.d.ts.map +0 -1
- package/output/helpers/use-observer/use-observer.test.jsx +0 -134
- package/output/service/service.test.jsx +0 -367
- 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;
|
|
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
|
|
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
|
|
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;
|
|
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"}
|
package/output/catalyst/link.js
CHANGED
|
@@ -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
|
-
|
|
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
|
|
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
|
|
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 @@
|
|
|
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,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
|
-
});
|