@expcat/tigercat-vue 2.0.4 → 2.1.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 (114) hide show
  1. package/README.md +20 -10
  2. package/dist/chunk-26QCTL2E.mjs +180 -0
  3. package/dist/{chunk-GS4SV2HK.mjs → chunk-32X54QKW.mjs} +1 -1
  4. package/dist/chunk-3ONCXHE5.mjs +184 -0
  5. package/dist/{chunk-KOG3HKOF.mjs → chunk-6AMWX5K4.mjs} +1 -4
  6. package/dist/chunk-6GR3XC5V.mjs +281 -0
  7. package/dist/chunk-6GR5U4UB.mjs +225 -0
  8. package/dist/chunk-7DWWNFRP.mjs +302 -0
  9. package/dist/chunk-AECXFT7D.mjs +121 -0
  10. package/dist/chunk-AOLRZG4E.mjs +347 -0
  11. package/dist/chunk-AY7CGLMO.mjs +368 -0
  12. package/dist/chunk-BBNCP55O.mjs +156 -0
  13. package/dist/chunk-F3ZVVVYD.mjs +257 -0
  14. package/dist/{chunk-OTGGPXDT.mjs → chunk-IEAEB4TX.mjs} +255 -44
  15. package/dist/chunk-P6FMU4AT.mjs +54 -0
  16. package/dist/chunk-PFIV5MXD.mjs +48 -0
  17. package/dist/chunk-TBOXTAIA.mjs +94 -0
  18. package/dist/{chunk-H6FZBFRT.mjs → chunk-TPESRDUG.mjs} +6 -1
  19. package/dist/{chunk-2XCXK3NQ.mjs → chunk-U4B5QT72.mjs} +1 -1
  20. package/dist/chunk-UUWPSRNV.mjs +337 -0
  21. package/dist/chunk-UXJRH72H.mjs +834 -0
  22. package/dist/chunk-VFS5XAZ3.mjs +602 -0
  23. package/dist/{chunk-WC5MKASU.mjs → chunk-VN2TWPRC.mjs} +169 -55
  24. package/dist/components/ActivityFeed.d.mts +1 -1
  25. package/dist/components/ActivityFeed.mjs +1 -1
  26. package/dist/components/Alert.d.mts +2 -2
  27. package/dist/components/AreaChart.mjs +2 -2
  28. package/dist/components/AspectRatio.d.mts +44 -0
  29. package/dist/components/AspectRatio.mjs +8 -0
  30. package/dist/components/BarChart.mjs +2 -2
  31. package/dist/components/Carousel.d.mts +1 -1
  32. package/dist/components/Cascader.d.mts +34 -0
  33. package/dist/components/Cascader.mjs +1 -1
  34. package/dist/components/ChartLegend.d.mts +1 -1
  35. package/dist/components/ChatWindow.mjs +1 -1
  36. package/dist/components/CodeEditor.mjs +1 -1
  37. package/dist/components/ColorSwatch.d.mts +1 -1
  38. package/dist/components/ContextMenu.d.mts +234 -0
  39. package/dist/components/ContextMenu.mjs +17 -0
  40. package/dist/components/DataTableWithToolbar.d.mts +1 -1
  41. package/dist/components/DataTableWithToolbar.mjs +2 -2
  42. package/dist/components/DonutChart.mjs +3 -3
  43. package/dist/components/Dropdown.d.mts +1 -1
  44. package/dist/components/FloatButton.d.mts +2 -2
  45. package/dist/components/FunnelChart.d.mts +1 -1
  46. package/dist/components/FunnelChart.mjs +2 -2
  47. package/dist/components/Highlight.d.mts +146 -0
  48. package/dist/components/Highlight.mjs +8 -0
  49. package/dist/components/ImageCompare.d.mts +284 -0
  50. package/dist/components/ImageCompare.mjs +8 -0
  51. package/dist/components/Input.d.mts +1 -1
  52. package/dist/components/InputOTP.d.mts +261 -0
  53. package/dist/components/InputOTP.mjs +11 -0
  54. package/dist/components/Kbd.d.mts +118 -0
  55. package/dist/components/Kbd.mjs +8 -0
  56. package/dist/components/LineChart.mjs +2 -2
  57. package/dist/components/List.d.mts +1 -1
  58. package/dist/components/List.mjs +1 -1
  59. package/dist/components/LoadingBar.d.mts +8 -0
  60. package/dist/components/LoadingBar.mjs +114 -0
  61. package/dist/components/LoadingBarContainer.d.mts +78 -0
  62. package/dist/components/LoadingBarContainer.mjs +8 -0
  63. package/dist/components/LoadingBarRoot.d.mts +6 -0
  64. package/dist/components/LoadingBarRoot.mjs +6 -0
  65. package/dist/components/Marquee.d.mts +158 -0
  66. package/dist/components/Marquee.mjs +8 -0
  67. package/dist/components/MaskInput.d.mts +201 -0
  68. package/dist/components/MaskInput.mjs +11 -0
  69. package/dist/components/Masonry.d.mts +66 -0
  70. package/dist/components/Masonry.mjs +8 -0
  71. package/dist/components/Menu.d.mts +2 -2
  72. package/dist/components/Modal.d.mts +1 -1
  73. package/dist/components/NavigationMenu.d.mts +411 -0
  74. package/dist/components/NavigationMenu.mjs +25 -0
  75. package/dist/components/NotificationCenter.d.mts +1 -1
  76. package/dist/components/NotificationCenter.mjs +2 -2
  77. package/dist/components/PageHeader.d.mts +140 -0
  78. package/dist/components/PageHeader.mjs +11 -0
  79. package/dist/components/PieChart.mjs +2 -2
  80. package/dist/components/Popconfirm.d.mts +3 -3
  81. package/dist/components/Popover.d.mts +2 -2
  82. package/dist/components/RadarChart.mjs +2 -2
  83. package/dist/components/ScatterChart.mjs +2 -2
  84. package/dist/components/ScrollArea.d.mts +136 -0
  85. package/dist/components/ScrollArea.mjs +8 -0
  86. package/dist/components/SplitButton.d.mts +286 -0
  87. package/dist/components/SplitButton.mjs +12 -0
  88. package/dist/components/Spotlight.d.mts +1 -1
  89. package/dist/components/SunburstChart.mjs +2 -2
  90. package/dist/components/TagsInput.d.mts +214 -0
  91. package/dist/components/TagsInput.mjs +12 -0
  92. package/dist/components/Timeline.d.mts +1 -1
  93. package/dist/components/Tooltip.d.mts +2 -2
  94. package/dist/components/Tour.d.mts +3 -3
  95. package/dist/components/Tree.d.mts +1 -1
  96. package/dist/components/TreeMapChart.d.mts +1 -1
  97. package/dist/components/TreeMapChart.mjs +2 -2
  98. package/dist/components/TreeSelect.d.mts +51 -0
  99. package/dist/components/TreeSelect.mjs +2 -1
  100. package/dist/components/Upload.d.mts +1 -1
  101. package/dist/components/VirtualTable.d.mts +1 -1
  102. package/dist/components/Watermark.d.mts +1 -1
  103. package/dist/index.d.mts +17 -1
  104. package/dist/index.mjs +356 -0
  105. package/package.json +117 -2
  106. package/dist/{chunk-MAKOSWR6.mjs → chunk-37W7XTA6.mjs} +3 -3
  107. package/dist/{chunk-WUQMFKQ6.mjs → chunk-66OS5A4D.mjs} +3 -3
  108. package/dist/{chunk-NNC75I7F.mjs → chunk-CHEXI7MO.mjs} +3 -3
  109. package/dist/{chunk-KFJIZED5.mjs → chunk-EHGFW5GX.mjs} +3 -3
  110. package/dist/{chunk-ZGA66PSG.mjs → chunk-EZYOCPMM.mjs} +3 -3
  111. package/dist/{chunk-XGXZF27U.mjs → chunk-JHMT5Q6P.mjs} +3 -3
  112. package/dist/{chunk-NGAA73CV.mjs → chunk-VLW3UBIR.mjs} +3 -3
  113. package/dist/{chunk-OTHJIFDV.mjs → chunk-W5XFWVNV.mjs} +3 -3
  114. package/dist/{chunk-3KITFMBJ.mjs → chunk-ZOYHZF4N.mjs} +3 -3
@@ -0,0 +1,281 @@
1
+ // src/components/ScrollArea.ts
2
+ import {
3
+ defineComponent,
4
+ h,
5
+ ref,
6
+ shallowRef,
7
+ onMounted,
8
+ onBeforeUnmount,
9
+ nextTick,
10
+ watch
11
+ } from "vue";
12
+ import {
13
+ classNames,
14
+ coerceClassValue,
15
+ mergeStyleValues,
16
+ computeScrollAreaState,
17
+ computeScrollFromThumbOffset,
18
+ computeScrollFromTrackPoint,
19
+ createDocumentDragSession,
20
+ createEmptyScrollAreaState,
21
+ getScrollAreaBoxStyle,
22
+ getScrollAreaContentClasses,
23
+ getScrollAreaScrollbarClasses,
24
+ getScrollAreaShadowClasses,
25
+ getScrollAreaShadowSides,
26
+ getScrollAreaThumbClasses,
27
+ getScrollAreaThumbStyle,
28
+ getScrollAreaViewportClasses,
29
+ observeScrollAreaSize,
30
+ readScrollAreaMetrics,
31
+ scrollAreaRootClasses,
32
+ shouldRenderScrollAreaScrollbar,
33
+ SCROLL_AREA_MIN_THUMB_SIZE
34
+ } from "@expcat/tigercat-core";
35
+ var ScrollArea = defineComponent({
36
+ name: "TigerScrollArea",
37
+ inheritAttrs: false,
38
+ props: {
39
+ direction: {
40
+ type: String,
41
+ default: "vertical"
42
+ },
43
+ scrollbar: {
44
+ type: String,
45
+ default: "auto"
46
+ },
47
+ scrollbarSize: {
48
+ type: String,
49
+ default: "md"
50
+ },
51
+ shadow: { type: Boolean, default: false },
52
+ minThumbSize: { type: Number, default: SCROLL_AREA_MIN_THUMB_SIZE },
53
+ height: { type: [Number, String], default: void 0 },
54
+ maxHeight: { type: [Number, String], default: void 0 },
55
+ width: { type: [Number, String], default: void 0 },
56
+ maxWidth: { type: [Number, String], default: void 0 },
57
+ ariaLabel: { type: String, default: void 0 },
58
+ className: { type: String, default: void 0 },
59
+ viewportClassName: { type: String, default: void 0 }
60
+ },
61
+ emits: ["scroll"],
62
+ setup(props, { slots, emit, attrs, expose }) {
63
+ const viewportRef = ref(null);
64
+ const contentRef = ref(null);
65
+ const scrollState = shallowRef(createEmptyScrollAreaState());
66
+ const draggingAxis = ref(null);
67
+ let dragSession = null;
68
+ let stopObserving = null;
69
+ function syncState() {
70
+ const viewport = viewportRef.value;
71
+ if (!viewport) return;
72
+ scrollState.value = computeScrollAreaState(
73
+ readScrollAreaMetrics(viewport),
74
+ props.minThumbSize
75
+ );
76
+ }
77
+ function handleScroll() {
78
+ const viewport = viewportRef.value;
79
+ if (!viewport) return;
80
+ syncState();
81
+ emit("scroll", {
82
+ scrollTop: viewport.scrollTop,
83
+ scrollLeft: viewport.scrollLeft,
84
+ state: scrollState.value
85
+ });
86
+ }
87
+ function applyScroll(axis, position) {
88
+ const viewport = viewportRef.value;
89
+ if (!viewport) return;
90
+ if (axis === "y") viewport.scrollTop = position;
91
+ else viewport.scrollLeft = position;
92
+ handleScroll();
93
+ }
94
+ function trackSizeOf(axis) {
95
+ const viewport = viewportRef.value;
96
+ if (!viewport) return 0;
97
+ return axis === "y" ? viewport.clientHeight : viewport.clientWidth;
98
+ }
99
+ function scrollSizeOf(axis) {
100
+ const viewport = viewportRef.value;
101
+ if (!viewport) return 0;
102
+ return axis === "y" ? viewport.scrollHeight : viewport.scrollWidth;
103
+ }
104
+ function startThumbDrag(axis, event) {
105
+ const viewport = viewportRef.value;
106
+ if (!viewport) return;
107
+ event.preventDefault();
108
+ event.stopPropagation();
109
+ const axisState = axis === "y" ? scrollState.value.y : scrollState.value.x;
110
+ const startOffset = axisState.thumbOffset;
111
+ const startPoint = axis === "y" ? event.clientY : event.clientX;
112
+ dragSession?.dispose();
113
+ draggingAxis.value = axis;
114
+ dragSession = createDocumentDragSession({
115
+ startX: event.clientX,
116
+ startY: event.clientY,
117
+ ownerDocument: viewport.ownerDocument,
118
+ onMove: ({ currentX, currentY }) => {
119
+ const current = axis === "y" ? currentY : currentX;
120
+ const trackSize = trackSizeOf(axis);
121
+ applyScroll(
122
+ axis,
123
+ computeScrollFromThumbOffset(
124
+ startOffset + (current - startPoint),
125
+ trackSize,
126
+ axisState.thumbSize,
127
+ scrollSizeOf(axis),
128
+ trackSize
129
+ )
130
+ );
131
+ },
132
+ onEnd: () => {
133
+ draggingAxis.value = null;
134
+ dragSession = null;
135
+ }
136
+ });
137
+ }
138
+ function handleTrackMouseDown(axis, event) {
139
+ const target = event.target;
140
+ if (target?.dataset.scrollAreaThumb) {
141
+ startThumbDrag(axis, event);
142
+ return;
143
+ }
144
+ const track = event.currentTarget;
145
+ const rect = track.getBoundingClientRect();
146
+ const point = axis === "y" ? event.clientY - rect.top : event.clientX - rect.left;
147
+ const axisState = axis === "y" ? scrollState.value.y : scrollState.value.x;
148
+ const trackSize = trackSizeOf(axis);
149
+ applyScroll(
150
+ axis,
151
+ computeScrollFromTrackPoint(
152
+ point,
153
+ trackSize,
154
+ axisState.thumbSize,
155
+ scrollSizeOf(axis),
156
+ trackSize
157
+ )
158
+ );
159
+ }
160
+ function scrollTo(options) {
161
+ const viewport = viewportRef.value;
162
+ if (!viewport) return;
163
+ const behavior = options.behavior ?? "auto";
164
+ if (typeof viewport.scrollTo === "function") {
165
+ viewport.scrollTo({ top: options.top, left: options.left, behavior });
166
+ } else {
167
+ if (options.top !== void 0) viewport.scrollTop = options.top;
168
+ if (options.left !== void 0) viewport.scrollLeft = options.left;
169
+ }
170
+ handleScroll();
171
+ }
172
+ function scrollToTop(behavior) {
173
+ scrollTo({ top: 0, behavior });
174
+ }
175
+ function scrollToBottom(behavior) {
176
+ const viewport = viewportRef.value;
177
+ if (!viewport) return;
178
+ scrollTo({ top: viewport.scrollHeight, behavior });
179
+ }
180
+ onMounted(() => {
181
+ syncState();
182
+ stopObserving = observeScrollAreaSize([viewportRef.value, contentRef.value], syncState);
183
+ });
184
+ onBeforeUnmount(() => {
185
+ dragSession?.dispose();
186
+ dragSession = null;
187
+ stopObserving?.();
188
+ stopObserving = null;
189
+ });
190
+ watch(
191
+ () => [props.direction, props.minThumbSize],
192
+ () => {
193
+ void nextTick(syncState);
194
+ }
195
+ );
196
+ expose({
197
+ scrollTo,
198
+ scrollToTop,
199
+ scrollToBottom,
200
+ getViewport: () => viewportRef.value,
201
+ getState: () => scrollState.value
202
+ });
203
+ function renderScrollbar(axis) {
204
+ const axisState = axis === "y" ? scrollState.value.y : scrollState.value.x;
205
+ if (!shouldRenderScrollAreaScrollbar(props.scrollbar, props.direction, axis, axisState)) {
206
+ return null;
207
+ }
208
+ return h(
209
+ "div",
210
+ {
211
+ key: `scrollbar-${axis}`,
212
+ class: getScrollAreaScrollbarClasses(axis, props.scrollbarSize, props.scrollbar),
213
+ "data-scroll-area-scrollbar": axis,
214
+ "aria-hidden": "true",
215
+ onMousedown: (event) => handleTrackMouseDown(axis, event)
216
+ },
217
+ [
218
+ h("div", {
219
+ class: getScrollAreaThumbClasses(axis, draggingAxis.value === axis),
220
+ style: getScrollAreaThumbStyle(axis, axisState),
221
+ "data-scroll-area-thumb": axis
222
+ })
223
+ ]
224
+ );
225
+ }
226
+ return () => {
227
+ const shadows = props.shadow ? getScrollAreaShadowSides(scrollState.value, props.direction) : [];
228
+ return h(
229
+ "div",
230
+ {
231
+ ...attrs,
232
+ class: classNames(scrollAreaRootClasses, props.className, coerceClassValue(attrs.class)),
233
+ style: mergeStyleValues(attrs.style),
234
+ "data-scroll-area": ""
235
+ },
236
+ [
237
+ h(
238
+ "div",
239
+ {
240
+ ref: viewportRef,
241
+ class: getScrollAreaViewportClasses(props.direction, props.viewportClassName),
242
+ style: getScrollAreaBoxStyle(props),
243
+ tabindex: 0,
244
+ role: props.ariaLabel ? "region" : void 0,
245
+ "aria-label": props.ariaLabel,
246
+ "data-scroll-area-viewport": "",
247
+ onScroll: handleScroll
248
+ },
249
+ [
250
+ h(
251
+ "div",
252
+ {
253
+ ref: contentRef,
254
+ class: getScrollAreaContentClasses(props.direction),
255
+ "data-scroll-area-content": ""
256
+ },
257
+ slots.default?.()
258
+ )
259
+ ]
260
+ ),
261
+ ...shadows.map(
262
+ (side) => h("div", {
263
+ key: `shadow-${side}`,
264
+ class: getScrollAreaShadowClasses(side),
265
+ "data-scroll-area-shadow": side,
266
+ "aria-hidden": "true"
267
+ })
268
+ ),
269
+ renderScrollbar("y"),
270
+ renderScrollbar("x")
271
+ ]
272
+ );
273
+ };
274
+ }
275
+ });
276
+ var ScrollArea_default = ScrollArea;
277
+
278
+ export {
279
+ ScrollArea,
280
+ ScrollArea_default
281
+ };
@@ -0,0 +1,225 @@
1
+ import {
2
+ Button
3
+ } from "./chunk-YZBQ6IR7.mjs";
4
+ import {
5
+ Link
6
+ } from "./chunk-3MO7A4GU.mjs";
7
+
8
+ // src/components/PageHeader.ts
9
+ import { defineComponent, getCurrentInstance, h } from "vue";
10
+ import {
11
+ chevronLeftSolidIcon20PathD,
12
+ coerceClassValue,
13
+ composeComponentClasses,
14
+ getPageHeaderBackButtonClasses,
15
+ getPageHeaderRootClasses,
16
+ hasPageHeaderHeadingContent,
17
+ icon20ViewBox,
18
+ mergeStyleValues,
19
+ pageHeaderActionsClasses,
20
+ pageHeaderBackIconClasses,
21
+ pageHeaderBackWrapClasses,
22
+ pageHeaderContentClasses,
23
+ pageHeaderHeadingRowClasses,
24
+ pageHeaderMainClasses,
25
+ pageHeaderStartClasses,
26
+ pageHeaderSubtitleClasses,
27
+ pageHeaderTitleClasses,
28
+ pageHeaderTitleRowClasses,
29
+ resolvePageHeaderBackAriaLabel,
30
+ resolvePageHeaderBackVisibility
31
+ } from "@expcat/tigercat-core";
32
+ function hasSlotContent(nodes) {
33
+ return Array.isArray(nodes) && nodes.length > 0;
34
+ }
35
+ function createBackIcon() {
36
+ return h(
37
+ "svg",
38
+ {
39
+ class: pageHeaderBackIconClasses,
40
+ xmlns: "http://www.w3.org/2000/svg",
41
+ viewBox: icon20ViewBox,
42
+ fill: "currentColor",
43
+ "aria-hidden": "true",
44
+ focusable: "false"
45
+ },
46
+ [
47
+ h("path", {
48
+ "fill-rule": "evenodd",
49
+ d: chevronLeftSolidIcon20PathD,
50
+ "clip-rule": "evenodd"
51
+ })
52
+ ]
53
+ );
54
+ }
55
+ var PageHeader = defineComponent({
56
+ name: "TigerPageHeader",
57
+ inheritAttrs: false,
58
+ props: {
59
+ /**
60
+ * Whether to show the back control.
61
+ * When omitted, the control is shown if `@back`, `backHref`, or a `#back`
62
+ * slot is provided. Set `false` to force-hide.
63
+ */
64
+ showBack: {
65
+ type: Boolean,
66
+ default: void 0
67
+ },
68
+ /**
69
+ * Navigation URL for the default back control. Renders a Link instead of
70
+ * a Button when set and no `#back` slot is provided.
71
+ */
72
+ backHref: {
73
+ type: String,
74
+ default: void 0
75
+ },
76
+ /**
77
+ * Accessible name for the default back control
78
+ * @default 'Back'
79
+ */
80
+ backAriaLabel: {
81
+ type: String,
82
+ default: void 0
83
+ },
84
+ /**
85
+ * Page title
86
+ */
87
+ title: {
88
+ type: String,
89
+ default: void 0
90
+ },
91
+ /**
92
+ * Secondary text shown beside the title
93
+ */
94
+ subTitle: {
95
+ type: String,
96
+ default: void 0
97
+ },
98
+ /**
99
+ * Additional CSS classes
100
+ */
101
+ className: {
102
+ type: String,
103
+ default: void 0
104
+ },
105
+ /**
106
+ * Inline styles
107
+ */
108
+ style: {
109
+ type: Object,
110
+ default: void 0
111
+ }
112
+ },
113
+ emits: {
114
+ /**
115
+ * Emitted when the default back control is activated
116
+ */
117
+ back: (event) => event instanceof MouseEvent
118
+ },
119
+ setup(props, { slots, emit, attrs }) {
120
+ const instance = getCurrentInstance();
121
+ const handleBack = (event) => {
122
+ emit("back", event);
123
+ };
124
+ return () => {
125
+ const attrsRecord = attrs;
126
+ const vnodeProps = instance?.vnode.props;
127
+ const breadcrumb = slots.breadcrumb?.();
128
+ const titleSlot = slots.title?.();
129
+ const subTitleSlot = slots.subTitle?.();
130
+ const actions = slots.actions?.();
131
+ const backOverride = slots.back?.();
132
+ const body = slots.default?.();
133
+ const hasBreadcrumb = hasSlotContent(breadcrumb);
134
+ const hasTitleSlot = hasSlotContent(titleSlot);
135
+ const hasSubTitleSlot = hasSlotContent(subTitleSlot);
136
+ const hasActions = hasSlotContent(actions);
137
+ const hasBackOverride = hasSlotContent(backOverride);
138
+ const hasBody = hasSlotContent(body);
139
+ const titleContent = hasTitleSlot ? titleSlot : props.title;
140
+ const subTitleContent = hasSubTitleSlot ? subTitleSlot : props.subTitle;
141
+ const hasTitle = hasTitleSlot || Boolean(props.title);
142
+ const hasSubtitle = hasSubTitleSlot || Boolean(props.subTitle);
143
+ const showBack = resolvePageHeaderBackVisibility({
144
+ showBack: props.showBack,
145
+ hasHandler: Boolean(vnodeProps && "onBack" in vnodeProps),
146
+ hasBackHref: Boolean(props.backHref),
147
+ hasBackOverride
148
+ });
149
+ const showHeading = hasPageHeaderHeadingContent({
150
+ showBack,
151
+ hasBreadcrumb,
152
+ hasTitle,
153
+ hasSubtitle,
154
+ hasActions
155
+ });
156
+ const backAriaLabel = resolvePageHeaderBackAriaLabel(props.backAriaLabel);
157
+ const backControl = showBack ? h("div", { class: pageHeaderBackWrapClasses, "data-page-header-back": "" }, [
158
+ hasBackOverride ? backOverride : props.backHref ? h(
159
+ Link,
160
+ {
161
+ href: props.backHref,
162
+ underline: false,
163
+ variant: "default",
164
+ class: getPageHeaderBackButtonClasses(),
165
+ "aria-label": backAriaLabel,
166
+ onClick: handleBack
167
+ },
168
+ { default: () => [createBackIcon()] }
169
+ ) : h(
170
+ Button,
171
+ {
172
+ variant: "ghost",
173
+ size: "sm",
174
+ className: getPageHeaderBackButtonClasses(),
175
+ "aria-label": backAriaLabel,
176
+ onClick: handleBack
177
+ },
178
+ { default: () => [createBackIcon()] }
179
+ )
180
+ ]) : null;
181
+ const mainColumn = hasBreadcrumb || hasTitle || hasSubtitle ? h("div", { class: pageHeaderMainClasses }, [
182
+ hasBreadcrumb ? breadcrumb : null,
183
+ hasTitle || hasSubtitle ? h("div", { class: pageHeaderTitleRowClasses }, [
184
+ hasTitle ? h(
185
+ "div",
186
+ { class: pageHeaderTitleClasses, "data-page-header-title": "" },
187
+ titleContent
188
+ ) : null,
189
+ hasSubtitle ? h(
190
+ "div",
191
+ { class: pageHeaderSubtitleClasses, "data-page-header-subtitle": "" },
192
+ subTitleContent
193
+ ) : null
194
+ ]) : null
195
+ ]) : null;
196
+ const heading = showHeading ? h("div", { class: pageHeaderHeadingRowClasses, "data-page-header-heading": "" }, [
197
+ h("div", { class: pageHeaderStartClasses }, [backControl, mainColumn]),
198
+ hasActions ? h(
199
+ "div",
200
+ { class: pageHeaderActionsClasses, "data-page-header-actions": "" },
201
+ actions
202
+ ) : null
203
+ ]) : null;
204
+ return h(
205
+ "header",
206
+ {
207
+ ...attrs,
208
+ class: composeComponentClasses(
209
+ getPageHeaderRootClasses(props.className),
210
+ coerceClassValue(attrsRecord.class)
211
+ ),
212
+ style: mergeStyleValues(attrsRecord.style, props.style),
213
+ "data-page-header": ""
214
+ },
215
+ [heading, hasBody ? h("div", { class: pageHeaderContentClasses }, body) : null]
216
+ );
217
+ };
218
+ }
219
+ });
220
+ var PageHeader_default = PageHeader;
221
+
222
+ export {
223
+ PageHeader,
224
+ PageHeader_default
225
+ };