@salt-ds/lab 1.0.0-alpha.10 → 1.0.0-alpha.11

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 (153) hide show
  1. package/dist-cjs/common-hooks/useKeyboardNavigation.js +0 -3
  2. package/dist-cjs/common-hooks/useKeyboardNavigation.js.map +1 -1
  3. package/dist-cjs/dialog/DialogTitle.css.js +1 -1
  4. package/dist-cjs/dialog/DialogTitle.js +2 -3
  5. package/dist-cjs/dialog/DialogTitle.js.map +1 -1
  6. package/dist-cjs/dropdown/Dropdown.js +5 -2
  7. package/dist-cjs/dropdown/Dropdown.js.map +1 -1
  8. package/dist-cjs/dropdown/useDropdown.js +12 -0
  9. package/dist-cjs/dropdown/useDropdown.js.map +1 -1
  10. package/dist-cjs/index.js +15 -1
  11. package/dist-cjs/index.js.map +1 -1
  12. package/dist-cjs/list/useList.js +0 -1
  13. package/dist-cjs/list/useList.js.map +1 -1
  14. package/dist-cjs/list-next/ListItemNext.css.js +6 -0
  15. package/dist-cjs/list-next/ListItemNext.css.js.map +1 -0
  16. package/dist-cjs/list-next/ListItemNext.js +74 -0
  17. package/dist-cjs/list-next/ListItemNext.js.map +1 -0
  18. package/dist-cjs/list-next/ListNext.css.js +6 -0
  19. package/dist-cjs/list-next/ListNext.css.js.map +1 -0
  20. package/dist-cjs/list-next/ListNext.js +92 -0
  21. package/dist-cjs/list-next/ListNext.js.map +1 -0
  22. package/dist-cjs/list-next/ListNextContext.js +18 -0
  23. package/dist-cjs/list-next/ListNextContext.js.map +1 -0
  24. package/dist-cjs/list-next/useList.js +188 -0
  25. package/dist-cjs/list-next/useList.js.map +1 -0
  26. package/dist-cjs/logo/Logo.css.js +1 -1
  27. package/dist-cjs/logo/Logo.js +4 -36
  28. package/dist-cjs/logo/Logo.js.map +1 -1
  29. package/dist-cjs/logo/LogoImage.js +24 -0
  30. package/dist-cjs/logo/LogoImage.js.map +1 -0
  31. package/dist-cjs/logo/LogoSeparator.css.js +6 -0
  32. package/dist-cjs/logo/LogoSeparator.css.js.map +1 -0
  33. package/dist-cjs/logo/LogoSeparator.js +32 -0
  34. package/dist-cjs/logo/LogoSeparator.js.map +1 -0
  35. package/dist-cjs/query-input/internal/QueryInputBody.js +5 -5
  36. package/dist-cjs/query-input/internal/QueryInputBody.js.map +1 -1
  37. package/dist-cjs/tabs-next/OverflowMenu.js +49 -0
  38. package/dist-cjs/tabs-next/OverflowMenu.js.map +1 -0
  39. package/dist-cjs/tabs-next/TabNext.css.js +6 -0
  40. package/dist-cjs/tabs-next/TabNext.css.js.map +1 -0
  41. package/dist-cjs/tabs-next/TabNext.js +87 -0
  42. package/dist-cjs/tabs-next/TabNext.js.map +1 -0
  43. package/dist-cjs/tabs-next/TabNextContext.js +23 -0
  44. package/dist-cjs/tabs-next/TabNextContext.js.map +1 -0
  45. package/dist-cjs/tabs-next/TabstripNext.css.js +6 -0
  46. package/dist-cjs/tabs-next/TabstripNext.css.js.map +1 -0
  47. package/dist-cjs/tabs-next/TabstripNext.js +180 -0
  48. package/dist-cjs/tabs-next/TabstripNext.js.map +1 -0
  49. package/dist-cjs/toggle-button/ToggleButton.css.js +1 -1
  50. package/dist-cjs/toggle-button/ToggleButton.js +44 -74
  51. package/dist-cjs/toggle-button/ToggleButton.js.map +1 -1
  52. package/dist-cjs/toggle-button-group/ToggleButtonGroup.css.js +6 -0
  53. package/dist-cjs/toggle-button-group/ToggleButtonGroup.js +111 -0
  54. package/dist-cjs/toggle-button-group/ToggleButtonGroup.js.map +1 -0
  55. package/dist-cjs/toggle-button-group/ToggleButtonGroupContext.js +15 -0
  56. package/dist-cjs/toggle-button-group/ToggleButtonGroupContext.js.map +1 -0
  57. package/dist-es/common-hooks/useKeyboardNavigation.js +0 -3
  58. package/dist-es/common-hooks/useKeyboardNavigation.js.map +1 -1
  59. package/dist-es/dialog/DialogTitle.css.js +1 -1
  60. package/dist-es/dialog/DialogTitle.js +3 -4
  61. package/dist-es/dialog/DialogTitle.js.map +1 -1
  62. package/dist-es/dropdown/Dropdown.js +5 -2
  63. package/dist-es/dropdown/Dropdown.js.map +1 -1
  64. package/dist-es/dropdown/useDropdown.js +12 -0
  65. package/dist-es/dropdown/useDropdown.js.map +1 -1
  66. package/dist-es/index.js +8 -1
  67. package/dist-es/index.js.map +1 -1
  68. package/dist-es/list/useList.js +0 -1
  69. package/dist-es/list/useList.js.map +1 -1
  70. package/dist-es/list-next/ListItemNext.css.js +4 -0
  71. package/dist-es/list-next/ListItemNext.css.js.map +1 -0
  72. package/dist-es/list-next/ListItemNext.js +70 -0
  73. package/dist-es/list-next/ListItemNext.js.map +1 -0
  74. package/dist-es/list-next/ListNext.css.js +4 -0
  75. package/dist-es/list-next/ListNext.css.js.map +1 -0
  76. package/dist-es/list-next/ListNext.js +88 -0
  77. package/dist-es/list-next/ListNext.js.map +1 -0
  78. package/dist-es/list-next/ListNextContext.js +13 -0
  79. package/dist-es/list-next/ListNextContext.js.map +1 -0
  80. package/dist-es/list-next/useList.js +184 -0
  81. package/dist-es/list-next/useList.js.map +1 -0
  82. package/dist-es/logo/Logo.css.js +1 -1
  83. package/dist-es/logo/Logo.js +5 -37
  84. package/dist-es/logo/Logo.js.map +1 -1
  85. package/dist-es/logo/LogoImage.js +20 -0
  86. package/dist-es/logo/LogoImage.js.map +1 -0
  87. package/dist-es/logo/LogoSeparator.css.js +4 -0
  88. package/dist-es/logo/LogoSeparator.css.js.map +1 -0
  89. package/dist-es/logo/LogoSeparator.js +28 -0
  90. package/dist-es/logo/LogoSeparator.js.map +1 -0
  91. package/dist-es/query-input/internal/QueryInputBody.js +5 -5
  92. package/dist-es/query-input/internal/QueryInputBody.js.map +1 -1
  93. package/dist-es/tabs-next/OverflowMenu.js +45 -0
  94. package/dist-es/tabs-next/OverflowMenu.js.map +1 -0
  95. package/dist-es/tabs-next/TabNext.css.js +4 -0
  96. package/dist-es/tabs-next/TabNext.css.js.map +1 -0
  97. package/dist-es/tabs-next/TabNext.js +79 -0
  98. package/dist-es/tabs-next/TabNext.js.map +1 -0
  99. package/dist-es/tabs-next/TabNextContext.js +18 -0
  100. package/dist-es/tabs-next/TabNextContext.js.map +1 -0
  101. package/dist-es/tabs-next/TabstripNext.css.js +4 -0
  102. package/dist-es/tabs-next/TabstripNext.css.js.map +1 -0
  103. package/dist-es/tabs-next/TabstripNext.js +172 -0
  104. package/dist-es/tabs-next/TabstripNext.js.map +1 -0
  105. package/dist-es/toggle-button/ToggleButton.css.js +1 -1
  106. package/dist-es/toggle-button/ToggleButton.js +45 -75
  107. package/dist-es/toggle-button/ToggleButton.js.map +1 -1
  108. package/dist-es/toggle-button-group/ToggleButtonGroup.css.js +4 -0
  109. package/dist-es/toggle-button-group/ToggleButtonGroup.js +107 -0
  110. package/dist-es/toggle-button-group/ToggleButtonGroup.js.map +1 -0
  111. package/dist-es/toggle-button-group/ToggleButtonGroupContext.js +10 -0
  112. package/dist-es/toggle-button-group/ToggleButtonGroupContext.js.map +1 -0
  113. package/dist-types/dropdown/useDropdown.d.ts +1 -1
  114. package/dist-types/index.d.ts +3 -0
  115. package/dist-types/list-next/ListItemNext.d.ts +11 -0
  116. package/dist-types/list-next/ListNext.d.ts +10 -0
  117. package/dist-types/list-next/ListNextContext.d.ts +10 -0
  118. package/dist-types/list-next/index.d.ts +2 -0
  119. package/dist-types/list-next/useList.d.ts +29 -0
  120. package/dist-types/logo/Logo.d.ts +3 -31
  121. package/dist-types/logo/LogoImage.d.ts +5 -0
  122. package/dist-types/logo/LogoSeparator.d.ts +3 -0
  123. package/dist-types/logo/index.d.ts +2 -0
  124. package/dist-types/tabs-next/OverflowMenu.d.ts +11 -0
  125. package/dist-types/tabs-next/TabNext.d.ts +5 -0
  126. package/dist-types/tabs-next/TabNextContext.d.ts +17 -0
  127. package/dist-types/tabs-next/TabstripNext.d.ts +10 -0
  128. package/dist-types/tabs-next/index.d.ts +2 -0
  129. package/dist-types/toggle-button/ToggleButton.d.ts +6 -11
  130. package/dist-types/toggle-button/index.d.ts +0 -1
  131. package/dist-types/toggle-button-group/ToggleButtonGroup.d.ts +25 -0
  132. package/dist-types/toggle-button-group/ToggleButtonGroupContext.d.ts +10 -0
  133. package/dist-types/toggle-button-group/index.d.ts +2 -0
  134. package/package.json +6 -4
  135. package/dist-cjs/logo/internal/LogoTitle.js +0 -28
  136. package/dist-cjs/logo/internal/LogoTitle.js.map +0 -1
  137. package/dist-cjs/toggle-button/ToggleButtonGroup.css.js +0 -6
  138. package/dist-cjs/toggle-button/ToggleButtonGroup.js +0 -147
  139. package/dist-cjs/toggle-button/ToggleButtonGroup.js.map +0 -1
  140. package/dist-cjs/toggle-button/internal/ToggleButtonGroupContext.js +0 -10
  141. package/dist-cjs/toggle-button/internal/ToggleButtonGroupContext.js.map +0 -1
  142. package/dist-es/logo/internal/LogoTitle.js +0 -24
  143. package/dist-es/logo/internal/LogoTitle.js.map +0 -1
  144. package/dist-es/toggle-button/ToggleButtonGroup.css.js +0 -4
  145. package/dist-es/toggle-button/ToggleButtonGroup.js +0 -143
  146. package/dist-es/toggle-button/ToggleButtonGroup.js.map +0 -1
  147. package/dist-es/toggle-button/internal/ToggleButtonGroupContext.js +0 -6
  148. package/dist-es/toggle-button/internal/ToggleButtonGroupContext.js.map +0 -1
  149. package/dist-types/logo/internal/LogoTitle.d.ts +0 -6
  150. package/dist-types/toggle-button/ToggleButtonGroup.d.ts +0 -18
  151. package/dist-types/toggle-button/internal/ToggleButtonGroupContext.d.ts +0 -14
  152. /package/dist-cjs/{toggle-button → toggle-button-group}/ToggleButtonGroup.css.js.map +0 -0
  153. /package/dist-es/{toggle-button → toggle-button-group}/ToggleButtonGroup.css.js.map +0 -0
@@ -0,0 +1,70 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { forwardRef } from 'react';
3
+ import { clsx } from 'clsx';
4
+ import { makePrefixer, useIdMemo } from '@salt-ds/core';
5
+ import { useWindow } from '@salt-ds/window';
6
+ import { useComponentCssInjection } from '@salt-ds/styles';
7
+ import css_248z from './ListItemNext.css.js';
8
+ import { useListItem } from './ListNextContext.js';
9
+
10
+ const withBaseName = makePrefixer("saltListItemNext");
11
+ const ListItemNext = forwardRef(
12
+ function ListItemNext2({
13
+ children,
14
+ className,
15
+ disabled: disabledProp,
16
+ selected: selectedProp,
17
+ id: idProp,
18
+ value,
19
+ onClick,
20
+ ...props
21
+ }, ref) {
22
+ const targetWindow = useWindow();
23
+ useComponentCssInjection({
24
+ testId: "salt-list-item-next",
25
+ css: css_248z,
26
+ window: targetWindow
27
+ });
28
+ const id = useIdMemo(idProp);
29
+ const listContext = useListItem();
30
+ if (!listContext)
31
+ return null;
32
+ const {
33
+ id: contextId,
34
+ disabled: contextDisabled,
35
+ select,
36
+ isSelected,
37
+ isFocused
38
+ } = listContext;
39
+ const itemId = `${contextId || "listNext"}--${id}`;
40
+ const disabled = disabledProp || contextDisabled;
41
+ const selected = selectedProp || isSelected(value);
42
+ const focused = isFocused(itemId);
43
+ const handleClick = (event) => {
44
+ select(event);
45
+ onClick == null ? void 0 : onClick(event);
46
+ };
47
+ return /* @__PURE__ */ jsx("li", {
48
+ ref,
49
+ className: clsx(
50
+ withBaseName(),
51
+ {
52
+ [withBaseName("disabled")]: disabled,
53
+ [withBaseName("focused")]: focused
54
+ },
55
+ className
56
+ ),
57
+ role: "option",
58
+ "aria-disabled": disabled || void 0,
59
+ "aria-selected": selected || void 0,
60
+ id: itemId,
61
+ "data-value": value,
62
+ onClick: handleClick,
63
+ ...props,
64
+ children
65
+ });
66
+ }
67
+ );
68
+
69
+ export { ListItemNext };
70
+ //# sourceMappingURL=ListItemNext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListItemNext.js","sources":["../src/list-next/ListItemNext.tsx"],"sourcesContent":["import { forwardRef, HTMLAttributes, MouseEvent } from \"react\";\nimport { clsx } from \"clsx\";\nimport { makePrefixer, useId, useIdMemo } from \"@salt-ds/core\";\n\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport listItemNextCss from \"./ListItemNext.css\";\nimport { useListItem } from \"./ListNextContext\";\n\nconst withBaseName = makePrefixer(\"saltListItemNext\");\n\nexport interface ListItemNextProps extends HTMLAttributes<HTMLLIElement> {\n /**\n * If true, the particular list item in list will be disabled.\n */\n disabled?: boolean;\n selected?: boolean;\n id?: string;\n value: string;\n}\n\nexport const ListItemNext = forwardRef<HTMLLIElement, ListItemNextProps>(\n function ListItemNext(\n {\n children,\n className,\n disabled: disabledProp,\n selected: selectedProp,\n id: idProp,\n value,\n onClick,\n ...props\n },\n ref\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-list-item-next\",\n css: listItemNextCss,\n window: targetWindow,\n });\n const id = useIdMemo(idProp);\n\n const listContext = useListItem();\n if (!listContext) return null;\n\n const {\n id: contextId,\n disabled: contextDisabled,\n select,\n isSelected,\n isFocused,\n } = listContext;\n\n const itemId = `${contextId || \"listNext\"}--${id}`;\n const disabled = disabledProp || contextDisabled;\n const selected = selectedProp || isSelected(value);\n const focused = isFocused(itemId);\n\n const handleClick = (event: MouseEvent<HTMLLIElement>) => {\n select(event);\n onClick?.(event);\n };\n\n return (\n <li\n ref={ref}\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(\"focused\")]: focused,\n },\n className\n )}\n role=\"option\"\n aria-disabled={disabled || undefined}\n aria-selected={selected || undefined}\n id={itemId}\n data-value={value}\n onClick={handleClick}\n {...props}\n >\n {children}\n </li>\n );\n }\n);\n"],"names":["ListItemNext","listItemNextCss"],"mappings":";;;;;;;;;AASA,MAAM,YAAA,GAAe,aAAa,kBAAkB,CAAA,CAAA;AAY7C,MAAM,YAAe,GAAA,UAAA;AAAA,EAC1B,SAASA,aACP,CAAA;AAAA,IACE,QAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAU,EAAA,YAAA;AAAA,IACV,QAAU,EAAA,YAAA;AAAA,IACV,EAAI,EAAA,MAAA;AAAA,IACJ,KAAA;AAAA,IACA,OAAA;AAAA,IACG,GAAA,KAAA;AAAA,KAEL,GACA,EAAA;AACA,IAAA,MAAM,eAAe,SAAU,EAAA,CAAA;AAC/B,IAAyB,wBAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,qBAAA;AAAA,MACR,GAAK,EAAAC,QAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AACD,IAAM,MAAA,EAAA,GAAK,UAAU,MAAM,CAAA,CAAA;AAE3B,IAAA,MAAM,cAAc,WAAY,EAAA,CAAA;AAChC,IAAA,IAAI,CAAC,WAAA;AAAa,MAAO,OAAA,IAAA,CAAA;AAEzB,IAAM,MAAA;AAAA,MACJ,EAAI,EAAA,SAAA;AAAA,MACJ,QAAU,EAAA,eAAA;AAAA,MACV,MAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA;AAAA,KACE,GAAA,WAAA,CAAA;AAEJ,IAAM,MAAA,MAAA,GAAS,CAAG,EAAA,SAAA,IAAa,UAAe,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA;AAC9C,IAAA,MAAM,WAAW,YAAgB,IAAA,eAAA,CAAA;AACjC,IAAM,MAAA,QAAA,GAAW,YAAgB,IAAA,UAAA,CAAW,KAAK,CAAA,CAAA;AACjD,IAAM,MAAA,OAAA,GAAU,UAAU,MAAM,CAAA,CAAA;AAEhC,IAAM,MAAA,WAAA,GAAc,CAAC,KAAqC,KAAA;AACxD,MAAA,MAAA,CAAO,KAAK,CAAA,CAAA;AACZ,MAAU,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAA,KAAA,CAAA,CAAA;AAAA,KACZ,CAAA;AAEA,IAAA,uBACG,GAAA,CAAA,IAAA,EAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAW,EAAA,IAAA;AAAA,QACT,YAAa,EAAA;AAAA,QACb;AAAA,UACE,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,UAC5B,CAAC,YAAa,CAAA,SAAS,CAAI,GAAA,OAAA;AAAA,SAC7B;AAAA,QACA,SAAA;AAAA,OACF;AAAA,MACA,IAAK,EAAA,QAAA;AAAA,MACL,iBAAe,QAAY,IAAA,KAAA,CAAA;AAAA,MAC3B,iBAAe,QAAY,IAAA,KAAA,CAAA;AAAA,MAC3B,EAAI,EAAA,MAAA;AAAA,MACJ,YAAY,EAAA,KAAA;AAAA,MACZ,OAAS,EAAA,WAAA;AAAA,MACR,GAAG,KAAA;AAAA,MAEH,QAAA;AAAA,KACH,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -0,0 +1,4 @@
1
+ var css_248z = "/* Style applied to the root element */\n.saltListNext {\n margin: 0;\n background: var(--salt-container-primary-background);\n border-color: var(--salt-container-primary-borderColor);\n border-style: var(--salt-container-borderStyle);\n border-width: var(--salt-size-border);\n height: 100%;\n outline: none;\n overflow-y: auto;\n overflow-x: hidden;\n position: relative;\n padding-inline-start: 0;\n box-sizing: content-box;\n}\n";
2
+
3
+ export { css_248z as default };
4
+ //# sourceMappingURL=ListNext.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListNext.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,88 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { makePrefixer, useId, useForkRef } from '@salt-ds/core';
3
+ import { forwardRef, useRef } from 'react';
4
+ import { clsx } from 'clsx';
5
+ import { useList } from './useList.js';
6
+ import { useWindow } from '@salt-ds/window';
7
+ import { useComponentCssInjection } from '@salt-ds/styles';
8
+ import css_248z from './ListNext.css.js';
9
+ import { ListNextContext } from './ListNextContext.js';
10
+
11
+ const withBaseName = makePrefixer("saltListNext");
12
+ const ListNext = forwardRef(
13
+ function ListNext2({
14
+ children,
15
+ className,
16
+ disabled,
17
+ id,
18
+ onSelect,
19
+ onFocus,
20
+ onBlur,
21
+ onKeyDown,
22
+ onMouseDown,
23
+ selected,
24
+ defaultSelected,
25
+ ...rest
26
+ }, ref) {
27
+ const targetWindow = useWindow();
28
+ useComponentCssInjection({
29
+ testId: "salt-list-next",
30
+ css: css_248z,
31
+ window: targetWindow
32
+ });
33
+ const listId = useId(id);
34
+ const listRef = useRef(null);
35
+ const handleRef = useForkRef(listRef, ref);
36
+ const {
37
+ focusHandler,
38
+ keyDownHandler,
39
+ blurHandler,
40
+ mouseDownHandler,
41
+ activeDescendant,
42
+ contextValue
43
+ } = useList({
44
+ disabled,
45
+ selected,
46
+ defaultSelected,
47
+ id: listId,
48
+ ref: listRef
49
+ });
50
+ const handleFocus = (event) => {
51
+ focusHandler();
52
+ onFocus == null ? void 0 : onFocus(event);
53
+ };
54
+ const handleKeyDown = (event) => {
55
+ keyDownHandler(event);
56
+ onKeyDown == null ? void 0 : onKeyDown(event);
57
+ };
58
+ const handleBlur = (event) => {
59
+ blurHandler();
60
+ onBlur == null ? void 0 : onBlur(event);
61
+ };
62
+ const handleMouseDown = (event) => {
63
+ mouseDownHandler();
64
+ onMouseDown == null ? void 0 : onMouseDown(event);
65
+ };
66
+ return /* @__PURE__ */ jsx(ListNextContext.Provider, {
67
+ value: contextValue,
68
+ children: /* @__PURE__ */ jsx("ul", {
69
+ ref: handleRef,
70
+ id: listId,
71
+ className: clsx(withBaseName(), className),
72
+ role: "listbox",
73
+ tabIndex: disabled ? -1 : 0,
74
+ "aria-activedescendant": disabled ? void 0 : activeDescendant,
75
+ "aria-disabled": disabled,
76
+ onFocus: handleFocus,
77
+ onKeyDown: handleKeyDown,
78
+ onBlur: handleBlur,
79
+ onMouseDown: handleMouseDown,
80
+ ...rest,
81
+ children
82
+ })
83
+ });
84
+ }
85
+ );
86
+
87
+ export { ListNext };
88
+ //# sourceMappingURL=ListNext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListNext.js","sources":["../src/list-next/ListNext.tsx"],"sourcesContent":["import { makePrefixer, useForkRef, useId } from \"@salt-ds/core\";\nimport {\n FocusEvent,\n forwardRef,\n HTMLAttributes,\n KeyboardEvent,\n MouseEvent,\n useRef,\n} from \"react\";\nimport { clsx } from \"clsx\";\nimport { useList } from \"./useList\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport listNextCss from \"./ListNext.css\";\nimport { ListNextContext } from \"./ListNextContext\";\n\nconst withBaseName = makePrefixer(\"saltListNext\");\n\nexport interface ListNextProps extends HTMLAttributes<HTMLUListElement> {\n /**\n * If true, all items in list will be disabled.\n */\n disabled?: boolean;\n /* Value for the uncontrolled version. */\n selected?: string;\n /* Initial value for the uncontrolled version. */\n defaultSelected?: string;\n}\n\nexport const ListNext = forwardRef<HTMLUListElement, ListNextProps>(\n function ListNext(\n {\n children,\n className,\n disabled,\n id,\n onSelect,\n onFocus,\n onBlur,\n onKeyDown,\n onMouseDown,\n selected,\n defaultSelected,\n ...rest\n },\n ref\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-list-next\",\n css: listNextCss,\n window: targetWindow,\n });\n\n const listId = useId(id);\n const listRef = useRef<HTMLUListElement>(null);\n const handleRef = useForkRef(listRef, ref);\n\n const {\n focusHandler,\n keyDownHandler,\n blurHandler,\n mouseDownHandler,\n activeDescendant,\n contextValue,\n } = useList({\n disabled,\n selected,\n defaultSelected,\n id: listId,\n ref: listRef,\n });\n\n const handleFocus = (event: FocusEvent<HTMLUListElement>) => {\n focusHandler();\n onFocus?.(event);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLUListElement>) => {\n keyDownHandler(event);\n onKeyDown?.(event);\n };\n\n const handleBlur = (event: FocusEvent<HTMLUListElement>) => {\n blurHandler();\n onBlur?.(event);\n };\n\n const handleMouseDown = (event: MouseEvent<HTMLUListElement>) => {\n mouseDownHandler();\n onMouseDown?.(event);\n };\n\n return (\n <ListNextContext.Provider value={contextValue}>\n <ul\n ref={handleRef}\n id={listId}\n className={clsx(withBaseName(), className)}\n role=\"listbox\"\n tabIndex={disabled ? -1 : 0}\n aria-activedescendant={disabled ? undefined : activeDescendant}\n aria-disabled={disabled}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n onMouseDown={handleMouseDown}\n {...rest}\n >\n {children}\n </ul>\n </ListNextContext.Provider>\n );\n }\n);\n"],"names":["ListNext","listNextCss"],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { createContext } from '@salt-ds/core';
2
+ import { useContext } from 'react';
3
+
4
+ const ListNextContext = createContext(
5
+ "ListNextContext",
6
+ void 0
7
+ );
8
+ function useListItem() {
9
+ return useContext(ListNextContext);
10
+ }
11
+
12
+ export { ListNextContext, useListItem };
13
+ //# sourceMappingURL=ListNextContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListNextContext.js","sources":["../src/list-next/ListNextContext.tsx"],"sourcesContent":["import { createContext } from \"@salt-ds/core\";\nimport { SyntheticEvent, useContext } from \"react\";\n\nexport interface ListNextContextValue {\n disabled?: boolean;\n id?: string;\n select: (event: SyntheticEvent<HTMLLIElement>) => void;\n isSelected: (id: string) => boolean;\n isFocused: (id: string) => boolean;\n}\n\nexport const ListNextContext = createContext<ListNextContextValue | undefined>(\n \"ListNextContext\",\n undefined\n);\n\nexport function useListItem() {\n return useContext(ListNextContext);\n}\n"],"names":[],"mappings":";;;AAWO,MAAM,eAAkB,GAAA,aAAA;AAAA,EAC7B,iBAAA;AAAA,EACA,KAAA,CAAA;AACF,EAAA;AAEO,SAAS,WAAc,GAAA;AAC5B,EAAA,OAAO,WAAW,eAAe,CAAA,CAAA;AACnC;;;;"}
@@ -0,0 +1,184 @@
1
+ import { useState, useCallback, useMemo } from 'react';
2
+ import { useControlled } from '@salt-ds/core';
3
+
4
+ const useList = ({
5
+ disabled = false,
6
+ selected: selectedProp,
7
+ defaultSelected,
8
+ onChange,
9
+ id,
10
+ ref
11
+ }) => {
12
+ const [activeDescendant, setActiveDescendant] = useState(
13
+ void 0
14
+ );
15
+ const [showFocusRing, setShowFocusRing] = useState(false);
16
+ const [selectedItem, setSelectedItem] = useControlled({
17
+ controlled: selectedProp,
18
+ default: defaultSelected,
19
+ name: "ListNext",
20
+ state: "selected"
21
+ });
22
+ const getOptions = useCallback(() => {
23
+ var _a, _b;
24
+ return Array.from(
25
+ (_b = (_a = ref.current) == null ? void 0 : _a.querySelectorAll('[role="option"]:not([aria-disabled])')) != null ? _b : []
26
+ );
27
+ }, [ref]);
28
+ const updateScroll = useCallback(
29
+ (currentTarget) => {
30
+ const list = ref.current;
31
+ if (!list || !currentTarget)
32
+ return;
33
+ const { offsetTop, offsetHeight } = currentTarget;
34
+ const listHeight = list == null ? void 0 : list.clientHeight;
35
+ const listScrollTop = list == null ? void 0 : list.scrollTop;
36
+ if (offsetTop < listScrollTop) {
37
+ list.scrollTop = offsetTop;
38
+ } else if (offsetTop + offsetHeight > listScrollTop + listHeight) {
39
+ list.scrollTop = offsetTop + offsetHeight - listHeight;
40
+ }
41
+ },
42
+ [ref]
43
+ );
44
+ const updateActiveDescendant = useCallback(
45
+ (element) => {
46
+ setActiveDescendant(element.id);
47
+ updateScroll(element);
48
+ },
49
+ [setActiveDescendant, updateScroll]
50
+ );
51
+ const selectItem = useCallback(
52
+ (element) => {
53
+ const newValue = element == null ? void 0 : element.dataset.value;
54
+ if (newValue) {
55
+ setSelectedItem(newValue);
56
+ updateActiveDescendant(element);
57
+ }
58
+ },
59
+ [setSelectedItem, updateActiveDescendant]
60
+ );
61
+ const focusAndMoveActive = (element) => {
62
+ setShowFocusRing(true);
63
+ updateActiveDescendant(element);
64
+ };
65
+ const focusFirstItem = () => {
66
+ const activeOptions = getOptions();
67
+ const firstItem = activeOptions[0];
68
+ if (firstItem) {
69
+ focusAndMoveActive(firstItem);
70
+ }
71
+ };
72
+ const focusLastItem = () => {
73
+ const activeOptions = getOptions();
74
+ const lastItem = activeOptions[activeOptions.length - 1];
75
+ if (lastItem) {
76
+ focusAndMoveActive(lastItem);
77
+ updateScroll(lastItem);
78
+ }
79
+ };
80
+ const findNextOption = (currentOption, moves) => {
81
+ const activeOptions = getOptions();
82
+ const nextOptionIndex = currentOption ? activeOptions.indexOf(currentOption) + moves : 0;
83
+ return activeOptions[nextOptionIndex] || activeOptions[activeOptions.length - 1];
84
+ };
85
+ const findPreviousOption = (currentOption, moves) => {
86
+ const activeOptions = getOptions();
87
+ const currentOptionIndex = activeOptions.findIndex(
88
+ (i) => i.id === currentOption.id
89
+ );
90
+ return activeOptions[currentOptionIndex - moves] || activeOptions[0];
91
+ };
92
+ const select = useCallback(
93
+ (event) => {
94
+ const newValue = event.currentTarget.dataset.value;
95
+ if (event.type === "click") {
96
+ setShowFocusRing(false);
97
+ }
98
+ const activeOptions = getOptions();
99
+ const isActiveOption = activeOptions.findIndex((i) => i.id === event.currentTarget.id) !== -1;
100
+ if (newValue && selectedItem !== newValue && isActiveOption) {
101
+ selectItem(event.currentTarget);
102
+ onChange == null ? void 0 : onChange(event, { value: newValue });
103
+ }
104
+ },
105
+ [selectItem, selectedItem, onChange, getOptions]
106
+ );
107
+ const isSelected = useCallback(
108
+ (id2) => selectedItem === id2,
109
+ [selectedItem]
110
+ );
111
+ const isFocused = useCallback(
112
+ (id2) => activeDescendant === id2 && showFocusRing,
113
+ [activeDescendant, showFocusRing]
114
+ );
115
+ const getActiveItem = () => {
116
+ const activeOptions = getOptions();
117
+ const activeIndex = activeOptions.findIndex(
118
+ (i) => i.id === activeDescendant
119
+ );
120
+ return activeOptions[activeIndex !== -1 ? activeIndex : 0];
121
+ };
122
+ const blurHandler = () => {
123
+ setShowFocusRing(false);
124
+ };
125
+ const mouseDownHandler = () => {
126
+ setShowFocusRing(false);
127
+ };
128
+ const focusHandler = () => {
129
+ const activeElement = getActiveItem();
130
+ focusAndMoveActive(activeElement);
131
+ };
132
+ const keyDownHandler = (event) => {
133
+ const { key } = event;
134
+ const currentItem = getActiveItem();
135
+ let nextItem = currentItem;
136
+ if (!currentItem) {
137
+ return;
138
+ }
139
+ switch (key) {
140
+ case "ArrowUp":
141
+ case "ArrowDown":
142
+ nextItem = key === "ArrowUp" ? findPreviousOption(currentItem, 1) : findNextOption(currentItem, 1);
143
+ if (nextItem && nextItem !== currentItem) {
144
+ event.preventDefault();
145
+ focusAndMoveActive(nextItem);
146
+ }
147
+ break;
148
+ case "Home":
149
+ event.preventDefault();
150
+ focusFirstItem();
151
+ break;
152
+ case "End":
153
+ event.preventDefault();
154
+ focusLastItem();
155
+ break;
156
+ case " ":
157
+ case "Enter":
158
+ event.preventDefault();
159
+ nextItem && selectItem(nextItem);
160
+ break;
161
+ }
162
+ };
163
+ const contextValue = useMemo(
164
+ () => ({
165
+ disabled,
166
+ id,
167
+ select,
168
+ isSelected,
169
+ isFocused
170
+ }),
171
+ [disabled, id, select, isSelected, isFocused]
172
+ );
173
+ return {
174
+ focusHandler,
175
+ keyDownHandler,
176
+ blurHandler,
177
+ mouseDownHandler,
178
+ activeDescendant,
179
+ contextValue
180
+ };
181
+ };
182
+
183
+ export { useList };
184
+ //# sourceMappingURL=useList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useList.js","sources":["../src/list-next/useList.ts"],"sourcesContent":["import {\n KeyboardEvent,\n RefObject,\n SyntheticEvent,\n useCallback,\n useMemo,\n useState,\n} from \"react\";\nimport { useControlled } from \"@salt-ds/core\";\n\ninterface UseListProps {\n /**\n * If true, all items in list will be disabled.\n */\n disabled?: boolean;\n /* Value for the uncontrolled version. */\n selected?: string;\n /* Initial value for the uncontrolled version. */\n defaultSelected?: string;\n /* Callback for the controlled version. */\n onChange?: (e: SyntheticEvent, data: { value: string }) => void;\n id?: string;\n ref: RefObject<HTMLUListElement>;\n}\n\nexport const useList = ({\n disabled = false,\n selected: selectedProp,\n defaultSelected,\n onChange,\n id,\n ref,\n}: UseListProps) => {\n const [activeDescendant, setActiveDescendant] = useState<string | undefined>(\n undefined\n );\n\n const [showFocusRing, setShowFocusRing] = useState<boolean>(false);\n const [selectedItem, setSelectedItem] = useControlled({\n controlled: selectedProp,\n default: defaultSelected,\n name: \"ListNext\",\n state: \"selected\",\n });\n\n const getOptions: () => HTMLElement[] = useCallback(() => {\n return Array.from(\n ref.current?.querySelectorAll('[role=\"option\"]:not([aria-disabled])') ??\n []\n );\n }, [ref]);\n\n const updateScroll = useCallback(\n (currentTarget: Element) => {\n const list = ref.current;\n if (!list || !currentTarget) return;\n const { offsetTop, offsetHeight } = currentTarget as HTMLLIElement;\n const listHeight = list?.clientHeight;\n const listScrollTop = list?.scrollTop;\n if (offsetTop < listScrollTop) {\n list.scrollTop = offsetTop;\n } else if (offsetTop + offsetHeight > listScrollTop + listHeight) {\n list.scrollTop = offsetTop + offsetHeight - listHeight;\n }\n },\n [ref]\n );\n\n const updateActiveDescendant = useCallback(\n (element: HTMLElement) => {\n setActiveDescendant(element.id);\n updateScroll(element);\n },\n [setActiveDescendant, updateScroll]\n );\n const selectItem = useCallback(\n (element: HTMLElement) => {\n const newValue = element?.dataset.value;\n if (newValue) {\n setSelectedItem(newValue);\n updateActiveDescendant(element);\n }\n },\n [setSelectedItem, updateActiveDescendant]\n );\n\n const focusAndMoveActive = (element: HTMLElement) => {\n setShowFocusRing(true);\n updateActiveDescendant(element);\n };\n\n const focusFirstItem = () => {\n // Find first active item\n const activeOptions = getOptions();\n const firstItem = activeOptions[0];\n if (firstItem) {\n focusAndMoveActive(firstItem);\n }\n };\n const focusLastItem = () => {\n // Find last active item\n const activeOptions = getOptions();\n const lastItem = activeOptions[activeOptions.length - 1];\n if (lastItem) {\n focusAndMoveActive(lastItem);\n updateScroll(lastItem);\n }\n };\n\n const findNextOption = (\n currentOption: HTMLElement | null,\n moves: number\n ): HTMLElement => {\n const activeOptions = getOptions();\n // Returns next item, if no current option it will return 0\n const nextOptionIndex = currentOption\n ? activeOptions.indexOf(currentOption) + moves\n : 0;\n return (\n activeOptions[nextOptionIndex] || activeOptions[activeOptions.length - 1]\n );\n };\n\n const findPreviousOption = (\n currentOption: HTMLElement,\n moves: number\n ): HTMLElement => {\n // Return the previous option if it exists; otherwise, returns first option\n const activeOptions = getOptions();\n const currentOptionIndex = activeOptions.findIndex(\n (i) => i.id === currentOption.id\n );\n return activeOptions[currentOptionIndex - moves] || activeOptions[0];\n };\n\n // CONTEXT CALLBACKS\n const select = useCallback(\n (event: SyntheticEvent<HTMLLIElement>) => {\n const newValue = event.currentTarget.dataset.value;\n if (event.type === \"click\") {\n setShowFocusRing(false);\n }\n const activeOptions = getOptions();\n const isActiveOption =\n activeOptions.findIndex((i) => i.id === event.currentTarget.id) !== -1;\n if (newValue && selectedItem !== newValue && isActiveOption) {\n selectItem(event.currentTarget);\n onChange?.(event, { value: newValue });\n }\n },\n [selectItem, selectedItem, onChange, getOptions]\n );\n\n const isSelected = useCallback(\n (id: string) => selectedItem === id,\n [selectedItem]\n );\n\n const isFocused = useCallback(\n (id: string | undefined) => activeDescendant === id && showFocusRing,\n [activeDescendant, showFocusRing]\n );\n\n const getActiveItem = () => {\n const activeOptions = getOptions();\n const activeIndex = activeOptions.findIndex(\n (i) => i.id === activeDescendant\n );\n return activeOptions[activeIndex !== -1 ? activeIndex : 0];\n };\n\n // HANDLERS\n const blurHandler = () => {\n setShowFocusRing(false);\n };\n\n const mouseDownHandler = () => {\n // When list gets focused, we can't guarantee that focus happens after click event.\n // If first focus (where !activeDescendant) happens from a click, list shouldn't render focus ring in the first element.\n setShowFocusRing(false);\n };\n\n // takes care of focus when using keyboard navigation\n const focusHandler = () => {\n const activeElement = getActiveItem();\n focusAndMoveActive(activeElement);\n };\n\n // takes care of keydown when using keyboard navigation\n const keyDownHandler = (event: KeyboardEvent<HTMLUListElement>) => {\n const { key } = event;\n const currentItem = getActiveItem();\n let nextItem = currentItem;\n if (!currentItem) {\n return;\n }\n switch (key) {\n case \"ArrowUp\":\n case \"ArrowDown\":\n nextItem =\n key === \"ArrowUp\"\n ? findPreviousOption(currentItem, 1)\n : findNextOption(currentItem, 1);\n\n if (nextItem && nextItem !== currentItem) {\n event.preventDefault();\n focusAndMoveActive(nextItem);\n }\n break;\n case \"Home\":\n event.preventDefault();\n focusFirstItem();\n break;\n case \"End\":\n event.preventDefault();\n focusLastItem();\n break;\n case \" \":\n case \"Enter\":\n event.preventDefault();\n nextItem && selectItem(nextItem);\n break;\n default:\n break;\n }\n };\n\n // CONTEXT\n const contextValue = useMemo(\n () => ({\n disabled,\n id,\n select,\n isSelected,\n isFocused,\n }),\n [disabled, id, select, isSelected, isFocused]\n );\n\n return {\n focusHandler,\n keyDownHandler,\n blurHandler,\n mouseDownHandler,\n activeDescendant,\n contextValue,\n };\n};\n"],"names":["id"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- var css_248z = ".salt-density-high {\n --logo-height: var(--saltLogo-logo-height, 14px);\n}\n.salt-density-medium {\n --logo-height: var(--saltLogo-logo-height, 20px);\n}\n.salt-density-low {\n --logo-height: var(--saltLogo-logo-height, 26px);\n}\n.salt-density-touch {\n --logo-height: var(--saltLogo-logo-height, 32px);\n}\n\n.saltLogo {\n --logo-color: var(--saltLogo-color, var(--salt-text-secondary-foreground));\n --logo-divider-color: var(--saltLogo-pipe-color, var(--salt-separable-secondary-borderColor));\n --logo-divider-height: var(--saltLogo-title-height, var(--salt-size-separator-height));\n --logo-divider-margin: 0 calc(var(--salt-size-unit) * 2);\n --logo-fontSize: var(--salt-text-fontSize);\n --logo-lineHeight: var(--salt-text-lineHeight);\n}\n\n.saltLogo-compact {\n --logo-pipe-margin: 0 calc(var(--salt-size-unit) * 1.5);\n}\n\n.saltLogo {\n display: inline-flex;\n position: relative;\n align-items: center;\n justify-content: center;\n height: var(--logo-height);\n}\n\n.saltLogo img {\n max-height: 100%;\n}\n\n.saltLogo-wrapper {\n display: inline-flex;\n position: relative;\n height: var(--logo-height);\n}\n\n.saltLogo-logo {\n fill: var(--logo-color);\n margin: auto;\n stroke: none !important;\n text-align: center;\n font-size: var(--logo-fontSize);\n line-height: var(--logo-lineHeight);\n}\n\n.saltLogo-appTitle {\n align-self: center;\n color: var(--logo-color);\n position: relative;\n}\n\n.saltLogo-titlePipe {\n border-right: 1px solid var(--logo-divider-color);\n margin: var(--logo-divider-margin);\n height: var(--logo-divider-height);\n}\n";
1
+ var css_248z = "/* Styles for Logo */\n.saltLogo {\n display: inline-flex;\n position: relative;\n align-items: center;\n justify-content: center;\n height: var(--salt-size-base);\n}\n\n.saltLogo svg {\n fill: var(--salt-text-secondary-foreground);\n stroke: none;\n}\n";
2
2
 
3
3
  export { css_248z as default };
4
4
  //# sourceMappingURL=Logo.css.js.map
@@ -1,56 +1,24 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
1
+ import { jsx } from 'react/jsx-runtime';
2
2
  import { forwardRef } from 'react';
3
3
  import { clsx } from 'clsx';
4
4
  import { makePrefixer } from '@salt-ds/core';
5
- import { LogoTitle } from './internal/LogoTitle.js';
6
5
  import { useWindow } from '@salt-ds/window';
7
6
  import { useComponentCssInjection } from '@salt-ds/styles';
8
7
  import css_248z from './Logo.css.js';
9
8
 
10
9
  const withBaseName = makePrefixer("saltLogo");
11
10
  const Logo = forwardRef(function Logo2(props, ref) {
12
- const {
13
- appTitle,
14
- className,
15
- compact,
16
- src,
17
- ImageProps,
18
- LogoImageComponent = "img",
19
- TitleProps,
20
- ...rest
21
- } = props;
11
+ const { className, ...rest } = props;
22
12
  const targetWindow = useWindow();
23
13
  useComponentCssInjection({
24
14
  testId: "salt-logo",
25
15
  css: css_248z,
26
16
  window: targetWindow
27
17
  });
28
- return /* @__PURE__ */ jsxs("span", {
29
- className: clsx(withBaseName(), className, {
30
- [withBaseName("compact")]: compact
31
- }),
18
+ return /* @__PURE__ */ jsx("span", {
19
+ className: clsx(withBaseName(), className),
32
20
  ref,
33
- ...rest,
34
- children: [
35
- /* @__PURE__ */ jsx("span", {
36
- className: withBaseName("wrapper"),
37
- children: /* @__PURE__ */ jsx(LogoImageComponent, {
38
- ...ImageProps,
39
- className: clsx(withBaseName("logo"), ImageProps == null ? void 0 : ImageProps.className),
40
- src,
41
- alt: (ImageProps == null ? void 0 : ImageProps.alt) || "Logo"
42
- })
43
- }),
44
- /* @__PURE__ */ jsx(LogoTitle, {
45
- ...TitleProps,
46
- className: clsx(withBaseName("appTitle"), TitleProps == null ? void 0 : TitleProps.className),
47
- label: appTitle,
48
- separatorClassname: clsx(
49
- withBaseName("titlePipe"),
50
- TitleProps == null ? void 0 : TitleProps.separatorClassname
51
- )
52
- })
53
- ]
21
+ ...rest
54
22
  });
55
23
  });
56
24
 
@@ -1 +1 @@
1
- {"version":3,"file":"Logo.js","sources":["../src/logo/Logo.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, ComponentType, forwardRef } from \"react\";\nimport { clsx } from \"clsx\";\nimport { makePrefixer } from \"@salt-ds/core\";\n\nimport { LogoTitle, LogoTitleProps } from \"./internal/LogoTitle\";\n\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport logoCss from \"./Logo.css\";\n\nexport interface LogoProps extends ComponentPropsWithoutRef<\"span\"> {\n /**\n * Used to provide application title\n */\n appTitle?: string;\n /**\n * If `true`, the logo will be compact;\n */\n compact?: boolean;\n /**\n * Props passed to the Logo.\n */\n ImageProps?: Partial<ComponentPropsWithoutRef<\"img\">>;\n /**\n * Custom Component to render the logo image.\n * e.g. if a custom renderer instead of static image using `src` prop.\n */\n LogoImageComponent?: ComponentType<Partial<ComponentPropsWithoutRef<\"img\">>>;\n /**\n * Image src for logo.\n */\n src?: string;\n /**\n * Props passed to the Application Title if used.\n * If using a custom image then ImageProps.alt should be set to include a screen reader alternative text.\n */\n TitleProps?: Omit<Partial<LogoTitleProps>, \"label\">;\n}\n\nconst withBaseName = makePrefixer(\"saltLogo\");\n\nexport const Logo = forwardRef<HTMLSpanElement, LogoProps>(function Logo(\n props,\n ref\n) {\n const {\n appTitle,\n className,\n compact,\n src,\n ImageProps,\n LogoImageComponent = \"img\",\n TitleProps,\n ...rest\n } = props;\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-logo\",\n css: logoCss,\n window: targetWindow,\n });\n\n // TODO check if we need ImageProps and TitleProps classNames interface.\n return (\n <span\n className={clsx(withBaseName(), className, {\n [withBaseName(\"compact\")]: compact,\n })}\n ref={ref}\n {...rest}\n >\n <span className={withBaseName(\"wrapper\")}>\n <LogoImageComponent\n {...ImageProps}\n className={clsx(withBaseName(\"logo\"), ImageProps?.className)}\n src={src}\n alt={ImageProps?.alt || \"Logo\"}\n />\n </span>\n <LogoTitle\n {...TitleProps}\n className={clsx(withBaseName(\"appTitle\"), TitleProps?.className)}\n label={appTitle}\n separatorClassname={clsx(\n withBaseName(\"titlePipe\"),\n TitleProps?.separatorClassname\n )}\n />\n </span>\n );\n});\n"],"names":["Logo","logoCss"],"mappings":";;;;;;;;;AAwCA,MAAM,YAAA,GAAe,aAAa,UAAU,CAAA,CAAA;AAErC,MAAM,IAAO,GAAA,UAAA,CAAuC,SAASA,KAAAA,CAClE,OACA,GACA,EAAA;AACA,EAAM,MAAA;AAAA,IACJ,QAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA,GAAA;AAAA,IACA,UAAA;AAAA,IACA,kBAAqB,GAAA,KAAA;AAAA,IACrB,UAAA;AAAA,IACG,GAAA,IAAA;AAAA,GACD,GAAA,KAAA,CAAA;AACJ,EAAA,MAAM,eAAe,SAAU,EAAA,CAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,WAAA;AAAA,IACR,GAAK,EAAAC,QAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAGD,EAAA,uBACG,IAAA,CAAA,MAAA,EAAA;AAAA,IACC,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAW,EAAA;AAAA,MACzC,CAAC,YAAa,CAAA,SAAS,CAAI,GAAA,OAAA;AAAA,KAC5B,CAAA;AAAA,IACD,GAAA;AAAA,IACC,GAAG,IAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAC,GAAA,CAAA,MAAA,EAAA;AAAA,QAAK,SAAA,EAAW,aAAa,SAAS,CAAA;AAAA,QACrC,QAAC,kBAAA,GAAA,CAAA,kBAAA,EAAA;AAAA,UACE,GAAG,UAAA;AAAA,UACJ,WAAW,IAAK,CAAA,YAAA,CAAa,MAAM,CAAA,EAAG,yCAAY,SAAS,CAAA;AAAA,UAC3D,GAAA;AAAA,UACA,GAAA,EAAA,CAAK,yCAAY,GAAO,KAAA,MAAA;AAAA,SAC1B,CAAA;AAAA,OACF,CAAA;AAAA,sBACC,GAAA,CAAA,SAAA,EAAA;AAAA,QACE,GAAG,UAAA;AAAA,QACJ,WAAW,IAAK,CAAA,YAAA,CAAa,UAAU,CAAA,EAAG,yCAAY,SAAS,CAAA;AAAA,QAC/D,KAAO,EAAA,QAAA;AAAA,QACP,kBAAoB,EAAA,IAAA;AAAA,UAClB,aAAa,WAAW,CAAA;AAAA,UACxB,UAAY,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAA,kBAAA;AAAA,SACd;AAAA,OACF,CAAA;AAAA,KAAA;AAAA,GACF,CAAA,CAAA;AAEJ,CAAC;;;;"}
1
+ {"version":3,"file":"Logo.js","sources":["../src/logo/Logo.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport { clsx } from \"clsx\";\nimport { makePrefixer } from \"@salt-ds/core\";\n\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport logoCss from \"./Logo.css\";\n\nexport type LogoProps = ComponentPropsWithoutRef<\"span\">;\n\nconst withBaseName = makePrefixer(\"saltLogo\");\n\nexport const Logo = forwardRef<HTMLSpanElement, LogoProps>(function Logo(\n props,\n ref\n) {\n const { className, ...rest } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-logo\",\n css: logoCss,\n window: targetWindow,\n });\n\n return (\n <span className={clsx(withBaseName(), className)} ref={ref} {...rest} />\n );\n});\n"],"names":["Logo","logoCss"],"mappings":";;;;;;;;AAWA,MAAM,YAAA,GAAe,aAAa,UAAU,CAAA,CAAA;AAErC,MAAM,IAAO,GAAA,UAAA,CAAuC,SAASA,KAAAA,CAClE,OACA,GACA,EAAA;AACA,EAAM,MAAA,EAAE,SAAc,EAAA,GAAA,IAAA,EAAS,GAAA,KAAA,CAAA;AAE/B,EAAA,MAAM,eAAe,SAAU,EAAA,CAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,WAAA;AAAA,IACR,GAAK,EAAAC,QAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAA,uBACG,GAAA,CAAA,MAAA,EAAA;AAAA,IAAK,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,IAAG,GAAA;AAAA,IAAW,GAAG,IAAA;AAAA,GAAM,CAAA,CAAA;AAE1E,CAAC;;;;"}
@@ -0,0 +1,20 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { forwardRef } from 'react';
3
+ import { clsx } from 'clsx';
4
+ import { makePrefixer } from '@salt-ds/core';
5
+
6
+ const withBaseName = makePrefixer("saltLogoImage");
7
+ const LogoImage = forwardRef(
8
+ function LogoImage2(props, ref) {
9
+ const { className, alt, ...rest } = props;
10
+ return /* @__PURE__ */ jsx("img", {
11
+ ...rest,
12
+ alt,
13
+ className: clsx(withBaseName(), className),
14
+ ref
15
+ });
16
+ }
17
+ );
18
+
19
+ export { LogoImage };
20
+ //# sourceMappingURL=LogoImage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogoImage.js","sources":["../src/logo/LogoImage.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport { clsx } from \"clsx\";\nimport { makePrefixer } from \"@salt-ds/core\";\n\nexport interface LogoImageProps\n extends Omit<ComponentPropsWithoutRef<\"img\">, \"alt\"> {\n alt: string;\n}\n\nconst withBaseName = makePrefixer(\"saltLogoImage\");\n\nexport const LogoImage = forwardRef<HTMLImageElement, LogoImageProps>(\n function LogoImage(props, ref) {\n const { className, alt, ...rest } = props;\n\n return (\n <img\n {...rest}\n alt={alt}\n className={clsx(withBaseName(), className)}\n ref={ref}\n />\n );\n }\n);\n"],"names":["LogoImage"],"mappings":";;;;;AASA,MAAM,YAAA,GAAe,aAAa,eAAe,CAAA,CAAA;AAE1C,MAAM,SAAY,GAAA,UAAA;AAAA,EACvB,SAASA,UAAU,CAAA,KAAA,EAAO,GAAK,EAAA;AAC7B,IAAA,MAAM,EAAE,SAAA,EAAW,GAAQ,EAAA,GAAA,IAAA,EAAS,GAAA,KAAA,CAAA;AAEpC,IAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,GAAA;AAAA,MACA,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MACzC,GAAA;AAAA,KACF,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -0,0 +1,4 @@
1
+ var css_248z = "/* Styles for LogoSeparator */\n.saltLogoSeparator {\n height: var(--salt-size-separator-height);\n margin: 0 var(--salt-spacing-100);\n border-right: var(--salt-size-border) var(--salt-separable-borderStyle) var(--salt-separable-primary-borderColor);\n}\n";
2
+
3
+ export { css_248z as default };
4
+ //# sourceMappingURL=LogoSeparator.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogoSeparator.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,28 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { forwardRef } from 'react';
3
+ import { clsx } from 'clsx';
4
+ import { makePrefixer } from '@salt-ds/core';
5
+ import { useWindow } from '@salt-ds/window';
6
+ import { useComponentCssInjection } from '@salt-ds/styles';
7
+ import css_248z from './LogoSeparator.css.js';
8
+
9
+ const withBaseName = makePrefixer("saltLogoSeparator");
10
+ const LogoSeparator = forwardRef(
11
+ function LogoSeparator2(props, ref) {
12
+ const { className, ...rest } = props;
13
+ const targetWindow = useWindow();
14
+ useComponentCssInjection({
15
+ testId: "salt-logo-separator",
16
+ css: css_248z,
17
+ window: targetWindow
18
+ });
19
+ return /* @__PURE__ */ jsx("span", {
20
+ ...rest,
21
+ className: clsx(withBaseName(), className),
22
+ ref
23
+ });
24
+ }
25
+ );
26
+
27
+ export { LogoSeparator };
28
+ //# sourceMappingURL=LogoSeparator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogoSeparator.js","sources":["../src/logo/LogoSeparator.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport { clsx } from \"clsx\";\nimport { makePrefixer } from \"@salt-ds/core\";\n\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport logoSeparatorCss from \"./LogoSeparator.css\";\n\nexport type LogoSeparatorProps = ComponentPropsWithoutRef<\"span\">;\n\nconst withBaseName = makePrefixer(\"saltLogoSeparator\");\n\nexport const LogoSeparator = forwardRef<HTMLImageElement, LogoSeparatorProps>(\n function LogoSeparator(props, ref) {\n const { className, ...rest } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-logo-separator\",\n css: logoSeparatorCss,\n window: targetWindow,\n });\n\n return (\n <span {...rest} className={clsx(withBaseName(), className)} ref={ref} />\n );\n }\n);\n"],"names":["LogoSeparator","logoSeparatorCss"],"mappings":";;;;;;;;AAWA,MAAM,YAAA,GAAe,aAAa,mBAAmB,CAAA,CAAA;AAE9C,MAAM,aAAgB,GAAA,UAAA;AAAA,EAC3B,SAASA,cAAc,CAAA,KAAA,EAAO,GAAK,EAAA;AACjC,IAAM,MAAA,EAAE,SAAc,EAAA,GAAA,IAAA,EAAS,GAAA,KAAA,CAAA;AAE/B,IAAA,MAAM,eAAe,SAAU,EAAA,CAAA;AAC/B,IAAyB,wBAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,qBAAA;AAAA,MACR,GAAK,EAAAC,QAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAA,uBACG,GAAA,CAAA,MAAA,EAAA;AAAA,MAAM,GAAG,IAAA;AAAA,MAAM,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MAAG,GAAA;AAAA,KAAU,CAAA,CAAA;AAAA,GAE1E;AACF;;;;"}
@@ -3,7 +3,8 @@ import { makePrefixer } from '@salt-ds/core';
3
3
  import { FilterIcon } from '@salt-ds/icons';
4
4
  import { forwardRef, useMemo } from 'react';
5
5
  import { ToggleButton } from '../../toggle-button/ToggleButton.js';
6
- import { ToggleButtonGroup } from '../../toggle-button/ToggleButtonGroup.js';
6
+ import { ToggleButtonGroup } from '../../toggle-button-group/ToggleButtonGroup.js';
7
+ import '../../toggle-button-group/ToggleButtonGroupContext.js';
7
8
  import { TokenizedInput } from '../../tokenized-input/TokenizedInput.js';
8
9
  import '../../tokenized-input/TokenizedInputBase.js';
9
10
  import 'clipboard-copy';
@@ -42,8 +43,8 @@ const QueryInputBody = forwardRef(
42
43
  value
43
44
  };
44
45
  };
45
- const onChange = (event, index) => {
46
- const newBooleanOperator = index === 0 ? "and" : "or";
46
+ const onChange = (event) => {
47
+ const newBooleanOperator = event.currentTarget.value;
47
48
  onBooleanOperatorChange(newBooleanOperator);
48
49
  };
49
50
  return /* @__PURE__ */ jsxs("div", {
@@ -72,10 +73,9 @@ const QueryInputBody = forwardRef(
72
73
  className: withBaseName("separator")
73
74
  }),
74
75
  /* @__PURE__ */ jsxs(ToggleButtonGroup, {
75
- variant: "secondary",
76
76
  className: withBaseName("buttonGroup"),
77
77
  "data-testid": "boolean-selector",
78
- selectedIndex: booleanOperator === "and" ? 0 : 1,
78
+ value: booleanOperator,
79
79
  onChange,
80
80
  children: [
81
81
  /* @__PURE__ */ jsx(ToggleButton, {