@harborclient/sdk 1.0.23 → 1.0.26

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 (52) hide show
  1. package/dist/components/Autocomplete/SuggestionList.js +1 -1
  2. package/dist/components/Button/index.js +1 -1
  3. package/dist/components/CodeEditor/config.d.ts +4 -0
  4. package/dist/components/CodeEditor/config.d.ts.map +1 -1
  5. package/dist/components/CodeEditor/config.js +3 -2
  6. package/dist/components/CodeEditor/editorChrome.d.ts +23 -0
  7. package/dist/components/CodeEditor/editorChrome.d.ts.map +1 -0
  8. package/dist/components/CodeEditor/editorChrome.js +136 -0
  9. package/dist/components/CodeEditor/index.d.ts +138 -1
  10. package/dist/components/CodeEditor/index.d.ts.map +1 -1
  11. package/dist/components/CodeEditor/index.js +397 -134
  12. package/dist/components/CodeEditor/renderHighlightedPlaceholder.d.ts +32 -0
  13. package/dist/components/CodeEditor/renderHighlightedPlaceholder.d.ts.map +1 -0
  14. package/dist/components/CodeEditor/renderHighlightedPlaceholder.js +105 -0
  15. package/dist/components/CodeEditor/slashCommandHighlighter.d.ts +17 -0
  16. package/dist/components/CodeEditor/slashCommandHighlighter.d.ts.map +1 -0
  17. package/dist/components/CodeEditor/slashCommandHighlighter.js +56 -0
  18. package/dist/components/CodeEditor/syntaxHighlightedPlaceholder.d.ts +15 -0
  19. package/dist/components/CodeEditor/syntaxHighlightedPlaceholder.d.ts.map +1 -0
  20. package/dist/components/CodeEditor/syntaxHighlightedPlaceholder.js +99 -0
  21. package/dist/components/CodeEditor/syntaxLinters.d.ts +10 -0
  22. package/dist/components/CodeEditor/syntaxLinters.d.ts.map +1 -0
  23. package/dist/components/CodeEditor/syntaxLinters.js +36 -0
  24. package/dist/components/EmptyState/index.js +1 -1
  25. package/dist/components/FooterButton/index.js +2 -2
  26. package/dist/components/Resizable/useResizable.d.ts +5 -4
  27. package/dist/components/Resizable/useResizable.d.ts.map +1 -1
  28. package/dist/components/Resizable/useResizable.js +19 -10
  29. package/dist/components/SegmentedTabs/index.d.ts.map +1 -1
  30. package/dist/components/SegmentedTabs/index.js +1 -1
  31. package/dist/components/SegmentedTabs/types.d.ts +3 -1
  32. package/dist/components/SegmentedTabs/types.d.ts.map +1 -1
  33. package/dist/components/Table/index.js +1 -1
  34. package/dist/components/Toolbar/index.d.ts +75 -0
  35. package/dist/components/Toolbar/index.d.ts.map +1 -0
  36. package/dist/components/Toolbar/index.js +38 -0
  37. package/dist/components/VariableInput/index.js +1 -1
  38. package/dist/components/classes.js +2 -2
  39. package/dist/components/forms/classes.d.ts +4 -4
  40. package/dist/components/forms/classes.d.ts.map +1 -1
  41. package/dist/components/forms/classes.js +4 -4
  42. package/dist/components/index.d.ts +3 -1
  43. package/dist/components/index.d.ts.map +1 -1
  44. package/dist/components/index.js +1 -0
  45. package/dist/styles.css +42 -0
  46. package/dist/ui/codeEditorSettings.d.ts +15 -0
  47. package/dist/ui/codeEditorSettings.d.ts.map +1 -1
  48. package/dist/ui/codeEditorSettings.js +40 -0
  49. package/dist/ui/index.d.ts +1 -1
  50. package/dist/ui/index.d.ts.map +1 -1
  51. package/dist/ui/index.js +1 -1
  52. package/package.json +2 -1
@@ -0,0 +1,38 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@harborclient/sdk/jsx-runtime";
2
+ import { FaIcon } from '../FaIcon/index.js';
3
+ /**
4
+ * Tailwind classes for inactive toolbar icon action buttons.
5
+ */
6
+ const TOOLBAR_ACTION_BUTTON_INACTIVE = 'hc-toolbar-action inline-flex h-7 w-7 shrink-0 cursor-pointer items-center justify-center rounded-full border-none bg-transparent text-[14px] text-muted hover:bg-selection hover:text-text focus-visible:bg-selection focus-visible:text-text disabled:cursor-not-allowed disabled:opacity-50 app-no-drag';
7
+ /**
8
+ * Tailwind classes for pressed toolbar toggles, matching footer layout icon buttons.
9
+ */
10
+ const TOOLBAR_ACTION_BUTTON_ACTIVE = 'hc-toolbar-action inline-flex h-7 w-7 shrink-0 cursor-pointer items-center justify-center rounded-md border-none bg-surface text-text shadow-sm focus-visible:bg-surface focus-visible:text-text disabled:cursor-not-allowed disabled:opacity-50 app-no-drag';
11
+ /**
12
+ * Resolves toolbar button classes for a declarative action.
13
+ *
14
+ * @param action - Toolbar action metadata.
15
+ */
16
+ function toolbarActionButton(action) {
17
+ return action.ariaPressed === true
18
+ ? TOOLBAR_ACTION_BUTTON_ACTIVE
19
+ : TOOLBAR_ACTION_BUTTON_INACTIVE;
20
+ }
21
+ /**
22
+ * Top-of-sidebar toolbar with left-aligned icon actions.
23
+ *
24
+ * @param actions - Declarative icon actions rendered on the left.
25
+ * @param ariaLabel - Accessible name for the toolbar landmark.
26
+ * @param className - Extra classes merged onto the outer wrapper.
27
+ */
28
+ export function Toolbar({ actions, ariaLabel = 'Toolbar', className }) {
29
+ const wrapperClassName = className
30
+ ? `hc-toolbar flex shrink-0 items-center border-b border-separator bg-sidebar-toolbar px-2 py-2 app-no-drag ${className}`
31
+ : 'hc-toolbar flex shrink-0 items-center border-b border-separator bg-sidebar-toolbar px-2 py-2 app-no-drag';
32
+ return (_jsx("div", { role: "toolbar", "aria-label": ariaLabel, className: wrapperClassName, children: _jsx("div", { className: "hc-toolbar-actions flex items-center gap-1", children: actions.map((action) => {
33
+ const title = action.title ?? action.label;
34
+ return (_jsxs("div", { className: "hc-toolbar-action-wrap relative", children: [_jsx("button", { type: "button", ref: action.buttonRef, className: toolbarActionButton(action), title: title, "aria-label": action.label, "aria-expanded": action.ariaExpanded, "aria-pressed": action.ariaPressed, "aria-haspopup": action.ariaHaspopup, disabled: action.disabled, onClick: action.onClick, children: _jsx(FaIcon, { icon: action.icon, className: action.ariaPressed === true
35
+ ? 'hc-toolbar-action-icon h-4 w-4'
36
+ : 'hc-toolbar-action-icon h-3.5 w-3.5' }) }), action.popover] }, action.id));
37
+ }) }) }));
38
+ }
@@ -176,7 +176,7 @@ export function VariableInput({ value, onChange, variables, placeholder, onKeyDo
176
176
  }, onFocus: () => {
177
177
  openAutocomplete();
178
178
  updateTooltipFromCaret();
179
- }, onBlur: closeAutocomplete, onKeyDown: handleKeyDown, onKeyUp: handleKeyUp, onSelect: updateTooltipFromCaret, onClick: updateTooltipFromCaret, onScroll: syncScroll, onMouseMove: handleMouseMove, onMouseLeave: scheduleHide }), source && (_jsx(SuggestionList, { open: autocompleteOpen, items: autocompleteItems, activeIndex: autocompleteActiveIndex, anchorRef: inputRef, listboxId: listboxId, onSelect: selectItem, onActiveIndexChange: setActiveIndex, onClose: closeSuggestions })), tooltip && tooltipContent && (_jsxs("div", { id: tooltipId, role: "tooltip", className: "hc-variable-input-tooltip pointer-events-auto fixed z-50 flex max-w-sm -translate-x-1/2 -translate-y-full flex-col gap-2 rounded-md border border-separator bg-surface px-4 py-3 text-[14px] text-text shadow-md after:pointer-events-auto after:absolute after:-bottom-2 after:left-0 after:right-0 after:h-2 after:content-['']", style: { top: tooltip.top - 4, left: tooltip.left }, onMouseEnter: cancelHide, onMouseLeave: scheduleHide, children: [_jsx("span", { className: tooltipContent.muted
179
+ }, onBlur: closeAutocomplete, onKeyDown: handleKeyDown, onKeyUp: handleKeyUp, onSelect: updateTooltipFromCaret, onClick: updateTooltipFromCaret, onScroll: syncScroll, onMouseMove: handleMouseMove, onMouseLeave: scheduleHide }), source && (_jsx(SuggestionList, { open: autocompleteOpen, items: autocompleteItems, activeIndex: autocompleteActiveIndex, anchorRef: inputRef, listboxId: listboxId, onSelect: selectItem, onActiveIndexChange: setActiveIndex, onClose: closeSuggestions })), tooltip && tooltipContent && (_jsxs("div", { id: tooltipId, role: "tooltip", className: "hc-variable-input-tooltip pointer-events-auto fixed z-50 flex max-w-sm -translate-x-1/2 -translate-y-full flex-col gap-2 rounded-lg border border-separator bg-surface px-4 py-3 text-[14px] text-text shadow-md after:pointer-events-auto after:absolute after:-bottom-2 after:left-0 after:right-0 after:h-2 after:content-['']", style: { top: tooltip.top - 4, left: tooltip.left }, onMouseEnter: cancelHide, onMouseLeave: scheduleHide, children: [_jsx("span", { className: tooltipContent.muted
180
180
  ? 'hc-variable-input-tooltip-text text-muted'
181
181
  : 'hc-variable-input-tooltip-text', children: tooltipContent.text }), onEditVariable && (_jsx("button", { type: "button", className: "hc-variable-input-tooltip-edit -mx-1 self-start rounded px-1 py-0.5 text-[14px] text-accent hover:underline app-no-drag", "aria-label": `Edit value for ${tooltip.key}`, onClick: () => {
182
182
  onEditVariable();
@@ -10,6 +10,6 @@ const segmentFocusVisible = 'focus-visible:outline focus-visible:outline-2 focus
10
10
  */
11
11
  export function segment(active) {
12
12
  return active
13
- ? `cursor-pointer rounded-[2.5px] border-none bg-field px-3 py-1 text-[15px] text-text shadow-sm app-no-drag ${segmentFocusVisible}`
14
- : `cursor-pointer rounded-[2.5px] border-none bg-transparent px-3 py-1 text-[15px] text-muted hover:text-text app-no-drag ${segmentFocusVisible}`;
13
+ ? `cursor-pointer rounded-md border-none bg-selection px-3 py-1 text-[15px] text-text app-no-drag ${segmentFocusVisible}`
14
+ : `cursor-pointer rounded-md border-none bg-transparent px-3 py-1 text-[15px] text-muted hover:text-text app-no-drag ${segmentFocusVisible}`;
15
15
  }
@@ -8,15 +8,15 @@ export type FieldVariant = 'control' | 'surface' | 'plain';
8
8
  /**
9
9
  * Border and subtle tint shell for composite inputs (e.g. VariableInput wrappers).
10
10
  */
11
- export declare const fieldFrame = "overflow-hidden rounded-md border border-separator bg-field";
11
+ export declare const fieldFrame = "overflow-hidden rounded-lg border border-separator bg-field";
12
12
  /** Inset control style for standard settings and editor fields. */
13
- export declare const field = "rounded-md border border-separator bg-field px-2.5 py-1.5 text-[16px] text-text app-no-drag";
13
+ export declare const field = "rounded-lg border border-separator bg-field px-2.5 py-1.5 text-[16px] text-text app-no-drag";
14
14
  /** Surface style for modal and Team Hub form fields. */
15
- export declare const surfaceField = "w-full rounded-md border border-separator bg-field px-3 py-2.5 text-[15px] text-text";
15
+ export declare const surfaceField = "w-full rounded-lg border border-separator bg-field px-3 py-2.5 text-[15px] text-text";
16
16
  /** Transparent overlay checkbox input sized to {@link checkboxBox}. */
17
17
  export declare const checkboxInput = "peer absolute inset-0 m-0 h-full w-full cursor-pointer opacity-0 disabled:cursor-not-allowed";
18
18
  /** Custom checkbox box styled via `peer-checked` / `peer-focus-visible` on {@link checkboxInput}. */
19
- export declare const checkboxBox = "pointer-events-none flex h-[18px] w-[18px] shrink-0 items-center justify-center rounded border border-separator bg-field text-white peer-checked:border-accent peer-checked:bg-accent peer-focus-visible:outline peer-focus-visible:outline-2 peer-focus-visible:outline-offset-2 peer-focus-visible:outline-accent peer-disabled:cursor-not-allowed peer-disabled:opacity-50 [&>svg]:opacity-0 peer-checked:[&>svg]:opacity-100";
19
+ export declare const checkboxBox = "pointer-events-none flex h-[18px] w-[18px] shrink-0 items-center justify-center rounded-sm border border-separator bg-field text-white peer-checked:border-accent peer-checked:bg-accent peer-focus-visible:outline peer-focus-visible:outline-2 peer-focus-visible:outline-offset-2 peer-focus-visible:outline-accent peer-disabled:cursor-not-allowed peer-disabled:opacity-50 [&>svg]:opacity-0 peer-checked:[&>svg]:opacity-100";
20
20
  /** Transparent overlay radio input sized to {@link radioCircle}. */
21
21
  export declare const radioInput = "peer absolute inset-0 m-0 h-full w-full cursor-pointer opacity-0 disabled:cursor-not-allowed";
22
22
  /** Custom radio circle styled via `peer-checked` / `peer-focus-visible` on {@link radioInput}. */
@@ -1 +1 @@
1
- {"version":3,"file":"classes.d.ts","sourceRoot":"","sources":["../../../src/components/forms/classes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,UAAU,gEAAgE,CAAC;AAExF,mEAAmE;AACnE,eAAO,MAAM,KAAK,gGAC6E,CAAC;AAEhG,wDAAwD;AACxD,eAAO,MAAM,YAAY,yFAC+D,CAAC;AAEzF,uEAAuE;AACvE,eAAO,MAAM,aAAa,iGACsE,CAAC;AAEjG,qGAAqG;AACrG,eAAO,MAAM,WAAW,qaAC4Y,CAAC;AAEra,oEAAoE;AACpE,eAAO,MAAM,UAAU,iGACyE,CAAC;AAEjG,kGAAkG;AAClG,eAAO,MAAM,WAAW,+XACsW,CAAC;AAE/X,6DAA6D;AAC7D,eAAO,MAAM,QAAQ,8GACwF,CAAC;AAO9G;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,YAAY,EACrB,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,GAAG,SAAS,CAOpB"}
1
+ {"version":3,"file":"classes.d.ts","sourceRoot":"","sources":["../../../src/components/forms/classes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,UAAU,gEAAgE,CAAC;AAExF,mEAAmE;AACnE,eAAO,MAAM,KAAK,gGAC6E,CAAC;AAEhG,wDAAwD;AACxD,eAAO,MAAM,YAAY,yFAC+D,CAAC;AAEzF,uEAAuE;AACvE,eAAO,MAAM,aAAa,iGACsE,CAAC;AAEjG,qGAAqG;AACrG,eAAO,MAAM,WAAW,waAC+Y,CAAC;AAExa,oEAAoE;AACpE,eAAO,MAAM,UAAU,iGACyE,CAAC;AAEjG,kGAAkG;AAClG,eAAO,MAAM,WAAW,+XACsW,CAAC;AAE/X,6DAA6D;AAC7D,eAAO,MAAM,QAAQ,8GACwF,CAAC;AAO9G;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,YAAY,EACrB,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,GAAG,SAAS,CAOpB"}
@@ -4,15 +4,15 @@
4
4
  /**
5
5
  * Border and subtle tint shell for composite inputs (e.g. VariableInput wrappers).
6
6
  */
7
- export const fieldFrame = 'overflow-hidden rounded-md border border-separator bg-field';
7
+ export const fieldFrame = 'overflow-hidden rounded-lg border border-separator bg-field';
8
8
  /** Inset control style for standard settings and editor fields. */
9
- export const field = 'rounded-md border border-separator bg-field px-2.5 py-1.5 text-[16px] text-text app-no-drag';
9
+ export const field = 'rounded-lg border border-separator bg-field px-2.5 py-1.5 text-[16px] text-text app-no-drag';
10
10
  /** Surface style for modal and Team Hub form fields. */
11
- export const surfaceField = 'w-full rounded-md border border-separator bg-field px-3 py-2.5 text-[15px] text-text';
11
+ export const surfaceField = 'w-full rounded-lg border border-separator bg-field px-3 py-2.5 text-[15px] text-text';
12
12
  /** Transparent overlay checkbox input sized to {@link checkboxBox}. */
13
13
  export const checkboxInput = 'peer absolute inset-0 m-0 h-full w-full cursor-pointer opacity-0 disabled:cursor-not-allowed';
14
14
  /** Custom checkbox box styled via `peer-checked` / `peer-focus-visible` on {@link checkboxInput}. */
15
- export const checkboxBox = 'pointer-events-none flex h-[18px] w-[18px] shrink-0 items-center justify-center rounded border border-separator bg-field text-white peer-checked:border-accent peer-checked:bg-accent peer-focus-visible:outline peer-focus-visible:outline-2 peer-focus-visible:outline-offset-2 peer-focus-visible:outline-accent peer-disabled:cursor-not-allowed peer-disabled:opacity-50 [&>svg]:opacity-0 peer-checked:[&>svg]:opacity-100';
15
+ export const checkboxBox = 'pointer-events-none flex h-[18px] w-[18px] shrink-0 items-center justify-center rounded-sm border border-separator bg-field text-white peer-checked:border-accent peer-checked:bg-accent peer-focus-visible:outline peer-focus-visible:outline-2 peer-focus-visible:outline-offset-2 peer-focus-visible:outline-accent peer-disabled:cursor-not-allowed peer-disabled:opacity-50 [&>svg]:opacity-0 peer-checked:[&>svg]:opacity-100';
16
16
  /** Transparent overlay radio input sized to {@link radioCircle}. */
17
17
  export const radioInput = 'peer absolute inset-0 m-0 h-full w-full cursor-pointer opacity-0 disabled:cursor-not-allowed';
18
18
  /** Custom radio circle styled via `peer-checked` / `peer-focus-visible` on {@link radioInput}. */
@@ -9,7 +9,7 @@ export { Button } from './Button/index.js';
9
9
  export { CodeEditor, CODE_EDITOR_THEME_OPTIONS } from './CodeEditor/index.js';
10
10
  export { CodeEditorConfigProvider, useCodeEditorConfig, DEFAULT_CODE_EDITOR_CONFIG } from './CodeEditor/config.js';
11
11
  export type { CodeEditorConfig } from './CodeEditor/config.js';
12
- export type { Props as CodeEditorProps, CodeEditorLanguage } from './CodeEditor/index.js';
12
+ export type { Props as CodeEditorProps, CodeEditorLanguage, CodeEditorSelectionRange, CodeEditorSlashCommand, CodeEditorSlashCoords, CodeEditorSlashTrigger, CodeEditorViewState } from './CodeEditor/index.js';
13
13
  export { EmptyState } from './EmptyState/index.js';
14
14
  export { FaIcon } from './FaIcon/index.js';
15
15
  export { FieldError } from './FieldError/index.js';
@@ -45,6 +45,8 @@ export type { TabItem } from './SegmentedTabs/index.js';
45
45
  export { Spinner } from './Spinner/index.js';
46
46
  export { StatusMessage } from './StatusMessage/index.js';
47
47
  export { TabCloseButton } from './TabCloseButton/index.js';
48
+ export { Toolbar } from './Toolbar/index.js';
49
+ export type { ToolbarAction } from './Toolbar/index.js';
48
50
  export { Table, TableBody, TableCell, TableHead, TableHeader, tableCellClass, tableCellClassLoose, tableHeadClass, tableHeadClassLoose } from './Table/index.js';
49
51
  export type { TableVariant } from './Table/index.js';
50
52
  export { VariableInput } from './VariableInput/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,7 @@ export { SegmentedTabs, SegmentedTabsGroup, SegmentedTabPanel } from './Segmente
34
34
  export { Spinner } from './Spinner/index.js';
35
35
  export { StatusMessage } from './StatusMessage/index.js';
36
36
  export { TabCloseButton } from './TabCloseButton/index.js';
37
+ export { Toolbar } from './Toolbar/index.js';
37
38
  export { Table, TableBody, TableCell, TableHead, TableHeader, tableCellClass, tableCellClassLoose, tableHeadClass, tableHeadClassLoose } from './Table/index.js';
38
39
  export { VariableInput } from './VariableInput/index.js';
39
40
  export { VariableTable } from './VariableTable/index.js';
package/dist/styles.css CHANGED
@@ -21,6 +21,8 @@
21
21
  */
22
22
  .hc-footer-icon:focus-visible,
23
23
  .hc-footer-icon:focus:not(:focus-visible),
24
+ .hc-toolbar-action[aria-pressed='true']:focus-visible,
25
+ .hc-toolbar-action[aria-pressed='true']:focus:not(:focus-visible),
24
26
  .hc-footer-button:focus-visible,
25
27
  .hc-footer-button:focus:not(:focus-visible) {
26
28
  outline: none;
@@ -36,3 +38,43 @@
36
38
  border: 1px solid ButtonBorder;
37
39
  }
38
40
  }
41
+
42
+ /**
43
+ * CodeEditor fills an explicit wrapper height set by the host without passing height
44
+ * into CodeMirror (which would trigger full reconfigure on every resize).
45
+ *
46
+ * @uiw/react-codemirror inserts a `.cm-theme-*` container between the wrapper and
47
+ * `.cm-editor`; every level must participate in the flex chain or the scroller grows
48
+ * with document content and never overflows.
49
+ */
50
+ .hc-code-editor {
51
+ display: flex;
52
+ flex-direction: column;
53
+ min-height: 0;
54
+ }
55
+
56
+ .hc-code-editor > div:first-child {
57
+ display: flex;
58
+ flex: 1 1 0%;
59
+ flex-direction: column;
60
+ min-height: 0;
61
+ height: 100%;
62
+ overflow: hidden;
63
+ }
64
+
65
+ .hc-code-editor .cm-editor {
66
+ display: flex !important;
67
+ flex: 1 1 0% !important;
68
+ flex-direction: column;
69
+ min-height: 0 !important;
70
+ height: 100% !important;
71
+ max-height: 100% !important;
72
+ overflow: hidden !important;
73
+ }
74
+
75
+ .hc-code-editor .cm-scroller {
76
+ flex: 1 1 0%;
77
+ min-height: 0;
78
+ overflow: auto !important;
79
+ scrollbar-gutter: stable;
80
+ }
@@ -3,6 +3,14 @@ import type { CodeEditorSetup, CodeEditorTheme } from '../types.js';
3
3
  * Valid CodeMirror theme identifiers for settings validation.
4
4
  */
5
5
  export declare const CODE_EDITOR_THEME_IDS: readonly ["default", "dracula", "githubLight", "githubDark", "monokai", "nord", "solarizedLight", "tokyoNight"];
6
+ /**
7
+ * Default editor font size applied when no valid value is stored.
8
+ */
9
+ export declare const DEFAULT_CODE_EDITOR_FONT_SIZE = "16px";
10
+ /**
11
+ * Minimum allowed editor font size in pixels (HarborClient UI accessibility floor).
12
+ */
13
+ export declare const MIN_CODE_EDITOR_FONT_SIZE_PX = 14;
6
14
  /**
7
15
  * Default CodeMirror basicSetup options for editable editors.
8
16
  */
@@ -26,4 +34,11 @@ export declare function normalizeCodeEditorSetup(input: Partial<CodeEditorSetup>
26
34
  * @param value - Raw theme value from storage or input.
27
35
  */
28
36
  export declare function normalizeCodeEditorTheme(value: unknown): CodeEditorTheme;
37
+ /**
38
+ * Parses a raw font size into pixel units, clamping below the minimum.
39
+ *
40
+ * @param value - Raw font size from storage, props, or user input.
41
+ * @returns Normalized CSS length such as `16px`.
42
+ */
43
+ export declare function normalizeCodeEditorFontSize(value: unknown): string;
29
44
  //# sourceMappingURL=codeEditorSettings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codeEditorSettings.d.ts","sourceRoot":"","sources":["../../src/ui/codeEditorSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,qBAAqB,iHASa,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,eAKvC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAE1E;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,GAC1C,eAAe,CAOjB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAExE"}
1
+ {"version":3,"file":"codeEditorSettings.d.ts","sourceRoot":"","sources":["../../src/ui/codeEditorSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,qBAAqB,iHASa,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,6BAA6B,SAAS,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,eAKvC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAE1E;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,GAC1C,eAAe,CAOjB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAExE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CA4BlE"}
@@ -11,6 +11,14 @@ export const CODE_EDITOR_THEME_IDS = [
11
11
  'solarizedLight',
12
12
  'tokyoNight'
13
13
  ];
14
+ /**
15
+ * Default editor font size applied when no valid value is stored.
16
+ */
17
+ export const DEFAULT_CODE_EDITOR_FONT_SIZE = '16px';
18
+ /**
19
+ * Minimum allowed editor font size in pixels (HarborClient UI accessibility floor).
20
+ */
21
+ export const MIN_CODE_EDITOR_FONT_SIZE_PX = 14;
14
22
  /**
15
23
  * Default CodeMirror basicSetup options for editable editors.
16
24
  */
@@ -50,3 +58,35 @@ export function normalizeCodeEditorSetup(input) {
50
58
  export function normalizeCodeEditorTheme(value) {
51
59
  return isCodeEditorTheme(value) ? value : 'default';
52
60
  }
61
+ /**
62
+ * Parses a raw font size into pixel units, clamping below the minimum.
63
+ *
64
+ * @param value - Raw font size from storage, props, or user input.
65
+ * @returns Normalized CSS length such as `16px`.
66
+ */
67
+ export function normalizeCodeEditorFontSize(value) {
68
+ if (typeof value === 'number' && Number.isFinite(value)) {
69
+ const clamped = Math.max(MIN_CODE_EDITOR_FONT_SIZE_PX, Math.round(value));
70
+ return `${clamped}px`;
71
+ }
72
+ if (typeof value === 'string') {
73
+ const trimmed = value.trim();
74
+ const pxMatch = trimmed.match(/^(\d+(?:\.\d+)?)px$/i);
75
+ if (pxMatch) {
76
+ const parsed = Number(pxMatch[1]);
77
+ if (Number.isFinite(parsed)) {
78
+ const clamped = Math.max(MIN_CODE_EDITOR_FONT_SIZE_PX, Math.round(parsed));
79
+ return `${clamped}px`;
80
+ }
81
+ }
82
+ const integerMatch = trimmed.match(/^(\d+)$/);
83
+ if (integerMatch) {
84
+ const parsed = Number(integerMatch[1]);
85
+ if (Number.isFinite(parsed)) {
86
+ const clamped = Math.max(MIN_CODE_EDITOR_FONT_SIZE_PX, parsed);
87
+ return `${clamped}px`;
88
+ }
89
+ }
90
+ }
91
+ return DEFAULT_CODE_EDITOR_FONT_SIZE;
92
+ }
@@ -1,4 +1,4 @@
1
- export { CODE_EDITOR_THEME_IDS, DEFAULT_CODE_EDITOR_SETUP, isCodeEditorTheme, normalizeCodeEditorSetup, normalizeCodeEditorTheme } from './codeEditorSettings.js';
1
+ export { CODE_EDITOR_THEME_IDS, DEFAULT_CODE_EDITOR_FONT_SIZE, DEFAULT_CODE_EDITOR_SETUP, MIN_CODE_EDITOR_FONT_SIZE_PX, isCodeEditorTheme, normalizeCodeEditorFontSize, normalizeCodeEditorSetup, normalizeCodeEditorTheme } from './codeEditorSettings.js';
2
2
  export { formatHeaders, formatRelativeTime, truncateToBytes, byteLength } from './format.js';
3
3
  export { METHOD_COLOR_TOKENS, STATUS_COLOR_TOKENS, methodColorClass, statusColorClass } from './tokens.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,iBAAiB,EACjB,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,6BAA6B,EAC7B,yBAAyB,EACzB,4BAA4B,EAC5B,iBAAiB,EACjB,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,aAAa,CAAC"}
package/dist/ui/index.js CHANGED
@@ -1,3 +1,3 @@
1
- export { CODE_EDITOR_THEME_IDS, DEFAULT_CODE_EDITOR_SETUP, isCodeEditorTheme, normalizeCodeEditorSetup, normalizeCodeEditorTheme } from './codeEditorSettings.js';
1
+ export { CODE_EDITOR_THEME_IDS, DEFAULT_CODE_EDITOR_FONT_SIZE, DEFAULT_CODE_EDITOR_SETUP, MIN_CODE_EDITOR_FONT_SIZE_PX, isCodeEditorTheme, normalizeCodeEditorFontSize, normalizeCodeEditorSetup, normalizeCodeEditorTheme } from './codeEditorSettings.js';
2
2
  export { formatHeaders, formatRelativeTime, truncateToBytes, byteLength } from './format.js';
3
3
  export { METHOD_COLOR_TOKENS, STATUS_COLOR_TOKENS, methodColorClass, statusColorClass } from './tokens.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@harborclient/sdk",
3
- "version": "1.0.23",
3
+ "version": "1.0.26",
4
4
  "description": "TypeScript SDK for HarborClient development.",
5
5
  "keywords": [
6
6
  "harborclient",
@@ -163,6 +163,7 @@
163
163
  "@codemirror/autocomplete": "^6.20.3",
164
164
  "@codemirror/lang-javascript": "^6.2.4",
165
165
  "@codemirror/lang-json": "^6.0.2",
166
+ "@codemirror/lint": "^6.9.7",
166
167
  "@codemirror/language": "^6.12.3",
167
168
  "@codemirror/legacy-modes": "^6.5.3",
168
169
  "@codemirror/state": "^6.6.0",