@harborclient/sdk 1.0.29 → 1.0.30

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 (195) hide show
  1. package/dist/build/index.d.ts.map +1 -1
  2. package/dist/build/index.js +1 -1
  3. package/dist/components/AsyncListState/ErrorRetry.d.ts +21 -0
  4. package/dist/components/AsyncListState/ErrorRetry.d.ts.map +1 -0
  5. package/dist/components/AsyncListState/ErrorRetry.js +10 -0
  6. package/dist/components/AsyncListState/LoadingMessage.d.ts +13 -0
  7. package/dist/components/AsyncListState/LoadingMessage.d.ts.map +1 -0
  8. package/dist/components/AsyncListState/LoadingMessage.js +8 -0
  9. package/dist/components/AsyncListState/index.d.ts +4 -50
  10. package/dist/components/AsyncListState/index.d.ts.map +1 -1
  11. package/dist/components/AsyncListState/index.js +5 -31
  12. package/dist/components/Autocomplete/AutocompleteInput.d.ts +2 -4
  13. package/dist/components/Autocomplete/AutocompleteInput.d.ts.map +1 -1
  14. package/dist/components/Autocomplete/AutocompleteInput.js +2 -1
  15. package/dist/components/Autocomplete/SuggestionList.d.ts +3 -7
  16. package/dist/components/Autocomplete/SuggestionList.d.ts.map +1 -1
  17. package/dist/components/Autocomplete/SuggestionList.js +3 -4
  18. package/dist/components/BackButton/index.d.ts +3 -16
  19. package/dist/components/BackButton/index.d.ts.map +1 -1
  20. package/dist/components/BackButton/index.js +4 -10
  21. package/dist/components/Badge/index.d.ts +3 -11
  22. package/dist/components/Badge/index.d.ts.map +1 -1
  23. package/dist/components/Badge/index.js +3 -9
  24. package/dist/components/BusyIndicator/index.js +1 -1
  25. package/dist/components/Button/index.d.ts +2 -6
  26. package/dist/components/Button/index.d.ts.map +1 -1
  27. package/dist/components/Button/index.js +9 -15
  28. package/dist/components/Card/Body.d.ts +12 -0
  29. package/dist/components/Card/Body.d.ts.map +1 -0
  30. package/dist/components/Card/Body.js +8 -0
  31. package/dist/components/Card/Image.d.ts +8 -0
  32. package/dist/components/Card/Image.d.ts.map +1 -0
  33. package/dist/components/Card/Image.js +8 -0
  34. package/dist/components/Card/index.d.ts +16 -0
  35. package/dist/components/Card/index.d.ts.map +1 -0
  36. package/dist/components/Card/index.js +13 -0
  37. package/dist/components/CodeEditor/index.d.ts +3 -7
  38. package/dist/components/CodeEditor/index.d.ts.map +1 -1
  39. package/dist/components/CodeEditor/index.js +5 -50
  40. package/dist/components/CodeEditor/renderHighlightedPlaceholder.d.ts.map +1 -1
  41. package/dist/components/CodeEditor/slashCommandHighlighter.d.ts.map +1 -1
  42. package/dist/components/CodeEditor/syntaxHighlightedPlaceholder.d.ts.map +1 -1
  43. package/dist/components/EmptyState/index.d.ts +3 -11
  44. package/dist/components/EmptyState/index.d.ts.map +1 -1
  45. package/dist/components/EmptyState/index.js +3 -9
  46. package/dist/components/FaIcon/index.d.ts +3 -10
  47. package/dist/components/FaIcon/index.d.ts.map +1 -1
  48. package/dist/components/FaIcon/index.js +5 -4
  49. package/dist/components/FieldError/index.d.ts +3 -17
  50. package/dist/components/FieldError/index.d.ts.map +1 -1
  51. package/dist/components/FieldError/index.js +3 -11
  52. package/dist/components/FooterButton/index.d.ts +3 -11
  53. package/dist/components/FooterButton/index.d.ts.map +1 -1
  54. package/dist/components/FooterButton/index.js +3 -7
  55. package/dist/components/FooterIcon/index.d.ts +3 -11
  56. package/dist/components/FooterIcon/index.d.ts.map +1 -1
  57. package/dist/components/FooterIcon/index.js +3 -7
  58. package/dist/components/FormDataEditor/index.d.ts +0 -2
  59. package/dist/components/FormDataEditor/index.d.ts.map +1 -1
  60. package/dist/components/FormDataEditor/index.js +2 -12
  61. package/dist/components/FormGroup/index.d.ts +3 -16
  62. package/dist/components/FormGroup/index.d.ts.map +1 -1
  63. package/dist/components/FormGroup/index.js +4 -20
  64. package/dist/components/KeyValueEditor/index.d.ts +0 -2
  65. package/dist/components/KeyValueEditor/index.d.ts.map +1 -1
  66. package/dist/components/KeyValueEditor/index.js +1 -8
  67. package/dist/components/MethodSelect/index.d.ts +3 -5
  68. package/dist/components/MethodSelect/index.d.ts.map +1 -1
  69. package/dist/components/MethodSelect/index.js +3 -2
  70. package/dist/components/Modal/ModalFooter.d.ts +3 -11
  71. package/dist/components/Modal/ModalFooter.d.ts.map +1 -1
  72. package/dist/components/Modal/ModalFooter.js +3 -10
  73. package/dist/components/Modal/ModalFormLayout.d.ts +0 -5
  74. package/dist/components/Modal/ModalFormLayout.d.ts.map +1 -1
  75. package/dist/components/Modal/ModalFormLayout.js +0 -5
  76. package/dist/components/Modal/ModalHeader.d.ts +3 -3
  77. package/dist/components/Modal/ModalHeader.d.ts.map +1 -1
  78. package/dist/components/Modal/ModalHeader.js +3 -2
  79. package/dist/components/Modal/index.d.ts +3 -3
  80. package/dist/components/Modal/index.d.ts.map +1 -1
  81. package/dist/components/Modal/index.js +6 -7
  82. package/dist/components/OverlayCloseButton/index.d.ts +3 -11
  83. package/dist/components/OverlayCloseButton/index.d.ts.map +1 -1
  84. package/dist/components/OverlayCloseButton/index.js +3 -9
  85. package/dist/components/Page/index.d.ts +3 -3
  86. package/dist/components/Page/index.d.ts.map +1 -1
  87. package/dist/components/Page/index.js +4 -7
  88. package/dist/components/PageHeader/index.d.ts +3 -7
  89. package/dist/components/PageHeader/index.d.ts.map +1 -1
  90. package/dist/components/PageHeader/index.js +3 -5
  91. package/dist/components/PageSidebar/index.d.ts +3 -5
  92. package/dist/components/PageSidebar/index.d.ts.map +1 -1
  93. package/dist/components/PageSidebar/index.js +4 -5
  94. package/dist/components/PanelCloseButton/index.d.ts +5 -14
  95. package/dist/components/PanelCloseButton/index.d.ts.map +1 -1
  96. package/dist/components/PanelCloseButton/index.js +4 -12
  97. package/dist/components/Resizable/Resizable.d.ts +3 -3
  98. package/dist/components/Resizable/Resizable.d.ts.map +1 -1
  99. package/dist/components/Resizable/Resizable.js +6 -5
  100. package/dist/components/Resizable/ResizeHandle.d.ts +3 -7
  101. package/dist/components/Resizable/ResizeHandle.d.ts.map +1 -1
  102. package/dist/components/Resizable/ResizeHandle.js +4 -10
  103. package/dist/components/ResourceList/ResourceListEmptyItem.d.ts +13 -0
  104. package/dist/components/ResourceList/ResourceListEmptyItem.d.ts.map +1 -0
  105. package/dist/components/ResourceList/ResourceListEmptyItem.js +8 -0
  106. package/dist/components/ResourceList/ResourceListPrimary.d.ts +13 -0
  107. package/dist/components/ResourceList/ResourceListPrimary.d.ts.map +1 -0
  108. package/dist/components/ResourceList/ResourceListPrimary.js +8 -0
  109. package/dist/components/ResourceList/ResourceListRow.d.ts +29 -0
  110. package/dist/components/ResourceList/ResourceListRow.d.ts.map +1 -0
  111. package/dist/components/ResourceList/ResourceListRow.js +8 -0
  112. package/dist/components/ResourceList/index.d.ts +6 -74
  113. package/dist/components/ResourceList/index.d.ts.map +1 -1
  114. package/dist/components/ResourceList/index.js +7 -42
  115. package/dist/components/RowActionsMenu/index.d.ts +3 -5
  116. package/dist/components/RowActionsMenu/index.d.ts.map +1 -1
  117. package/dist/components/RowActionsMenu/index.js +6 -16
  118. package/dist/components/SegmentedTabs/SegmentedTabPanel.d.ts +3 -7
  119. package/dist/components/SegmentedTabs/SegmentedTabPanel.d.ts.map +1 -1
  120. package/dist/components/SegmentedTabs/SegmentedTabPanel.js +3 -4
  121. package/dist/components/SegmentedTabs/SegmentedTabsGroup.d.ts +0 -2
  122. package/dist/components/SegmentedTabs/SegmentedTabsGroup.d.ts.map +1 -1
  123. package/dist/components/SegmentedTabs/SegmentedTabsVisibilityMenu.d.ts +0 -2
  124. package/dist/components/SegmentedTabs/SegmentedTabsVisibilityMenu.d.ts.map +1 -1
  125. package/dist/components/SegmentedTabs/SegmentedTabsVisibilityMenu.js +5 -13
  126. package/dist/components/SegmentedTabs/index.d.ts +3 -7
  127. package/dist/components/SegmentedTabs/index.d.ts.map +1 -1
  128. package/dist/components/SegmentedTabs/index.js +7 -28
  129. package/dist/components/SidebarLayout/index.d.ts +3 -7
  130. package/dist/components/SidebarLayout/index.d.ts.map +1 -1
  131. package/dist/components/SidebarLayout/index.js +3 -5
  132. package/dist/components/Spinner/index.d.ts +3 -11
  133. package/dist/components/Spinner/index.d.ts.map +1 -1
  134. package/dist/components/Spinner/index.js +3 -9
  135. package/dist/components/StatusMessage/index.d.ts +3 -15
  136. package/dist/components/StatusMessage/index.d.ts.map +1 -1
  137. package/dist/components/StatusMessage/index.js +3 -8
  138. package/dist/components/TabCloseButton/index.d.ts +4 -14
  139. package/dist/components/TabCloseButton/index.d.ts.map +1 -1
  140. package/dist/components/TabCloseButton/index.js +3 -7
  141. package/dist/components/Table/TableBody.d.ts +13 -0
  142. package/dist/components/Table/TableBody.d.ts.map +1 -0
  143. package/dist/components/Table/TableBody.js +11 -0
  144. package/dist/components/Table/TableCell.d.ts +8 -0
  145. package/dist/components/Table/TableCell.d.ts.map +1 -0
  146. package/dist/components/Table/TableCell.js +11 -0
  147. package/dist/components/Table/TableContext.d.ts +22 -0
  148. package/dist/components/Table/TableContext.d.ts.map +1 -0
  149. package/dist/components/Table/TableContext.js +18 -0
  150. package/dist/components/Table/TableHead.d.ts +8 -0
  151. package/dist/components/Table/TableHead.d.ts.map +1 -0
  152. package/dist/components/Table/TableHead.js +11 -0
  153. package/dist/components/Table/TableHeader.d.ts +13 -0
  154. package/dist/components/Table/TableHeader.d.ts.map +1 -0
  155. package/dist/components/Table/TableHeader.js +8 -0
  156. package/dist/components/Table/index.d.ts +10 -86
  157. package/dist/components/Table/index.d.ts.map +1 -1
  158. package/dist/components/Table/index.js +17 -94
  159. package/dist/components/Toolbar/index.d.ts +3 -11
  160. package/dist/components/Toolbar/index.d.ts.map +1 -1
  161. package/dist/components/Toolbar/index.js +3 -11
  162. package/dist/components/VariableInput/index.d.ts +3 -5
  163. package/dist/components/VariableInput/index.d.ts.map +1 -1
  164. package/dist/components/VariableInput/index.js +6 -17
  165. package/dist/components/VariableTable/index.d.ts +3 -3
  166. package/dist/components/VariableTable/index.d.ts.map +1 -1
  167. package/dist/components/VariableTable/index.js +5 -9
  168. package/dist/components/forms/Checkbox.d.ts +2 -2
  169. package/dist/components/forms/Checkbox.d.ts.map +1 -1
  170. package/dist/components/forms/Checkbox.js +2 -4
  171. package/dist/components/forms/Input.d.ts +2 -2
  172. package/dist/components/forms/Input.d.ts.map +1 -1
  173. package/dist/components/forms/Radio.d.ts +2 -2
  174. package/dist/components/forms/Radio.d.ts.map +1 -1
  175. package/dist/components/forms/Radio.js +2 -4
  176. package/dist/components/forms/Select.d.ts +2 -2
  177. package/dist/components/forms/Select.d.ts.map +1 -1
  178. package/dist/components/forms/Textarea.d.ts +2 -2
  179. package/dist/components/forms/Textarea.d.ts.map +1 -1
  180. package/dist/components/forms/classes.d.ts +0 -3
  181. package/dist/components/forms/classes.d.ts.map +1 -1
  182. package/dist/components/forms/classes.js +3 -9
  183. package/dist/components/index.d.ts +1 -0
  184. package/dist/components/index.d.ts.map +1 -1
  185. package/dist/components/index.js +1 -0
  186. package/dist/components/utils.d.ts +8 -0
  187. package/dist/components/utils.d.ts.map +1 -1
  188. package/dist/components/utils.js +11 -0
  189. package/dist/runtime/createBridgedPluginContext.js +1 -1
  190. package/dist/runtime/index.js +1 -1
  191. package/dist/runtime/react.d.ts +2 -2
  192. package/dist/runtime/view-host/index.js +1 -1
  193. package/dist/runtime/viewHost.js +1 -1
  194. package/dist/signing/inventory.js +1 -1
  195. package/package.json +7 -3
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/build/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEpD;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gEAAgE;IAChE,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IACpC;;;OAGG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACjD;AAwCD;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqDrF;AAYD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAiB7E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/build/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAIpD;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gEAAgE;IAChE,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IACpC;;;OAGG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACjD;AAwCD;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqDrF;AAYD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAiB7E"}
@@ -1,6 +1,6 @@
1
+ import * as esbuild from 'esbuild';
1
2
  import { cpSync, mkdirSync } from 'node:fs';
2
3
  import { dirname } from 'node:path';
3
- import * as esbuild from 'esbuild';
4
4
  const JSX_RUNTIME_HOST = '@harborclient/sdk/jsx-runtime-host';
5
5
  const JSX_RUNTIME = '@harborclient/sdk/jsx-runtime';
6
6
  const JSX_DEV_RUNTIME = '@harborclient/sdk/jsx-dev-runtime';
@@ -0,0 +1,21 @@
1
+ import type { ComponentPropsWithoutRef, JSX, ReactNode } from 'react';
2
+ interface Props extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {
3
+ /**
4
+ * Error message shown beside the retry control.
5
+ */
6
+ error: ReactNode;
7
+ /**
8
+ * Called when the user activates the retry button.
9
+ */
10
+ onRetry: () => void;
11
+ /**
12
+ * Accessible label for the retry button.
13
+ */
14
+ retryLabel?: string;
15
+ }
16
+ /**
17
+ * Inline error message paired with a secondary retry button.
18
+ */
19
+ export declare function ErrorRetry({ error, onRetry, retryLabel, className, ...props }: Props): JSX.Element;
20
+ export {};
21
+ //# sourceMappingURL=ErrorRetry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorRetry.d.ts","sourceRoot":"","sources":["../../../src/components/AsyncListState/ErrorRetry.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKtE,UAAU,KAAM,SAAQ,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IACvE;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IAEjB;;OAEG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,OAAO,EACP,UAAoB,EACpB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CAWrB"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@harborclient/sdk/jsx-runtime";
2
+ import { Button } from '../Button/index.js';
3
+ import { FieldError } from '../FieldError/index.js';
4
+ import { cn } from '../utils.js';
5
+ /**
6
+ * Inline error message paired with a secondary retry button.
7
+ */
8
+ export function ErrorRetry({ error, onRetry, retryLabel = 'Retry', className, ...props }) {
9
+ return (_jsxs("div", { ...props, className: cn('hc-error-retry flex flex-wrap items-center gap-2', className), children: [_jsx(FieldError, { spacing: "field", className: "hc-error-retry-message mt-0 mb-0", children: error }), _jsx(Button, { type: "button", variant: "secondary", className: "hc-error-retry-button", onClick: onRetry, children: retryLabel })] }));
10
+ }
@@ -0,0 +1,13 @@
1
+ import type { ComponentPropsWithoutRef, JSX, ReactNode } from 'react';
2
+ interface Props extends ComponentPropsWithoutRef<'p'> {
3
+ /**
4
+ * Loading text announced to assistive technologies.
5
+ */
6
+ children?: ReactNode;
7
+ }
8
+ /**
9
+ * Muted loading label used while async list data is fetched.
10
+ */
11
+ export declare function LoadingMessage({ children, className, ...props }: Props): JSX.Element;
12
+ export {};
13
+ //# sourceMappingURL=LoadingMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadingMessage.d.ts","sourceRoot":"","sources":["../../../src/components/AsyncListState/LoadingMessage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGtE,UAAU,KAAM,SAAQ,wBAAwB,CAAC,GAAG,CAAC;IACnD;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,QAAqB,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CAUjG"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "@harborclient/sdk/jsx-runtime";
2
+ import { cn } from '../utils.js';
3
+ /**
4
+ * Muted loading label used while async list data is fetched.
5
+ */
6
+ export function LoadingMessage({ children = 'Loading…', className, ...props }) {
7
+ return (_jsx("p", { ...props, role: "status", className: cn('hc-loading-message text-[14px] text-muted', className), children: children }));
8
+ }
@@ -1,44 +1,7 @@
1
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 {
2
+ export { ErrorRetry } from './ErrorRetry.js';
3
+ export { LoadingMessage } from './LoadingMessage.js';
4
+ interface Props {
42
5
  /**
43
6
  * When true, renders the loading placeholder instead of children.
44
7
  */
@@ -71,15 +34,6 @@ interface AsyncListStateProps {
71
34
  /**
72
35
  * Switches between loading, error-with-retry, empty, and ready list content for
73
36
  * 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
37
  */
83
- export declare function AsyncListState({ loading, error, onRetry, emptyMessage, isEmpty, children, loadingMessage }: AsyncListStateProps): JSX.Element;
84
- export {};
38
+ export declare function AsyncListState({ loading, error, onRetry, emptyMessage, isEmpty, children, loadingMessage }: Props): JSX.Element;
85
39
  //# sourceMappingURL=index.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/AsyncListState/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAK5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,UAAU,KAAK;IACb;;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;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,KAAK,EACL,OAAO,EACP,YAAY,EACZ,OAAe,EACf,QAAQ,EACR,cAAc,EACf,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CAiBrB"}
@@ -1,38 +1,12 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "@harborclient/sdk/jsx-runtime";
2
- import { Button } from '../Button/index.js';
1
+ import { jsx as _jsx, Fragment as _Fragment } from "@harborclient/sdk/jsx-runtime";
3
2
  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 = 'hc-loading-message 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: "hc-error-retry flex flex-wrap items-center gap-2", children: [_jsx(FieldError, { spacing: "field", className: "hc-error-retry-message mb-0 mt-0", children: error }), _jsx(Button, { type: "button", variant: "secondary", className: "hc-error-retry-button", onClick: onRetry, children: retryLabel })] }));
24
- }
3
+ import { ErrorRetry } from './ErrorRetry.js';
4
+ import { LoadingMessage } from './LoadingMessage.js';
5
+ export { ErrorRetry } from './ErrorRetry.js';
6
+ export { LoadingMessage } from './LoadingMessage.js';
25
7
  /**
26
8
  * Switches between loading, error-with-retry, empty, and ready list content for
27
9
  * 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
10
  */
37
11
  export function AsyncListState({ loading, error, onRetry, emptyMessage, isEmpty = false, children, loadingMessage }) {
38
12
  if (loading) {
@@ -1,14 +1,12 @@
1
- import type { InputHTMLAttributes, JSX } from 'react';
1
+ import type { ComponentPropsWithoutRef, JSX } from 'react';
2
2
  import type { AutocompleteSource } from './types.js';
3
- export interface Props extends Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange'> {
3
+ export interface Props extends Omit<ComponentPropsWithoutRef<'input'>, 'value' | 'onChange' | 'ref'> {
4
4
  /**
5
5
  * Current input value.
6
6
  */
7
7
  value: string;
8
8
  /**
9
9
  * Called when the value changes.
10
- *
11
- * @param value - Updated input value.
12
10
  */
13
11
  onChange: (value: string) => void;
14
12
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"AutocompleteInput.d.ts","sourceRoot":"","sources":["../../../src/components/Autocomplete/AutocompleteInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAGtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGrD,MAAM,WAAW,KAAM,SAAQ,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAC9F;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;OAIG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAElC;;OAEG;IACH,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,QAAQ,EACR,MAAM,EACN,SAAS,EACT,OAAO,EACP,MAAM,EACN,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CAkErB"}
1
+ {"version":3,"file":"AutocompleteInput.d.ts","sourceRoot":"","sources":["../../../src/components/Autocomplete/AutocompleteInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAI3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGrD,MAAM,WAAW,KAAM,SAAQ,IAAI,CACjC,wBAAwB,CAAC,OAAO,CAAC,EACjC,OAAO,GAAG,UAAU,GAAG,KAAK,CAC7B;IACC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAElC;;OAEG;IACH,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,QAAQ,EACR,MAAM,EACN,SAAS,EACT,OAAO,EACP,MAAM,EACN,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CAkErB"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "@harborclient/sdk/jsx-runtime";
2
2
  import { Input } from '../forms/index.js';
3
+ import { cn } from '../utils.js';
3
4
  import { SuggestionList } from './SuggestionList.js';
4
5
  import { useAutocomplete } from './useAutocomplete.js';
5
6
  /**
@@ -12,7 +13,7 @@ export function AutocompleteInput({ value, onChange, source, className, onFocus,
12
13
  value: safeValue,
13
14
  onSelect: onChange
14
15
  });
15
- return (_jsxs(_Fragment, { children: [_jsx(Input, { ...props, ref: anchorRef, role: source ? 'combobox' : undefined, "aria-autocomplete": source ? 'list' : undefined, "aria-expanded": source ? open : undefined, "aria-controls": source && open ? listboxId : undefined, "aria-activedescendant": source && open && activeIndex >= 0 ? `${listboxId}-option-${activeIndex}` : undefined, className: className ? `hc-autocomplete-input ${className}` : 'hc-autocomplete-input', value: safeValue, onChange: (event) => onChange(event.target.value), onFocus: (event) => {
16
+ return (_jsxs(_Fragment, { children: [_jsx(Input, { ...props, ref: anchorRef, role: source ? 'combobox' : undefined, "aria-autocomplete": source ? 'list' : undefined, "aria-expanded": source ? open : undefined, "aria-controls": source && open ? listboxId : undefined, "aria-activedescendant": source && open && activeIndex >= 0 ? `${listboxId}-option-${activeIndex}` : undefined, className: cn('hc-autocomplete-input', className), value: safeValue, onChange: (event) => onChange(event.target.value), onFocus: (event) => {
16
17
  openAutocomplete();
17
18
  onFocus?.(event);
18
19
  }, onBlur: (event) => {
@@ -1,5 +1,5 @@
1
- import type { JSX, RefObject } from 'react';
2
- interface SuggestionListProps {
1
+ import type { ComponentPropsWithoutRef, JSX, RefObject } from 'react';
2
+ interface SuggestionListProps extends Omit<ComponentPropsWithoutRef<'ul'>, 'children' | 'id' | 'role' | 'onSelect'> {
3
3
  /**
4
4
  * Whether the suggestion popup should render.
5
5
  */
@@ -22,14 +22,10 @@ interface SuggestionListProps {
22
22
  listboxId: string;
23
23
  /**
24
24
  * Called when the user selects a suggestion.
25
- *
26
- * @param item - Selected suggestion value.
27
25
  */
28
26
  onSelect: (item: string) => void;
29
27
  /**
30
28
  * Called when the active highlight changes via mouse hover.
31
- *
32
- * @param index - Highlighted suggestion index.
33
29
  */
34
30
  onActiveIndexChange: (index: number) => void;
35
31
  /**
@@ -40,6 +36,6 @@ interface SuggestionListProps {
40
36
  /**
41
37
  * Portaled suggestion list for combobox autocomplete inputs.
42
38
  */
43
- export declare function SuggestionList({ open, items, activeIndex, anchorRef, listboxId, onSelect, onActiveIndexChange, onClose }: SuggestionListProps): JSX.Element | null;
39
+ export declare function SuggestionList({ open, items, activeIndex, anchorRef, listboxId, onSelect, onActiveIndexChange, onClose, className, ...props }: SuggestionListProps): JSX.Element | null;
44
40
  export {};
45
41
  //# sourceMappingURL=SuggestionList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SuggestionList.d.ts","sourceRoot":"","sources":["../../../src/components/Autocomplete/SuggestionList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAG5C,UAAU,mBAAmB;IAC3B;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC;IAEd;;OAEG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,SAAS,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAEzC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAEjC;;;;OAIG;IACH,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAE7C;;OAEG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AA0BD;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,KAAK,EACL,WAAW,EACX,SAAS,EACT,SAAS,EACT,QAAQ,EACR,mBAAmB,EACnB,OAAO,EACR,EAAE,mBAAmB,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAoF1C"}
1
+ {"version":3,"file":"SuggestionList.d.ts","sourceRoot":"","sources":["../../../src/components/Autocomplete/SuggestionList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAItE,UAAU,mBAAoB,SAAQ,IAAI,CACxC,wBAAwB,CAAC,IAAI,CAAC,EAC9B,UAAU,GAAG,IAAI,GAAG,MAAM,GAAG,UAAU,CACxC;IACC;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC;IAEd;;OAEG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,SAAS,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAEzC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAEjC;;OAEG;IACH,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAE7C;;OAEG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAwBD;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,KAAK,EACL,WAAW,EACX,SAAS,EACT,SAAS,EACT,QAAQ,EACR,mBAAmB,EACnB,OAAO,EACP,SAAS,EACT,GAAG,KAAK,EACT,EAAE,mBAAmB,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAwF1C"}
@@ -1,10 +1,9 @@
1
1
  import { jsx as _jsx } from "@harborclient/sdk/jsx-runtime";
2
2
  import { useEffect, useState } from '@harborclient/sdk/react';
3
3
  import { portalToBody } from '../portalToBody.js';
4
+ import { cn } from '../utils.js';
4
5
  /**
5
6
  * Computes fixed popup coordinates from the anchor element.
6
- *
7
- * @param anchor - Anchor element for positioning.
8
7
  */
9
8
  function getPopupPosition(anchor) {
10
9
  if (!anchor) {
@@ -20,7 +19,7 @@ function getPopupPosition(anchor) {
20
19
  /**
21
20
  * Portaled suggestion list for combobox autocomplete inputs.
22
21
  */
23
- export function SuggestionList({ open, items, activeIndex, anchorRef, listboxId, onSelect, onActiveIndexChange, onClose }) {
22
+ export function SuggestionList({ open, items, activeIndex, anchorRef, listboxId, onSelect, onActiveIndexChange, onClose, className, ...props }) {
24
23
  const [position, setPosition] = useState(null);
25
24
  useEffect(() => {
26
25
  if (!open) {
@@ -66,7 +65,7 @@ export function SuggestionList({ open, items, activeIndex, anchorRef, listboxId,
66
65
  if (!open || items.length === 0 || !position) {
67
66
  return null;
68
67
  }
69
- return portalToBody(_jsx("ul", { id: listboxId, role: "listbox", className: "hc-suggestion-list fixed z-50 max-h-48 overflow-y-auto rounded-lg border border-separator bg-surface py-1 text-[14px] text-text shadow-md", style: { top: position.top, left: position.left, width: position.width }, children: items.map((item, index) => (_jsx("li", { id: `${listboxId}-option-${index}`, role: "option", "aria-selected": index === activeIndex, className: index === activeIndex
68
+ return portalToBody(_jsx("ul", { ...props, id: listboxId, role: "listbox", className: cn('hc-suggestion-list fixed z-50 max-h-48 overflow-y-auto rounded-lg border border-separator bg-surface py-1 text-[14px] text-text shadow-md', className), style: { top: position.top, left: position.left, width: position.width }, children: items.map((item, index) => (_jsx("li", { id: `${listboxId}-option-${index}`, role: "option", "aria-selected": index === activeIndex, className: index === activeIndex
70
69
  ? 'hc-suggestion-list-option cursor-pointer bg-selection px-2 py-1'
71
70
  : 'hc-suggestion-list-option cursor-pointer px-2 py-1 hover:bg-selection', onMouseEnter: () => onActiveIndexChange(index), onMouseDown: (event) => event.preventDefault(), onClick: () => onSelect(item), children: item }, item))) }));
72
71
  }
@@ -1,9 +1,5 @@
1
- import type { JSX } from 'react';
2
- interface Props {
3
- /**
4
- * Called when the user activates the back control.
5
- */
6
- onClick: () => void;
1
+ import type { ComponentPropsWithoutRef, JSX } from 'react';
2
+ interface Props extends Omit<ComponentPropsWithoutRef<'button'>, 'children' | 'aria-label'> {
7
3
  /**
8
4
  * Visible button text and default accessible name when `ariaLabel` is not provided.
9
5
  */
@@ -12,21 +8,12 @@ interface Props {
12
8
  * Accessible name when it should differ from the visible `label`.
13
9
  */
14
10
  ariaLabel?: string;
15
- /**
16
- * Additional Tailwind classes merged onto the button element.
17
- */
18
- className?: string;
19
11
  }
20
12
  /**
21
13
  * Secondary back control for nested panel and overlay headers.
22
14
  *
23
15
  * Matches {@link PanelCloseButton} sizing with a left-angle icon and visible label.
24
- *
25
- * @param onClick - Back navigation handler.
26
- * @param label - Visible button text; defaults to "Back".
27
- * @param ariaLabel - Accessible name override when it should differ from `label`.
28
- * @param className - Extra classes appended after the layout preset.
29
16
  */
30
- export declare function BackButton({ onClick, label, ariaLabel, className }: Props): JSX.Element;
17
+ export declare function BackButton({ onClick, label, ariaLabel, className, ...props }: Props): JSX.Element;
31
18
  export {};
32
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +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,CAgBhG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/BackButton/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAK3D,UAAU,KAAM,SAAQ,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACzF;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,KAAc,EACd,SAAS,EACT,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CAiBrB"}
@@ -1,19 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "@harborclient/sdk/jsx-runtime";
2
+ import { faAngleLeft } from '@fortawesome/free-solid-svg-icons';
2
3
  import { Button } from '../Button/index.js';
3
4
  import { FaIcon } from '../FaIcon/index.js';
4
- import { faAngleLeft } from '@fortawesome/free-solid-svg-icons';
5
+ import { cn } from '../utils.js';
5
6
  /**
6
7
  * Secondary back control for nested panel and overlay headers.
7
8
  *
8
9
  * Matches {@link PanelCloseButton} sizing with a left-angle icon and visible label.
9
- *
10
- * @param onClick - Back navigation handler.
11
- * @param label - Visible button text; defaults to "Back".
12
- * @param ariaLabel - Accessible name override when it should differ from `label`.
13
- * @param className - Extra classes appended after the layout preset.
14
10
  */
15
- export function BackButton({ onClick, label = 'Back', ariaLabel, className }) {
16
- const base = 'inline-flex shrink-0 items-center justify-center gap-1.5 py-1 text-[14px] h-6';
17
- const classes = className ? `hc-back-button ${base} ${className}` : `hc-back-button ${base}`;
18
- return (_jsxs(Button, { type: "button", variant: "toolbar", className: classes, "aria-label": ariaLabel, onClick: onClick, children: [_jsx(FaIcon, { icon: faAngleLeft, className: "hc-back-button-icon h-4 w-4", "aria-hidden": true }), _jsx("span", { children: label })] }));
11
+ export function BackButton({ onClick, label = 'Back', ariaLabel, className, ...props }) {
12
+ return (_jsxs(Button, { ...props, type: "button", variant: "toolbar", className: cn('hc-back-button inline-flex h-6 shrink-0 items-center justify-center gap-1.5 py-1 text-[14px]', className), "aria-label": ariaLabel, onClick: onClick, children: [_jsx(FaIcon, { icon: faAngleLeft, className: "hc-back-button-icon h-4 w-4", "aria-hidden": true }), _jsx("span", { children: label })] }));
19
13
  }
@@ -1,9 +1,9 @@
1
- import type { JSX, ReactNode } from 'react';
1
+ import type { ComponentPropsWithoutRef, JSX, ReactNode } from 'react';
2
2
  /**
3
3
  * Visual tone for compact status badges.
4
4
  */
5
5
  export type BadgeVariant = 'success' | 'danger' | 'muted' | 'accent' | 'warning';
6
- interface Props {
6
+ interface Props extends Omit<ComponentPropsWithoutRef<'span'>, 'children'> {
7
7
  /**
8
8
  * Badge label content.
9
9
  */
@@ -12,18 +12,10 @@ interface Props {
12
12
  * Color and background preset.
13
13
  */
14
14
  variant?: BadgeVariant;
15
- /**
16
- * Additional Tailwind classes merged onto the badge element.
17
- */
18
- className?: string;
19
15
  }
20
16
  /**
21
17
  * 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`, `accent`, or `warning`).
25
- * @param className - Extra classes appended after the variant preset.
26
18
  */
27
- export declare function Badge({ children, variant, className }: Props): JSX.Element;
19
+ export declare function Badge({ children, variant, className, ...props }: Props): JSX.Element;
28
20
  export {};
29
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +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,GAAG,SAAS,CAAC;AAEjF,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;AAwBD;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,EAAE,QAAQ,EAAE,OAAiB,EAAE,SAAS,EAAE,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CAOpF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Badge/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGtE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjF,UAAU,KAAM,SAAQ,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IACxE;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAuBD;;GAEG;AACH,wBAAgB,KAAK,CAAC,EAAE,QAAQ,EAAE,OAAiB,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CAa9F"}
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx } from "@harborclient/sdk/jsx-runtime";
2
+ import { cn } from '../utils.js';
2
3
  /**
3
4
  * Returns background and text classes for the chosen badge variant.
4
5
  *
5
- * @param variant - Badge color preset.
6
6
  * @returns Tailwind classes for the badge span.
7
7
  */
8
8
  function variantClasses(variant) {
@@ -22,13 +22,7 @@ function variantClasses(variant) {
22
22
  }
23
23
  /**
24
24
  * Compact pill badge for status labels in lists and settings panels.
25
- *
26
- * @param children - Badge text.
27
- * @param variant - Color preset (`success`, `danger`, `muted`, `accent`, or `warning`).
28
- * @param className - Extra classes appended after the variant preset.
29
25
  */
30
- export function Badge({ children, variant = 'muted', className }) {
31
- const base = `hc-badge inline-flex shrink-0 items-center rounded px-1.5 py-0.5 text-[14px] ${variantClasses(variant)}`;
32
- const classes = className ? `${base} ${className}` : base;
33
- return _jsx("span", { className: classes, children: children });
26
+ export function Badge({ children, variant = 'muted', className, ...props }) {
27
+ return (_jsx("span", { ...props, className: cn('hc-badge inline-flex shrink-0 items-center rounded px-1.5 py-0.5 text-[14px]', variantClasses(variant), className), children: children }));
34
28
  }
@@ -82,5 +82,5 @@ export function BusyIndicator({ isBusy }) {
82
82
  if (!visible) {
83
83
  return null;
84
84
  }
85
- return (_jsxs(_Fragment, { children: [_jsx("div", { className: "hc-busy-indicator 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: "hc-busy-indicator-progress busy-progress-bar h-full w-1/3 bg-accent" }) }), _jsx("div", { className: "hc-busy-indicator-badge 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" }) })] }));
85
+ return (_jsxs(_Fragment, { children: [_jsx("div", { className: "hc-busy-indicator 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: "hc-busy-indicator-progress busy-progress-bar h-full w-1/3 bg-accent" }) }), _jsx("div", { className: "hc-busy-indicator-badge pointer-events-none fixed top-3 right-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" }) })] }));
86
86
  }
@@ -1,4 +1,4 @@
1
- import type { ButtonHTMLAttributes, JSX, RefObject } from 'react';
1
+ import type { ComponentPropsWithoutRef, JSX, RefObject } from 'react';
2
2
  /**
3
3
  * Visual style for a macOS-style button.
4
4
  */
@@ -11,7 +11,7 @@ type AccessibleName = {
11
11
  'aria-labelledby': string;
12
12
  'aria-label'?: undefined;
13
13
  };
14
- type BaseProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'aria-label' | 'aria-labelledby'> & {
14
+ type BaseProps = Omit<ComponentPropsWithoutRef<'button'>, 'aria-label' | 'aria-labelledby' | 'ref'> & {
15
15
  /**
16
16
  * Additional Tailwind classes merged after the variant preset.
17
17
  */
@@ -34,10 +34,6 @@ export type ButtonProps = (BaseProps & {
34
34
  * Pass `type="submit"` explicitly when submit behavior is intended.
35
35
  *
36
36
  * Icon variants (`icon`, `iconDanger`) require `aria-label` or `aria-labelledby`.
37
- *
38
- * @param variant - Visual preset; defaults to `primary`.
39
- * @param className - Extra classes appended after the variant classes.
40
- * @param type - Native button type; defaults to `button`.
41
37
  */
42
38
  export declare function Button({ variant, className, type, innerRef, ...props }: ButtonProps): JSX.Element;
43
39
  export {};
@@ -1 +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,SAAS,EAAE,MAAM,OAAO,CAAC;AAElE;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,WAAW,GACX,eAAe,GACf,iBAAiB,GACjB,SAAS,GACT,MAAM,GACN,YAAY,CAAC;AAEjB,KAAK,iBAAiB,GAAG,MAAM,GAAG,YAAY,CAAC;AAE/C,KAAK,cAAc,GACf;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,SAAS,CAAA;CAAE,GACvD;IAAE,iBAAiB,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC;AAE5D,KAAK,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,YAAY,GAAG,iBAAiB,CAAC,GAAG;IACjG;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,WAAW,GACnB,CAAC,SAAS,GAAG;IAAE,OAAO,EAAE,iBAAiB,CAAA;CAAE,GAAG,cAAc,CAAC,GAC7D,CAAC,SAAS,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAA;CAAE,CAAC,CAAC;AAc1E;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,CAAC,EACrB,OAAmB,EACnB,SAAS,EACT,IAAe,EACf,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,WAAW,GAAG,GAAG,CAAC,OAAO,CAK3B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Button/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGtE;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,WAAW,GACX,eAAe,GACf,iBAAiB,GACjB,SAAS,GACT,MAAM,GACN,YAAY,CAAC;AAEjB,KAAK,iBAAiB,GAAG,MAAM,GAAG,YAAY,CAAC;AAE/C,KAAK,cAAc,GACf;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,SAAS,CAAA;CAAE,GACvD;IAAE,iBAAiB,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC;AAE5D,KAAK,SAAS,GAAG,IAAI,CACnB,wBAAwB,CAAC,QAAQ,CAAC,EAClC,YAAY,GAAG,iBAAiB,GAAG,KAAK,CACzC,GAAG;IACF;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,WAAW,GACnB,CAAC,SAAS,GAAG;IAAE,OAAO,EAAE,iBAAiB,CAAA;CAAE,GAAG,cAAc,CAAC,GAC7D,CAAC,SAAS,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAA;CAAE,CAAC,CAAC;AAmC1E;;;;;;;;GAQG;AACH,wBAAgB,MAAM,CAAC,EACrB,OAAmB,EACnB,SAAS,EACT,IAAe,EACf,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,WAAW,GAAG,GAAG,CAAC,OAAO,CAS3B"}
@@ -1,13 +1,14 @@
1
1
  import { jsx as _jsx } from "@harborclient/sdk/jsx-runtime";
2
+ import { cn } from '../utils.js';
2
3
  const BUTTON_BASE = 'inline-flex cursor-pointer items-center rounded-full app-no-drag';
3
4
  const VARIANT_CLASSES = {
4
- primary: `${BUTTON_BASE} min-h-[32px] justify-center 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`,
5
- secondary: `${BUTTON_BASE} min-h-[32px] justify-center 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`,
6
- primaryDanger: `${BUTTON_BASE} min-h-[32px] justify-center 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`,
7
- secondaryDanger: `${BUTTON_BASE} min-h-[32px] justify-center 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`,
8
- toolbar: `${BUTTON_BASE} min-h-[32px] border-none bg-transparent px-2 py-1 text-[15px] hover:bg-selection`,
9
- icon: `${BUTTON_BASE} size-[30px] shrink-0 justify-center border-none bg-transparent text-muted hover:bg-selection hover:text-text`,
10
- iconDanger: `${BUTTON_BASE} size-[30px] shrink-0 justify-center border-none bg-transparent text-muted hover:bg-danger/15 hover:text-danger`
5
+ primary: cn(BUTTON_BASE, 'min-h-[32px] justify-center 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'),
6
+ secondary: cn(BUTTON_BASE, 'min-h-[32px] justify-center 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'),
7
+ primaryDanger: cn(BUTTON_BASE, 'min-h-[32px] justify-center 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'),
8
+ secondaryDanger: cn(BUTTON_BASE, 'min-h-[32px] justify-center 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'),
9
+ toolbar: cn(BUTTON_BASE, 'min-h-[32px] border-none bg-transparent px-2 py-1 text-[15px] hover:bg-selection'),
10
+ icon: cn(BUTTON_BASE, 'size-[30px] shrink-0 justify-center border-none bg-transparent text-muted hover:bg-selection hover:text-text'),
11
+ iconDanger: cn(BUTTON_BASE, 'size-[30px] shrink-0 justify-center border-none bg-transparent text-muted hover:bg-danger/15 hover:text-danger')
11
12
  };
12
13
  /**
13
14
  * macOS-style button with shared variant presets for primary actions, secondary
@@ -17,14 +18,7 @@ const VARIANT_CLASSES = {
17
18
  * Pass `type="submit"` explicitly when submit behavior is intended.
18
19
  *
19
20
  * Icon variants (`icon`, `iconDanger`) require `aria-label` or `aria-labelledby`.
20
- *
21
- * @param variant - Visual preset; defaults to `primary`.
22
- * @param className - Extra classes appended after the variant classes.
23
- * @param type - Native button type; defaults to `button`.
24
21
  */
25
22
  export function Button({ variant = 'primary', className, type = 'button', innerRef, ...props }) {
26
- const classes = className
27
- ? `hc-button ${VARIANT_CLASSES[variant]} ${className}`
28
- : `hc-button ${VARIANT_CLASSES[variant]}`;
29
- return _jsx("button", { ref: innerRef, type: type, className: classes, ...props });
23
+ return (_jsx("button", { ref: innerRef, type: type, className: cn('hc-button', VARIANT_CLASSES[variant], className), ...props }));
30
24
  }
@@ -0,0 +1,12 @@
1
+ import type { ComponentPropsWithoutRef, JSX, ReactNode } from 'react';
2
+ interface Props extends ComponentPropsWithoutRef<'div'> {
3
+ /**
4
+ */
5
+ children: ReactNode;
6
+ }
7
+ /**
8
+ * Renders the body of a card.
9
+ */
10
+ export declare function Body({ children, className, ...props }: Props): JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=Body.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Body.d.ts","sourceRoot":"","sources":["../../../src/components/Card/Body.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGtE,UAAU,KAAM,SAAQ,wBAAwB,CAAC,KAAK,CAAC;IACrD;OACG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CAM1E"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "@harborclient/sdk/jsx-runtime";
2
+ import { cn } from '../utils.js';
3
+ /**
4
+ * Renders the body of a card.
5
+ */
6
+ export function Body({ children, className, ...props }) {
7
+ return (_jsx("div", { ...props, className: cn('hc-card-body p-4', className), children: children }));
8
+ }
@@ -0,0 +1,8 @@
1
+ import type { ComponentPropsWithoutRef, JSX } from 'react';
2
+ type Props = ComponentPropsWithoutRef<'img'>;
3
+ /**
4
+ * Renders a card image.
5
+ */
6
+ export declare function Image({ src, alt, className, ...props }: Props): JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=Image.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../../../src/components/Card/Image.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAG3D,KAAK,KAAK,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;AAE7C;;GAEG;AACH,wBAAgB,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CAS3E"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "@harborclient/sdk/jsx-runtime";
2
+ import { cn } from '../utils.js';
3
+ /**
4
+ * Renders a card image.
5
+ */
6
+ export function Image({ src, alt, className, ...props }) {
7
+ return (_jsx("img", { ...props, src: src, alt: alt, className: cn('hc-card-image h-full w-full max-w-full object-cover', className) }));
8
+ }
@@ -0,0 +1,16 @@
1
+ import type { ComponentPropsWithoutRef, JSX, ReactNode } from 'react';
2
+ interface Props extends ComponentPropsWithoutRef<'div'> {
3
+ /**
4
+ */
5
+ children: ReactNode;
6
+ }
7
+ /**
8
+ * Renders a card with an image, title, and description.
9
+ */
10
+ export declare function Card({ children, className, ...props }: Props): JSX.Element;
11
+ export declare namespace Card {
12
+ var Body: typeof import("./Body.js").Body;
13
+ var Image: typeof import("./Image.js").Image;
14
+ }
15
+ export {};
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Card/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKtE,UAAU,KAAM,SAAQ,wBAAwB,CAAC,KAAK,CAAC;IACrD;OACG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CAW1E;yBAXe,IAAI"}