@harborclient/sdk 0.4.6 → 0.6.1

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 (178) hide show
  1. package/dist/components/AsyncListState/index.d.ts +85 -0
  2. package/dist/components/AsyncListState/index.d.ts.map +1 -0
  3. package/dist/components/AsyncListState/index.js +51 -0
  4. package/dist/components/BackButton/index.d.ts +32 -0
  5. package/dist/components/BackButton/index.d.ts.map +1 -0
  6. package/dist/components/BackButton/index.js +19 -0
  7. package/dist/components/Badge/index.d.ts +29 -0
  8. package/dist/components/Badge/index.d.ts.map +1 -0
  9. package/dist/components/Badge/index.js +32 -0
  10. package/dist/components/BusyIndicator/index.d.ts +16 -0
  11. package/dist/components/BusyIndicator/index.d.ts.map +1 -0
  12. package/dist/components/BusyIndicator/index.js +78 -0
  13. package/dist/components/Button/index.d.ts +29 -0
  14. package/dist/components/Button/index.d.ts.map +1 -0
  15. package/dist/components/Button/index.js +25 -0
  16. package/dist/components/CodeEditor/config.d.ts +51 -0
  17. package/dist/components/CodeEditor/config.d.ts.map +1 -0
  18. package/dist/components/CodeEditor/config.js +64 -0
  19. package/dist/components/CodeEditor/index.d.ts +77 -0
  20. package/dist/components/CodeEditor/index.d.ts.map +1 -0
  21. package/dist/components/CodeEditor/index.js +319 -0
  22. package/dist/components/CodeEditor/themes.d.ts +19 -0
  23. package/dist/components/CodeEditor/themes.d.ts.map +1 -0
  24. package/dist/components/CodeEditor/themes.js +37 -0
  25. package/dist/components/EmptyState/index.d.ts +26 -0
  26. package/dist/components/EmptyState/index.d.ts.map +1 -0
  27. package/dist/components/EmptyState/index.js +25 -0
  28. package/dist/components/FaIcon/index.d.ts +22 -0
  29. package/dist/components/FaIcon/index.d.ts.map +1 -0
  30. package/dist/components/FaIcon/index.js +13 -0
  31. package/dist/components/FieldError/index.d.ts +39 -0
  32. package/dist/components/FieldError/index.d.ts.map +1 -0
  33. package/dist/components/FieldError/index.js +34 -0
  34. package/dist/components/FooterButton/index.d.ts +30 -0
  35. package/dist/components/FooterButton/index.d.ts.map +1 -0
  36. package/dist/components/FooterButton/index.js +19 -0
  37. package/dist/components/FooterIcon/index.d.ts +32 -0
  38. package/dist/components/FooterIcon/index.d.ts.map +1 -0
  39. package/dist/components/FooterIcon/index.js +21 -0
  40. package/dist/components/FormDataEditor/index.d.ts +31 -0
  41. package/dist/components/FormDataEditor/index.d.ts.map +1 -0
  42. package/dist/components/FormDataEditor/index.js +109 -0
  43. package/dist/components/FormGroup/index.d.ts +75 -0
  44. package/dist/components/FormGroup/index.d.ts.map +1 -0
  45. package/dist/components/FormGroup/index.js +95 -0
  46. package/dist/components/KeyValueEditor/index.d.ts +35 -0
  47. package/dist/components/KeyValueEditor/index.d.ts.map +1 -0
  48. package/dist/components/KeyValueEditor/index.js +40 -0
  49. package/dist/components/MethodSelect/index.d.ts +20 -0
  50. package/dist/components/MethodSelect/index.d.ts.map +1 -0
  51. package/dist/components/MethodSelect/index.js +9 -0
  52. package/dist/components/Modal/ModalFooter.d.ts +25 -0
  53. package/dist/components/Modal/ModalFooter.d.ts.map +1 -0
  54. package/dist/components/Modal/ModalFooter.js +13 -0
  55. package/dist/components/Modal/ModalFormLayout.d.ts +31 -0
  56. package/dist/components/Modal/ModalFormLayout.d.ts.map +1 -0
  57. package/dist/components/Modal/ModalFormLayout.js +14 -0
  58. package/dist/components/Modal/ModalHeader.d.ts +34 -0
  59. package/dist/components/Modal/ModalHeader.d.ts.map +1 -0
  60. package/dist/components/Modal/ModalHeader.js +11 -0
  61. package/dist/components/Modal/index.d.ts +59 -0
  62. package/dist/components/Modal/index.d.ts.map +1 -0
  63. package/dist/components/Modal/index.js +37 -0
  64. package/dist/components/OverlayCloseButton/index.d.ts +25 -0
  65. package/dist/components/OverlayCloseButton/index.d.ts.map +1 -0
  66. package/dist/components/OverlayCloseButton/index.js +16 -0
  67. package/dist/components/OverlayPage/index.d.ts +40 -0
  68. package/dist/components/OverlayPage/index.d.ts.map +1 -0
  69. package/dist/components/OverlayPage/index.js +18 -0
  70. package/dist/components/PageHeader/index.d.ts +31 -0
  71. package/dist/components/PageHeader/index.d.ts.map +1 -0
  72. package/dist/components/PageHeader/index.js +12 -0
  73. package/dist/components/PanelCloseButton/index.d.ts +30 -0
  74. package/dist/components/PanelCloseButton/index.d.ts.map +1 -0
  75. package/dist/components/PanelCloseButton/index.js +17 -0
  76. package/dist/components/Resizable/Resizable.d.ts +48 -0
  77. package/dist/components/Resizable/Resizable.d.ts.map +1 -0
  78. package/dist/components/Resizable/Resizable.js +32 -0
  79. package/dist/components/Resizable/ResizeHandle.d.ts +41 -0
  80. package/dist/components/Resizable/ResizeHandle.d.ts.map +1 -0
  81. package/dist/components/Resizable/ResizeHandle.js +17 -0
  82. package/dist/components/Resizable/footerPanelUtils.d.ts +25 -0
  83. package/dist/components/Resizable/footerPanelUtils.d.ts.map +1 -0
  84. package/dist/components/Resizable/footerPanelUtils.js +61 -0
  85. package/dist/components/Resizable/index.d.ts +4 -0
  86. package/dist/components/Resizable/index.d.ts.map +1 -0
  87. package/dist/components/Resizable/index.js +3 -0
  88. package/dist/components/Resizable/useResizable.d.ts +42 -0
  89. package/dist/components/Resizable/useResizable.d.ts.map +1 -0
  90. package/dist/components/Resizable/useResizable.js +151 -0
  91. package/dist/components/ResourceList/index.d.ts +73 -0
  92. package/dist/components/ResourceList/index.d.ts.map +1 -0
  93. package/dist/components/ResourceList/index.js +44 -0
  94. package/dist/components/RowActionsMenu/index.d.ts +33 -0
  95. package/dist/components/RowActionsMenu/index.d.ts.map +1 -0
  96. package/dist/components/RowActionsMenu/index.js +54 -0
  97. package/dist/components/SegmentedTabs/index.d.ts +107 -0
  98. package/dist/components/SegmentedTabs/index.d.ts.map +1 -0
  99. package/dist/components/SegmentedTabs/index.js +111 -0
  100. package/dist/components/Spinner/index.d.ts +26 -0
  101. package/dist/components/Spinner/index.d.ts.map +1 -0
  102. package/dist/components/Spinner/index.js +22 -0
  103. package/dist/components/StatusMessage/index.d.ts +29 -0
  104. package/dist/components/StatusMessage/index.d.ts.map +1 -0
  105. package/dist/components/StatusMessage/index.js +13 -0
  106. package/dist/components/TabCloseButton/index.d.ts +25 -0
  107. package/dist/components/TabCloseButton/index.d.ts.map +1 -0
  108. package/dist/components/TabCloseButton/index.js +13 -0
  109. package/dist/components/VariableInput/index.d.ts +58 -0
  110. package/dist/components/VariableInput/index.d.ts.map +1 -0
  111. package/dist/components/VariableInput/index.js +90 -0
  112. package/dist/components/VariableTable/index.d.ts +22 -0
  113. package/dist/components/VariableTable/index.d.ts.map +1 -0
  114. package/dist/components/VariableTable/index.js +43 -0
  115. package/dist/components/classes.d.ts +11 -0
  116. package/dist/components/classes.d.ts.map +1 -0
  117. package/dist/components/classes.js +14 -0
  118. package/dist/components/forms/Input.d.ts +22 -0
  119. package/dist/components/forms/Input.d.ts.map +1 -0
  120. package/dist/components/forms/Input.js +9 -0
  121. package/dist/components/forms/Select.d.ts +24 -0
  122. package/dist/components/forms/Select.d.ts.map +1 -0
  123. package/dist/components/forms/Select.js +10 -0
  124. package/dist/components/forms/Textarea.d.ts +22 -0
  125. package/dist/components/forms/Textarea.d.ts.map +1 -0
  126. package/dist/components/forms/Textarea.js +8 -0
  127. package/dist/components/forms/classes.d.ts +24 -0
  128. package/dist/components/forms/classes.d.ts.map +1 -0
  129. package/dist/components/forms/classes.js +32 -0
  130. package/dist/components/forms/index.d.ts +5 -0
  131. package/dist/components/forms/index.d.ts.map +1 -0
  132. package/dist/components/forms/index.js +4 -0
  133. package/dist/components/index.d.ts +51 -0
  134. package/dist/components/index.d.ts.map +1 -0
  135. package/dist/components/index.js +37 -0
  136. package/dist/components/rowActionsMenuHelpers.d.ts +13 -0
  137. package/dist/components/rowActionsMenuHelpers.d.ts.map +1 -0
  138. package/dist/components/rowActionsMenuHelpers.js +29 -0
  139. package/dist/components/useDialogFocus.d.ts +16 -0
  140. package/dist/components/useDialogFocus.d.ts.map +1 -0
  141. package/dist/components/useDialogFocus.js +81 -0
  142. package/dist/components/utils.d.ts +29 -0
  143. package/dist/components/utils.d.ts.map +1 -0
  144. package/dist/components/utils.js +89 -0
  145. package/dist/components/utils.test.d.ts +2 -0
  146. package/dist/components/utils.test.d.ts.map +1 -0
  147. package/dist/components/utils.test.js +27 -0
  148. package/dist/http/substitute.d.ts.map +1 -1
  149. package/dist/http/substitute.js +9 -3
  150. package/dist/http/substitute.test.js +8 -0
  151. package/dist/main.d.ts +1 -1
  152. package/dist/main.d.ts.map +1 -1
  153. package/dist/runtime/react.d.ts +16 -1
  154. package/dist/runtime/react.js +40 -0
  155. package/dist/types.d.ts +168 -0
  156. package/dist/types.d.ts.map +1 -1
  157. package/dist/ui/codeEditorSettings.d.ts +29 -0
  158. package/dist/ui/codeEditorSettings.d.ts.map +1 -0
  159. package/dist/ui/codeEditorSettings.js +52 -0
  160. package/dist/ui/index.d.ts +1 -0
  161. package/dist/ui/index.d.ts.map +1 -1
  162. package/dist/ui/index.js +1 -0
  163. package/dist/variables/dynamic.d.ts +49 -0
  164. package/dist/variables/dynamic.d.ts.map +1 -0
  165. package/dist/variables/dynamic.js +735 -0
  166. package/dist/variables/dynamic.test.d.ts +2 -0
  167. package/dist/variables/dynamic.test.d.ts.map +1 -0
  168. package/dist/variables/dynamic.test.js +60 -0
  169. package/dist/variables/index.d.ts +3 -0
  170. package/dist/variables/index.d.ts.map +1 -0
  171. package/dist/variables/index.js +2 -0
  172. package/dist/variables/tokens.d.ts +44 -0
  173. package/dist/variables/tokens.d.ts.map +1 -0
  174. package/dist/variables/tokens.js +76 -0
  175. package/dist/variables/tokens.test.d.ts +2 -0
  176. package/dist/variables/tokens.test.d.ts.map +1 -0
  177. package/dist/variables/tokens.test.js +115 -0
  178. package/package.json +75 -14
@@ -0,0 +1,85 @@
1
+ import type { JSX, ReactNode } from 'react';
2
+ interface LoadingMessageProps {
3
+ /**
4
+ * Loading text announced to assistive technologies.
5
+ */
6
+ children?: ReactNode;
7
+ /**
8
+ * Additional Tailwind classes merged onto the status paragraph.
9
+ */
10
+ className?: string;
11
+ }
12
+ /**
13
+ * Muted loading label used while async list data is fetched.
14
+ *
15
+ * @param children - Loading message; defaults to "Loading…".
16
+ * @param className - Extra classes appended after the preset.
17
+ */
18
+ export declare function LoadingMessage({ children, className }: LoadingMessageProps): JSX.Element;
19
+ interface ErrorRetryProps {
20
+ /**
21
+ * Error message shown beside the retry control.
22
+ */
23
+ error: ReactNode;
24
+ /**
25
+ * Called when the user activates the retry button.
26
+ */
27
+ onRetry: () => void;
28
+ /**
29
+ * Accessible label for the retry button.
30
+ */
31
+ retryLabel?: string;
32
+ }
33
+ /**
34
+ * Inline error message paired with a secondary retry button.
35
+ *
36
+ * @param error - Error text rendered in danger color.
37
+ * @param onRetry - Handler invoked when retry is clicked.
38
+ * @param retryLabel - Visible retry button label.
39
+ */
40
+ export declare function ErrorRetry({ error, onRetry, retryLabel }: ErrorRetryProps): JSX.Element;
41
+ interface AsyncListStateProps {
42
+ /**
43
+ * When true, renders the loading placeholder instead of children.
44
+ */
45
+ loading: boolean;
46
+ /**
47
+ * When set, renders an error row with optional retry instead of children.
48
+ */
49
+ error?: ReactNode;
50
+ /**
51
+ * Called when the user activates retry on the error row.
52
+ */
53
+ onRetry?: () => void;
54
+ /**
55
+ * Message shown when the list is empty and not loading or errored.
56
+ */
57
+ emptyMessage?: ReactNode;
58
+ /**
59
+ * Whether the underlying collection is empty.
60
+ */
61
+ isEmpty?: boolean;
62
+ /**
63
+ * List content rendered when data is ready.
64
+ */
65
+ children: ReactNode;
66
+ /**
67
+ * Custom loading message; defaults to {@link LoadingMessage}.
68
+ */
69
+ loadingMessage?: ReactNode;
70
+ }
71
+ /**
72
+ * Switches between loading, error-with-retry, empty, and ready list content for
73
+ * async CRUD screens such as Team Hub and storage location lists.
74
+ *
75
+ * @param loading - Whether data is still loading.
76
+ * @param error - Optional fetch error message.
77
+ * @param onRetry - Retry handler shown when `error` is set.
78
+ * @param emptyMessage - Placeholder when `isEmpty` is true.
79
+ * @param isEmpty - Whether the loaded collection has no items.
80
+ * @param children - Ready-state list markup.
81
+ * @param loadingMessage - Optional override for the loading placeholder.
82
+ */
83
+ export declare function AsyncListState({ loading, error, onRetry, emptyMessage, isEmpty, children, loadingMessage }: AsyncListStateProps): JSX.Element;
84
+ export {};
85
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/AsyncListState/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5C,UAAU,mBAAmB;IAC3B;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAC7B,QAAqB,EACrB,SAAS,EACV,EAAE,mBAAmB,GAAG,GAAG,CAAC,OAAO,CASnC;AAED,UAAU,eAAe;IACvB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IAEjB;;OAEG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,UAAoB,EAAE,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CAWjG;AAED,UAAU,mBAAmB;IAC3B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;OAEG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,cAAc,CAAC,EAAE,SAAS,CAAC;CAC5B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,KAAK,EACL,OAAO,EACP,YAAY,EACZ,OAAe,EACf,QAAQ,EACR,cAAc,EACf,EAAE,mBAAmB,GAAG,GAAG,CAAC,OAAO,CAiBnC"}
@@ -0,0 +1,51 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "@harborclient/sdk/jsx-runtime";
2
+ import { Button } from '../Button/index.js';
3
+ import { FieldError } from '../FieldError/index.js';
4
+ /**
5
+ * Muted loading label used while async list data is fetched.
6
+ *
7
+ * @param children - Loading message; defaults to "Loading…".
8
+ * @param className - Extra classes appended after the preset.
9
+ */
10
+ export function LoadingMessage({ children = 'Loading…', className }) {
11
+ const base = 'text-[14px] text-muted';
12
+ const classes = className ? `${base} ${className}` : base;
13
+ return (_jsx("p", { role: "status", className: classes, children: children }));
14
+ }
15
+ /**
16
+ * Inline error message paired with a secondary retry button.
17
+ *
18
+ * @param error - Error text rendered in danger color.
19
+ * @param onRetry - Handler invoked when retry is clicked.
20
+ * @param retryLabel - Visible retry button label.
21
+ */
22
+ export function ErrorRetry({ error, onRetry, retryLabel = 'Retry' }) {
23
+ return (_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx(FieldError, { spacing: "field", className: "mb-0 mt-0", children: error }), _jsx(Button, { type: "button", variant: "secondary", onClick: onRetry, children: retryLabel })] }));
24
+ }
25
+ /**
26
+ * Switches between loading, error-with-retry, empty, and ready list content for
27
+ * async CRUD screens such as Team Hub and storage location lists.
28
+ *
29
+ * @param loading - Whether data is still loading.
30
+ * @param error - Optional fetch error message.
31
+ * @param onRetry - Retry handler shown when `error` is set.
32
+ * @param emptyMessage - Placeholder when `isEmpty` is true.
33
+ * @param isEmpty - Whether the loaded collection has no items.
34
+ * @param children - Ready-state list markup.
35
+ * @param loadingMessage - Optional override for the loading placeholder.
36
+ */
37
+ export function AsyncListState({ loading, error, onRetry, emptyMessage, isEmpty = false, children, loadingMessage }) {
38
+ if (loading) {
39
+ return _jsx(_Fragment, { children: loadingMessage ?? _jsx(LoadingMessage, {}) });
40
+ }
41
+ if (error) {
42
+ if (onRetry) {
43
+ return _jsx(ErrorRetry, { error: error, onRetry: onRetry });
44
+ }
45
+ return _jsx(FieldError, { spacing: "section", children: error });
46
+ }
47
+ if (isEmpty && emptyMessage != null) {
48
+ return _jsx("p", { className: "text-[14px] text-muted", children: emptyMessage });
49
+ }
50
+ return _jsx(_Fragment, { children: children });
51
+ }
@@ -0,0 +1,32 @@
1
+ import type { JSX } from 'react';
2
+ interface Props {
3
+ /**
4
+ * Called when the user activates the back control.
5
+ */
6
+ onClick: () => void;
7
+ /**
8
+ * Default accessible name when `ariaLabel` is not provided.
9
+ */
10
+ label?: string;
11
+ /**
12
+ * Accessible name when it should differ from `label`.
13
+ */
14
+ ariaLabel?: string;
15
+ /**
16
+ * Additional Tailwind classes merged onto the button element.
17
+ */
18
+ className?: string;
19
+ }
20
+ /**
21
+ * Secondary icon back control for nested panel headers.
22
+ *
23
+ * Matches {@link PanelCloseButton} styling with a left-angle icon instead of close.
24
+ *
25
+ * @param onClick - Back navigation handler.
26
+ * @param label - Default accessible name; defaults to "Back".
27
+ * @param ariaLabel - Accessible name override.
28
+ * @param className - Extra classes appended after the layout preset.
29
+ */
30
+ export declare function BackButton({ onClick, label, ariaLabel, className }: Props): JSX.Element;
31
+ export {};
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/BackButton/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAKjC,UAAU,KAAK;IACb;;OAEG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,KAAc,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CAehG"}
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx } from "@harborclient/sdk/jsx-runtime";
2
+ import { Button } from '../Button/index.js';
3
+ import { FaIcon } from '../FaIcon/index.js';
4
+ import { faAngleLeft } from '@fortawesome/free-solid-svg-icons';
5
+ /**
6
+ * Secondary icon back control for nested panel headers.
7
+ *
8
+ * Matches {@link PanelCloseButton} styling with a left-angle icon instead of close.
9
+ *
10
+ * @param onClick - Back navigation handler.
11
+ * @param label - Default accessible name; defaults to "Back".
12
+ * @param ariaLabel - Accessible name override.
13
+ * @param className - Extra classes appended after the layout preset.
14
+ */
15
+ export function BackButton({ onClick, label = 'Back', ariaLabel, className }) {
16
+ const base = 'inline-flex shrink-0 items-center justify-center py-2';
17
+ const classes = className ? `${base} ${className}` : base;
18
+ return (_jsx(Button, { type: "button", variant: "secondary", className: classes, "aria-label": ariaLabel ?? label, onClick: onClick, children: _jsx(FaIcon, { icon: faAngleLeft, className: "h-4 w-4" }) }));
19
+ }
@@ -0,0 +1,29 @@
1
+ import type { JSX, ReactNode } from 'react';
2
+ /**
3
+ * Visual tone for compact status badges.
4
+ */
5
+ export type BadgeVariant = 'success' | 'danger' | 'muted' | 'accent';
6
+ interface Props {
7
+ /**
8
+ * Badge label content.
9
+ */
10
+ children: ReactNode;
11
+ /**
12
+ * Color and background preset.
13
+ */
14
+ variant?: BadgeVariant;
15
+ /**
16
+ * Additional Tailwind classes merged onto the badge element.
17
+ */
18
+ className?: string;
19
+ }
20
+ /**
21
+ * Compact pill badge for status labels in lists and settings panels.
22
+ *
23
+ * @param children - Badge text.
24
+ * @param variant - Color preset (`success`, `danger`, `muted`, or `accent`).
25
+ * @param className - Extra classes appended after the variant preset.
26
+ */
27
+ export declare function Badge({ children, variant, className }: Props): JSX.Element;
28
+ export {};
29
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Badge/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5C;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAErE,UAAU,KAAK;IACb;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAsBD;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,EAAE,QAAQ,EAAE,OAAiB,EAAE,SAAS,EAAE,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CAKpF"}
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx } from "@harborclient/sdk/jsx-runtime";
2
+ /**
3
+ * Returns background and text classes for the chosen badge variant.
4
+ *
5
+ * @param variant - Badge color preset.
6
+ * @returns Tailwind classes for the badge span.
7
+ */
8
+ function variantClasses(variant) {
9
+ switch (variant) {
10
+ case 'success':
11
+ return 'bg-success/20 text-success';
12
+ case 'danger':
13
+ return 'bg-danger/20 text-danger';
14
+ case 'accent':
15
+ return 'bg-accent/20 text-accent';
16
+ case 'muted':
17
+ default:
18
+ return 'bg-control text-muted';
19
+ }
20
+ }
21
+ /**
22
+ * Compact pill badge for status labels in lists and settings panels.
23
+ *
24
+ * @param children - Badge text.
25
+ * @param variant - Color preset (`success`, `danger`, `muted`, or `accent`).
26
+ * @param className - Extra classes appended after the variant preset.
27
+ */
28
+ export function Badge({ children, variant = 'muted', className }) {
29
+ const base = `inline-flex shrink-0 items-center rounded px-1.5 py-0.5 text-[14px] ${variantClasses(variant)}`;
30
+ const classes = className ? `${base} ${className}` : base;
31
+ return _jsx("span", { className: classes, children: children });
32
+ }
@@ -0,0 +1,16 @@
1
+ import type { JSX } from 'react';
2
+ export interface Props {
3
+ /**
4
+ * Whether the application is busy.
5
+ */
6
+ isBusy?: boolean;
7
+ }
8
+ /**
9
+ * Global busy overlay: top progress bar, corner spinner, and wait cursor.
10
+ * Delayed show avoids flashing on fast operations; min-visible avoids flicker.
11
+ *
12
+ * Requires host styles for `body.app-busy` (wait cursor) and `.busy-progress-bar`
13
+ * (progress animation); HarborClient defines these in `styles.css`.
14
+ */
15
+ export declare function BusyIndicator({ isBusy }: Props): JSX.Element | null;
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/BusyIndicator/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAMjC,MAAM,WAAW,KAAK;IACpB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CA2FnE"}
@@ -0,0 +1,78 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "@harborclient/sdk/jsx-runtime";
2
+ import { useEffect, useRef, useState } from '@harborclient/sdk/react';
3
+ import { Spinner } from '../Spinner/index.js';
4
+ const SHOW_DELAY_MS = 150;
5
+ const MIN_VISIBLE_MS = 300;
6
+ /**
7
+ * Global busy overlay: top progress bar, corner spinner, and wait cursor.
8
+ * Delayed show avoids flashing on fast operations; min-visible avoids flicker.
9
+ *
10
+ * Requires host styles for `body.app-busy` (wait cursor) and `.busy-progress-bar`
11
+ * (progress animation); HarborClient defines these in `styles.css`.
12
+ */
13
+ export function BusyIndicator({ isBusy }) {
14
+ const [visible, setVisible] = useState(false);
15
+ const showTimerRef = useRef(null);
16
+ const hideTimerRef = useRef(null);
17
+ const shownAtRef = useRef(null);
18
+ /**
19
+ * Shows, hides, or extends the busy overlay based on global busy state.
20
+ */
21
+ useEffect(() => {
22
+ if (isBusy) {
23
+ if (hideTimerRef.current != null) {
24
+ clearTimeout(hideTimerRef.current);
25
+ hideTimerRef.current = null;
26
+ }
27
+ if (visible) {
28
+ return;
29
+ }
30
+ if (showTimerRef.current == null) {
31
+ showTimerRef.current = setTimeout(() => {
32
+ showTimerRef.current = null;
33
+ shownAtRef.current = Date.now();
34
+ setVisible(true);
35
+ }, SHOW_DELAY_MS);
36
+ }
37
+ return;
38
+ }
39
+ if (showTimerRef.current != null) {
40
+ clearTimeout(showTimerRef.current);
41
+ showTimerRef.current = null;
42
+ }
43
+ if (!visible) {
44
+ return;
45
+ }
46
+ const elapsed = shownAtRef.current != null ? Date.now() - shownAtRef.current : MIN_VISIBLE_MS;
47
+ const remaining = Math.max(0, MIN_VISIBLE_MS - elapsed);
48
+ hideTimerRef.current = setTimeout(() => {
49
+ hideTimerRef.current = null;
50
+ shownAtRef.current = null;
51
+ setVisible(false);
52
+ }, remaining);
53
+ }, [isBusy, visible]);
54
+ /**
55
+ * Clears pending show/hide timers on unmount.
56
+ */
57
+ useEffect(() => {
58
+ return () => {
59
+ if (showTimerRef.current != null)
60
+ clearTimeout(showTimerRef.current);
61
+ if (hideTimerRef.current != null)
62
+ clearTimeout(hideTimerRef.current);
63
+ };
64
+ }, []);
65
+ /**
66
+ * Toggles the document wait cursor while the overlay is visible.
67
+ */
68
+ useEffect(() => {
69
+ document.body.classList.toggle('app-busy', visible);
70
+ return () => {
71
+ document.body.classList.remove('app-busy');
72
+ };
73
+ }, [visible]);
74
+ if (!visible) {
75
+ return null;
76
+ }
77
+ return (_jsxs(_Fragment, { children: [_jsx("div", { className: "pointer-events-none fixed inset-x-0 top-0 z-[100] h-0.5 overflow-hidden bg-separator", "aria-hidden": "true", children: _jsx("div", { className: "busy-progress-bar h-full w-1/3 bg-accent" }) }), _jsx("div", { className: "pointer-events-none fixed right-3 top-3 z-[100] flex h-6 w-6 items-center justify-center rounded-full border border-separator bg-surface shadow-sm", role: "status", "aria-label": "Working", children: _jsx(Spinner, { size: "sm" }) })] }));
78
+ }
@@ -0,0 +1,29 @@
1
+ import type { ButtonHTMLAttributes, JSX } from 'react';
2
+ /**
3
+ * Visual style for a macOS-style button.
4
+ */
5
+ export type ButtonVariant = 'primary' | 'secondary' | 'primaryDanger' | 'secondaryDanger' | 'toolbar' | 'icon' | 'iconDanger';
6
+ interface Props extends ButtonHTMLAttributes<HTMLButtonElement> {
7
+ /**
8
+ * Visual style preset. Defaults to primary accent fill.
9
+ */
10
+ variant?: ButtonVariant;
11
+ /**
12
+ * Additional Tailwind classes merged after the variant preset.
13
+ */
14
+ className?: string;
15
+ }
16
+ /**
17
+ * macOS-style button with shared variant presets for primary actions, secondary
18
+ * actions, toolbar controls, and icon-only controls.
19
+ *
20
+ * Defaults to `type="button"` so clicks do not accidentally submit a parent form.
21
+ * Pass `type="submit"` explicitly when submit behavior is intended.
22
+ *
23
+ * @param variant - Visual preset; defaults to `primary`.
24
+ * @param className - Extra classes appended after the variant classes.
25
+ * @param type - Native button type; defaults to `button`.
26
+ */
27
+ export declare function Button({ variant, className, type, ...props }: Props): JSX.Element;
28
+ export {};
29
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Button/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAEvD;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,WAAW,GACX,eAAe,GACf,iBAAiB,GACjB,SAAS,GACT,MAAM,GACN,YAAY,CAAC;AAkBjB,UAAU,KAAM,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IAC7D;;OAEG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IAExB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,EACrB,OAAmB,EACnB,SAAS,EACT,IAAe,EACf,GAAG,KAAK,EACT,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CAGrB"}
@@ -0,0 +1,25 @@
1
+ import { jsx as _jsx } from "@harborclient/sdk/jsx-runtime";
2
+ const VARIANT_CLASSES = {
3
+ primary: 'cursor-pointer rounded-md border border-transparent bg-accent px-3 py-1 text-[15px] font-medium text-white shadow-sm hover:brightness-110 disabled:cursor-not-allowed disabled:opacity-50 app-no-drag',
4
+ secondary: 'cursor-pointer rounded-md border border-separator bg-control px-3 py-1 text-[15px] text-text shadow-sm hover:bg-selection disabled:cursor-not-allowed disabled:opacity-50 app-no-drag',
5
+ primaryDanger: 'cursor-pointer rounded-md border border-transparent bg-danger px-3 py-1 text-[15px] font-medium text-white shadow-sm hover:brightness-110 disabled:cursor-not-allowed disabled:opacity-50 app-no-drag',
6
+ secondaryDanger: 'cursor-pointer rounded-md border border-separator bg-control px-3 py-1 text-[15px] text-danger shadow-sm hover:bg-danger/15 disabled:cursor-not-allowed disabled:opacity-50 app-no-drag',
7
+ toolbar: 'cursor-pointer rounded-md border-none bg-transparent px-2 py-1 text-[15px] hover:bg-selection app-no-drag',
8
+ icon: 'inline-flex h-6 w-6 shrink-0 cursor-pointer items-center justify-center rounded-md border-none bg-transparent text-muted opacity-0 transition-opacity group-hover:opacity-100 group-focus-within:opacity-100 focus:opacity-100 focus-visible:opacity-100 hover:bg-selection hover:text-text app-no-drag',
9
+ iconDanger: 'inline-flex h-6 w-6 shrink-0 cursor-pointer items-center justify-center rounded-md border-none bg-transparent text-muted opacity-0 transition-opacity group-hover:opacity-100 group-focus-within:opacity-100 focus:opacity-100 focus-visible:opacity-100 hover:bg-danger/15 hover:text-danger app-no-drag'
10
+ };
11
+ /**
12
+ * macOS-style button with shared variant presets for primary actions, secondary
13
+ * actions, toolbar controls, and icon-only controls.
14
+ *
15
+ * Defaults to `type="button"` so clicks do not accidentally submit a parent form.
16
+ * Pass `type="submit"` explicitly when submit behavior is intended.
17
+ *
18
+ * @param variant - Visual preset; defaults to `primary`.
19
+ * @param className - Extra classes appended after the variant classes.
20
+ * @param type - Native button type; defaults to `button`.
21
+ */
22
+ export function Button({ variant = 'primary', className, type = 'button', ...props }) {
23
+ const classes = className ? `${VARIANT_CLASSES[variant]} ${className}` : VARIANT_CLASSES[variant];
24
+ return _jsx("button", { type: type, className: classes, ...props });
25
+ }
@@ -0,0 +1,51 @@
1
+ import type { JSX, ReactNode } from 'react';
2
+ import { createExternalStore } from '../../runtime/store.js';
3
+ import type { CodeEditorSetup, CodeEditorTheme } from '../../types.js';
4
+ /**
5
+ * Persisted CodeMirror theme and basicSetup options shared by all CodeEditor instances.
6
+ */
7
+ export interface CodeEditorConfig {
8
+ /**
9
+ * CodeMirror syntax theme applied to editor instances.
10
+ */
11
+ theme: CodeEditorTheme;
12
+ /**
13
+ * CodeMirror basicSetup options for editable editor instances.
14
+ */
15
+ setup: CodeEditorSetup;
16
+ }
17
+ /**
18
+ * Default CodeEditor configuration when no provider or store snapshot is available.
19
+ */
20
+ export declare const DEFAULT_CODE_EDITOR_CONFIG: CodeEditorConfig;
21
+ /**
22
+ * Returns the shared CodeEditor config store, creating it on first access.
23
+ *
24
+ * Stored on globalThis so host and plugin bundles share one store instance.
25
+ */
26
+ export declare function getCodeEditorConfigStore(): ReturnType<typeof createExternalStore<CodeEditorConfig>>;
27
+ interface ProviderProps {
28
+ /**
29
+ * Theme and setup values to publish to context and the global store.
30
+ */
31
+ value: CodeEditorConfig;
32
+ /**
33
+ * Child components that may render CodeEditor instances.
34
+ */
35
+ children: ReactNode;
36
+ }
37
+ /**
38
+ * Publishes CodeEditor theme/setup to React context and the cross-bundle global store.
39
+ *
40
+ * Wrap the HarborClient renderer root so host CodeEditor instances read settings from
41
+ * context. Plugin bundles fall back to the global store snapshot published here.
42
+ */
43
+ export declare function CodeEditorConfigProvider({ value, children }: ProviderProps): JSX.Element;
44
+ /**
45
+ * Resolves CodeEditor theme/setup from React context, then the global store, then defaults.
46
+ *
47
+ * @returns Active CodeEditor configuration.
48
+ */
49
+ export declare function useCodeEditorConfig(): CodeEditorConfig;
50
+ export {};
51
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/components/CodeEditor/config.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGvE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,KAAK,EAAE,eAAe,CAAC;IAEvB;;OAEG;IACH,KAAK,EAAE,eAAe,CAAC;CACxB;AAED;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,gBAGxC,CAAC;AAQF;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,UAAU,CACpD,OAAO,mBAAmB,CAAC,gBAAgB,CAAC,CAC7C,CAMA;AAkBD,UAAU,aAAa;IACrB;;OAEG;IACH,KAAK,EAAE,gBAAgB,CAAC;IAExB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,aAAa,GAAG,GAAG,CAAC,OAAO,CAWxF;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,gBAAgB,CAKtD"}
@@ -0,0 +1,64 @@
1
+ import { createContext, createElement, useContext, useEffect, useSyncExternalStore } from '@harborclient/sdk/react';
2
+ import { createExternalStore } from '../../runtime/store.js';
3
+ import { DEFAULT_CODE_EDITOR_SETUP } from '../../ui/codeEditorSettings.js';
4
+ /**
5
+ * Default CodeEditor configuration when no provider or store snapshot is available.
6
+ */
7
+ export const DEFAULT_CODE_EDITOR_CONFIG = {
8
+ theme: 'default',
9
+ setup: DEFAULT_CODE_EDITOR_SETUP
10
+ };
11
+ const GLOBAL_STORE_KEY = '__hc_codeEditorConfigStore';
12
+ /**
13
+ * Returns the shared CodeEditor config store, creating it on first access.
14
+ *
15
+ * Stored on globalThis so host and plugin bundles share one store instance.
16
+ */
17
+ export function getCodeEditorConfigStore() {
18
+ const globalRef = globalThis;
19
+ if (globalRef[GLOBAL_STORE_KEY] == null) {
20
+ globalRef[GLOBAL_STORE_KEY] = createExternalStore(DEFAULT_CODE_EDITOR_CONFIG);
21
+ }
22
+ return globalRef[GLOBAL_STORE_KEY];
23
+ }
24
+ /**
25
+ * Returns the CodeEditor React context, creating it on first access.
26
+ *
27
+ * Deferred so importing CodeEditor in a plugin bundle does not call requireHostReact()
28
+ * before activate() runs installReact(hc.react).
29
+ */
30
+ function getCodeEditorContext() {
31
+ if (codeEditorContext == null) {
32
+ codeEditorContext = createContext(null);
33
+ }
34
+ return codeEditorContext;
35
+ }
36
+ /** Lazily initialized; use {@link getCodeEditorContext} instead of reading directly. */
37
+ let codeEditorContext = null;
38
+ /**
39
+ * Publishes CodeEditor theme/setup to React context and the cross-bundle global store.
40
+ *
41
+ * Wrap the HarborClient renderer root so host CodeEditor instances read settings from
42
+ * context. Plugin bundles fall back to the global store snapshot published here.
43
+ */
44
+ export function CodeEditorConfigProvider({ value, children }) {
45
+ const store = getCodeEditorConfigStore();
46
+ /**
47
+ * Mirrors the latest config into the global store for plugin bundle consumers.
48
+ */
49
+ useEffect(() => {
50
+ store.setState(value);
51
+ }, [store, value]);
52
+ return createElement(getCodeEditorContext().Provider, { value }, children);
53
+ }
54
+ /**
55
+ * Resolves CodeEditor theme/setup from React context, then the global store, then defaults.
56
+ *
57
+ * @returns Active CodeEditor configuration.
58
+ */
59
+ export function useCodeEditorConfig() {
60
+ const contextValue = useContext(getCodeEditorContext());
61
+ const store = getCodeEditorConfigStore();
62
+ const storeValue = useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot);
63
+ return contextValue ?? storeValue;
64
+ }
@@ -0,0 +1,77 @@
1
+ import { type CompletionSource } from '@codemirror/autocomplete';
2
+ import type { JSX } from 'react';
3
+ import type { CodeEditorSetup, CodeEditorTheme, Variable } from '../../types.js';
4
+ export { CODE_EDITOR_THEME_OPTIONS } from './themes.js';
5
+ export type CodeEditorLanguage = 'json' | 'text' | 'javascript' | 'shell';
6
+ export interface Props {
7
+ /**
8
+ * Editor content.
9
+ */
10
+ value: string;
11
+ /**
12
+ * Called when the user edits the content; omitted for read-only views.
13
+ *
14
+ * @param value - Updated editor content.
15
+ */
16
+ onChange?: (value: string) => void;
17
+ /**
18
+ * Syntax mode for highlighting.
19
+ */
20
+ language?: CodeEditorLanguage;
21
+ /**
22
+ * When true, the editor cannot be edited.
23
+ */
24
+ readOnly?: boolean;
25
+ /**
26
+ * Placeholder shown when the editor is empty.
27
+ */
28
+ placeholder?: string;
29
+ /**
30
+ * Minimum editor height in CSS units.
31
+ */
32
+ minHeight?: string;
33
+ /**
34
+ * Additional wrapper classes.
35
+ */
36
+ className?: string;
37
+ /**
38
+ * Collection-scoped variables for {{token}} highlighting and tooltips.
39
+ */
40
+ variables?: Variable[];
41
+ /**
42
+ * Opens collection settings to edit a hovered variable.
43
+ */
44
+ onEditVariable?: () => void;
45
+ /**
46
+ * When set on a JavaScript editor, enables custom autocomplete (e.g. hc API completions).
47
+ */
48
+ completionSource?: CompletionSource;
49
+ /**
50
+ * When set, overrides the persisted CodeMirror theme (used by the settings preview).
51
+ */
52
+ themeOverride?: CodeEditorTheme;
53
+ /**
54
+ * When set, overrides persisted basicSetup options (used by the settings preview).
55
+ */
56
+ setupOverride?: CodeEditorSetup;
57
+ /**
58
+ * DOM id applied to the editable region for label association.
59
+ */
60
+ id?: string;
61
+ /**
62
+ * Accessible name when no visible label is associated via `htmlFor`.
63
+ */
64
+ 'aria-label'?: string;
65
+ /**
66
+ * Id of the element that labels this editor when using `aria-labelledby`.
67
+ */
68
+ 'aria-labelledby'?: string;
69
+ }
70
+ /**
71
+ * CodeMirror wrapper for editable request bodies and read-only response views.
72
+ *
73
+ * Styling relies on host CSS variables (`--mac-*`, `--font-mono`) and the `.app-no-drag`
74
+ * class defined in HarborClient `styles.css`.
75
+ */
76
+ export declare function CodeEditor({ value, onChange, language, readOnly, placeholder, minHeight, className, variables, onEditVariable, completionSource, themeOverride, setupOverride, id, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy }: Props): JSX.Element;
77
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/CodeEditor/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAiBjF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AASjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExD,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,OAAO,CAAC;AAE1E,MAAM,WAAW,KAAK;IACpB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC;;OAEG;IACH,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAE9B;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IAEvB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAE5B;;OAEG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC;;OAEG;IACH,aAAa,CAAC,EAAE,eAAe,CAAC;IAEhC;;OAEG;IACH,aAAa,CAAC,EAAE,eAAe,CAAC;IAEhC;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AA0MD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,QAAiB,EACjB,QAAgB,EAChB,WAAW,EACX,SAAmB,EACnB,SAAc,EACd,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,EAAE,EACF,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,EAClC,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CA8HrB"}