@govtechsg/sgds-web-component 3.26.1 → 3.27.0-rc.0

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 (243) hide show
  1. package/base/dropdown-list-element.js +9 -2
  2. package/base/dropdown-list-element.js.map +1 -1
  3. package/base/nav-element.d.ts +64 -0
  4. package/base/nav-element.js +263 -0
  5. package/base/nav-element.js.map +1 -0
  6. package/base/nav-profile-element.d.ts +47 -0
  7. package/base/nav-profile-element.js +191 -0
  8. package/base/nav-profile-element.js.map +1 -0
  9. package/base/nav-profile.js +6 -0
  10. package/base/nav-profile.js.map +1 -0
  11. package/components/Appnav/appnav-context.d.ts +6 -0
  12. package/components/Appnav/appnav-context.js +7 -0
  13. package/components/Appnav/appnav-context.js.map +1 -0
  14. package/components/Appnav/appnav.js +6 -0
  15. package/components/Appnav/appnav.js.map +1 -0
  16. package/components/Appnav/index.d.ts +9 -0
  17. package/components/Appnav/index.js +8 -0
  18. package/components/Appnav/index.js.map +1 -0
  19. package/components/Appnav/index.umd.min.js +2542 -0
  20. package/components/Appnav/index.umd.min.js.map +1 -0
  21. package/components/Appnav/sgds-appnav-profile.d.ts +17 -0
  22. package/components/Appnav/sgds-appnav-profile.js +31 -0
  23. package/components/Appnav/sgds-appnav-profile.js.map +1 -0
  24. package/components/Appnav/sgds-appnav.d.ts +44 -0
  25. package/components/Appnav/sgds-appnav.js +183 -0
  26. package/components/Appnav/sgds-appnav.js.map +1 -0
  27. package/components/Breadcrumb/index.umd.min.js +25 -25
  28. package/components/Breadcrumb/index.umd.min.js.map +1 -1
  29. package/components/Checkbox/index.umd.min.js +233 -233
  30. package/components/Checkbox/index.umd.min.js.map +1 -1
  31. package/components/Checkbox/sgds-checkbox.d.ts +1 -0
  32. package/components/Checkbox/sgds-checkbox.js +6 -1
  33. package/components/Checkbox/sgds-checkbox.js.map +1 -1
  34. package/components/ComboBox/index.umd.min.js +254 -254
  35. package/components/ComboBox/index.umd.min.js.map +1 -1
  36. package/components/DataTable/data-table.js +6 -0
  37. package/components/DataTable/data-table.js.map +1 -0
  38. package/components/DataTable/index.d.ts +12 -0
  39. package/components/DataTable/index.js +11 -0
  40. package/components/DataTable/index.js.map +1 -0
  41. package/components/DataTable/index.umd.min.js +2634 -0
  42. package/components/DataTable/index.umd.min.js.map +1 -0
  43. package/components/DataTable/sgds-data-table-cell.d.ts +15 -0
  44. package/components/DataTable/sgds-data-table-cell.js +32 -0
  45. package/components/DataTable/sgds-data-table-cell.js.map +1 -0
  46. package/components/DataTable/sgds-data-table-head.d.ts +28 -0
  47. package/components/DataTable/sgds-data-table-head.js +69 -0
  48. package/components/DataTable/sgds-data-table-head.js.map +1 -0
  49. package/components/DataTable/sgds-data-table-row.d.ts +76 -0
  50. package/components/DataTable/sgds-data-table-row.js +333 -0
  51. package/components/DataTable/sgds-data-table-row.js.map +1 -0
  52. package/components/DataTable/sgds-data-table.d.ts +82 -0
  53. package/components/DataTable/sgds-data-table.js +405 -0
  54. package/components/DataTable/sgds-data-table.js.map +1 -0
  55. package/components/Datepicker/index.umd.min.js +86 -86
  56. package/components/Datepicker/index.umd.min.js.map +1 -1
  57. package/components/Dropdown/dropdown-item.js +1 -1
  58. package/components/Dropdown/index.umd.min.js +5 -5
  59. package/components/Dropdown/index.umd.min.js.map +1 -1
  60. package/components/Dropdown/sgds-dropdown-item.d.ts +2 -0
  61. package/components/Dropdown/sgds-dropdown-item.js +8 -2
  62. package/components/Dropdown/sgds-dropdown-item.js.map +1 -1
  63. package/components/Input/index.umd.min.js +2 -2
  64. package/components/Input/index.umd.min.js.map +1 -1
  65. package/components/Input/input.js +1 -1
  66. package/components/Mainnav/index.d.ts +2 -0
  67. package/components/Mainnav/index.js +2 -0
  68. package/components/Mainnav/index.js.map +1 -1
  69. package/components/Mainnav/index.umd.min.js +339 -286
  70. package/components/Mainnav/index.umd.min.js.map +1 -1
  71. package/components/Mainnav/mainnav-dropdown.js +1 -1
  72. package/components/Mainnav/mainnav-item.js +1 -1
  73. package/components/Mainnav/mainnav.js +1 -1
  74. package/components/Mainnav/sgds-mainnav-profile.d.ts +15 -0
  75. package/components/Mainnav/sgds-mainnav-profile.js +29 -0
  76. package/components/Mainnav/sgds-mainnav-profile.js.map +1 -0
  77. package/components/Mainnav/sgds-mainnav.d.ts +8 -51
  78. package/components/Mainnav/sgds-mainnav.js +40 -238
  79. package/components/Mainnav/sgds-mainnav.js.map +1 -1
  80. package/components/OverflowMenu/index.umd.min.js +25 -25
  81. package/components/OverflowMenu/index.umd.min.js.map +1 -1
  82. package/components/QuantityToggle/index.umd.min.js +1 -1
  83. package/components/QuantityToggle/index.umd.min.js.map +1 -1
  84. package/components/Select/index.umd.min.js +1 -1
  85. package/components/Select/index.umd.min.js.map +1 -1
  86. package/components/Tab/index.umd.min.js +1 -1
  87. package/components/Tab/index.umd.min.js.map +1 -1
  88. package/components/Tab/tab-panel.js +1 -1
  89. package/components/Textarea/index.umd.min.js +1 -1
  90. package/components/Textarea/index.umd.min.js.map +1 -1
  91. package/components/Textarea/textarea.js +1 -1
  92. package/components/index.d.ts +7 -0
  93. package/components/index.js +7 -0
  94. package/components/index.js.map +1 -1
  95. package/components/index.umd.min.js +812 -628
  96. package/components/index.umd.min.js.map +1 -1
  97. package/css/fouc.css +9 -2
  98. package/custom-elements.json +11501 -7967
  99. package/index.d.ts +2 -0
  100. package/index.js +2 -0
  101. package/index.js.map +1 -1
  102. package/index.umd.min.js +699 -510
  103. package/index.umd.min.js.map +1 -1
  104. package/package.json +1 -1
  105. package/react/appnav/index.cjs.js +45 -0
  106. package/react/appnav/index.cjs.js.map +1 -0
  107. package/react/appnav/index.d.ts +4 -0
  108. package/react/appnav/index.js +21 -0
  109. package/react/appnav/index.js.map +1 -0
  110. package/react/appnav-profile/index.cjs.js +40 -0
  111. package/react/appnav-profile/index.cjs.js.map +1 -0
  112. package/react/appnav-profile/index.d.ts +4 -0
  113. package/react/appnav-profile/index.js +16 -0
  114. package/react/appnav-profile/index.js.map +1 -0
  115. package/react/base/dropdown-list-element.cjs.js +9 -2
  116. package/react/base/dropdown-list-element.cjs.js.map +1 -1
  117. package/react/base/dropdown-list-element.js +9 -2
  118. package/react/base/dropdown-list-element.js.map +1 -1
  119. package/react/base/nav-element.cjs.js +268 -0
  120. package/react/base/nav-element.cjs.js.map +1 -0
  121. package/react/base/nav-element.js +264 -0
  122. package/react/base/nav-element.js.map +1 -0
  123. package/react/base/nav-profile-element.cjs.js +196 -0
  124. package/react/base/nav-profile-element.cjs.js.map +1 -0
  125. package/react/base/nav-profile-element.js +192 -0
  126. package/react/base/nav-profile-element.js.map +1 -0
  127. package/react/base/nav-profile.cjs.js +11 -0
  128. package/react/base/nav-profile.cjs.js.map +1 -0
  129. package/react/base/nav-profile.js +7 -0
  130. package/react/base/nav-profile.js.map +1 -0
  131. package/react/components/Appnav/appnav-context.cjs.js +13 -0
  132. package/react/components/Appnav/appnav-context.cjs.js.map +1 -0
  133. package/react/components/Appnav/appnav-context.js +8 -0
  134. package/react/components/Appnav/appnav-context.js.map +1 -0
  135. package/react/components/Appnav/appnav.cjs.js +11 -0
  136. package/react/components/Appnav/appnav.cjs.js.map +1 -0
  137. package/react/components/Appnav/appnav.js +7 -0
  138. package/react/components/Appnav/appnav.js.map +1 -0
  139. package/react/components/Appnav/sgds-appnav-profile.cjs.js +37 -0
  140. package/react/components/Appnav/sgds-appnav-profile.cjs.js.map +1 -0
  141. package/react/components/Appnav/sgds-appnav-profile.js +32 -0
  142. package/react/components/Appnav/sgds-appnav-profile.js.map +1 -0
  143. package/react/components/Appnav/sgds-appnav.cjs.js +189 -0
  144. package/react/components/Appnav/sgds-appnav.cjs.js.map +1 -0
  145. package/react/components/Appnav/sgds-appnav.js +184 -0
  146. package/react/components/Appnav/sgds-appnav.js.map +1 -0
  147. package/react/components/Checkbox/sgds-checkbox.cjs.js +6 -1
  148. package/react/components/Checkbox/sgds-checkbox.cjs.js.map +1 -1
  149. package/react/components/Checkbox/sgds-checkbox.js +6 -1
  150. package/react/components/Checkbox/sgds-checkbox.js.map +1 -1
  151. package/react/components/DataTable/data-table.cjs.js +11 -0
  152. package/react/components/DataTable/data-table.cjs.js.map +1 -0
  153. package/react/components/DataTable/data-table.js +7 -0
  154. package/react/components/DataTable/data-table.js.map +1 -0
  155. package/react/components/DataTable/sgds-data-table-cell.cjs.js +38 -0
  156. package/react/components/DataTable/sgds-data-table-cell.cjs.js.map +1 -0
  157. package/react/components/DataTable/sgds-data-table-cell.js +33 -0
  158. package/react/components/DataTable/sgds-data-table-cell.js.map +1 -0
  159. package/react/components/DataTable/sgds-data-table-head.cjs.js +75 -0
  160. package/react/components/DataTable/sgds-data-table-head.cjs.js.map +1 -0
  161. package/react/components/DataTable/sgds-data-table-head.js +70 -0
  162. package/react/components/DataTable/sgds-data-table-head.js.map +1 -0
  163. package/react/components/DataTable/sgds-data-table-row.cjs.js +339 -0
  164. package/react/components/DataTable/sgds-data-table-row.cjs.js.map +1 -0
  165. package/react/components/DataTable/sgds-data-table-row.js +334 -0
  166. package/react/components/DataTable/sgds-data-table-row.js.map +1 -0
  167. package/react/components/DataTable/sgds-data-table.cjs.js +411 -0
  168. package/react/components/DataTable/sgds-data-table.cjs.js.map +1 -0
  169. package/react/components/DataTable/sgds-data-table.js +406 -0
  170. package/react/components/DataTable/sgds-data-table.js.map +1 -0
  171. package/react/components/Dropdown/dropdown-item.cjs.js +1 -1
  172. package/react/components/Dropdown/dropdown-item.js +1 -1
  173. package/react/components/Dropdown/sgds-dropdown-item.cjs.js +8 -2
  174. package/react/components/Dropdown/sgds-dropdown-item.cjs.js.map +1 -1
  175. package/react/components/Dropdown/sgds-dropdown-item.js +8 -2
  176. package/react/components/Dropdown/sgds-dropdown-item.js.map +1 -1
  177. package/react/components/Input/input.cjs.js +1 -1
  178. package/react/components/Input/input.js +1 -1
  179. package/react/components/Mainnav/mainnav-dropdown.cjs.js +1 -1
  180. package/react/components/Mainnav/mainnav-dropdown.js +1 -1
  181. package/react/components/Mainnav/mainnav-item.cjs.js +1 -1
  182. package/react/components/Mainnav/mainnav-item.js +1 -1
  183. package/react/components/Mainnav/mainnav.cjs.js +1 -1
  184. package/react/components/Mainnav/mainnav.js +1 -1
  185. package/react/components/Mainnav/sgds-mainnav-profile.cjs.js +35 -0
  186. package/react/components/Mainnav/sgds-mainnav-profile.cjs.js.map +1 -0
  187. package/react/components/Mainnav/sgds-mainnav-profile.js +30 -0
  188. package/react/components/Mainnav/sgds-mainnav-profile.js.map +1 -0
  189. package/react/components/Mainnav/sgds-mainnav.cjs.js +39 -237
  190. package/react/components/Mainnav/sgds-mainnav.cjs.js.map +1 -1
  191. package/react/components/Mainnav/sgds-mainnav.js +40 -238
  192. package/react/components/Mainnav/sgds-mainnav.js.map +1 -1
  193. package/react/components/Tab/tab-panel.cjs.js +1 -1
  194. package/react/components/Tab/tab-panel.js +1 -1
  195. package/react/components/Textarea/textarea.cjs.js +1 -1
  196. package/react/components/Textarea/textarea.js +1 -1
  197. package/react/data-table/index.cjs.js +44 -0
  198. package/react/data-table/index.cjs.js.map +1 -0
  199. package/react/data-table/index.d.ts +4 -0
  200. package/react/data-table/index.js +20 -0
  201. package/react/data-table/index.js.map +1 -0
  202. package/react/data-table-cell/index.cjs.js +40 -0
  203. package/react/data-table-cell/index.cjs.js.map +1 -0
  204. package/react/data-table-cell/index.d.ts +4 -0
  205. package/react/data-table-cell/index.js +16 -0
  206. package/react/data-table-cell/index.js.map +1 -0
  207. package/react/data-table-head/index.cjs.js +40 -0
  208. package/react/data-table-head/index.cjs.js.map +1 -0
  209. package/react/data-table-head/index.d.ts +4 -0
  210. package/react/data-table-head/index.js +16 -0
  211. package/react/data-table-head/index.js.map +1 -0
  212. package/react/data-table-row/index.cjs.js +45 -0
  213. package/react/data-table-row/index.cjs.js.map +1 -0
  214. package/react/data-table-row/index.d.ts +4 -0
  215. package/react/data-table-row/index.js +21 -0
  216. package/react/data-table-row/index.js.map +1 -0
  217. package/react/index.cjs.js +152 -138
  218. package/react/index.cjs.js.map +1 -1
  219. package/react/index.d.ts +9 -2
  220. package/react/index.js +9 -2
  221. package/react/index.js.map +1 -1
  222. package/react/mainnav-profile/index.cjs.js +40 -0
  223. package/react/mainnav-profile/index.cjs.js.map +1 -0
  224. package/react/mainnav-profile/index.d.ts +4 -0
  225. package/react/mainnav-profile/index.js +16 -0
  226. package/react/mainnav-profile/index.js.map +1 -0
  227. package/react/styles/form-text-control.cjs.js +1 -1
  228. package/react/styles/form-text-control.js +1 -1
  229. package/styles/form-text-control.js +1 -1
  230. package/themes/blue.css +11 -11
  231. package/themes/cyan.css +10 -10
  232. package/themes/gt/blue.css +11 -11
  233. package/themes/gt/cyan.css +10 -10
  234. package/themes/gt/magenta.css +11 -11
  235. package/themes/gt/pink.css +11 -11
  236. package/themes/gt/purple.css +11 -11
  237. package/themes/gt/red.css +11 -11
  238. package/themes/magenta.css +11 -11
  239. package/themes/pink.css +11 -11
  240. package/themes/purple.css +11 -11
  241. package/themes/red.css +11 -11
  242. package/themes/root.css +5 -0
  243. package/types/react.d.ts +244 -92
@@ -0,0 +1,191 @@
1
+ import { __decorate } from 'tslib';
2
+ import { html, nothing } from 'lit';
3
+ import { state, queryAssignedElements, property } from 'lit/decorators.js';
4
+ import { classMap } from 'lit/directives/class-map.js';
5
+ import { ifDefined } from 'lit/directives/if-defined.js';
6
+ import { offset } from '@floating-ui/dom';
7
+ import SgdsElement from './sgds-element.js';
8
+ import { SgdsDropdown } from '../components/Dropdown/sgds-dropdown.js';
9
+ import { SgdsIcon } from '../components/Icon/sgds-icon.js';
10
+ import css_248z from './nav-profile.js';
11
+ import genId from '../utils/generateId.js';
12
+
13
+ /**
14
+ * Base class for navigation profile components (sgds-mainnav-profile and sgds-appnav-profile).
15
+ * Provides the full profile dropdown (desktop) and mobile panel behavior.
16
+ * When no dropdown items are slotted into the default slot, renders as a non-interactive
17
+ * read-only element (no dropdown menu, no caret icon, cursor default, not focusable by keyboard or mouse).
18
+ * Subclasses must consume the appropriate breakpoint context and set `_breakpointReached`.
19
+ *
20
+ * @slot avatar - Avatar element displayed in both desktop (before label) and mobile (as toggler)
21
+ * @slot default - Profile menu items (sgds-dropdown-item elements). When empty, the component becomes read-only.
22
+ */
23
+ class NavProfileElement extends SgdsElement {
24
+ constructor() {
25
+ super(...arguments);
26
+ /** @internal Whether the breakpoint is reached (mobile mode). Subclasses set this via context consumption. */
27
+ this._breakpointReached = true;
28
+ /** @internal Whether the mobile menu is open */
29
+ this._mobileMenuOpen = false;
30
+ /** @internal Whether dropdown items are slotted */
31
+ this._hasDropdownItems = false;
32
+ /** Primary text displayed next to the avatar in desktop (e.g. user name) */
33
+ this.label = "";
34
+ /** Secondary text displayed below the label in desktop (e.g. agency or role) */
35
+ this.secondaryText = "";
36
+ /** When true, disables the profile dropdown */
37
+ this.disabled = false;
38
+ /** Accessible label for the profile toggle button */
39
+ this.ariaLabel = "";
40
+ /** Controls dropdown close behavior. "default" auto-closes on item/outside click, "outside" closes only on outside click, "inside" prevents auto-close. */
41
+ this.close = "default";
42
+ /** @internal */
43
+ this.togglerId = genId("profile", "button");
44
+ this._handleMobileToggle = () => {
45
+ this._mobileMenuOpen = !this._mobileMenuOpen;
46
+ };
47
+ this._handleClickOutside = (e) => {
48
+ if (!this._mobileMenuOpen)
49
+ return;
50
+ if (this.close === "inside")
51
+ return;
52
+ if (!e.composedPath().includes(this)) {
53
+ this._mobileMenuOpen = false;
54
+ }
55
+ };
56
+ this._handleSlotChange = () => {
57
+ this._hasDropdownItems = this._defaultSlotElements.length > 0;
58
+ };
59
+ this._handleKeydown = (e) => {
60
+ if (e.key === "Enter" || e.key === " ") {
61
+ e.preventDefault();
62
+ this._handleMobileToggle();
63
+ }
64
+ };
65
+ }
66
+ connectedCallback() {
67
+ super.connectedCallback();
68
+ window.addEventListener("click", this._handleClickOutside);
69
+ }
70
+ disconnectedCallback() {
71
+ super.disconnectedCallback();
72
+ window.removeEventListener("click", this._handleClickOutside);
73
+ }
74
+ render() {
75
+ if (!this._breakpointReached) {
76
+ // Desktop: read-only (no dropdown items)
77
+ if (!this._hasDropdownItems) {
78
+ return html `
79
+ <div
80
+ class="${classMap({
81
+ "nav-link": true,
82
+ "read-only": true
83
+ })}"
84
+ aria-label=${ifDefined(this.ariaLabel)}
85
+ >
86
+ <slot name="avatar"></slot>
87
+ ${this.label || this.secondaryText
88
+ ? html `<div class="profile-text">
89
+ ${this.label ? html `<span class="profile-label">${this.label}</span>` : nothing}
90
+ ${this.secondaryText
91
+ ? html `<span class="profile-secondary-text">${this.secondaryText}</span>`
92
+ : nothing}
93
+ </div>`
94
+ : nothing}
95
+ </div>
96
+ <slot @slotchange=${this._handleSlotChange}></slot>
97
+ `;
98
+ }
99
+ // Desktop: dropdown with avatar + label + secondaryText
100
+ return html `
101
+ <sgds-dropdown .floatingOpts=${{ middleware: [offset(0)] }} ?disabled=${this.disabled} close=${this.close}>
102
+ <button
103
+ class="${classMap({
104
+ "nav-link": true,
105
+ disabled: this.disabled
106
+ })}"
107
+ aria-disabled=${this.disabled ? "true" : "false"}
108
+ aria-label=${ifDefined(this.ariaLabel)}
109
+ id=${this.togglerId}
110
+ tabindex=${this.disabled ? "-1" : "0"}
111
+ slot="toggler"
112
+ >
113
+ <slot name="avatar"></slot>
114
+ ${this.label || this.secondaryText
115
+ ? html `<div class="profile-text">
116
+ ${this.label ? html `<span class="profile-label">${this.label}</span>` : nothing}
117
+ ${this.secondaryText
118
+ ? html `<span class="profile-secondary-text">${this.secondaryText}</span>`
119
+ : nothing}
120
+ </div>`
121
+ : nothing}
122
+ <sgds-icon name="chevron-down" size="md"></sgds-icon>
123
+ </button>
124
+ <slot @slotchange=${this._handleSlotChange}></slot>
125
+ </sgds-dropdown>
126
+ `;
127
+ }
128
+ // Mobile: read-only (no dropdown items)
129
+ if (!this._hasDropdownItems) {
130
+ return html `
131
+ <div class="profile-avatar-mobile read-only">
132
+ <slot name="avatar"></slot>
133
+ </div>
134
+ <slot @slotchange=${this._handleSlotChange}></slot>
135
+ `;
136
+ }
137
+ // Mobile: avatar toggler + self-contained mobile panel
138
+ return html `
139
+ <button
140
+ class="profile-avatar-mobile"
141
+ aria-label=${this.ariaLabel || "Toggle navigation"}
142
+ aria-expanded=${this._mobileMenuOpen ? "true" : "false"}
143
+ @click=${this._handleMobileToggle}
144
+ @keydown=${this._handleKeydown}
145
+ >
146
+ <slot name="avatar"></slot>
147
+ </button>
148
+ <div class="profile-mobile-panel" ?hidden=${!this._mobileMenuOpen}>
149
+ <div class="profile-mobile-items">
150
+ <slot @slotchange=${this._handleSlotChange}></slot>
151
+ </div>
152
+ </div>
153
+ `;
154
+ }
155
+ }
156
+ NavProfileElement.styles = [...SgdsElement.styles, css_248z];
157
+ /** @internal */
158
+ NavProfileElement.dependencies = {
159
+ "sgds-dropdown": SgdsDropdown,
160
+ "sgds-icon": SgdsIcon
161
+ };
162
+ __decorate([
163
+ state()
164
+ ], NavProfileElement.prototype, "_breakpointReached", void 0);
165
+ __decorate([
166
+ state()
167
+ ], NavProfileElement.prototype, "_mobileMenuOpen", void 0);
168
+ __decorate([
169
+ state()
170
+ ], NavProfileElement.prototype, "_hasDropdownItems", void 0);
171
+ __decorate([
172
+ queryAssignedElements({ flatten: true })
173
+ ], NavProfileElement.prototype, "_defaultSlotElements", void 0);
174
+ __decorate([
175
+ property({ type: String, reflect: true })
176
+ ], NavProfileElement.prototype, "label", void 0);
177
+ __decorate([
178
+ property({ type: String, reflect: true })
179
+ ], NavProfileElement.prototype, "secondaryText", void 0);
180
+ __decorate([
181
+ property({ type: Boolean })
182
+ ], NavProfileElement.prototype, "disabled", void 0);
183
+ __decorate([
184
+ property({ type: String })
185
+ ], NavProfileElement.prototype, "ariaLabel", void 0);
186
+ __decorate([
187
+ property({ type: String })
188
+ ], NavProfileElement.prototype, "close", void 0);
189
+
190
+ export { NavProfileElement as default };
191
+ //# sourceMappingURL=nav-profile-element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav-profile-element.js","sources":["../../src/base/nav-profile-element.ts"],"sourcesContent":["import { html, nothing } from \"lit\";\nimport { property, queryAssignedElements, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport { offset } from \"@floating-ui/dom\";\nimport SgdsElement from \"./sgds-element\";\nimport SgdsDropdown from \"../components/Dropdown/sgds-dropdown\";\nimport SgdsIcon from \"../components/Icon/sgds-icon\";\nimport navProfileStyle from \"./nav-profile.css\";\nimport genId from \"../utils/generateId\";\n\n/**\n * Base class for navigation profile components (sgds-mainnav-profile and sgds-appnav-profile).\n * Provides the full profile dropdown (desktop) and mobile panel behavior.\n * When no dropdown items are slotted into the default slot, renders as a non-interactive\n * read-only element (no dropdown menu, no caret icon, cursor default, not focusable by keyboard or mouse).\n * Subclasses must consume the appropriate breakpoint context and set `_breakpointReached`.\n *\n * @slot avatar - Avatar element displayed in both desktop (before label) and mobile (as toggler)\n * @slot default - Profile menu items (sgds-dropdown-item elements). When empty, the component becomes read-only.\n */\nexport default abstract class NavProfileElement extends SgdsElement {\n static styles = [...SgdsElement.styles, navProfileStyle];\n /** @internal */\n static dependencies = {\n \"sgds-dropdown\": SgdsDropdown,\n \"sgds-icon\": SgdsIcon\n };\n\n /** @internal Whether the breakpoint is reached (mobile mode). Subclasses set this via context consumption. */\n @state()\n protected _breakpointReached = true;\n\n /** @internal Whether the mobile menu is open */\n @state()\n private _mobileMenuOpen = false;\n\n /** @internal Whether dropdown items are slotted */\n @state()\n private _hasDropdownItems = false;\n\n @queryAssignedElements({ flatten: true })\n private _defaultSlotElements!: HTMLElement[];\n\n /** Primary text displayed next to the avatar in desktop (e.g. user name) */\n @property({ type: String, reflect: true })\n label = \"\";\n\n /** Secondary text displayed below the label in desktop (e.g. agency or role) */\n @property({ type: String, reflect: true })\n secondaryText = \"\";\n\n /** When true, disables the profile dropdown */\n @property({ type: Boolean })\n disabled = false;\n\n /** Accessible label for the profile toggle button */\n @property({ type: String })\n ariaLabel = \"\";\n\n /** Controls dropdown close behavior. \"default\" auto-closes on item/outside click, \"outside\" closes only on outside click, \"inside\" prevents auto-close. */\n @property({ type: String })\n close: \"default\" | \"outside\" | \"inside\" = \"default\";\n\n /** @internal */\n private togglerId: string = genId(\"profile\", \"button\");\n\n private _handleMobileToggle = () => {\n this._mobileMenuOpen = !this._mobileMenuOpen;\n };\n\n private _handleClickOutside = (e: MouseEvent) => {\n if (!this._mobileMenuOpen) return;\n if (this.close === \"inside\") return;\n if (!e.composedPath().includes(this)) {\n this._mobileMenuOpen = false;\n }\n };\n\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener(\"click\", this._handleClickOutside);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n window.removeEventListener(\"click\", this._handleClickOutside);\n }\n\n private _handleSlotChange = () => {\n this._hasDropdownItems = this._defaultSlotElements.length > 0;\n };\n\n private _handleKeydown = (e: KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n this._handleMobileToggle();\n }\n };\n\n render() {\n if (!this._breakpointReached) {\n // Desktop: read-only (no dropdown items)\n if (!this._hasDropdownItems) {\n return html`\n <div\n class=\"${classMap({\n \"nav-link\": true,\n \"read-only\": true\n })}\"\n aria-label=${ifDefined(this.ariaLabel)}\n >\n <slot name=\"avatar\"></slot>\n ${this.label || this.secondaryText\n ? html`<div class=\"profile-text\">\n ${this.label ? html`<span class=\"profile-label\">${this.label}</span>` : nothing}\n ${this.secondaryText\n ? html`<span class=\"profile-secondary-text\">${this.secondaryText}</span>`\n : nothing}\n </div>`\n : nothing}\n </div>\n <slot @slotchange=${this._handleSlotChange}></slot>\n `;\n }\n\n // Desktop: dropdown with avatar + label + secondaryText\n return html`\n <sgds-dropdown .floatingOpts=${{ middleware: [offset(0)] }} ?disabled=${this.disabled} close=${this.close}>\n <button\n class=\"${classMap({\n \"nav-link\": true,\n disabled: this.disabled\n })}\"\n aria-disabled=${this.disabled ? \"true\" : \"false\"}\n aria-label=${ifDefined(this.ariaLabel)}\n id=${this.togglerId}\n tabindex=${this.disabled ? \"-1\" : \"0\"}\n slot=\"toggler\"\n >\n <slot name=\"avatar\"></slot>\n ${this.label || this.secondaryText\n ? html`<div class=\"profile-text\">\n ${this.label ? html`<span class=\"profile-label\">${this.label}</span>` : nothing}\n ${this.secondaryText\n ? html`<span class=\"profile-secondary-text\">${this.secondaryText}</span>`\n : nothing}\n </div>`\n : nothing}\n <sgds-icon name=\"chevron-down\" size=\"md\"></sgds-icon>\n </button>\n <slot @slotchange=${this._handleSlotChange}></slot>\n </sgds-dropdown>\n `;\n }\n\n // Mobile: read-only (no dropdown items)\n if (!this._hasDropdownItems) {\n return html`\n <div class=\"profile-avatar-mobile read-only\">\n <slot name=\"avatar\"></slot>\n </div>\n <slot @slotchange=${this._handleSlotChange}></slot>\n `;\n }\n\n // Mobile: avatar toggler + self-contained mobile panel\n return html`\n <button\n class=\"profile-avatar-mobile\"\n aria-label=${this.ariaLabel || \"Toggle navigation\"}\n aria-expanded=${this._mobileMenuOpen ? \"true\" : \"false\"}\n @click=${this._handleMobileToggle}\n @keydown=${this._handleKeydown}\n >\n <slot name=\"avatar\"></slot>\n </button>\n <div class=\"profile-mobile-panel\" ?hidden=${!this._mobileMenuOpen}>\n <div class=\"profile-mobile-items\">\n <slot @slotchange=${this._handleSlotChange}></slot>\n </div>\n </div>\n `;\n }\n}\n"],"names":["navProfileStyle"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { css } from 'lit';
2
+
3
+ var css_248z = css`:host([expand=always]) .nav-link{border-bottom:var(--sgds-border-width-4) solid transparent;min-height:100%;padding:0 var(--sgds-padding-md)}@media (min-width:512px){:host([expand=sm]) .nav-link{border-bottom:var(--sgds-border-width-4) solid transparent;min-height:100%;padding:0 var(--sgds-padding-md)}}@media (min-width:768px){:host([expand=md]) .nav-link{border-bottom:var(--sgds-border-width-4) solid transparent;min-height:100%;padding:0 var(--sgds-padding-md)}}@media (min-width:1024px){:host(:not([expand])) .nav-link,:host([expand=lg]) .nav-link{border-bottom:var(--sgds-border-width-4) solid transparent;min-height:100%;padding:0 var(--sgds-padding-md)}}@media (min-width:1280px){:host([expand=xl]) .nav-link{border-bottom:var(--sgds-border-width-4) solid transparent;min-height:100%;padding:0 var(--sgds-padding-md)}}@media (min-width:1440px){:host([expand=xxl]) .nav-link{border-bottom:var(--sgds-border-width-4) solid transparent;min-height:100%;padding:0 var(--sgds-padding-md)}}button.nav-link{appearance:none;background:none;border:none;font-family:inherit}.nav-link{align-items:center;box-sizing:border-box;color:var(--sgds-color-default);cursor:pointer;display:flex;font-size:var(--sgds-font-size-label-sm);gap:var(--sgds-gap-xs);line-height:var(--sgds-line-height-2-xs,20px);padding:var(--sgds-padding-sm) var(--sgds-mainnav-mobile-padding-x);text-decoration:none}.nav-link:not(.disabled):hover{color:var(--sgds-primary-color-default)}.nav-link:not(.disabled):focus-visible{color:var(--sgds-primary-color-default);outline:var(--sgds-outline-focus);outline-offset:var(--sgds-outline-offset-focus)}.nav-link.disabled{cursor:not-allowed;opacity:var(--sgds-opacity-40)}.nav-link.read-only,.profile-avatar-mobile.read-only{cursor:default;pointer-events:none}:host([tone=brand][expand=always]) .nav-link,:host([tone^=gradient][expand=always]) .nav-link{color:var(--sgds-color-fixed-light)}@media screen and (min-width:512px){:host([tone=brand][expand=sm]) .nav-link,:host([tone^=gradient][expand=sm]) .nav-link{color:var(--sgds-color-fixed-light)}}@media screen and (min-width:768px){:host([tone=brand][expand=md]) .nav-link,:host([tone^=gradient][expand=md]) .nav-link{color:var(--sgds-color-fixed-light)}}@media screen and (min-width:1024px){:host([tone=brand][expand=lg]) .nav-link,:host([tone^=gradient][expand=lg]) .nav-link{color:var(--sgds-color-fixed-light)}}@media screen and (min-width:1280px){:host([tone=brand][expand=xl]) .nav-link,:host([tone^=gradient][expand=xl]) .nav-link{color:var(--sgds-color-fixed-light)}}@media screen and (min-width:1440px){:host([tone=brand][expand=xxl]) .nav-link,:host([tone^=gradient][expand=xxl]) .nav-link{color:var(--sgds-color-fixed-light)}}.profile-text{display:flex;flex:1;flex-direction:column;gap:var(--sgds-gap-text-2-xs,2px);text-align:left}.profile-label{font-weight:var(--sgds-font-weight-semibold)}.profile-label,.profile-secondary-text{font-size:var(--sgds-font-size-body-xs);line-height:var(--sgds-line-height-3-xs,16px)}sgds-dropdown{display:block;height:100%}.profile-avatar-mobile{align-items:center;background:none;border:none;border-radius:var(--sgds-border-radius-full);color:inherit;cursor:pointer;display:flex;font:inherit;height:100%;margin:0;padding:0}.profile-avatar-mobile:focus-visible{outline:none}.profile-avatar-mobile:focus-visible ::slotted(*){border-radius:var(--sgds-border-radius-full);outline:var(--sgds-outline-focus);outline-offset:var(--sgds-outline-offset-focus)}.profile-mobile-panel{animation:profile-panel-show .2s ease-in-out;background-color:var(--sgds-surface-default);border-top:var(--sgds-border-width-1) solid var(--sgds-border-color-translucent);box-shadow:0 2px 4px 0 hsla(0,0%,5%,.08);left:0;padding:var(--sgds-padding-md) 0;position:absolute;top:100%;width:100%;z-index:var(--sgds-z-index-floating)}.profile-mobile-panel[hidden]{display:none}@keyframes profile-panel-show{0%{max-height:0;opacity:0}to{max-height:100dvh;opacity:1}}.profile-mobile-items{display:flex;flex-direction:column;height:100dvh;margin:auto;max-width:var(--sgds-mainnav-max-width,1440px);overflow-y:auto;width:100%}@media screen and (min-width:1024px){.nav-link{padding:var(--sgds-padding-sm) var(--sgds-mainnav-padding-x)}}`;
4
+
5
+ export { css_248z as default };
6
+ //# sourceMappingURL=nav-profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav-profile.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,6 @@
1
+ export declare const AppnavBreakpointContext: {
2
+ __context__: boolean;
3
+ };
4
+ export declare const AppnavExpandedContext: {
5
+ __context__: boolean;
6
+ };
@@ -0,0 +1,7 @@
1
+ import { createContext } from '@lit/context';
2
+
3
+ const AppnavBreakpointContext = createContext("appnav-context");
4
+ const AppnavExpandedContext = createContext("appnav-expanded-context");
5
+
6
+ export { AppnavBreakpointContext, AppnavExpandedContext };
7
+ //# sourceMappingURL=appnav-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appnav-context.js","sources":["../../../src/components/Appnav/appnav-context.ts"],"sourcesContent":["import { createContext } from \"@lit/context\";\n\nexport const AppnavBreakpointContext = createContext<boolean>(\"appnav-context\");\n\nexport const AppnavExpandedContext = createContext<boolean>(\"appnav-expanded-context\");\n"],"names":[],"mappings":";;MAEa,uBAAuB,GAAG,aAAa,CAAU,gBAAgB,EAAE;MAEnE,qBAAqB,GAAG,aAAa,CAAU,yBAAyB;;;;"}
@@ -0,0 +1,6 @@
1
+ import { css } from 'lit';
2
+
3
+ var css_248z = css`:host{display:block}nav{box-shadow:0 2px 4px 0 hsla(0,0%,5%,.08);position:relative;z-index:var(--sgds-z-index-floating)}:host([tone=brand]) nav{background-color:var(--sgds-primary-surface-default)}:host([tone=gradient-1]) nav{background:var(--sgds-gradient-1)}:host([tone=gradient-2]) nav{background:var(--sgds-gradient-2)}:host([tone=gradient-3]) nav{background:var(--sgds-gradient-3)}:host([tone=gradient-4]) nav{background:var(--sgds-gradient-4)}.navbar{align-items:stretch;display:flex;flex-wrap:wrap;font-size:var(--sgds-font-size-label-sm);gap:var(--sgds-gap-xs);justify-content:flex-start;margin:auto;min-height:var(--sgds-mainnav-height,72px);padding:0 var(--sgds-mainnav-mobile-padding-x);width:100%}.navbar-brand{align-items:center;color:var(--sgds-color-fixed-light);display:flex;text-decoration:none;white-space:nowrap}.navbar-brand:focus-visible{outline:var(--sgds-outline-focus);outline-offset:var(--sgds-outline-offset-focus)}.navbar-nav{align-items:flex-start;display:flex;flex-direction:column;gap:var(--sgds-gap-xs);height:100%;margin-bottom:0;margin-left:auto;margin-top:0}nav>.navbar-body{background-color:var(--sgds-surface-default);border-top:var(--sgds-border-width-1) solid var(--sgds-border-color-translucent);box-shadow:0 2px 4px 0 hsla(0,0%,5%,.08);padding:var(--sgds-padding-md) 0;position:absolute;transition:transform .2s ease-in-out;width:100%;z-index:var(--sgds-z-index-floating)}nav>.navbar-body .navbar-nav{height:100dvh;margin:auto}nav>.navbar-body slot::slotted(*){padding:var(--sgds-padding-sm) var(--sgds-mainnav-mobile-padding-x)}.navbar-collapse{align-items:center;flex-basis:100%;flex-grow:1}.navbar-toggler{align-self:center}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-nav-scroll{overflow-y:auto}@media (min-width:512px){.navbar-expand-sm{flex-wrap:nowrap;gap:var(--sgds-gap-xl);justify-content:flex-start}.navbar-expand-sm .navbar-nav{align-items:center;flex-direction:row}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;gap:var(--sgds-gap-xl);justify-content:flex-start}.navbar-expand-md .navbar-nav{align-items:center;flex-direction:row}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (min-width:1024px){.navbar{padding:0 var(--sgds-mainnav-padding-x)}.navbar-expand-lg{flex-wrap:nowrap;gap:var(--sgds-gap-xl);justify-content:flex-start}.navbar-expand-lg .navbar-nav{align-items:center;flex-direction:row}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (min-width:1280px){.navbar-expand-xl{flex-wrap:nowrap;gap:var(--sgds-gap-xl);justify-content:flex-start}.navbar-expand-xl .navbar-nav{align-items:center;flex-direction:row}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}@media (min-width:1440px){.navbar-expand-xxl{flex-wrap:nowrap;gap:var(--sgds-gap-xl);justify-content:flex-start}.navbar-expand-xxl .navbar-nav{align-items:center;flex-direction:row}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}}.navbar-expand{flex-wrap:nowrap;gap:var(--sgds-gap-xl);justify-content:flex-start}.navbar-expand .navbar-nav{align-items:center;flex-direction:row}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-end{margin-left:auto}.navbar-end,slot[name=start]{align-items:center;display:flex;gap:var(--sgds-gap-xs)}slot[name=start].slot-empty{display:none}slot[name=profile]{align-self:stretch;display:flex}slot[name=start]::slotted(*){color:var(--sgds-color-fixed-light)}.navbar-end.slot-empty,.slot-desktop-only{display:none}.appnav-menu-item{align-items:center;box-sizing:border-box;cursor:pointer;display:flex;font-size:var(--sgds-font-size-label-sm);line-height:var(--sgds-line-height-2-xs,20px);padding:var(--sgds-padding-sm) var(--sgds-mainnav-mobile-padding-x);text-decoration:none;width:100%}.appnav-menu-item,.appnav-menu-item:hover{color:var(--sgds-color-default)}.appnav-menu-item:focus-visible{color:var(--sgds-primary-color-default);outline:var(--sgds-outline-focus);outline-offset:var(--sgds-outline-offset-focus)}`;
4
+
5
+ export { css_248z as default };
6
+ //# sourceMappingURL=appnav.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appnav.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,9 @@
1
+ import { SgdsAppnav } from "./sgds-appnav";
2
+ import { SgdsAppnavProfile } from "./sgds-appnav-profile";
3
+ export { SgdsAppnav, SgdsAppnavProfile };
4
+ declare global {
5
+ interface HTMLElementTagNameMap {
6
+ "sgds-appnav": SgdsAppnav;
7
+ "sgds-appnav-profile": SgdsAppnavProfile;
8
+ }
9
+ }
@@ -0,0 +1,8 @@
1
+ import { SgdsAppnav } from './sgds-appnav.js';
2
+ export { SgdsAppnav } from './sgds-appnav.js';
3
+ import { SgdsAppnavProfile } from './sgds-appnav-profile.js';
4
+ export { SgdsAppnavProfile } from './sgds-appnav-profile.js';
5
+
6
+ customElements.define("sgds-appnav", SgdsAppnav);
7
+ customElements.define("sgds-appnav-profile", SgdsAppnavProfile);
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Appnav/index.ts"],"sourcesContent":["import { SgdsAppnav } from \"./sgds-appnav\";\nimport { SgdsAppnavProfile } from \"./sgds-appnav-profile\";\n\nexport { SgdsAppnav, SgdsAppnavProfile };\n\ncustomElements.define(\"sgds-appnav\", SgdsAppnav);\ncustomElements.define(\"sgds-appnav-profile\", SgdsAppnavProfile);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"sgds-appnav\": SgdsAppnav;\n \"sgds-appnav-profile\": SgdsAppnavProfile;\n }\n}\n"],"names":[],"mappings":";;;;;AAKA,cAAc,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AACjD,cAAc,CAAC,MAAM,CAAC,qBAAqB,EAAE,iBAAiB,CAAC"}