@leabankab/component-library 7.3.0 → 8.0.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 (187) hide show
  1. package/CHANGELOG.md +644 -0
  2. package/README.md +2 -5
  3. package/dist/component-library.es.js +2712 -5705
  4. package/dist/component-library.es.js.map +1 -1
  5. package/dist/component-library.umd.js +2 -28
  6. package/dist/component-library.umd.js.map +1 -1
  7. package/dist/components/animations/icons/status-icon.d.ts +4 -0
  8. package/dist/components/animations/illustrations/check-animation.d.ts +8 -0
  9. package/dist/components/animations/illustrations/pulse-animation.d.ts +5 -1
  10. package/dist/components/animations/illustrations/status-animation.d.ts +8 -1
  11. package/dist/components/animations/shared.d.ts +6 -32
  12. package/dist/components/animations/spinner.d.ts +18 -0
  13. package/dist/components/animations/use-animation-labels.d.ts +0 -5
  14. package/dist/components/buttons/action-button.d.ts +8 -10
  15. package/dist/components/buttons/button-base.d.ts +26 -12
  16. package/dist/components/buttons/button.d.ts +2 -2
  17. package/dist/components/buttons/close-button.d.ts +1 -1
  18. package/dist/components/buttons/icon-button.d.ts +1 -13
  19. package/dist/components/buttons/skip-link.d.ts +21 -4
  20. package/dist/components/color-roles.d.ts +8 -0
  21. package/dist/components/data-display/card.d.ts +31 -4
  22. package/dist/components/data-display/chip.d.ts +50 -8
  23. package/dist/components/data-display/data-field.d.ts +15 -4
  24. package/dist/components/data-display/tooltip.d.ts +74 -22
  25. package/dist/components/feedback/alert-parts.d.ts +10 -9
  26. package/dist/components/feedback/alert.d.ts +1 -1
  27. package/dist/components/feedback/simple-dialog.d.ts +1 -1
  28. package/dist/components/form/amount-slider.d.ts +68 -0
  29. package/dist/components/form/autocomplete.d.ts +56 -59
  30. package/dist/components/form/checkbox-box.d.ts +11 -0
  31. package/dist/components/form/checkbox.d.ts +67 -7
  32. package/dist/components/form/combo-field.d.ts +60 -0
  33. package/dist/components/form/email-input.d.ts +20 -26
  34. package/dist/components/form/field-parts.d.ts +36 -0
  35. package/dist/components/form/index.d.ts +3 -9
  36. package/dist/components/form/input.d.ts +51 -13
  37. package/dist/components/form/multi-select.d.ts +12 -14
  38. package/dist/components/form/number-input.d.ts +20 -14
  39. package/dist/components/form/phone-number-input/phone-number-input.d.ts +25 -14
  40. package/dist/components/form/radio-card.d.ts +94 -43
  41. package/dist/components/form/radio-circle.d.ts +14 -13
  42. package/dist/components/form/radio-group-root.d.ts +88 -0
  43. package/dist/components/form/radio.d.ts +68 -24
  44. package/dist/components/form/select-field.d.ts +78 -0
  45. package/dist/components/form/select.d.ts +30 -42
  46. package/dist/components/form/slider-parts.d.ts +34 -0
  47. package/dist/components/form/slider.d.ts +40 -16
  48. package/dist/components/form/use-autocomplete-labels.d.ts +3 -16
  49. package/dist/components/form/use-blur-outside.d.ts +7 -0
  50. package/dist/components/form/use-focus-target-ref.d.ts +11 -0
  51. package/dist/components/form/use-tooltip-trigger-labels.d.ts +5 -0
  52. package/dist/components/index.d.ts +0 -1
  53. package/dist/components/navigation/form-stepper.d.ts +1 -1
  54. package/dist/components/navigation/index.d.ts +1 -1
  55. package/dist/components/navigation/linear-form-stepper.d.ts +1 -1
  56. package/dist/components/navigation/progress-circle.d.ts +14 -8
  57. package/dist/components/navigation/tabs.d.ts +37 -34
  58. package/dist/components/navigation/use-stepper-labels.d.ts +1 -1
  59. package/dist/components/typography/link.d.ts +25 -16
  60. package/dist/components/typography/lists.d.ts +20 -23
  61. package/dist/components/typography/text.d.ts +46 -10
  62. package/dist/components/ui/app-header.d.ts +9 -1
  63. package/dist/cookie-consent/react.d.ts +0 -1
  64. package/dist/cookie-consent-react.cjs +1 -1
  65. package/dist/cookie-consent-react.cjs.map +1 -1
  66. package/dist/cookie-consent-react.mjs +106 -96
  67. package/dist/cookie-consent-react.mjs.map +1 -1
  68. package/dist/cookie-consent.css +1 -1
  69. package/dist/date-picker/datepicker.d.ts +140 -0
  70. package/dist/date-picker/index.d.ts +18 -0
  71. package/dist/date-picker/theme/field-base.d.ts +23 -0
  72. package/dist/date-picker/theme/form-control.theme.d.ts +7 -0
  73. package/dist/date-picker/theme/index.d.ts +12 -0
  74. package/dist/date-picker/theme/input.theme.d.ts +6 -0
  75. package/dist/{components/form/datepicker → date-picker}/use-view-toggle-labels.d.ts +1 -1
  76. package/dist/date-picker.cjs +2 -0
  77. package/dist/date-picker.cjs.map +1 -0
  78. package/dist/date-picker.mjs +1012 -0
  79. package/dist/date-picker.mjs.map +1 -0
  80. package/dist/{components/dev-panel → dev-panel}/dev-panel-payload.d.ts +1 -1
  81. package/dist/{components/dev-panel → dev-panel}/dev-panel-status.d.ts +2 -2
  82. package/dist/{components/dev-panel → dev-panel}/dev-panel-steps.d.ts +2 -1
  83. package/dist/{components/dev-panel → dev-panel}/dev-panel.d.ts +25 -19
  84. package/dist/dev-panel/index.d.ts +10 -0
  85. package/dist/{components/dev-panel → dev-panel}/json-highlight.d.ts +2 -2
  86. package/dist/dev-panel/parts.d.ts +9 -0
  87. package/dist/{components/dev-panel → dev-panel}/segmented-control.d.ts +5 -4
  88. package/dist/{components/dev-panel → dev-panel}/use-dev-panel-labels.d.ts +1 -1
  89. package/dist/{components/dev-panel → dev-panel}/use-roving-radio.d.ts +2 -2
  90. package/dist/dev-panel.cjs +3 -0
  91. package/dist/dev-panel.cjs.map +1 -0
  92. package/dist/dev-panel.css +1 -0
  93. package/dist/dev-panel.mjs +818 -0
  94. package/dist/dev-panel.mjs.map +1 -0
  95. package/dist/fonts/ClashGrotesk-Variable.woff2 +0 -0
  96. package/dist/index.css +1 -1
  97. package/dist/index.d.ts +1 -3
  98. package/dist/provider/lea-provider.d.ts +4 -7
  99. package/dist/react-hook-form/form-field.d.ts +76 -0
  100. package/dist/react-hook-form/index.d.ts +1 -0
  101. package/dist/react-hook-form.cjs +2 -0
  102. package/dist/react-hook-form.cjs.map +1 -0
  103. package/dist/react-hook-form.mjs +33 -0
  104. package/dist/react-hook-form.mjs.map +1 -0
  105. package/dist/tailwind.css +103 -17
  106. package/dist/theme/index.d.ts +0 -4
  107. package/dist/theme/token-types.d.ts +15 -3
  108. package/dist/theme/tokens/colors.d.ts +13 -0
  109. package/dist/theme/tokens/font-family.d.ts +9 -0
  110. package/dist/theme/tokens/font-sizes.d.ts +8 -0
  111. package/dist/theme/tokens/index.d.ts +4 -1
  112. package/dist/theme/tokens/line-heights.d.ts +11 -0
  113. package/dist/theme/tokens/spacing.d.ts +6 -0
  114. package/dist/theme/tokens/text-styles.d.ts +61 -0
  115. package/dist/theme/tokens/type-scale.d.ts +21 -0
  116. package/dist/theme/types.d.ts +19 -30
  117. package/package.json +42 -6
  118. package/dist/components/dev-panel/index.d.ts +0 -9
  119. package/dist/components/form/datepicker/datepicker.d.ts +0 -99
  120. package/dist/components/form/datepicker/index.d.ts +0 -1
  121. package/dist/components/form/fields/autocomplete-field.d.ts +0 -17
  122. package/dist/components/form/fields/boolean-radio-field.d.ts +0 -3
  123. package/dist/components/form/fields/checkbox-field.d.ts +0 -12
  124. package/dist/components/form/fields/datepicker-field.d.ts +0 -9
  125. package/dist/components/form/fields/email-field.d.ts +0 -10
  126. package/dist/components/form/fields/field-types.d.ts +0 -18
  127. package/dist/components/form/fields/index.d.ts +0 -14
  128. package/dist/components/form/fields/input-field.d.ts +0 -9
  129. package/dist/components/form/fields/multi-select-field.d.ts +0 -9
  130. package/dist/components/form/fields/number-field.d.ts +0 -10
  131. package/dist/components/form/fields/phone-number-field.d.ts +0 -11
  132. package/dist/components/form/fields/radio-card-field.d.ts +0 -22
  133. package/dist/components/form/fields/radio-field.d.ts +0 -16
  134. package/dist/components/form/fields/select-field.d.ts +0 -9
  135. package/dist/components/form/fields/use-field-control.d.ts +0 -6
  136. package/dist/components/form/fields/use-tooltip-trigger-labels.d.ts +0 -5
  137. package/dist/components/form/form-control/form-control-context.d.ts +0 -35
  138. package/dist/components/form/form-control/form-control-label.d.ts +0 -1
  139. package/dist/components/form/form-control/form-control.d.ts +0 -13
  140. package/dist/components/form/form-control/form-helper-text.d.ts +0 -9
  141. package/dist/components/form/form-control/form-label.d.ts +0 -9
  142. package/dist/components/form/form-control/index.d.ts +0 -5
  143. package/dist/components/form/input-label.d.ts +0 -9
  144. package/dist/theme/components/accordion.theme.d.ts +0 -7
  145. package/dist/theme/components/action-button.theme.d.ts +0 -45
  146. package/dist/theme/components/alert.theme.d.ts +0 -2
  147. package/dist/theme/components/autocomplete.theme.d.ts +0 -2
  148. package/dist/theme/components/baseline-css.d.ts +0 -2
  149. package/dist/theme/components/button.theme.d.ts +0 -2
  150. package/dist/theme/components/card.theme.d.ts +0 -2
  151. package/dist/theme/components/checkbox.theme.d.ts +0 -2
  152. package/dist/theme/components/chip.theme.d.ts +0 -2
  153. package/dist/theme/components/dev-panel.theme.d.ts +0 -95
  154. package/dist/theme/components/dialog.theme.d.ts +0 -2
  155. package/dist/theme/components/drawer.theme.d.ts +0 -4
  156. package/dist/theme/components/field-base.d.ts +0 -31
  157. package/dist/theme/components/form-control-label.theme.d.ts +0 -2
  158. package/dist/theme/components/form-control.theme.d.ts +0 -2
  159. package/dist/theme/components/index.d.ts +0 -2
  160. package/dist/theme/components/input.theme.d.ts +0 -3
  161. package/dist/theme/components/link.theme.d.ts +0 -2
  162. package/dist/theme/components/menu-item.theme.d.ts +0 -2
  163. package/dist/theme/components/number-input.theme.d.ts +0 -23
  164. package/dist/theme/components/phone-number-input.theme.d.ts +0 -43
  165. package/dist/theme/components/radio.theme.d.ts +0 -2
  166. package/dist/theme/components/select.theme.d.ts +0 -2
  167. package/dist/theme/components/slider.theme.d.ts +0 -2
  168. package/dist/theme/components/tabs.theme.d.ts +0 -34
  169. package/dist/theme/components/tooltip.theme.d.ts +0 -110
  170. package/dist/theme/components/typography.theme.d.ts +0 -2
  171. package/dist/theme/mui-augmentation.d.ts +0 -147
  172. package/dist/theme/sx-config.d.ts +0 -10
  173. /package/dist/{components/form/datepicker → date-picker}/calendar-header.d.ts +0 -0
  174. /package/dist/{components/form/datepicker → date-picker}/drawer-toolbar.d.ts +0 -0
  175. /package/dist/{theme/components → date-picker/theme}/date-picker.theme.d.ts +0 -0
  176. /package/dist/{theme/components → date-picker/theme}/icon-button.theme.d.ts +0 -0
  177. /package/dist/{theme/tokens → date-picker/theme}/typography.d.ts +0 -0
  178. /package/dist/{components/form/datepicker → date-picker}/use-calendar-header-labels.d.ts +0 -0
  179. /package/dist/{components/form/datepicker → date-picker}/use-datepicker-title-labels.d.ts +0 -0
  180. /package/dist/{components/form/datepicker → date-picker}/view-renderers.d.ts +0 -0
  181. /package/dist/{components/form/datepicker → date-picker}/view-toggle.d.ts +0 -0
  182. /package/dist/{components/dev-panel → dev-panel}/dev-panel-country.d.ts +0 -0
  183. /package/dist/{components/dev-panel → dev-panel}/dev-panel-flow.d.ts +0 -0
  184. /package/dist/{components/dev-panel → dev-panel}/dev-panel-footer.d.ts +0 -0
  185. /package/dist/{components/dev-panel → dev-panel}/dev-panel-step-state.d.ts +0 -0
  186. /package/dist/{components/dev-panel → dev-panel}/dev-panel-variant.d.ts +0 -0
  187. /package/dist/{components/dev-panel → dev-panel}/use-copy.d.ts +0 -0
@@ -0,0 +1,818 @@
1
+ "use client";
2
+ import { Braces as e, Check as t, ChevronRight as n, Copy as r, Minus as i, Plus as a, RotateCcw as o, Upload as s, X as c } from "lucide-react";
3
+ import { Fragment as l, createContext as u, useCallback as d, useContext as f, useEffect as p, useId as m, useLayoutEffect as h, useMemo as g, useRef as _, useState as v } from "react";
4
+ import { Button as y, IconButton as b, Text as x, createTranslation as S } from "./component-library.es.js";
5
+ import { Fragment as C, jsx as w, jsxs as T } from "react/jsx-runtime";
6
+ import { createPortal as E } from "react-dom";
7
+ import './dev-panel.css';//#region \0rolldown/runtime.js
8
+ var D = Object.defineProperty, O = (e, t) => {
9
+ let n = {};
10
+ for (var r in e) D(n, r, {
11
+ get: e[r],
12
+ enumerable: !0
13
+ });
14
+ return t || D(n, Symbol.toStringTag, { value: "Module" }), n;
15
+ }, k = {
16
+ Badge: "_Badge_1o2qd_23",
17
+ SectionLabel: "_SectionLabel_1o2qd_24",
18
+ SectionMeta: "_SectionMeta_1o2qd_25",
19
+ FlowLabel: "_FlowLabel_1o2qd_26",
20
+ CountryCode: "_CountryCode_1o2qd_27",
21
+ StepLabel: "_StepLabel_1o2qd_28",
22
+ PayloadCode: "_PayloadCode_1o2qd_29",
23
+ DevPanel: "_DevPanel_1o2qd_38",
24
+ Header: "_Header_1o2qd_53",
25
+ HeaderTitle: "_HeaderTitle_1o2qd_65",
26
+ HeaderDot: "_HeaderDot_1o2qd_75",
27
+ Body: "_Body_1o2qd_105",
28
+ Section: "_Section_1o2qd_24",
29
+ SectionHeaderRow: "_SectionHeaderRow_1o2qd_123",
30
+ Flow: "_Flow_1o2qd_26",
31
+ FlowText: "_FlowText_1o2qd_165",
32
+ FlowSeparator: "_FlowSeparator_1o2qd_190",
33
+ SegmentedGroup: "_SegmentedGroup_1o2qd_203",
34
+ SegmentedOption: "_SegmentedOption_1o2qd_224",
35
+ ChipGroup: "_ChipGroup_1o2qd_276",
36
+ Chip: "_Chip_1o2qd_276",
37
+ ChipDot: "_ChipDot_1o2qd_315",
38
+ StepGrid: "_StepGrid_1o2qd_339",
39
+ StepButton: "_StepButton_1o2qd_345",
40
+ StepCircle: "_StepCircle_1o2qd_369",
41
+ StepFlagDot: "_StepFlagDot_1o2qd_411",
42
+ StepStateName: "_StepStateName_1o2qd_442",
43
+ StatusGrid: "_StatusGrid_1o2qd_451",
44
+ StatusCard: "_StatusCard_1o2qd_458",
45
+ StatusDot: "_StatusDot_1o2qd_517",
46
+ PayloadToggle: "_PayloadToggle_1o2qd_529",
47
+ PayloadToggleLabel: "_PayloadToggleLabel_1o2qd_549",
48
+ PayloadChevron: "_PayloadChevron_1o2qd_556",
49
+ PayloadPanel: "_PayloadPanel_1o2qd_580",
50
+ PayloadHeader: "_PayloadHeader_1o2qd_588",
51
+ Token: "_Token_1o2qd_623",
52
+ Flyout: "_Flyout_1o2qd_657",
53
+ FlyoutTitle: "_FlyoutTitle_1o2qd_671",
54
+ FlyoutFooter: "_FlyoutFooter_1o2qd_685",
55
+ FlyoutCopyButton: "_FlyoutCopyButton_1o2qd_692",
56
+ Footer: "_Footer_1o2qd_732",
57
+ OnDark: "_OnDark_1o2qd_760",
58
+ VisuallyHidden: "_VisuallyHidden_1o2qd_771"
59
+ }, A = S({
60
+ copy: {
61
+ no: "Kopier",
62
+ se: "Kopiera",
63
+ fi: "Kopioi",
64
+ es: "Copiar"
65
+ },
66
+ copied: {
67
+ no: "Kopiert",
68
+ se: "Kopierad",
69
+ fi: "Kopioitu",
70
+ es: "Copiado"
71
+ },
72
+ copyJson: {
73
+ no: "Kopier JSON",
74
+ se: "Kopiera JSON",
75
+ fi: "Kopioi JSON",
76
+ es: "Copiar JSON"
77
+ },
78
+ close: {
79
+ no: "Lukk",
80
+ se: "Stäng",
81
+ fi: "Sulje",
82
+ es: "Cerrar"
83
+ },
84
+ minimise: {
85
+ no: "Minimer",
86
+ se: "Minimera",
87
+ fi: "Pienennä",
88
+ es: "Minimizar"
89
+ },
90
+ expand: {
91
+ no: "Utvid",
92
+ se: "Expandera",
93
+ fi: "Laajenna",
94
+ es: "Expandir"
95
+ },
96
+ step: {
97
+ no: "Steg",
98
+ se: "Steg",
99
+ fi: "Vaihe",
100
+ es: "Paso"
101
+ },
102
+ statusCompleted: {
103
+ no: "fullført",
104
+ se: "slutförd",
105
+ fi: "valmis",
106
+ es: "completado"
107
+ },
108
+ statusCurrent: {
109
+ no: "gjeldende",
110
+ se: "aktuell",
111
+ fi: "nykyinen",
112
+ es: "actual"
113
+ },
114
+ statusUpcoming: {
115
+ no: "ikke startet",
116
+ se: "inte påbörjad",
117
+ fi: "aloittamatta",
118
+ es: "no iniciado"
119
+ },
120
+ needsAttention: {
121
+ no: "krever oppmerksomhet",
122
+ se: "kräver uppmärksamhet",
123
+ fi: "vaatii huomiota",
124
+ es: "requiere atención"
125
+ }
126
+ }), j = (...e) => e.filter(Boolean).join(" "), M = u(void 0);
127
+ function N() {
128
+ return f(M);
129
+ }
130
+ function P({ title: e = "Dev controls", badge: t, showStatusDot: n = !0, minimisable: r = !0, minimised: o, defaultMinimised: s = !1, onMinimisedChange: c, minimiseLabel: l, expandLabel: u, children: d, className: f, style: p }) {
131
+ let h = A(), g = o !== void 0, [_, y] = v(s), x = g ? o : _, S = () => {
132
+ let e = !x;
133
+ g || y(e), c?.(e);
134
+ }, C = m();
135
+ return /* @__PURE__ */ T("div", {
136
+ "data-dev-panel-root": "",
137
+ className: j(k.DevPanel, f),
138
+ style: p,
139
+ children: [/* @__PURE__ */ T("header", {
140
+ className: k.Header,
141
+ children: [/* @__PURE__ */ T("span", {
142
+ className: k.HeaderTitle,
143
+ children: [
144
+ n && /* @__PURE__ */ w("span", {
145
+ className: k.HeaderDot,
146
+ "aria-hidden": !0
147
+ }),
148
+ /* @__PURE__ */ w("span", { children: e }),
149
+ t != null && /* @__PURE__ */ w("span", {
150
+ className: k.Badge,
151
+ children: t
152
+ })
153
+ ]
154
+ }), r && /* @__PURE__ */ w(b, {
155
+ "aria-label": x ? u ?? h.expand : l ?? h.minimise,
156
+ "aria-expanded": !x,
157
+ "aria-controls": C,
158
+ onClick: S,
159
+ variant: "outline",
160
+ color: "secondary",
161
+ size: "sm",
162
+ children: w(x ? a : i, {
163
+ size: 18,
164
+ "aria-hidden": !0
165
+ })
166
+ })]
167
+ }), !x && /* @__PURE__ */ w("div", {
168
+ id: C,
169
+ className: k.Body,
170
+ children: d
171
+ })]
172
+ });
173
+ }
174
+ function F({ label: e, meta: t, children: n, className: r, style: i }) {
175
+ let a = m();
176
+ return /* @__PURE__ */ T("section", {
177
+ "aria-labelledby": a,
178
+ className: j(k.Section, r),
179
+ style: i,
180
+ children: [/* @__PURE__ */ T("div", {
181
+ className: k.SectionHeaderRow,
182
+ children: [/* @__PURE__ */ w("span", {
183
+ id: a,
184
+ className: k.SectionLabel,
185
+ children: e
186
+ }), t != null && /* @__PURE__ */ w("span", {
187
+ className: k.SectionMeta,
188
+ children: t
189
+ })]
190
+ }), /* @__PURE__ */ w(M.Provider, {
191
+ value: a,
192
+ children: n
193
+ })]
194
+ });
195
+ }
196
+ //#endregion
197
+ //#region src/dev-panel/use-roving-radio.ts
198
+ function I({ values: e, selected: t, onSelect: n, isDisabled: r }) {
199
+ let i = _([]), a = d((t) => r?.(e[t], t) ?? !1, [r, e]), o = e.findIndex((e) => e === t), s = e.findIndex((e, t) => !a(t)), c = o >= 0 && !a(o) ? o : s, l = d((t) => {
200
+ i.current[t]?.focus(), n(e[t]);
201
+ }, [n, e]), u = d((t, n) => {
202
+ let r = e.length;
203
+ for (let e = 1; e <= r; e += 1) {
204
+ let i = (t + n * e + r * e) % r;
205
+ if (!a(i)) return i;
206
+ }
207
+ return t;
208
+ }, [a, e.length]);
209
+ return { getItemProps: d((r) => {
210
+ let o = e[r], s = a(r);
211
+ return {
212
+ ref: (e) => {
213
+ i.current[r] = e;
214
+ },
215
+ role: "radio",
216
+ "aria-checked": o === t,
217
+ "aria-disabled": s || void 0,
218
+ tabIndex: r === c ? 0 : -1,
219
+ onClick: () => {
220
+ s || n(o);
221
+ },
222
+ onKeyDown: (e) => {
223
+ switch (e.key) {
224
+ case "ArrowRight":
225
+ case "ArrowDown":
226
+ e.preventDefault(), l(u(r, 1));
227
+ break;
228
+ case "ArrowLeft":
229
+ case "ArrowUp":
230
+ e.preventDefault(), l(u(r, -1));
231
+ break;
232
+ case "Home":
233
+ e.preventDefault(), l(u(-1, 1));
234
+ break;
235
+ case "End":
236
+ e.preventDefault(), l(u(0, -1));
237
+ break;
238
+ case " ":
239
+ case "Enter": e.preventDefault(), s || n(o);
240
+ }
241
+ }
242
+ };
243
+ }, [
244
+ a,
245
+ l,
246
+ u,
247
+ n,
248
+ t,
249
+ c,
250
+ e
251
+ ]) };
252
+ }
253
+ //#endregion
254
+ //#region src/dev-panel/segmented-control.tsx
255
+ function L({ value: e, onChange: t, options: n, variant: r = "pill", "aria-label": i, "aria-labelledby": a }) {
256
+ let o = N(), s = a ?? (i ? void 0 : o), { getItemProps: c } = I({
257
+ values: n.map((e) => e.value),
258
+ selected: e,
259
+ onSelect: t,
260
+ isDisabled: (e, t) => n[t]?.disabled ?? !1
261
+ }), l = r === "chip";
262
+ return /* @__PURE__ */ w("div", {
263
+ role: "radiogroup",
264
+ "aria-label": i,
265
+ "aria-labelledby": s,
266
+ className: l ? k.ChipGroup : k.SegmentedGroup,
267
+ children: n.map((e, t) => {
268
+ let { onKeyDown: n, ...r } = c(t);
269
+ return /* @__PURE__ */ T("button", {
270
+ type: "button",
271
+ "data-disabled": e.disabled ? "" : void 0,
272
+ onKeyDown: n,
273
+ ...r,
274
+ className: l ? k.Chip : k.SegmentedOption,
275
+ children: [l ? /* @__PURE__ */ w("span", {
276
+ className: k.ChipDot,
277
+ "aria-hidden": !0
278
+ }) : e.icon, /* @__PURE__ */ w("span", { children: e.label })]
279
+ }, e.value);
280
+ })
281
+ });
282
+ }
283
+ //#endregion
284
+ //#region src/dev-panel/dev-panel-country.tsx
285
+ function R({ value: e, onChange: t, options: n, label: r = "Country" }) {
286
+ let i = n.map((e) => ({
287
+ value: e.value,
288
+ disabled: e.disabled,
289
+ label: e.label,
290
+ icon: e.code == null ? void 0 : /* @__PURE__ */ w("span", {
291
+ className: k.CountryCode,
292
+ children: e.code
293
+ })
294
+ }));
295
+ return /* @__PURE__ */ w(F, {
296
+ label: r,
297
+ children: /* @__PURE__ */ w(L, {
298
+ value: e,
299
+ onChange: t,
300
+ options: i
301
+ })
302
+ });
303
+ }
304
+ //#endregion
305
+ //#region src/dev-panel/dev-panel-variant.tsx
306
+ function z({ value: e, onChange: t, options: n, label: r = "Variant" }) {
307
+ let i = n.map((e) => ({
308
+ value: e.value,
309
+ label: e.label,
310
+ disabled: e.disabled
311
+ }));
312
+ return /* @__PURE__ */ w(F, {
313
+ label: r,
314
+ children: /* @__PURE__ */ w(L, {
315
+ value: e,
316
+ onChange: t,
317
+ options: i
318
+ })
319
+ });
320
+ }
321
+ //#endregion
322
+ //#region src/dev-panel/dev-panel-step-state.tsx
323
+ function B({ value: e, onChange: t, options: n, label: r = "Step state", stepLabel: i, variationsLabel: a = "Variations for" }) {
324
+ let o = n.map((e) => ({
325
+ value: e.value,
326
+ label: e.label,
327
+ disabled: e.disabled
328
+ }));
329
+ return /* @__PURE__ */ T(F, {
330
+ label: r,
331
+ children: [i != null && /* @__PURE__ */ T(x, {
332
+ textStyle: "body-sm",
333
+ style: {
334
+ color: "var(--lea-color-neutral-600)",
335
+ marginBlockEnd: "var(--lea-spacing-0-5)"
336
+ },
337
+ children: [
338
+ a,
339
+ " ",
340
+ /* @__PURE__ */ w("span", {
341
+ className: k.StepStateName,
342
+ children: i
343
+ })
344
+ ]
345
+ }), /* @__PURE__ */ w(L, {
346
+ value: e,
347
+ onChange: t,
348
+ options: o,
349
+ variant: "chip"
350
+ })]
351
+ });
352
+ }
353
+ //#endregion
354
+ //#region src/dev-panel/dev-panel-steps.tsx
355
+ var V = (e, t) => {
356
+ switch (e) {
357
+ case "complete": return t.statusCompleted;
358
+ case "current": return t.statusCurrent;
359
+ default: return t.statusUpcoming;
360
+ }
361
+ };
362
+ function H({ steps: e, currentStep: t, onStepSelect: n, label: r = "Jump to step", showCount: i = !0, columns: a = 4 }) {
363
+ let o = A(), s = e.length, c = i && t != null ? `${t} / ${s}` : void 0;
364
+ return /* @__PURE__ */ w(F, {
365
+ label: r,
366
+ meta: c,
367
+ children: /* @__PURE__ */ w(U, {
368
+ steps: e,
369
+ currentStep: t,
370
+ onStepSelect: n,
371
+ columns: a,
372
+ t: o
373
+ })
374
+ });
375
+ }
376
+ function U({ steps: e, currentStep: n, onStepSelect: r, columns: i, t: a }) {
377
+ let o = N();
378
+ return /* @__PURE__ */ w("div", {
379
+ role: "group",
380
+ "aria-labelledby": o,
381
+ className: k.StepGrid,
382
+ style: { "--_columns": i },
383
+ children: e.map((e, i) => {
384
+ let o = i + 1, s = e.status ?? (n == null ? "upcoming" : o < n ? "complete" : o === n ? "current" : "upcoming"), c = s === "current", l = s === "complete";
385
+ return /* @__PURE__ */ T("button", {
386
+ type: "button",
387
+ "aria-current": c ? "step" : void 0,
388
+ "data-state": s,
389
+ "data-disabled": e.disabled ? "" : void 0,
390
+ disabled: e.disabled,
391
+ onClick: () => r?.(o, e),
392
+ className: k.StepButton,
393
+ children: [
394
+ /* @__PURE__ */ T("span", {
395
+ className: k.StepCircle,
396
+ children: [
397
+ /* @__PURE__ */ w("span", {
398
+ className: k.VisuallyHidden,
399
+ children: l ? `${a.step} ${o}` : `${a.step} `
400
+ }),
401
+ l ? /* @__PURE__ */ w(t, {
402
+ size: 18,
403
+ "aria-hidden": !0
404
+ }) : o,
405
+ e.flagged && /* @__PURE__ */ w("span", {
406
+ className: k.StepFlagDot,
407
+ "aria-hidden": !0
408
+ })
409
+ ]
410
+ }),
411
+ " ",
412
+ /* @__PURE__ */ w("span", {
413
+ className: k.StepLabel,
414
+ children: e.label
415
+ }),
416
+ /* @__PURE__ */ w("span", {
417
+ className: k.VisuallyHidden,
418
+ children: `(${V(s, a)}${e.flagged ? `, ${a.needsAttention}` : ""})`
419
+ })
420
+ ]
421
+ }, o);
422
+ })
423
+ });
424
+ }
425
+ //#endregion
426
+ //#region src/dev-panel/dev-panel-status.tsx
427
+ function W({ value: e, onChange: t, options: n, label: r = "Application status" }) {
428
+ return /* @__PURE__ */ w(F, {
429
+ label: r,
430
+ children: /* @__PURE__ */ w(G, {
431
+ value: e,
432
+ onChange: t,
433
+ options: n
434
+ })
435
+ });
436
+ }
437
+ function G({ value: e, onChange: t, options: n }) {
438
+ let r = N(), { getItemProps: i } = I({
439
+ values: n.map((e) => e.value),
440
+ selected: e,
441
+ onSelect: t,
442
+ isDisabled: (e, t) => n[t]?.disabled ?? !1
443
+ });
444
+ return /* @__PURE__ */ w("div", {
445
+ role: "radiogroup",
446
+ "aria-labelledby": r,
447
+ className: k.StatusGrid,
448
+ children: n.map((e, t) => {
449
+ let { onKeyDown: n, ...r } = i(t);
450
+ return /* @__PURE__ */ T("button", {
451
+ type: "button",
452
+ "data-color": e.color ?? "neutral",
453
+ "data-disabled": e.disabled ? "" : void 0,
454
+ onKeyDown: n,
455
+ ...r,
456
+ className: k.StatusCard,
457
+ children: [/* @__PURE__ */ w("span", {
458
+ className: k.StatusDot,
459
+ "aria-hidden": !0
460
+ }), /* @__PURE__ */ w("span", { children: e.label })]
461
+ }, e.value);
462
+ })
463
+ });
464
+ }
465
+ //#endregion
466
+ //#region src/dev-panel/use-copy.ts
467
+ function K() {
468
+ let [e, t] = v(!1), n = _(void 0), r = d(async (e) => {
469
+ try {
470
+ await navigator.clipboard?.writeText(e);
471
+ } catch {}
472
+ t(!0), clearTimeout(n.current), n.current = setTimeout(() => t(!1), 2e3);
473
+ }, []);
474
+ return p(() => () => clearTimeout(n.current), []), {
475
+ copied: e,
476
+ copy: r
477
+ };
478
+ }
479
+ //#endregion
480
+ //#region src/dev-panel/dev-panel-flow.tsx
481
+ var q = (e) => typeof e == "string" || typeof e == "number" ? String(e) : null;
482
+ function J({ flowId: e, process: n, variant: i, label: a = "Flow", showCopy: o = !0, copyValue: s, copyLabel: c, onCopy: u }) {
483
+ let d = A(), { copied: f, copy: p } = K(), m = [
484
+ e,
485
+ n,
486
+ i
487
+ ].filter((e) => e != null), h = m.map(q).filter((e) => e != null).join(" · "), g = s ?? h;
488
+ return /* @__PURE__ */ T("div", {
489
+ className: k.Flow,
490
+ children: [
491
+ /* @__PURE__ */ T("div", {
492
+ className: k.FlowText,
493
+ children: [/* @__PURE__ */ w("span", {
494
+ className: k.FlowLabel,
495
+ children: a
496
+ }), /* @__PURE__ */ w("span", { children: m.map((e, t) => /* @__PURE__ */ T(l, { children: [t > 0 && /* @__PURE__ */ w("span", {
497
+ "aria-hidden": !0,
498
+ className: k.FlowSeparator,
499
+ children: "·"
500
+ }), e] }, t)) })]
501
+ }),
502
+ o && /* @__PURE__ */ w(b, {
503
+ "aria-label": c ?? d.copy,
504
+ onClick: async () => {
505
+ await p(g), u?.();
506
+ },
507
+ variant: "outline",
508
+ color: "secondary",
509
+ size: "sm",
510
+ children: w(f ? t : r, {
511
+ size: 16,
512
+ "aria-hidden": !0
513
+ })
514
+ }),
515
+ /* @__PURE__ */ w("span", {
516
+ role: "status",
517
+ "aria-live": "polite",
518
+ className: k.VisuallyHidden,
519
+ children: f ? d.copied : ""
520
+ })
521
+ ]
522
+ });
523
+ }
524
+ //#endregion
525
+ //#region src/dev-panel/json-highlight.tsx
526
+ var Y = /"(?:\\.|[^"\\])*"|-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?|\b(?:true|false|null)\b/g, X = (e) => e === " " || e === " " || e === "\n" || e === "\r";
527
+ function Z(e, t, n) {
528
+ if (e[0] === "\"") {
529
+ let e = n;
530
+ for (; e < t.length && X(t[e]);) e += 1;
531
+ return t[e] === ":" ? "key" : "string";
532
+ }
533
+ return e === "true" || e === "false" ? "boolean" : e === "null" ? "null" : "number";
534
+ }
535
+ function ee(e) {
536
+ let t = [], n = 0;
537
+ for (let r of e.matchAll(Y)) {
538
+ let i = r.index ?? 0;
539
+ i > n && t.push({
540
+ type: "punctuation",
541
+ value: e.slice(n, i)
542
+ });
543
+ let a = r[0];
544
+ t.push({
545
+ type: Z(a, e, i + a.length),
546
+ value: a
547
+ }), n = i + a.length;
548
+ }
549
+ return n < e.length && t.push({
550
+ type: "punctuation",
551
+ value: e.slice(n)
552
+ }), t;
553
+ }
554
+ function te(e) {
555
+ if (typeof e != "string") return e != null;
556
+ let t = e.trim();
557
+ if (!t) return !1;
558
+ try {
559
+ return JSON.parse(t), !0;
560
+ } catch {
561
+ return !1;
562
+ }
563
+ }
564
+ function ne({ code: e }) {
565
+ let t = g(() => ee(e), [e]);
566
+ return /* @__PURE__ */ w(C, { children: t.map((e, t) => /* @__PURE__ */ w("span", {
567
+ className: k.Token,
568
+ "data-token": e.type,
569
+ children: e.value
570
+ }, t)) });
571
+ }
572
+ //#endregion
573
+ //#region src/dev-panel/dev-panel-payload.tsx
574
+ var Q = {
575
+ "--button-fg": "var(--lea-palette-text-contrast)",
576
+ "--button-border": "var(--lea-palette-border-contrast)",
577
+ "--button-tint": "var(--lea-color-neutral-800)"
578
+ }, re = (e) => {
579
+ if (typeof e == "string") return e;
580
+ try {
581
+ return JSON.stringify(e, null, 2);
582
+ } catch {
583
+ return String(e);
584
+ }
585
+ }, ie = typeof window < "u" ? h : p, $ = 12, ae = 420, oe = 280;
586
+ function se({ value: i, label: a = "Payload preview", title: o, placement: s = "inline", badge: l, open: u, defaultOpen: f = !1, onOpenChange: h, copyLabel: g, copyJsonLabel: y, closeLabel: x, highlight: S = !0 }) {
587
+ let C = A(), { copied: D, copy: O } = K(), j = u !== void 0, [M, N] = v(f), P = j ? u : M, F = m(), I = m(), L = s === "side", R = _(null), z = _(null), [B, V] = v(null), [H, U] = v(null);
588
+ p(() => U(document.body), []);
589
+ let W = d((e) => {
590
+ j || N(e), h?.(e);
591
+ }, [j, h]), G = re(i), q = S && te(i) ? /* @__PURE__ */ w(ne, { code: G }) : G, J = d(() => {
592
+ let e = R.current?.closest("[data-dev-panel-root]") ?? R.current;
593
+ if (!e) return;
594
+ let t = e.getBoundingClientRect(), n = Math.min(ae, Math.max(oe, t.width)), r = t.left - n - $;
595
+ r < $ && (r = Math.min(t.right + $, window.innerWidth - n - $));
596
+ let i = Math.min(t.height, window.innerHeight - 24), a = Math.min(Math.max($, t.top), window.innerHeight - $ - i);
597
+ V({
598
+ top: a,
599
+ left: r,
600
+ width: n,
601
+ height: i
602
+ });
603
+ }, []);
604
+ ie(() => {
605
+ if (!L || !P) return;
606
+ J();
607
+ let e = () => J();
608
+ return window.addEventListener("resize", e), window.addEventListener("scroll", e, !0), () => {
609
+ window.removeEventListener("resize", e), window.removeEventListener("scroll", e, !0);
610
+ };
611
+ }, [
612
+ L,
613
+ P,
614
+ J
615
+ ]);
616
+ let Y = B !== null;
617
+ p(() => {
618
+ if (!L || !P || !H || !Y) return;
619
+ let e = z.current, t = R.current, n = () => Array.from(e?.querySelectorAll("button, [href], input, textarea, select, [tabindex]:not([tabindex=\"-1\"])") ?? []).filter((e) => !e.hasAttribute("disabled"));
620
+ (n()[0] ?? e)?.focus();
621
+ let r = (t) => {
622
+ if (t.key === "Escape") {
623
+ t.stopPropagation(), W(!1);
624
+ return;
625
+ }
626
+ if (t.key !== "Tab") return;
627
+ let r = n();
628
+ if (r.length === 0) {
629
+ t.preventDefault(), e?.focus();
630
+ return;
631
+ }
632
+ let i = r[0], a = r[r.length - 1], o = document.activeElement;
633
+ t.shiftKey && (o === i || o === e) ? (t.preventDefault(), a.focus()) : !t.shiftKey && o === a && (t.preventDefault(), i.focus());
634
+ }, i = (n) => {
635
+ let r = n.target;
636
+ e?.contains(r) || t?.contains(r) || W(!1);
637
+ };
638
+ return document.addEventListener("keydown", r, !0), document.addEventListener("pointerdown", i, !0), () => {
639
+ document.removeEventListener("keydown", r, !0), document.removeEventListener("pointerdown", i, !0), t?.focus();
640
+ };
641
+ }, [
642
+ L,
643
+ P,
644
+ H,
645
+ Y,
646
+ W
647
+ ]);
648
+ let X = /* @__PURE__ */ w(b, {
649
+ "aria-label": g ?? C.copy,
650
+ onClick: () => O(G),
651
+ variant: "outline",
652
+ color: "secondary",
653
+ size: "sm",
654
+ className: k.OnDark,
655
+ style: Q,
656
+ children: w(D ? t : r, {
657
+ size: 16,
658
+ "aria-hidden": !0
659
+ })
660
+ });
661
+ return /* @__PURE__ */ T("div", { children: [
662
+ /* @__PURE__ */ T("button", {
663
+ ref: R,
664
+ type: "button",
665
+ "aria-expanded": P,
666
+ "aria-controls": F,
667
+ "data-placement": s,
668
+ onClick: () => W(!P),
669
+ className: k.PayloadToggle,
670
+ children: [/* @__PURE__ */ T("span", {
671
+ className: k.PayloadToggleLabel,
672
+ children: [/* @__PURE__ */ w(e, {
673
+ size: 16,
674
+ "aria-hidden": !0
675
+ }), a]
676
+ }), /* @__PURE__ */ w("span", {
677
+ className: k.PayloadChevron,
678
+ children: /* @__PURE__ */ w(n, {
679
+ size: 16,
680
+ "aria-hidden": !0
681
+ })
682
+ })]
683
+ }),
684
+ !L && P && /* @__PURE__ */ T("div", {
685
+ id: F,
686
+ className: k.PayloadPanel,
687
+ children: [/* @__PURE__ */ T("div", {
688
+ className: k.PayloadHeader,
689
+ children: [/* @__PURE__ */ w("span", { children: o ?? a }), X]
690
+ }), /* @__PURE__ */ w("pre", {
691
+ tabIndex: 0,
692
+ className: k.PayloadCode,
693
+ children: q
694
+ })]
695
+ }),
696
+ L && P && H && E(/* @__PURE__ */ T("div", {
697
+ ref: z,
698
+ id: F,
699
+ role: "dialog",
700
+ "aria-labelledby": I,
701
+ tabIndex: -1,
702
+ className: k.Flyout,
703
+ style: B ? {
704
+ top: B.top,
705
+ left: B.left,
706
+ width: B.width,
707
+ height: B.height
708
+ } : { visibility: "hidden" },
709
+ children: [
710
+ /* @__PURE__ */ T("div", {
711
+ className: k.PayloadHeader,
712
+ children: [/* @__PURE__ */ T("span", {
713
+ className: k.FlyoutTitle,
714
+ children: [/* @__PURE__ */ w("span", {
715
+ id: I,
716
+ children: o ?? a
717
+ }), l != null && /* @__PURE__ */ w("span", {
718
+ className: k.Badge,
719
+ "data-on-dark": "",
720
+ children: l
721
+ })]
722
+ }), /* @__PURE__ */ w(b, {
723
+ "aria-label": x ?? C.close,
724
+ onClick: () => W(!1),
725
+ variant: "outline",
726
+ color: "secondary",
727
+ size: "sm",
728
+ className: k.OnDark,
729
+ style: Q,
730
+ children: /* @__PURE__ */ w(c, {
731
+ size: 16,
732
+ "aria-hidden": !0
733
+ })
734
+ })]
735
+ }),
736
+ /* @__PURE__ */ w("pre", {
737
+ tabIndex: 0,
738
+ className: k.PayloadCode,
739
+ children: q
740
+ }),
741
+ /* @__PURE__ */ w("div", {
742
+ className: k.FlyoutFooter,
743
+ children: /* @__PURE__ */ T("button", {
744
+ type: "button",
745
+ onClick: () => O(G),
746
+ className: k.FlyoutCopyButton,
747
+ children: [w(D ? t : r, {
748
+ size: 16,
749
+ "aria-hidden": !0
750
+ }), D ? C.copied : y ?? C.copyJson]
751
+ })
752
+ })
753
+ ]
754
+ }), H),
755
+ /* @__PURE__ */ w("span", {
756
+ role: "status",
757
+ "aria-live": "polite",
758
+ className: k.VisuallyHidden,
759
+ children: D ? C.copied : ""
760
+ })
761
+ ] });
762
+ }
763
+ //#endregion
764
+ //#region src/dev-panel/dev-panel-footer.tsx
765
+ function ce({ onReseed: e, reseedLabel: t = "Reseed", onCopyUrl: r, url: i, copyUrlLabel: a = "Copy URL", onConsole: c, consoleLabel: l = "Console", children: u }) {
766
+ let { copy: d } = K();
767
+ return /* @__PURE__ */ T("div", {
768
+ className: k.Footer,
769
+ children: [
770
+ e && /* @__PURE__ */ w(y, {
771
+ variant: "outline",
772
+ color: "secondary",
773
+ size: "sm",
774
+ startIcon: /* @__PURE__ */ w(o, { "aria-hidden": !0 }),
775
+ onClick: e,
776
+ children: t
777
+ }),
778
+ r && /* @__PURE__ */ w(y, {
779
+ variant: "outline",
780
+ color: "secondary",
781
+ size: "sm",
782
+ startIcon: /* @__PURE__ */ w(s, { "aria-hidden": !0 }),
783
+ onClick: async () => {
784
+ i != null && await d(i), r?.();
785
+ },
786
+ children: a
787
+ }),
788
+ c && /* @__PURE__ */ w(y, {
789
+ variant: "solid",
790
+ size: "sm",
791
+ endIcon: /* @__PURE__ */ w(n, { "aria-hidden": !0 }),
792
+ onClick: c,
793
+ style: { marginInlineStart: "auto" },
794
+ children: l
795
+ }),
796
+ u
797
+ ]
798
+ });
799
+ }
800
+ //#endregion
801
+ //#region src/dev-panel/parts.ts
802
+ var le = /* @__PURE__ */ O({
803
+ Country: () => R,
804
+ Flow: () => J,
805
+ Footer: () => ce,
806
+ Payload: () => se,
807
+ Root: () => P,
808
+ Section: () => F,
809
+ Status: () => W,
810
+ StepState: () => B,
811
+ Steps: () => H,
812
+ Variant: () => z,
813
+ useSectionLabelId: () => N
814
+ });
815
+ //#endregion
816
+ export { le as DevPanel };
817
+
818
+ //# sourceMappingURL=dev-panel.mjs.map