@taicode/common-web 1.1.21 → 3.1.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.
Files changed (112) hide show
  1. package/output/cache-api/cache-api.js +1 -1
  2. package/output/cache-api/cache-api.test.js +1 -1
  3. package/output/cache-api/index.d.ts +1 -1
  4. package/output/cache-api/index.d.ts.map +1 -1
  5. package/output/cache-api/index.js +1 -1
  6. package/output/loading-button/LoadingButtonDemo.d.ts +5 -0
  7. package/output/loading-button/LoadingButtonDemo.d.ts.map +1 -0
  8. package/output/loading-button/LoadingButtonDemo.js +33 -0
  9. package/output/loading-button/index.d.ts +31 -13
  10. package/output/loading-button/index.d.ts.map +1 -1
  11. package/output/loading-button/index.js +50 -26
  12. package/output/loading-button/index.test.d.ts +2 -0
  13. package/output/loading-button/index.test.d.ts.map +1 -0
  14. package/output/loading-button/index.test.js +203 -0
  15. package/output/service/index.d.ts +1 -1
  16. package/output/service/index.d.ts.map +1 -1
  17. package/output/service/index.js +1 -1
  18. package/output/service/service.d.ts +1 -1
  19. package/output/service/service.d.ts.map +1 -1
  20. package/output/service/service.js +9 -8
  21. package/output/service/service.test.js +2 -1
  22. package/output/side-cache/index.d.ts +1 -1
  23. package/output/side-cache/index.d.ts.map +1 -1
  24. package/output/side-cache/index.js +1 -1
  25. package/output/side-cache/side-cache.test.js +1 -1
  26. package/output/signin/context.d.ts +1 -2
  27. package/output/signin/context.d.ts.map +1 -1
  28. package/output/signin/context.js +3 -3
  29. package/output/signin/index.d.ts +3 -3
  30. package/output/signin/index.d.ts.map +1 -1
  31. package/output/signin/index.js +36 -18
  32. package/output/signin/service.d.ts +1 -1
  33. package/output/signin/service.d.ts.map +1 -1
  34. package/output/signin/service.js +6 -6
  35. package/output/signin/service.test.js +7 -3
  36. package/output/size-provider/index.d.ts +1 -1
  37. package/output/size-provider/index.d.ts.map +1 -1
  38. package/output/size-provider/index.js +1 -1
  39. package/output/size-provider/size-provider.d.ts +1 -1
  40. package/output/size-provider/size-provider.d.ts.map +1 -1
  41. package/output/size-provider/size-provider.js +1 -1
  42. package/output/toaster/index.d.ts +0 -1
  43. package/output/toaster/index.d.ts.map +1 -1
  44. package/output/toaster/index.js +7 -8
  45. package/output/use-observer/index.d.ts +1 -1
  46. package/output/use-observer/index.d.ts.map +1 -1
  47. package/output/use-observer/index.js +1 -1
  48. package/output/use-observer/use-observer.js +2 -2
  49. package/output/use-observer/use-observer.test.js +2 -2
  50. package/package.json +26 -18
  51. package/output/catalyst/alert.jsx +0 -55
  52. package/output/catalyst/auth-layout.jsx +0 -7
  53. package/output/catalyst/avatar.jsx +0 -45
  54. package/output/catalyst/badge.jsx +0 -53
  55. package/output/catalyst/button.jsx +0 -187
  56. package/output/catalyst/checkbox.jsx +0 -105
  57. package/output/catalyst/combobox.jsx +0 -120
  58. package/output/catalyst/description-list.jsx +0 -24
  59. package/output/catalyst/dialog.jsx +0 -55
  60. package/output/catalyst/divider.jsx +0 -16
  61. package/output/catalyst/dropdown.jsx +0 -102
  62. package/output/catalyst/fieldset.jsx +0 -41
  63. package/output/catalyst/heading.jsx +0 -22
  64. package/output/catalyst/input.jsx +0 -73
  65. package/output/catalyst/link.jsx +0 -14
  66. package/output/catalyst/listbox.jsx +0 -120
  67. package/output/catalyst/navbar.jsx +0 -67
  68. package/output/catalyst/pagination.jsx +0 -52
  69. package/output/catalyst/radio.jsx +0 -103
  70. package/output/catalyst/select.jsx +0 -59
  71. package/output/catalyst/sidebar-layout.jsx +0 -58
  72. package/output/catalyst/sidebar.jsx +0 -85
  73. package/output/catalyst/stacked-layout.jsx +0 -55
  74. package/output/catalyst/switch.jsx +0 -161
  75. package/output/catalyst/table.jsx +0 -68
  76. package/output/catalyst/text.jsx +0 -29
  77. package/output/catalyst/textarea.jsx +0 -49
  78. package/output/helpers/cache-api/cache-api.d.ts +0 -13
  79. package/output/helpers/cache-api/cache-api.d.ts.map +0 -1
  80. package/output/helpers/cache-api/cache-api.js +0 -114
  81. package/output/helpers/cache-api/cache-api.test.d.ts +0 -2
  82. package/output/helpers/cache-api/cache-api.test.d.ts.map +0 -1
  83. package/output/helpers/cache-api/cache-api.test.js +0 -348
  84. package/output/helpers/cache-api/index.d.ts +0 -2
  85. package/output/helpers/cache-api/index.d.ts.map +0 -1
  86. package/output/helpers/cache-api/index.js +0 -1
  87. package/output/helpers/service/index.d.ts +0 -1
  88. package/output/helpers/service/index.d.ts.map +0 -1
  89. package/output/helpers/service/index.js +0 -1
  90. package/output/helpers/service/service.d.ts +0 -5
  91. package/output/helpers/service/service.d.ts.map +0 -1
  92. package/output/helpers/service/service.js +0 -2
  93. package/output/helpers/side-cache/index.d.ts +0 -2
  94. package/output/helpers/side-cache/index.d.ts.map +0 -1
  95. package/output/helpers/side-cache/index.js +0 -1
  96. package/output/helpers/side-cache/side-cache.d.ts +0 -10
  97. package/output/helpers/side-cache/side-cache.d.ts.map +0 -1
  98. package/output/helpers/side-cache/side-cache.js +0 -137
  99. package/output/helpers/side-cache/side-cache.test.d.ts +0 -2
  100. package/output/helpers/side-cache/side-cache.test.d.ts.map +0 -1
  101. package/output/helpers/side-cache/side-cache.test.js +0 -179
  102. package/output/helpers/use-observer/index.d.ts +0 -2
  103. package/output/helpers/use-observer/index.d.ts.map +0 -1
  104. package/output/helpers/use-observer/index.js +0 -1
  105. package/output/helpers/use-observer/use-observer.d.ts +0 -3
  106. package/output/helpers/use-observer/use-observer.d.ts.map +0 -1
  107. package/output/helpers/use-observer/use-observer.js +0 -16
  108. package/output/helpers/use-observer/use-observer.test.d.ts +0 -2
  109. package/output/helpers/use-observer/use-observer.test.d.ts.map +0 -1
  110. package/output/helpers/use-observer/use-observer.test.jsx +0 -134
  111. package/output/service/service.test.jsx +0 -367
  112. package/output/use-observer/use-observer.test.jsx +0 -134
@@ -1,85 +0,0 @@
1
- 'use client';
2
- var __rest = (this && this.__rest) || function (s, e) {
3
- var t = {};
4
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
- t[p] = s[p];
6
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
- t[p[i]] = s[p[i]];
10
- }
11
- return t;
12
- };
13
- import * as Headless from '@headlessui/react';
14
- import clsx from 'clsx';
15
- import { LayoutGroup, motion } from 'framer-motion';
16
- import React, { forwardRef, useId } from 'react';
17
- import { TouchTarget } from './button';
18
- import { Link } from './link';
19
- export function Sidebar(_a) {
20
- var { className } = _a, props = __rest(_a, ["className"]);
21
- return <nav {...props} className={clsx(className, 'flex h-full min-h-0 flex-col')}/>;
22
- }
23
- export function SidebarHeader(_a) {
24
- var { className } = _a, props = __rest(_a, ["className"]);
25
- return (<div {...props} className={clsx(className, 'flex flex-col border-b border-zinc-950/5 p-4 dark:border-white/5 [&>[data-slot=section]+[data-slot=section]]:mt-2.5')}/>);
26
- }
27
- export function SidebarBody(_a) {
28
- var { className } = _a, props = __rest(_a, ["className"]);
29
- return (<div {...props} className={clsx(className, 'flex flex-1 flex-col overflow-y-auto p-4 [&>[data-slot=section]+[data-slot=section]]:mt-8')}/>);
30
- }
31
- export function SidebarFooter(_a) {
32
- var { className } = _a, props = __rest(_a, ["className"]);
33
- return (<div {...props} className={clsx(className, 'flex flex-col border-t border-zinc-950/5 p-4 dark:border-white/5 [&>[data-slot=section]+[data-slot=section]]:mt-2.5')}/>);
34
- }
35
- export function SidebarSection(_a) {
36
- var { className } = _a, props = __rest(_a, ["className"]);
37
- let id = useId();
38
- return (<LayoutGroup id={id}>
39
- <div {...props} data-slot="section" className={clsx(className, 'flex flex-col gap-0.5')}/>
40
- </LayoutGroup>);
41
- }
42
- export function SidebarDivider(_a) {
43
- var { className } = _a, props = __rest(_a, ["className"]);
44
- return <hr {...props} className={clsx(className, 'my-4 border-t border-zinc-950/5 lg:-mx-4 dark:border-white/5')}/>;
45
- }
46
- export function SidebarSpacer(_a) {
47
- var { className } = _a, props = __rest(_a, ["className"]);
48
- return <div aria-hidden="true" {...props} className={clsx(className, 'mt-8 flex-1')}/>;
49
- }
50
- export function SidebarHeading(_a) {
51
- var { className } = _a, props = __rest(_a, ["className"]);
52
- return (<h3 {...props} className={clsx(className, 'mb-1 px-2 text-xs/6 font-medium text-zinc-500 dark:text-zinc-400')}/>);
53
- }
54
- export const SidebarItem = forwardRef(function SidebarItem(_a, ref) {
55
- var { current, className, children } = _a, props = __rest(_a, ["current", "className", "children"]);
56
- let classes = clsx(
57
- // Base
58
- 'flex w-full items-center gap-3 rounded-lg px-2 py-2.5 text-left text-base/6 font-medium text-zinc-950 sm:py-2 sm:text-sm/5',
59
- // Leading icon/icon-only
60
- '*:data-[slot=icon]:size-6 *:data-[slot=icon]:shrink-0 *:data-[slot=icon]:fill-zinc-500 sm:*:data-[slot=icon]:size-5',
61
- // Trailing icon (down chevron or similar)
62
- '*:last:data-[slot=icon]:ml-auto *:last:data-[slot=icon]:size-5 sm:*:last:data-[slot=icon]:size-4',
63
- // Avatar
64
- '*:data-[slot=avatar]:-m-0.5 *:data-[slot=avatar]:size-7 sm:*:data-[slot=avatar]:size-6',
65
- // Hover
66
- 'data-hover:bg-zinc-950/5 data-hover:*:data-[slot=icon]:fill-zinc-950',
67
- // Active
68
- 'data-active:bg-zinc-950/5 data-active:*:data-[slot=icon]:fill-zinc-950',
69
- // Current
70
- 'data-current:*:data-[slot=icon]:fill-zinc-950',
71
- // Dark mode
72
- 'dark:text-white dark:*:data-[slot=icon]:fill-zinc-400', 'dark:data-hover:bg-white/5 dark:data-hover:*:data-[slot=icon]:fill-white', 'dark:data-active:bg-white/5 dark:data-active:*:data-[slot=icon]:fill-white', 'dark:data-current:*:data-[slot=icon]:fill-white');
73
- return (<span className={clsx(className, 'relative')}>
74
- {current && (<motion.span layoutId="current-indicator" className="absolute inset-y-2 -left-4 w-0.5 rounded-full bg-zinc-950 dark:bg-white"/>)}
75
- {'href' in props ? (<Headless.CloseButton as={Link} {...props} className={classes} data-current={current ? 'true' : undefined} ref={ref}>
76
- <TouchTarget>{children}</TouchTarget>
77
- </Headless.CloseButton>) : (<Headless.Button {...props} className={clsx('cursor-default', classes)} data-current={current ? 'true' : undefined} ref={ref}>
78
- <TouchTarget>{children}</TouchTarget>
79
- </Headless.Button>)}
80
- </span>);
81
- });
82
- export function SidebarLabel(_a) {
83
- var { className } = _a, props = __rest(_a, ["className"]);
84
- return <span {...props} className={clsx(className, 'truncate')}/>;
85
- }
@@ -1,55 +0,0 @@
1
- 'use client';
2
- import * as Headless from '@headlessui/react';
3
- import React, { useState } from 'react';
4
- import { NavbarItem } from './navbar';
5
- function OpenMenuIcon() {
6
- return (<svg data-slot="icon" viewBox="0 0 20 20" aria-hidden="true">
7
- <path d="M2 6.75C2 6.33579 2.33579 6 2.75 6H17.25C17.6642 6 18 6.33579 18 6.75C18 7.16421 17.6642 7.5 17.25 7.5H2.75C2.33579 7.5 2 7.16421 2 6.75ZM2 13.25C2 12.8358 2.33579 12.5 2.75 12.5H17.25C17.6642 12.5 18 12.8358 18 13.25C18 13.6642 17.6642 14 17.25 14H2.75C2.33579 14 2 13.6642 2 13.25Z"/>
8
- </svg>);
9
- }
10
- function CloseMenuIcon() {
11
- return (<svg data-slot="icon" viewBox="0 0 20 20" aria-hidden="true">
12
- <path d="M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z"/>
13
- </svg>);
14
- }
15
- function MobileSidebar({ open, close, children }) {
16
- return (<Headless.Dialog open={open} onClose={close} className="lg:hidden">
17
- <Headless.DialogBackdrop transition className="fixed inset-0 bg-black/30 transition data-closed:opacity-0 data-enter:duration-300 data-enter:ease-out data-leave:duration-200 data-leave:ease-in"/>
18
- <Headless.DialogPanel transition className="fixed inset-y-0 w-full max-w-80 p-2 transition duration-300 ease-in-out data-closed:-translate-x-full">
19
- <div className="flex h-full flex-col rounded-lg bg-white shadow-xs ring-1 ring-zinc-950/5 dark:bg-zinc-900 dark:ring-white/10">
20
- <div className="-mb-3 px-4 pt-3">
21
- <Headless.CloseButton as={NavbarItem} aria-label="Close navigation">
22
- <CloseMenuIcon />
23
- </Headless.CloseButton>
24
- </div>
25
- {children}
26
- </div>
27
- </Headless.DialogPanel>
28
- </Headless.Dialog>);
29
- }
30
- export function StackedLayout({ navbar, sidebar, children, }) {
31
- let [showSidebar, setShowSidebar] = useState(false);
32
- return (<div className="relative isolate flex min-h-svh w-full flex-col bg-white lg:bg-zinc-100 dark:bg-zinc-900 dark:lg:bg-zinc-950">
33
- {/* Sidebar on mobile */}
34
- <MobileSidebar open={showSidebar} close={() => setShowSidebar(false)}>
35
- {sidebar}
36
- </MobileSidebar>
37
-
38
- {/* Navbar */}
39
- <header className="flex items-center px-4">
40
- <div className="py-2.5 lg:hidden">
41
- <NavbarItem onClick={() => setShowSidebar(true)} aria-label="Open navigation">
42
- <OpenMenuIcon />
43
- </NavbarItem>
44
- </div>
45
- <div className="min-w-0 flex-1">{navbar}</div>
46
- </header>
47
-
48
- {/* Content */}
49
- <main className="flex flex-1 flex-col pb-2 lg:px-2">
50
- <div className="grow 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">
51
- <div className="mx-auto max-w-6xl">{children}</div>
52
- </div>
53
- </main>
54
- </div>);
55
- }
@@ -1,161 +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
- export function SwitchGroup(_a) {
15
- var { className } = _a, props = __rest(_a, ["className"]);
16
- return (<div data-slot="control" {...props} className={clsx(className,
17
- // Basic groups
18
- 'space-y-3 **:data-[slot=label]:font-normal',
19
- // With descriptions
20
- 'has-data-[slot=description]:space-y-6 has-data-[slot=description]:**:data-[slot=label]:font-medium')}/>);
21
- }
22
- export function SwitchField(_a) {
23
- var { className } = _a, props = __rest(_a, ["className"]);
24
- return (<Headless.Field data-slot="field" {...props} className={clsx(className,
25
- // Base layout
26
- 'grid grid-cols-[1fr_auto] gap-x-8 gap-y-1 sm:grid-cols-[1fr_auto]',
27
- // Control layout
28
- '*:data-[slot=control]:col-start-2 *:data-[slot=control]:self-start sm:*:data-[slot=control]:mt-0.5',
29
- // Label layout
30
- '*:data-[slot=label]:col-start-1 *:data-[slot=label]:row-start-1',
31
- // Description layout
32
- '*:data-[slot=description]:col-start-1 *:data-[slot=description]:row-start-2',
33
- // With description
34
- 'has-data-[slot=description]:**:data-[slot=label]:font-medium')}/>);
35
- }
36
- const colors = {
37
- 'dark/zinc': [
38
- '[--switch-bg-ring:var(--color-zinc-950)]/90 [--switch-bg:var(--color-zinc-900)] dark:[--switch-bg-ring:transparent] dark:[--switch-bg:var(--color-white)]/25',
39
- '[--switch-ring:var(--color-zinc-950)]/90 [--switch-shadow:var(--color-black)]/10 [--switch:white] dark:[--switch-ring:var(--color-zinc-700)]/90',
40
- ],
41
- 'dark/white': [
42
- '[--switch-bg-ring:var(--color-zinc-950)]/90 [--switch-bg:var(--color-zinc-900)] dark:[--switch-bg-ring:transparent] dark:[--switch-bg:var(--color-white)]',
43
- '[--switch-ring:var(--color-zinc-950)]/90 [--switch-shadow:var(--color-black)]/10 [--switch:white] dark:[--switch-ring:transparent] dark:[--switch:var(--color-zinc-900)]',
44
- ],
45
- dark: [
46
- '[--switch-bg-ring:var(--color-zinc-950)]/90 [--switch-bg:var(--color-zinc-900)] dark:[--switch-bg-ring:var(--color-white)]/15',
47
- '[--switch-ring:var(--color-zinc-950)]/90 [--switch-shadow:var(--color-black)]/10 [--switch:white]',
48
- ],
49
- zinc: [
50
- '[--switch-bg-ring:var(--color-zinc-700)]/90 [--switch-bg:var(--color-zinc-600)] dark:[--switch-bg-ring:transparent]',
51
- '[--switch-shadow:var(--color-black)]/10 [--switch:white] [--switch-ring:var(--color-zinc-700)]/90',
52
- ],
53
- white: [
54
- '[--switch-bg-ring:var(--color-black)]/15 [--switch-bg:white] dark:[--switch-bg-ring:transparent]',
55
- '[--switch-shadow:var(--color-black)]/10 [--switch-ring:transparent] [--switch:var(--color-zinc-950)]',
56
- ],
57
- red: [
58
- '[--switch-bg-ring:var(--color-red-700)]/90 [--switch-bg:var(--color-red-600)] dark:[--switch-bg-ring:transparent]',
59
- '[--switch:white] [--switch-ring:var(--color-red-700)]/90 [--switch-shadow:var(--color-red-900)]/20',
60
- ],
61
- orange: [
62
- '[--switch-bg-ring:var(--color-orange-600)]/90 [--switch-bg:var(--color-orange-500)] dark:[--switch-bg-ring:transparent]',
63
- '[--switch:white] [--switch-ring:var(--color-orange-600)]/90 [--switch-shadow:var(--color-orange-900)]/20',
64
- ],
65
- amber: [
66
- '[--switch-bg-ring:var(--color-amber-500)]/80 [--switch-bg:var(--color-amber-400)] dark:[--switch-bg-ring:transparent]',
67
- '[--switch-ring:transparent] [--switch-shadow:transparent] [--switch:var(--color-amber-950)]',
68
- ],
69
- yellow: [
70
- '[--switch-bg-ring:var(--color-yellow-400)]/80 [--switch-bg:var(--color-yellow-300)] dark:[--switch-bg-ring:transparent]',
71
- '[--switch-ring:transparent] [--switch-shadow:transparent] [--switch:var(--color-yellow-950)]',
72
- ],
73
- lime: [
74
- '[--switch-bg-ring:var(--color-lime-400)]/80 [--switch-bg:var(--color-lime-300)] dark:[--switch-bg-ring:transparent]',
75
- '[--switch-ring:transparent] [--switch-shadow:transparent] [--switch:var(--color-lime-950)]',
76
- ],
77
- green: [
78
- '[--switch-bg-ring:var(--color-green-700)]/90 [--switch-bg:var(--color-green-600)] dark:[--switch-bg-ring:transparent]',
79
- '[--switch:white] [--switch-ring:var(--color-green-700)]/90 [--switch-shadow:var(--color-green-900)]/20',
80
- ],
81
- emerald: [
82
- '[--switch-bg-ring:var(--color-emerald-600)]/90 [--switch-bg:var(--color-emerald-500)] dark:[--switch-bg-ring:transparent]',
83
- '[--switch:white] [--switch-ring:var(--color-emerald-600)]/90 [--switch-shadow:var(--color-emerald-900)]/20',
84
- ],
85
- teal: [
86
- '[--switch-bg-ring:var(--color-teal-700)]/90 [--switch-bg:var(--color-teal-600)] dark:[--switch-bg-ring:transparent]',
87
- '[--switch:white] [--switch-ring:var(--color-teal-700)]/90 [--switch-shadow:var(--color-teal-900)]/20',
88
- ],
89
- cyan: [
90
- '[--switch-bg-ring:var(--color-cyan-400)]/80 [--switch-bg:var(--color-cyan-300)] dark:[--switch-bg-ring:transparent]',
91
- '[--switch-ring:transparent] [--switch-shadow:transparent] [--switch:var(--color-cyan-950)]',
92
- ],
93
- sky: [
94
- '[--switch-bg-ring:var(--color-sky-600)]/80 [--switch-bg:var(--color-sky-500)] dark:[--switch-bg-ring:transparent]',
95
- '[--switch:white] [--switch-ring:var(--color-sky-600)]/80 [--switch-shadow:var(--color-sky-900)]/20',
96
- ],
97
- blue: [
98
- '[--switch-bg-ring:var(--color-blue-700)]/90 [--switch-bg:var(--color-blue-600)] dark:[--switch-bg-ring:transparent]',
99
- '[--switch:white] [--switch-ring:var(--color-blue-700)]/90 [--switch-shadow:var(--color-blue-900)]/20',
100
- ],
101
- indigo: [
102
- '[--switch-bg-ring:var(--color-indigo-600)]/90 [--switch-bg:var(--color-indigo-500)] dark:[--switch-bg-ring:transparent]',
103
- '[--switch:white] [--switch-ring:var(--color-indigo-600)]/90 [--switch-shadow:var(--color-indigo-900)]/20',
104
- ],
105
- violet: [
106
- '[--switch-bg-ring:var(--color-violet-600)]/90 [--switch-bg:var(--color-violet-500)] dark:[--switch-bg-ring:transparent]',
107
- '[--switch:white] [--switch-ring:var(--color-violet-600)]/90 [--switch-shadow:var(--color-violet-900)]/20',
108
- ],
109
- purple: [
110
- '[--switch-bg-ring:var(--color-purple-600)]/90 [--switch-bg:var(--color-purple-500)] dark:[--switch-bg-ring:transparent]',
111
- '[--switch:white] [--switch-ring:var(--color-purple-600)]/90 [--switch-shadow:var(--color-purple-900)]/20',
112
- ],
113
- fuchsia: [
114
- '[--switch-bg-ring:var(--color-fuchsia-600)]/90 [--switch-bg:var(--color-fuchsia-500)] dark:[--switch-bg-ring:transparent]',
115
- '[--switch:white] [--switch-ring:var(--color-fuchsia-600)]/90 [--switch-shadow:var(--color-fuchsia-900)]/20',
116
- ],
117
- pink: [
118
- '[--switch-bg-ring:var(--color-pink-600)]/90 [--switch-bg:var(--color-pink-500)] dark:[--switch-bg-ring:transparent]',
119
- '[--switch:white] [--switch-ring:var(--color-pink-600)]/90 [--switch-shadow:var(--color-pink-900)]/20',
120
- ],
121
- rose: [
122
- '[--switch-bg-ring:var(--color-rose-600)]/90 [--switch-bg:var(--color-rose-500)] dark:[--switch-bg-ring:transparent]',
123
- '[--switch:white] [--switch-ring:var(--color-rose-600)]/90 [--switch-shadow:var(--color-rose-900)]/20',
124
- ],
125
- };
126
- export function Switch(_a) {
127
- var { color = 'dark/zinc', className } = _a, props = __rest(_a, ["color", "className"]);
128
- return (<Headless.Switch data-slot="control" {...props} className={clsx(className,
129
- // Base styles
130
- 'group relative isolate inline-flex h-6 w-10 cursor-default rounded-full p-[3px] sm:h-5 sm:w-8',
131
- // Transitions
132
- 'transition duration-0 ease-in-out data-changing:duration-200',
133
- // Outline and background color in forced-colors mode so switch is still visible
134
- 'forced-colors:outline forced-colors:[--switch-bg:Highlight] dark:forced-colors:[--switch-bg:Highlight]',
135
- // Unchecked
136
- 'bg-zinc-200 ring-1 ring-black/5 ring-inset dark:bg-white/5 dark:ring-white/15',
137
- // Checked
138
- 'data-checked:bg-(--switch-bg) data-checked:ring-(--switch-bg-ring) dark:data-checked:bg-(--switch-bg) dark:data-checked:ring-(--switch-bg-ring)',
139
- // Focus
140
- 'focus:not-data-focus:outline-hidden data-focus:outline-2 data-focus:outline-offset-2 data-focus:outline-blue-500',
141
- // Hover
142
- 'data-hover:ring-black/15 data-hover:data-checked:ring-(--switch-bg-ring)', 'dark:data-hover:ring-white/25 dark:data-hover:data-checked:ring-(--switch-bg-ring)',
143
- // Disabled
144
- 'data-disabled:bg-zinc-200 data-disabled:opacity-50 data-disabled:data-checked:bg-zinc-200 data-disabled:data-checked:ring-black/5', 'dark:data-disabled:bg-white/15 dark:data-disabled:data-checked:bg-white/15 dark:data-disabled:data-checked:ring-white/15',
145
- // Color specific styles
146
- colors[color])}>
147
- <span aria-hidden="true" className={clsx(
148
- // Basic layout
149
- 'pointer-events-none relative inline-block size-4.5 rounded-full sm:size-3.5',
150
- // Transition
151
- 'translate-x-0 transition duration-200 ease-in-out',
152
- // Invisible border so the switch is still visible in forced-colors mode
153
- 'border border-transparent',
154
- // Unchecked
155
- 'bg-white shadow-sm ring-1 ring-black/5',
156
- // Checked
157
- 'group-data-checked:bg-(--switch) group-data-checked:shadow-(--switch-shadow) group-data-checked:ring-(--switch-ring)', 'group-data-checked:translate-x-4 sm:group-data-checked:translate-x-3',
158
- // Disabled
159
- 'group-data-checked:group-data-disabled:bg-white group-data-checked:group-data-disabled:shadow-sm group-data-checked:group-data-disabled:ring-black/5')}/>
160
- </Headless.Switch>);
161
- }
@@ -1,68 +0,0 @@
1
- 'use client';
2
- var __rest = (this && this.__rest) || function (s, e) {
3
- var t = {};
4
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
- t[p] = s[p];
6
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
- t[p[i]] = s[p[i]];
10
- }
11
- return t;
12
- };
13
- import clsx from 'clsx';
14
- import { createContext, useContext, useState } from 'react';
15
- import { Link } from './link';
16
- const TableContext = createContext({
17
- bleed: false,
18
- dense: false,
19
- grid: false,
20
- striped: false,
21
- });
22
- export function Table(_a) {
23
- var { bleed = false, dense = false, grid = false, striped = false, className, children } = _a, props = __rest(_a, ["bleed", "dense", "grid", "striped", "className", "children"]);
24
- return (<TableContext.Provider value={{ bleed, dense, grid, striped }}>
25
- <div className="flow-root">
26
- <div {...props} className={clsx(className, '-mx-(--gutter) overflow-x-auto whitespace-nowrap')}>
27
- <div className={clsx('inline-block min-w-full align-middle', !bleed && 'sm:px-(--gutter)')}>
28
- <table className="min-w-full text-left text-sm/6 text-zinc-950 dark:text-white">{children}</table>
29
- </div>
30
- </div>
31
- </div>
32
- </TableContext.Provider>);
33
- }
34
- export function TableHead(_a) {
35
- var { className } = _a, props = __rest(_a, ["className"]);
36
- return <thead {...props} className={clsx(className, 'text-zinc-500 dark:text-zinc-400')}/>;
37
- }
38
- export function TableBody(props) {
39
- return <tbody {...props}/>;
40
- }
41
- const TableRowContext = createContext({
42
- href: undefined,
43
- target: undefined,
44
- title: undefined,
45
- });
46
- export function TableRow(_a) {
47
- var { href, target, title, className } = _a, props = __rest(_a, ["href", "target", "title", "className"]);
48
- let { striped } = useContext(TableContext);
49
- return (<TableRowContext.Provider value={{ href, target, title }}>
50
- <tr {...props} className={clsx(className, href &&
51
- 'has-[[data-row-link][data-focus]]:outline-2 has-[[data-row-link][data-focus]]:-outline-offset-2 has-[[data-row-link][data-focus]]:outline-blue-500 dark:focus-within:bg-white/2.5', striped && 'even:bg-zinc-950/2.5 dark:even:bg-white/2.5', href && striped && 'hover:bg-zinc-950/5 dark:hover:bg-white/5', href && !striped && 'hover:bg-zinc-950/2.5 dark:hover:bg-white/2.5')}/>
52
- </TableRowContext.Provider>);
53
- }
54
- export function TableHeader(_a) {
55
- var { className } = _a, props = __rest(_a, ["className"]);
56
- let { bleed, grid } = useContext(TableContext);
57
- return (<th {...props} className={clsx(className, 'border-b border-b-zinc-950/10 px-4 py-2 font-medium first:pl-(--gutter,--spacing(2)) last:pr-(--gutter,--spacing(2)) dark:border-b-white/10', grid && 'border-l border-l-zinc-950/5 first:border-l-0 dark:border-l-white/5', !bleed && 'sm:first:pl-1 sm:last:pr-1')}/>);
58
- }
59
- export function TableCell(_a) {
60
- var { className, children } = _a, props = __rest(_a, ["className", "children"]);
61
- let { bleed, dense, grid, striped } = useContext(TableContext);
62
- let { href, target, title } = useContext(TableRowContext);
63
- let [cellRef, setCellRef] = useState(null);
64
- return (<td ref={href ? setCellRef : undefined} {...props} className={clsx(className, 'relative px-4 first:pl-(--gutter,--spacing(2)) last:pr-(--gutter,--spacing(2))', !striped && 'border-b border-zinc-950/5 dark:border-white/5', grid && 'border-l border-l-zinc-950/5 first:border-l-0 dark:border-l-white/5', dense ? 'py-2.5' : 'py-4', !bleed && 'sm:first:pl-1 sm:last:pr-1')}>
65
- {href && (<Link data-row-link href={href} target={target} aria-label={title} tabIndex={(cellRef === null || cellRef === void 0 ? void 0 : cellRef.previousElementSibling) === null ? 0 : -1} className="absolute inset-0 focus:outline-hidden"/>)}
66
- {children}
67
- </td>);
68
- }
@@ -1,29 +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 clsx from 'clsx';
13
- import { Link } from './link';
14
- export function Text(_a) {
15
- var { className } = _a, props = __rest(_a, ["className"]);
16
- return (<p data-slot="text" {...props} className={clsx(className, 'text-base/6 text-zinc-500 sm:text-sm/6 dark:text-zinc-400')}/>);
17
- }
18
- export function TextLink(_a) {
19
- var { className } = _a, props = __rest(_a, ["className"]);
20
- return (<Link {...props} className={clsx(className, 'text-zinc-950 underline decoration-zinc-950/50 data-hover:decoration-zinc-950 dark:text-white dark:decoration-white/50 dark:data-hover:decoration-white')}/>);
21
- }
22
- export function Strong(_a) {
23
- var { className } = _a, props = __rest(_a, ["className"]);
24
- return <strong {...props} className={clsx(className, 'font-medium text-zinc-950 dark:text-white')}/>;
25
- }
26
- export function Code(_a) {
27
- var { className } = _a, props = __rest(_a, ["className"]);
28
- return (<code {...props} className={clsx(className, 'rounded-sm border border-zinc-950/10 bg-zinc-950/2.5 px-0.5 text-sm font-medium text-zinc-950 sm:text-[0.8125rem] dark:border-white/20 dark:bg-white/5 dark:text-white')}/>);
29
- }
@@ -1,49 +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
- export const Textarea = forwardRef(function Textarea(_a, ref) {
16
- var { className, resizable = true } = _a, props = __rest(_a, ["className", "resizable"]);
17
- return (<span data-slot="control" className={clsx([
18
- className,
19
- // Basic layout
20
- 'relative block w-full',
21
- // Background color + shadow applied to inset pseudo element, so shadow blends with border in light mode
22
- 'before:absolute before:inset-px before:rounded-[calc(var(--radius-lg)-1px)] before:bg-white before:shadow-sm',
23
- // Background color is moved to control and shadow is removed in dark mode so hide `before` pseudo
24
- 'dark:before:hidden',
25
- // Focus ring
26
- 'after:pointer-events-none after:absolute after:inset-0 after:rounded-lg after:ring-transparent after:ring-inset sm:focus-within:after:ring-2 sm:focus-within:after:ring-blue-500',
27
- // Disabled state
28
- 'has-data-disabled:opacity-50 has-data-disabled:before:bg-zinc-950/5 has-data-disabled:before:shadow-none',
29
- ])}>
30
- <Headless.Textarea ref={ref} {...props} className={clsx([
31
- // Basic layout
32
- 'relative block h-full w-full appearance-none rounded-lg px-[calc(--spacing(3.5)-1px)] py-[calc(--spacing(2.5)-1px)] sm:px-[calc(--spacing(3)-1px)] sm:py-[calc(--spacing(1.5)-1px)]',
33
- // Typography
34
- 'text-base/6 text-zinc-950 placeholder:text-zinc-500 sm:text-sm/6 dark:text-white',
35
- // Border
36
- 'border border-zinc-950/10 data-hover:border-zinc-950/20 dark:border-white/10 dark:data-hover:border-white/20',
37
- // Background color
38
- 'bg-transparent dark:bg-white/5',
39
- // Hide default focus styles
40
- 'focus:outline-hidden',
41
- // Invalid state
42
- 'data-invalid:border-red-500 data-invalid:data-hover:border-red-500 dark:data-invalid:border-red-600 dark:data-invalid:data-hover:border-red-600',
43
- // Disabled state
44
- 'disabled:border-zinc-950/20 dark:disabled:border-white/15 dark:disabled:bg-white/2.5 dark:data-hover:disabled:border-white/15',
45
- // Resizable
46
- resizable ? 'resize-y' : 'resize-none',
47
- ])}/>
48
- </span>);
49
- });
@@ -1,13 +0,0 @@
1
- type ApiFunc<P extends unknown[], R = unknown> = (...args: P) => Promise<R>;
2
- export declare class CacheApi<P extends unknown[], R> {
3
- private func;
4
- private cache;
5
- private accessor pendingRequests;
6
- constructor(func: ApiFunc<P, R>);
7
- get loading(): boolean;
8
- get empty(): boolean;
9
- get value(): R | undefined;
10
- send(...args: P): Promise<R>;
11
- }
12
- export {};
13
- //# sourceMappingURL=cache-api.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache-api.d.ts","sourceRoot":"","sources":["../../../source/helpers/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;IAO9B,OAAO,CAAC,IAAI;IANxB,OAAO,CAAC,KAAK,CAAqB;IAIlC,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;CAmBnC"}
@@ -1,114 +0,0 @@
1
- var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
2
- var useValue = arguments.length > 2;
3
- for (var i = 0; i < initializers.length; i++) {
4
- value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
5
- }
6
- return useValue ? value : void 0;
7
- };
8
- var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
9
- function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
10
- var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
11
- var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
12
- var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
13
- var _, done = false;
14
- for (var i = decorators.length - 1; i >= 0; i--) {
15
- var context = {};
16
- for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
17
- for (var p in contextIn.access) context.access[p] = contextIn.access[p];
18
- context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
19
- var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
20
- if (kind === "accessor") {
21
- if (result === void 0) continue;
22
- if (result === null || typeof result !== "object") throw new TypeError("Object expected");
23
- if (_ = accept(result.get)) descriptor.get = _;
24
- if (_ = accept(result.set)) descriptor.set = _;
25
- if (_ = accept(result.init)) initializers.unshift(_);
26
- }
27
- else if (_ = accept(result)) {
28
- if (kind === "field") initializers.unshift(_);
29
- else descriptor[key] = _;
30
- }
31
- }
32
- if (target) Object.defineProperty(target, contextIn.name, descriptor);
33
- done = true;
34
- };
35
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
36
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
37
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
38
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
39
- };
40
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
41
- if (kind === "m") throw new TypeError("Private method is not writable");
42
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
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
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
45
- };
46
- import { action, computed, observable } from 'mobx';
47
- import { catchIt } from '@taicode/common-base';
48
- import { SideCache } from '../side-cache';
49
- let CacheApi = (() => {
50
- var _a, _CacheApi_pendingRequests_accessor_storage;
51
- var _b;
52
- let _instanceExtraInitializers = [];
53
- let _pendingRequests_decorators;
54
- let _pendingRequests_initializers = [];
55
- let _pendingRequests_extraInitializers = [];
56
- let _get_loading_decorators;
57
- let _get_empty_decorators;
58
- let _get_value_decorators;
59
- let _send_decorators;
60
- return _a = class CacheApi {
61
- // 记录当前正在进行的请求数量
62
- get pendingRequests() { return __classPrivateFieldGet(this, _CacheApi_pendingRequests_accessor_storage, "f"); }
63
- set pendingRequests(value) { __classPrivateFieldSet(this, _CacheApi_pendingRequests_accessor_storage, value, "f"); }
64
- constructor(func) {
65
- this.func = (__runInitializers(this, _instanceExtraInitializers), func);
66
- this.cache = new SideCache();
67
- _CacheApi_pendingRequests_accessor_storage.set(this, __runInitializers(this, _pendingRequests_initializers, 0));
68
- __runInitializers(this, _pendingRequests_extraInitializers);
69
- this.func = func;
70
- this.send = this.send.bind(this);
71
- }
72
- get loading() {
73
- return this.pendingRequests > 0;
74
- }
75
- get empty() {
76
- return this.cache.empty;
77
- }
78
- get value() {
79
- return this.cache.value;
80
- }
81
- async send(...args) {
82
- // 增加待处理请求计数
83
- this.pendingRequests++;
84
- const result = await catchIt(async () => {
85
- return await this.cache.handle(args, async () => {
86
- return await this.func(...args);
87
- });
88
- });
89
- // 减少待处理请求计数
90
- this.pendingRequests--;
91
- if (result.isError()) {
92
- throw result.error;
93
- }
94
- return result.value;
95
- }
96
- },
97
- _CacheApi_pendingRequests_accessor_storage = new WeakMap(),
98
- (() => {
99
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
100
- _pendingRequests_decorators = [observable];
101
- _get_loading_decorators = [computed];
102
- _get_empty_decorators = [computed];
103
- _get_value_decorators = [computed];
104
- _send_decorators = [(_b = action).bound.bind(_b)];
105
- __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);
106
- __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);
107
- __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);
108
- __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);
109
- __esDecorate(_a, null, _send_decorators, { kind: "method", name: "send", static: false, private: false, access: { has: obj => "send" in obj, get: obj => obj.send }, metadata: _metadata }, null, _instanceExtraInitializers);
110
- if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
111
- })(),
112
- _a;
113
- })();
114
- export { CacheApi };
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=cache-api.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache-api.test.d.ts","sourceRoot":"","sources":["../../../source/helpers/cache-api/cache-api.test.ts"],"names":[],"mappings":""}