@salt-ds/lab 1.0.0-alpha.15 → 1.0.0-alpha.16

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 (144) hide show
  1. package/dist-cjs/combo-box-next/ComboBoxNext.css.js +6 -0
  2. package/dist-cjs/combo-box-next/ComboBoxNext.css.js.map +1 -0
  3. package/dist-cjs/combo-box-next/ComboBoxNext.js +177 -0
  4. package/dist-cjs/combo-box-next/ComboBoxNext.js.map +1 -0
  5. package/dist-cjs/combo-box-next/useComboBox.js +137 -0
  6. package/dist-cjs/combo-box-next/useComboBox.js.map +1 -0
  7. package/dist-cjs/combo-box-next/useComboboxPortal.js +69 -0
  8. package/dist-cjs/combo-box-next/useComboboxPortal.js.map +1 -0
  9. package/dist-cjs/combo-box-next/utils.js +40 -0
  10. package/dist-cjs/combo-box-next/utils.js.map +1 -0
  11. package/dist-cjs/dialog/Dialog.css.js +1 -1
  12. package/dist-cjs/dialog/Dialog.js +53 -56
  13. package/dist-cjs/dialog/Dialog.js.map +1 -1
  14. package/dist-cjs/dialog/DialogActions.css.js +1 -1
  15. package/dist-cjs/dialog/DialogActions.js +15 -17
  16. package/dist-cjs/dialog/DialogActions.js.map +1 -1
  17. package/dist-cjs/dialog/DialogCloseButton.css.js +6 -0
  18. package/dist-cjs/dialog/DialogCloseButton.css.js.map +1 -0
  19. package/dist-cjs/dialog/DialogCloseButton.js +39 -0
  20. package/dist-cjs/dialog/DialogCloseButton.js.map +1 -0
  21. package/dist-cjs/dialog/DialogContent.css.js +1 -1
  22. package/dist-cjs/dialog/DialogContent.js +20 -29
  23. package/dist-cjs/dialog/DialogContent.js.map +1 -1
  24. package/dist-cjs/dialog/{internal/DialogContext.js → DialogContext.js} +4 -0
  25. package/dist-cjs/dialog/DialogContext.js.map +1 -0
  26. package/dist-cjs/dialog/DialogTitle.css.js +1 -1
  27. package/dist-cjs/dialog/DialogTitle.js +40 -41
  28. package/dist-cjs/dialog/DialogTitle.js.map +1 -1
  29. package/dist-cjs/dialog/useDialog.js +31 -0
  30. package/dist-cjs/dialog/useDialog.js.map +1 -0
  31. package/dist-cjs/dropdown-next/DropdownNext.css.js +6 -0
  32. package/dist-cjs/dropdown-next/DropdownNext.css.js.map +1 -0
  33. package/dist-cjs/dropdown-next/DropdownNext.js +181 -0
  34. package/dist-cjs/dropdown-next/DropdownNext.js.map +1 -0
  35. package/dist-cjs/dropdown-next/useDropdownNext.js +169 -0
  36. package/dist-cjs/dropdown-next/useDropdownNext.js.map +1 -0
  37. package/dist-cjs/index.js +15 -6
  38. package/dist-cjs/index.js.map +1 -1
  39. package/dist-cjs/list/Highlighter.js +1 -1
  40. package/dist-cjs/list/Highlighter.js.map +1 -1
  41. package/dist-cjs/list-next/useList.js.map +1 -1
  42. package/dist-cjs/logo/Logo.css.js +1 -1
  43. package/dist-cjs/logo/LogoImage.css.js +6 -0
  44. package/dist-cjs/logo/LogoImage.css.js.map +1 -0
  45. package/dist-cjs/logo/LogoImage.js +9 -0
  46. package/dist-cjs/logo/LogoImage.js.map +1 -1
  47. package/dist-cjs/logo/LogoSeparator.css.js +1 -1
  48. package/dist-cjs/{nav-item/ExpansionButton.js → navigation-item/ExpansionIcon.js} +7 -12
  49. package/dist-cjs/navigation-item/ExpansionIcon.js.map +1 -0
  50. package/dist-cjs/navigation-item/NavigationItem.css.js +6 -0
  51. package/dist-cjs/navigation-item/NavigationItem.css.js.map +1 -0
  52. package/dist-cjs/navigation-item/NavigationItem.js +96 -0
  53. package/dist-cjs/navigation-item/NavigationItem.js.map +1 -0
  54. package/dist-es/combo-box-next/ComboBoxNext.css.js +4 -0
  55. package/dist-es/combo-box-next/ComboBoxNext.css.js.map +1 -0
  56. package/dist-es/combo-box-next/ComboBoxNext.js +173 -0
  57. package/dist-es/combo-box-next/ComboBoxNext.js.map +1 -0
  58. package/dist-es/combo-box-next/useComboBox.js +133 -0
  59. package/dist-es/combo-box-next/useComboBox.js.map +1 -0
  60. package/dist-es/combo-box-next/useComboboxPortal.js +65 -0
  61. package/dist-es/combo-box-next/useComboboxPortal.js.map +1 -0
  62. package/dist-es/combo-box-next/utils.js +35 -0
  63. package/dist-es/combo-box-next/utils.js.map +1 -0
  64. package/dist-es/dialog/Dialog.css.js +1 -1
  65. package/dist-es/dialog/Dialog.js +53 -56
  66. package/dist-es/dialog/Dialog.js.map +1 -1
  67. package/dist-es/dialog/DialogActions.css.js +1 -1
  68. package/dist-es/dialog/DialogActions.js +15 -17
  69. package/dist-es/dialog/DialogActions.js.map +1 -1
  70. package/dist-es/dialog/DialogCloseButton.css.js +4 -0
  71. package/dist-es/dialog/DialogCloseButton.css.js.map +1 -0
  72. package/dist-es/dialog/DialogCloseButton.js +31 -0
  73. package/dist-es/dialog/DialogCloseButton.js.map +1 -0
  74. package/dist-es/dialog/DialogContent.css.js +1 -1
  75. package/dist-es/dialog/DialogContent.js +20 -29
  76. package/dist-es/dialog/DialogContent.js.map +1 -1
  77. package/dist-es/dialog/DialogContext.js +9 -0
  78. package/dist-es/dialog/DialogContext.js.map +1 -0
  79. package/dist-es/dialog/DialogTitle.css.js +1 -1
  80. package/dist-es/dialog/DialogTitle.js +37 -42
  81. package/dist-es/dialog/DialogTitle.js.map +1 -1
  82. package/dist-es/dialog/useDialog.js +27 -0
  83. package/dist-es/dialog/useDialog.js.map +1 -0
  84. package/dist-es/dropdown-next/DropdownNext.css.js +4 -0
  85. package/dist-es/dropdown-next/DropdownNext.css.js.map +1 -0
  86. package/dist-es/dropdown-next/DropdownNext.js +177 -0
  87. package/dist-es/dropdown-next/DropdownNext.js.map +1 -0
  88. package/dist-es/dropdown-next/useDropdownNext.js +165 -0
  89. package/dist-es/dropdown-next/useDropdownNext.js.map +1 -0
  90. package/dist-es/index.js +7 -3
  91. package/dist-es/index.js.map +1 -1
  92. package/dist-es/list/Highlighter.js +1 -1
  93. package/dist-es/list/Highlighter.js.map +1 -1
  94. package/dist-es/list-next/useList.js.map +1 -1
  95. package/dist-es/logo/Logo.css.js +1 -1
  96. package/dist-es/logo/LogoImage.css.js +4 -0
  97. package/dist-es/logo/LogoImage.css.js.map +1 -0
  98. package/dist-es/logo/LogoImage.js +9 -0
  99. package/dist-es/logo/LogoImage.js.map +1 -1
  100. package/dist-es/logo/LogoSeparator.css.js +1 -1
  101. package/dist-es/{nav-item/ExpansionButton.js → navigation-item/ExpansionIcon.js} +7 -12
  102. package/dist-es/navigation-item/ExpansionIcon.js.map +1 -0
  103. package/dist-es/navigation-item/NavigationItem.css.js +4 -0
  104. package/dist-es/navigation-item/NavigationItem.css.js.map +1 -0
  105. package/dist-es/navigation-item/NavigationItem.js +92 -0
  106. package/dist-es/navigation-item/NavigationItem.js.map +1 -0
  107. package/dist-types/combo-box-next/ComboBoxNext.d.ts +70 -0
  108. package/dist-types/combo-box-next/index.d.ts +1 -0
  109. package/dist-types/combo-box-next/useComboBox.d.ts +34 -0
  110. package/dist-types/combo-box-next/useComboboxPortal.d.ts +15 -0
  111. package/dist-types/combo-box-next/utils.d.ts +8 -0
  112. package/dist-types/dialog/Dialog.d.ts +17 -12
  113. package/dist-types/dialog/DialogActions.d.ts +1 -3
  114. package/dist-types/dialog/DialogCloseButton.d.ts +3 -0
  115. package/dist-types/dialog/DialogContent.d.ts +1 -3
  116. package/dist-types/dialog/{internal/DialogContext.d.ts → DialogContext.d.ts} +5 -2
  117. package/dist-types/dialog/DialogTitle.d.ts +7 -8
  118. package/dist-types/dialog/index.d.ts +4 -2
  119. package/dist-types/dialog/useDialog.d.ts +27 -0
  120. package/dist-types/dropdown-next/DropdownNext.d.ts +42 -0
  121. package/dist-types/dropdown-next/index.d.ts +1 -0
  122. package/dist-types/dropdown-next/useDropdownNext.d.ts +31 -0
  123. package/dist-types/index.d.ts +3 -1
  124. package/dist-types/list-next/useList.d.ts +2 -3
  125. package/dist-types/navigation-item/ExpansionIcon.d.ts +3 -0
  126. package/dist-types/navigation-item/NavigationItem.d.ts +36 -0
  127. package/dist-types/navigation-item/index.d.ts +1 -0
  128. package/package.json +4 -4
  129. package/dist-cjs/dialog/internal/DialogContext.js.map +0 -1
  130. package/dist-cjs/nav-item/ExpansionButton.js.map +0 -1
  131. package/dist-cjs/nav-item/NavItem.css.js +0 -6
  132. package/dist-cjs/nav-item/NavItem.css.js.map +0 -1
  133. package/dist-cjs/nav-item/NavItem.js +0 -88
  134. package/dist-cjs/nav-item/NavItem.js.map +0 -1
  135. package/dist-es/dialog/internal/DialogContext.js +0 -6
  136. package/dist-es/dialog/internal/DialogContext.js.map +0 -1
  137. package/dist-es/nav-item/ExpansionButton.js.map +0 -1
  138. package/dist-es/nav-item/NavItem.css.js +0 -4
  139. package/dist-es/nav-item/NavItem.css.js.map +0 -1
  140. package/dist-es/nav-item/NavItem.js +0 -84
  141. package/dist-es/nav-item/NavItem.js.map +0 -1
  142. package/dist-types/nav-item/ExpansionButton.d.ts +0 -3
  143. package/dist-types/nav-item/NavItem.d.ts +0 -45
  144. package/dist-types/nav-item/index.d.ts +0 -1
@@ -1,88 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var jsxRuntime = require('react/jsx-runtime');
6
- var React = require('react');
7
- var core = require('@salt-ds/core');
8
- var clsx = require('clsx');
9
- var ExpansionButton = require('./ExpansionButton.js');
10
- var NavItem$1 = require('./NavItem.css.js');
11
- var window = require('@salt-ds/window');
12
- var styles = require('@salt-ds/styles');
13
-
14
- const withBaseName = core.makePrefixer("saltNavItem");
15
- const NavItem = React.forwardRef(
16
- function NavItem2(props, ref) {
17
- const {
18
- active,
19
- blurSelected,
20
- children,
21
- className,
22
- expanded = false,
23
- orientation = "horizontal",
24
- parent,
25
- level = 0,
26
- onExpand,
27
- href,
28
- IconComponent,
29
- BadgeComponent,
30
- style: styleProp,
31
- ...rest
32
- } = props;
33
- const targetWindow = window.useWindow();
34
- styles.useComponentCssInjection({
35
- testId: "salt-nav-item",
36
- css: NavItem$1,
37
- window: targetWindow
38
- });
39
- const style = {
40
- ...styleProp,
41
- "--saltNavItem-level": `${level}`
42
- };
43
- const handleExpand = (event) => {
44
- event.stopPropagation();
45
- onExpand == null ? void 0 : onExpand(event);
46
- };
47
- return /* @__PURE__ */ jsxRuntime.jsxs("div", {
48
- className: clsx.clsx(
49
- withBaseName(),
50
- {
51
- [withBaseName("active")]: active,
52
- [withBaseName("blurSelected")]: blurSelected,
53
- [withBaseName("nested")]: level !== 0
54
- },
55
- withBaseName(orientation),
56
- className
57
- ),
58
- ref,
59
- style,
60
- ...rest,
61
- children: [
62
- IconComponent && /* @__PURE__ */ jsxRuntime.jsx(IconComponent, {
63
- "aria-hidden": true,
64
- className: withBaseName("icon")
65
- }),
66
- /* @__PURE__ */ jsxRuntime.jsx(core.Link, {
67
- className: withBaseName("label"),
68
- "aria-current": active ? "page" : void 0,
69
- href,
70
- children: /* @__PURE__ */ jsxRuntime.jsx("span", {
71
- children
72
- })
73
- }),
74
- BadgeComponent,
75
- parent && /* @__PURE__ */ jsxRuntime.jsx(ExpansionButton.ExpansionButton, {
76
- "aria-expanded": expanded,
77
- className: withBaseName("expandButton"),
78
- expanded,
79
- onClick: handleExpand,
80
- orientation
81
- })
82
- ]
83
- });
84
- }
85
- );
86
-
87
- exports.NavItem = NavItem;
88
- //# sourceMappingURL=NavItem.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NavItem.js","sources":["../src/nav-item/NavItem.tsx"],"sourcesContent":["import {\n ComponentPropsWithoutRef,\n forwardRef,\n MouseEventHandler,\n MouseEvent,\n ComponentType,\n ReactNode,\n} from \"react\";\nimport { makePrefixer, Link } from \"@salt-ds/core\";\nimport { IconProps } from \"@salt-ds/icons\";\nimport { clsx } from \"clsx\";\nimport { ExpansionButton } from \"./ExpansionButton\";\n\nimport navItemCss from \"./NavItem.css\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nexport interface NavItemProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Whether the nav item is active.\n */\n active?: boolean;\n /**\n * Whether the nav item has active children.\n */\n blurSelected?: boolean;\n /**\n * Whether the nav item is expanded.\n */\n expanded?: boolean;\n /**\n * Level of nesting.\n */\n level?: number;\n /**\n * The orientation of the nav item.\n */\n orientation?: \"horizontal\" | \"vertical\";\n /**\n * Whether the nav item is a parent with nested children.\n */\n parent?: boolean;\n /**\n * Action to be triggered when the nav item is expanded.\n */\n onExpand?: MouseEventHandler<HTMLButtonElement>;\n /**\n * Href to be passed to the Link element.\n */\n href?: string;\n /**\n * Icon component to be displayed next to the nav item label.\n */\n IconComponent?: ComponentType<IconProps> | null;\n /**\n * Badge component to be displayed next to the nav item label.\n */\n BadgeComponent?: ReactNode;\n}\n\nconst withBaseName = makePrefixer(\"saltNavItem\");\n\nexport const NavItem = forwardRef<HTMLDivElement, NavItemProps>(\n function NavItem(props, ref) {\n const {\n active,\n blurSelected,\n children,\n className,\n expanded = false,\n orientation = \"horizontal\",\n parent,\n level = 0,\n onExpand,\n href,\n IconComponent,\n BadgeComponent,\n style: styleProp,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-nav-item\",\n css: navItemCss,\n window: targetWindow,\n });\n\n const style = {\n ...styleProp,\n \"--saltNavItem-level\": `${level}`,\n };\n\n const handleExpand = (event: MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n onExpand?.(event);\n };\n\n return (\n <div\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"active\")]: active,\n [withBaseName(\"blurSelected\")]: blurSelected,\n [withBaseName(\"nested\")]: level !== 0,\n },\n withBaseName(orientation),\n className\n )}\n ref={ref}\n style={style}\n {...rest}\n >\n {IconComponent && (\n <IconComponent aria-hidden className={withBaseName(\"icon\")} />\n )}\n <Link\n className={withBaseName(\"label\")}\n aria-current={active ? \"page\" : undefined}\n href={href}\n >\n <span>{children}</span>\n </Link>\n {BadgeComponent}\n {parent && (\n <ExpansionButton\n aria-expanded={expanded}\n className={withBaseName(\"expandButton\")}\n expanded={expanded}\n onClick={handleExpand}\n orientation={orientation}\n />\n )}\n </div>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","NavItem","useWindow","useComponentCssInjection","navItemCss","jsxs","clsx","jsx","Link","ExpansionButton"],"mappings":";;;;;;;;;;;;;AA4DA,MAAM,YAAA,GAAeA,kBAAa,aAAa,CAAA,CAAA;AAExC,MAAM,OAAU,GAAAC,gBAAA;AAAA,EACrB,SAASC,QAAQ,CAAA,KAAA,EAAO,GAAK,EAAA;AAC3B,IAAM,MAAA;AAAA,MACJ,MAAA;AAAA,MACA,YAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAW,GAAA,KAAA;AAAA,MACX,WAAc,GAAA,YAAA;AAAA,MACd,MAAA;AAAA,MACA,KAAQ,GAAA,CAAA;AAAA,MACR,QAAA;AAAA,MACA,IAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,KAAO,EAAA,SAAA;AAAA,MACJ,GAAA,IAAA;AAAA,KACD,GAAA,KAAA,CAAA;AAEJ,IAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,eAAA;AAAA,MACR,GAAK,EAAAC,SAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAA,MAAM,KAAQ,GAAA;AAAA,MACZ,GAAG,SAAA;AAAA,MACH,uBAAuB,CAAG,EAAA,KAAA,CAAA,CAAA;AAAA,KAC5B,CAAA;AAEA,IAAM,MAAA,YAAA,GAAe,CAAC,KAAyC,KAAA;AAC7D,MAAA,KAAA,CAAM,eAAgB,EAAA,CAAA;AACtB,MAAW,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,KAAA,CAAA,CAAA;AAAA,KACb,CAAA;AAEA,IAAA,uBACGC,eAAA,CAAA,KAAA,EAAA;AAAA,MACC,SAAW,EAAAC,SAAA;AAAA,QACT,YAAa,EAAA;AAAA,QACb;AAAA,UACE,CAAC,YAAa,CAAA,QAAQ,CAAI,GAAA,MAAA;AAAA,UAC1B,CAAC,YAAa,CAAA,cAAc,CAAI,GAAA,YAAA;AAAA,UAChC,CAAC,YAAA,CAAa,QAAQ,CAAA,GAAI,KAAU,KAAA,CAAA;AAAA,SACtC;AAAA,QACA,aAAa,WAAW,CAAA;AAAA,QACxB,SAAA;AAAA,OACF;AAAA,MACA,GAAA;AAAA,MACA,KAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,aAAA,oBACEC,cAAA,CAAA,aAAA,EAAA;AAAA,UAAc,aAAW,EAAA,IAAA;AAAA,UAAC,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,SAAG,CAAA;AAAA,wBAE7DA,cAAA,CAAAC,SAAA,EAAA;AAAA,UACC,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,UAC/B,cAAA,EAAc,SAAS,MAAS,GAAA,KAAA,CAAA;AAAA,UAChC,IAAA;AAAA,UAEA,QAAC,kBAAAD,cAAA,CAAA,MAAA,EAAA;AAAA,YAAM,QAAA;AAAA,WAAS,CAAA;AAAA,SAClB,CAAA;AAAA,QACC,cAAA;AAAA,QACA,0BACEA,cAAA,CAAAE,+BAAA,EAAA;AAAA,UACC,eAAe,EAAA,QAAA;AAAA,UACf,SAAA,EAAW,aAAa,cAAc,CAAA;AAAA,UACtC,QAAA;AAAA,UACA,OAAS,EAAA,YAAA;AAAA,UACT,WAAA;AAAA,SACF,CAAA;AAAA,OAAA;AAAA,KAEJ,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -1,6 +0,0 @@
1
- import { createContext } from 'react';
2
-
3
- const DialogContext = createContext({});
4
-
5
- export { DialogContext };
6
- //# sourceMappingURL=DialogContext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DialogContext.js","sources":["../src/dialog/internal/DialogContext.ts"],"sourcesContent":["import { createContext } from \"react\";\nimport { ValidationStatus } from \"@salt-ds/core\";\n\nexport const DialogContext = createContext<{\n status?: ValidationStatus;\n dialogId?: string;\n setContentElement?: (node: HTMLDivElement) => void;\n}>({});\n"],"names":[],"mappings":";;AAGa,MAAA,aAAA,GAAgB,aAI1B,CAAA,EAAE;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ExpansionButton.js","sources":["../src/nav-item/ExpansionButton.tsx"],"sourcesContent":["import { ChevronDownIcon, ChevronRightIcon } from \"@salt-ds/icons\";\nimport { ComponentPropsWithoutRef } from \"react\";\nimport { Button } from \"@salt-ds/core\";\nimport { NavItemProps } from \"./NavItem\";\n\nconst iconExpansionMap = {\n vertical: {\n expanded: ChevronDownIcon,\n collapsed: ChevronRightIcon,\n },\n horizontal: {\n expanded: ChevronDownIcon,\n collapsed: ChevronDownIcon,\n },\n};\n\nexport function ExpansionButton({\n expanded = false,\n orientation = \"horizontal\",\n ...rest\n}: Pick<NavItemProps, \"expanded\" | \"orientation\"> &\n ComponentPropsWithoutRef<\"button\">) {\n const Icon =\n iconExpansionMap[orientation][expanded ? \"expanded\" : \"collapsed\"];\n return (\n <Button aria-label=\"expand\" variant=\"secondary\" {...rest}>\n <Icon aria-hidden=\"true\" />\n </Button>\n );\n}\n"],"names":[],"mappings":";;;;AAKA,MAAM,gBAAmB,GAAA;AAAA,EACvB,QAAU,EAAA;AAAA,IACR,QAAU,EAAA,eAAA;AAAA,IACV,SAAW,EAAA,gBAAA;AAAA,GACb;AAAA,EACA,UAAY,EAAA;AAAA,IACV,QAAU,EAAA,eAAA;AAAA,IACV,SAAW,EAAA,eAAA;AAAA,GACb;AACF,CAAA,CAAA;AAEO,SAAS,eAAgB,CAAA;AAAA,EAC9B,QAAW,GAAA,KAAA;AAAA,EACX,WAAc,GAAA,YAAA;AAAA,EACX,GAAA,IAAA;AACL,CACsC,EAAA;AACpC,EAAA,MAAM,IACJ,GAAA,gBAAA,CAAiB,WAAa,CAAA,CAAA,QAAA,GAAW,UAAa,GAAA,WAAA,CAAA,CAAA;AACxD,EAAA,uBACG,GAAA,CAAA,MAAA,EAAA;AAAA,IAAO,YAAW,EAAA,QAAA;AAAA,IAAS,OAAQ,EAAA,WAAA;AAAA,IAAa,GAAG,IAAA;AAAA,IAClD,QAAC,kBAAA,GAAA,CAAA,IAAA,EAAA;AAAA,MAAK,aAAY,EAAA,MAAA;AAAA,KAAO,CAAA;AAAA,GAC3B,CAAA,CAAA;AAEJ;;;;"}
@@ -1,4 +0,0 @@
1
- var css_248z = "/* Vars applied to root NavItem component */\n.saltNavItem {\n --navItem-color: var(--salt-text-secondary-foreground);\n --navItem-fill: var(--salt-text-secondary-foreground);\n --navItem-bar-inset: var(--salt-spacing-25);\n --navItem-bar-size: calc(var(--salt-size-bar) / 2);\n --navItem-indicator-background: var(--salt-navigable-indicator-active);\n}\n\n/* Vars applied to NavItem component when active or selected */\n.saltNavItem-active,\n.saltNavItem-blurSelected {\n --navItem-color: var(--salt-text-primary-foreground);\n --navItem-fill: var(--salt-text-primary-foreground);\n}\n\n/* Styles applied to root NavItem component */\n.saltNavItem {\n display: flex;\n align-items: center;\n position: relative;\n gap: var(--salt-spacing-100);\n font-weight: var(--salt-text-fontWeight-strong);\n /* Hover off animation */\n transition: all var(--salt-duration-instant) ease-in-out;\n}\n\n/* Styles applied to NavItem icon */\n.saltNavItem .saltNavItem-icon {\n fill: var(--navItem-fill);\n}\n\n/* Styles applied when orientation = \"horizontal\" */\n.saltNavItem-horizontal {\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100) + var(--salt-spacing-100));\n padding: calc(var(--salt-spacing-100) + var(--navItem-bar-inset)) 0 var(--salt-spacing-100) 0;\n margin: 0 var(--salt-spacing-100);\n}\n\n/* Styles applied when orientation = \"vertical\" */\n.saltNavItem-vertical {\n min-height: calc(var(--salt-size-base));\n padding-left: calc(var(--salt-spacing-100) + var(--navItem-bar-inset));\n margin: var(--salt-spacing-50) 0;\n}\n\n/* Styles applied to NavItem label */\n.saltNavItem .saltNavItem-label {\n --link-color-visited: var(--navItem-color);\n --link-color-hover: var(--navItem-color);\n\n text-decoration: none;\n color: var(--navItem-color);\n line-height: var(--salt-text-lineHeight);\n font-family: var(--salt-text-fontFamily);\n padding-left: calc(var(--saltNavItem-level, 0) * var(--salt-spacing-100));\n flex: 1;\n}\n\n/* Styles applied when level is not 0 */\n.saltNavItem-nested {\n padding-left: calc(var(--salt-spacing-250) + (var(--saltNavItem-level, 0) * var(--salt-spacing-100)));\n}\n\n/* Styles applied to expand button icon */\n.saltNavItem .saltNavItem-expandButton {\n --saltIcon-color: var(--navItem-fill);\n --saltButton-background-hover: none;\n --saltButton-background-active: none;\n}\n\n/* Styles applied to NavItem when focus is visible */\n.saltNavItem:focus-visible {\n outline: var(--salt-focused-outline);\n}\n\n/* Styles applied to activation line */\n.saltNavItem::after {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n display: block;\n}\n\n/* Styles applied to activation line when orientation = \"horizontal\" */\n.saltNavItem-horizontal::after {\n width: 100%;\n height: var(--navItem-bar-size);\n top: var(--navItem-bar-inset);\n}\n\n/* Styles applied to activation line when orientation = \"vertical\" */\n.saltNavItem-vertical::after {\n width: var(--navItem-bar-size);\n height: 100%;\n left: var(--navItem-bar-inset);\n}\n\n/* Styles applied to activation line on hover and on focus */\n.saltNavItem:hover::after,\n.saltNavItem:focus::after {\n background: var(--salt-navigable-indicator-hover);\n /* Hover on animation */\n transition: all var(--salt-duration-perceptible) ease-in-out;\n}\n\n/* Styles applied to activation line when item has active children */\n.saltNavItem.saltNavItem-blurSelected::after,\n.saltNavItem.saltNavItem-blurSelected:hover::after,\n.saltNavItem.saltNavItem-blurSelected:focus::after {\n --navItem-indicator-background: none;\n}\n\n/* Styles applied to activation line when item is active */\n.saltNavItem.saltNavItem-active::after,\n.saltNavItem.saltNavItem-active:hover::after,\n.saltNavItem.saltNavItem-active:focus::after {\n background: var(--navItem-indicator-background);\n /* Hover on animation */\n transition: all var(--salt-duration-perceptible) ease-in-out;\n}\n";
2
-
3
- export { css_248z as default };
4
- //# sourceMappingURL=NavItem.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NavItem.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,84 +0,0 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { forwardRef } from 'react';
3
- import { makePrefixer, Link } from '@salt-ds/core';
4
- import { clsx } from 'clsx';
5
- import { ExpansionButton } from './ExpansionButton.js';
6
- import css_248z from './NavItem.css.js';
7
- import { useWindow } from '@salt-ds/window';
8
- import { useComponentCssInjection } from '@salt-ds/styles';
9
-
10
- const withBaseName = makePrefixer("saltNavItem");
11
- const NavItem = forwardRef(
12
- function NavItem2(props, ref) {
13
- const {
14
- active,
15
- blurSelected,
16
- children,
17
- className,
18
- expanded = false,
19
- orientation = "horizontal",
20
- parent,
21
- level = 0,
22
- onExpand,
23
- href,
24
- IconComponent,
25
- BadgeComponent,
26
- style: styleProp,
27
- ...rest
28
- } = props;
29
- const targetWindow = useWindow();
30
- useComponentCssInjection({
31
- testId: "salt-nav-item",
32
- css: css_248z,
33
- window: targetWindow
34
- });
35
- const style = {
36
- ...styleProp,
37
- "--saltNavItem-level": `${level}`
38
- };
39
- const handleExpand = (event) => {
40
- event.stopPropagation();
41
- onExpand == null ? void 0 : onExpand(event);
42
- };
43
- return /* @__PURE__ */ jsxs("div", {
44
- className: clsx(
45
- withBaseName(),
46
- {
47
- [withBaseName("active")]: active,
48
- [withBaseName("blurSelected")]: blurSelected,
49
- [withBaseName("nested")]: level !== 0
50
- },
51
- withBaseName(orientation),
52
- className
53
- ),
54
- ref,
55
- style,
56
- ...rest,
57
- children: [
58
- IconComponent && /* @__PURE__ */ jsx(IconComponent, {
59
- "aria-hidden": true,
60
- className: withBaseName("icon")
61
- }),
62
- /* @__PURE__ */ jsx(Link, {
63
- className: withBaseName("label"),
64
- "aria-current": active ? "page" : void 0,
65
- href,
66
- children: /* @__PURE__ */ jsx("span", {
67
- children
68
- })
69
- }),
70
- BadgeComponent,
71
- parent && /* @__PURE__ */ jsx(ExpansionButton, {
72
- "aria-expanded": expanded,
73
- className: withBaseName("expandButton"),
74
- expanded,
75
- onClick: handleExpand,
76
- orientation
77
- })
78
- ]
79
- });
80
- }
81
- );
82
-
83
- export { NavItem };
84
- //# sourceMappingURL=NavItem.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NavItem.js","sources":["../src/nav-item/NavItem.tsx"],"sourcesContent":["import {\n ComponentPropsWithoutRef,\n forwardRef,\n MouseEventHandler,\n MouseEvent,\n ComponentType,\n ReactNode,\n} from \"react\";\nimport { makePrefixer, Link } from \"@salt-ds/core\";\nimport { IconProps } from \"@salt-ds/icons\";\nimport { clsx } from \"clsx\";\nimport { ExpansionButton } from \"./ExpansionButton\";\n\nimport navItemCss from \"./NavItem.css\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nexport interface NavItemProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Whether the nav item is active.\n */\n active?: boolean;\n /**\n * Whether the nav item has active children.\n */\n blurSelected?: boolean;\n /**\n * Whether the nav item is expanded.\n */\n expanded?: boolean;\n /**\n * Level of nesting.\n */\n level?: number;\n /**\n * The orientation of the nav item.\n */\n orientation?: \"horizontal\" | \"vertical\";\n /**\n * Whether the nav item is a parent with nested children.\n */\n parent?: boolean;\n /**\n * Action to be triggered when the nav item is expanded.\n */\n onExpand?: MouseEventHandler<HTMLButtonElement>;\n /**\n * Href to be passed to the Link element.\n */\n href?: string;\n /**\n * Icon component to be displayed next to the nav item label.\n */\n IconComponent?: ComponentType<IconProps> | null;\n /**\n * Badge component to be displayed next to the nav item label.\n */\n BadgeComponent?: ReactNode;\n}\n\nconst withBaseName = makePrefixer(\"saltNavItem\");\n\nexport const NavItem = forwardRef<HTMLDivElement, NavItemProps>(\n function NavItem(props, ref) {\n const {\n active,\n blurSelected,\n children,\n className,\n expanded = false,\n orientation = \"horizontal\",\n parent,\n level = 0,\n onExpand,\n href,\n IconComponent,\n BadgeComponent,\n style: styleProp,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-nav-item\",\n css: navItemCss,\n window: targetWindow,\n });\n\n const style = {\n ...styleProp,\n \"--saltNavItem-level\": `${level}`,\n };\n\n const handleExpand = (event: MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n onExpand?.(event);\n };\n\n return (\n <div\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"active\")]: active,\n [withBaseName(\"blurSelected\")]: blurSelected,\n [withBaseName(\"nested\")]: level !== 0,\n },\n withBaseName(orientation),\n className\n )}\n ref={ref}\n style={style}\n {...rest}\n >\n {IconComponent && (\n <IconComponent aria-hidden className={withBaseName(\"icon\")} />\n )}\n <Link\n className={withBaseName(\"label\")}\n aria-current={active ? \"page\" : undefined}\n href={href}\n >\n <span>{children}</span>\n </Link>\n {BadgeComponent}\n {parent && (\n <ExpansionButton\n aria-expanded={expanded}\n className={withBaseName(\"expandButton\")}\n expanded={expanded}\n onClick={handleExpand}\n orientation={orientation}\n />\n )}\n </div>\n );\n }\n);\n"],"names":["NavItem","navItemCss"],"mappings":";;;;;;;;;AA4DA,MAAM,YAAA,GAAe,aAAa,aAAa,CAAA,CAAA;AAExC,MAAM,OAAU,GAAA,UAAA;AAAA,EACrB,SAASA,QAAQ,CAAA,KAAA,EAAO,GAAK,EAAA;AAC3B,IAAM,MAAA;AAAA,MACJ,MAAA;AAAA,MACA,YAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAW,GAAA,KAAA;AAAA,MACX,WAAc,GAAA,YAAA;AAAA,MACd,MAAA;AAAA,MACA,KAAQ,GAAA,CAAA;AAAA,MACR,QAAA;AAAA,MACA,IAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,KAAO,EAAA,SAAA;AAAA,MACJ,GAAA,IAAA;AAAA,KACD,GAAA,KAAA,CAAA;AAEJ,IAAA,MAAM,eAAe,SAAU,EAAA,CAAA;AAC/B,IAAyB,wBAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,eAAA;AAAA,MACR,GAAK,EAAAC,QAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAA,MAAM,KAAQ,GAAA;AAAA,MACZ,GAAG,SAAA;AAAA,MACH,uBAAuB,CAAG,EAAA,KAAA,CAAA,CAAA;AAAA,KAC5B,CAAA;AAEA,IAAM,MAAA,YAAA,GAAe,CAAC,KAAyC,KAAA;AAC7D,MAAA,KAAA,CAAM,eAAgB,EAAA,CAAA;AACtB,MAAW,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,KAAA,CAAA,CAAA;AAAA,KACb,CAAA;AAEA,IAAA,uBACG,IAAA,CAAA,KAAA,EAAA;AAAA,MACC,SAAW,EAAA,IAAA;AAAA,QACT,YAAa,EAAA;AAAA,QACb;AAAA,UACE,CAAC,YAAa,CAAA,QAAQ,CAAI,GAAA,MAAA;AAAA,UAC1B,CAAC,YAAa,CAAA,cAAc,CAAI,GAAA,YAAA;AAAA,UAChC,CAAC,YAAA,CAAa,QAAQ,CAAA,GAAI,KAAU,KAAA,CAAA;AAAA,SACtC;AAAA,QACA,aAAa,WAAW,CAAA;AAAA,QACxB,SAAA;AAAA,OACF;AAAA,MACA,GAAA;AAAA,MACA,KAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,aAAA,oBACE,GAAA,CAAA,aAAA,EAAA;AAAA,UAAc,aAAW,EAAA,IAAA;AAAA,UAAC,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,SAAG,CAAA;AAAA,wBAE7D,GAAA,CAAA,IAAA,EAAA;AAAA,UACC,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,UAC/B,cAAA,EAAc,SAAS,MAAS,GAAA,KAAA,CAAA;AAAA,UAChC,IAAA;AAAA,UAEA,QAAC,kBAAA,GAAA,CAAA,MAAA,EAAA;AAAA,YAAM,QAAA;AAAA,WAAS,CAAA;AAAA,SAClB,CAAA;AAAA,QACC,cAAA;AAAA,QACA,0BACE,GAAA,CAAA,eAAA,EAAA;AAAA,UACC,eAAe,EAAA,QAAA;AAAA,UACf,SAAA,EAAW,aAAa,cAAc,CAAA;AAAA,UACtC,QAAA;AAAA,UACA,OAAS,EAAA,YAAA;AAAA,UACT,WAAA;AAAA,SACF,CAAA;AAAA,OAAA;AAAA,KAEJ,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -1,3 +0,0 @@
1
- import { ComponentPropsWithoutRef } from "react";
2
- import { NavItemProps } from "./NavItem";
3
- export declare function ExpansionButton({ expanded, orientation, ...rest }: Pick<NavItemProps, "expanded" | "orientation"> & ComponentPropsWithoutRef<"button">): JSX.Element;
@@ -1,45 +0,0 @@
1
- import { ComponentPropsWithoutRef, MouseEventHandler, ComponentType, ReactNode } from "react";
2
- import { IconProps } from "@salt-ds/icons";
3
- export interface NavItemProps extends ComponentPropsWithoutRef<"div"> {
4
- /**
5
- * Whether the nav item is active.
6
- */
7
- active?: boolean;
8
- /**
9
- * Whether the nav item has active children.
10
- */
11
- blurSelected?: boolean;
12
- /**
13
- * Whether the nav item is expanded.
14
- */
15
- expanded?: boolean;
16
- /**
17
- * Level of nesting.
18
- */
19
- level?: number;
20
- /**
21
- * The orientation of the nav item.
22
- */
23
- orientation?: "horizontal" | "vertical";
24
- /**
25
- * Whether the nav item is a parent with nested children.
26
- */
27
- parent?: boolean;
28
- /**
29
- * Action to be triggered when the nav item is expanded.
30
- */
31
- onExpand?: MouseEventHandler<HTMLButtonElement>;
32
- /**
33
- * Href to be passed to the Link element.
34
- */
35
- href?: string;
36
- /**
37
- * Icon component to be displayed next to the nav item label.
38
- */
39
- IconComponent?: ComponentType<IconProps> | null;
40
- /**
41
- * Badge component to be displayed next to the nav item label.
42
- */
43
- BadgeComponent?: ReactNode;
44
- }
45
- export declare const NavItem: import("react").ForwardRefExoticComponent<NavItemProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -1 +0,0 @@
1
- export * from "./NavItem";