@gravitee/graphene-core 3.23.1 → 3.24.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.
@@ -19,6 +19,8 @@ export { textareaHarness } from '../base/Textarea/Textarea.harness';
19
19
  export type { TextareaHarness } from '../base/Textarea/Textarea.harness';
20
20
  export { dataTableHarness } from '../composed/DataTable/DataTable.harness';
21
21
  export type { DataTableHarness, DataTableRowHarness, } from '../composed/DataTable/DataTable.harness';
22
+ export { pageHeaderHarness } from '../composed/PageHeader/PageHeader.harness';
23
+ export type { PageHeaderHarness } from '../composed/PageHeader/PageHeader.harness';
22
24
  export { passwordInputHarness } from '../composed/PasswordInput/PasswordInput.harness';
23
25
  export type { PasswordInputHarness } from '../composed/PasswordInput/PasswordInput.harness';
24
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,oDAAoD,CAAC;AACnF,YAAY,EAAE,aAAa,EAAE,MAAM,oDAAoD,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,wDAAwD,CAAC;AACzF,YAAY,EAAE,eAAe,EAAE,MAAM,wDAAwD,CAAC;AAC9F,OAAO,EAAE,YAAY,EAAE,MAAM,kDAAkD,CAAC;AAChF,YAAY,EAAE,YAAY,EAAE,MAAM,kDAAkD,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,4DAA4D,CAAC;AAC7G,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,4DAA4D,CAAC;AAClH,OAAO,EAAE,aAAa,EAAE,MAAM,oDAAoD,CAAC;AACnF,YAAY,EAAE,aAAa,EAAE,MAAM,oDAAoD,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,oDAAoD,CAAC;AACnF,YAAY,EAAE,aAAa,EAAE,MAAM,oDAAoD,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,kDAAkD,CAAC;AAChF,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC;AACtG,OAAO,EAAE,eAAe,EAAE,MAAM,wDAAwD,CAAC;AACzF,YAAY,EAAE,eAAe,EAAE,MAAM,wDAAwD,CAAC;AAE9F,OAAO,EAAE,gBAAgB,EAAE,MAAM,8DAA8D,CAAC;AAChG,YAAY,EACV,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,8DAA8D,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sEAAsE,CAAC;AAC5G,YAAY,EAAE,oBAAoB,EAAE,MAAM,sEAAsE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,oDAAoD,CAAC;AACnF,YAAY,EAAE,aAAa,EAAE,MAAM,oDAAoD,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,wDAAwD,CAAC;AACzF,YAAY,EAAE,eAAe,EAAE,MAAM,wDAAwD,CAAC;AAC9F,OAAO,EAAE,YAAY,EAAE,MAAM,kDAAkD,CAAC;AAChF,YAAY,EAAE,YAAY,EAAE,MAAM,kDAAkD,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,4DAA4D,CAAC;AAC7G,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,4DAA4D,CAAC;AAClH,OAAO,EAAE,aAAa,EAAE,MAAM,oDAAoD,CAAC;AACnF,YAAY,EAAE,aAAa,EAAE,MAAM,oDAAoD,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,oDAAoD,CAAC;AACnF,YAAY,EAAE,aAAa,EAAE,MAAM,oDAAoD,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,kDAAkD,CAAC;AAChF,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC;AACtG,OAAO,EAAE,eAAe,EAAE,MAAM,wDAAwD,CAAC;AACzF,YAAY,EAAE,eAAe,EAAE,MAAM,wDAAwD,CAAC;AAE9F,OAAO,EAAE,gBAAgB,EAAE,MAAM,8DAA8D,CAAC;AAChG,YAAY,EACV,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,8DAA8D,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gEAAgE,CAAC;AACnG,YAAY,EAAE,iBAAiB,EAAE,MAAM,gEAAgE,CAAC;AACxG,OAAO,EAAE,oBAAoB,EAAE,MAAM,sEAAsE,CAAC;AAC5G,YAAY,EAAE,oBAAoB,EAAE,MAAM,sEAAsE,CAAC"}
@@ -345,8 +345,40 @@ function E(e = {}) {
345
345
  };
346
346
  }
347
347
  //#endregion
348
+ //#region src/composed/PageHeader/PageHeader.harness.tsx
349
+ var D = (e) => (e ?? "").replace(/\s+/g, " ").trim(), O = (e) => D(e.querySelector("[data-slot=\"page-header-title\"]")?.textContent ?? null);
350
+ function k(e = {}) {
351
+ let t = e.within ? i(e.within) : r, { name: n, selector: a } = e, o = () => {
352
+ let r = (n === void 0 ? t.getAllByRole("heading", { level: 1 }) : t.getAllByRole("heading", {
353
+ level: 1,
354
+ name: n
355
+ })).map((e) => e.closest("[data-slot=\"page-header\"]")).filter((e) => e !== null);
356
+ if (a !== void 0) return c(r, e, "pageHeader");
357
+ if (r.length === 1) return r[0];
358
+ throw Error(r.length === 0 ? `pageHeaderHarness: no pageHeader matched ${s(e)}` : `pageHeaderHarness: ${r.length} pageHeaders matched ${s(e)}, refine name/selector`);
359
+ }, l = (e) => o().querySelector(`[data-slot="${e}"]`), u = (e) => {
360
+ let t = l(e);
361
+ return t !== null && t.hasChildNodes() ? t : null;
362
+ };
363
+ return {
364
+ getElement: o,
365
+ getTitle: () => O(o()),
366
+ getDescription: () => {
367
+ let e = l("page-header-description");
368
+ return e === null ? null : D(e.textContent);
369
+ },
370
+ hasActions: () => u("page-header-actions") !== null,
371
+ getActions: () => {
372
+ let e = u("page-header-actions");
373
+ if (e === null) throw Error("pageHeaderHarness: no actions rendered (actions omitted or falsy?)");
374
+ return e;
375
+ },
376
+ getContent: () => u("page-header-content")
377
+ };
378
+ }
379
+ //#endregion
348
380
  //#region src/composed/PasswordInput/PasswordInput.harness.tsx
349
- function D(e = {}) {
381
+ function A(e = {}) {
350
382
  let t = d(e), n = a.setup(), r = () => t.getElement().closest("[data-slot=\"input-group\"]")?.querySelector("[data-slot=\"password-toggle\"]") ?? null, i = () => {
351
383
  let e = r();
352
384
  if (e === null) throw Error("passwordInputHarness: no reveal toggle found (rendered with hideToggle?)");
@@ -368,4 +400,4 @@ function D(e = {}) {
368
400
  };
369
401
  }
370
402
  //#endregion
371
- export { l as buttonHarness, u as checkboxHarness, E as dataTableHarness, d as inputHarness, D as passwordInputHarness, p as radioGroupHarness, m as radioHarness, o as renderWithGraphene, h as selectHarness, g as switchHarness, S as tableHarness, w as textareaHarness };
403
+ export { l as buttonHarness, u as checkboxHarness, E as dataTableHarness, d as inputHarness, k as pageHeaderHarness, A as passwordInputHarness, p as radioGroupHarness, m as radioHarness, o as renderWithGraphene, h as selectHarness, g as switchHarness, S as tableHarness, w as textareaHarness };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravitee/graphene-core",
3
- "version": "3.23.1",
3
+ "version": "3.24.0",
4
4
  "type": "module",
5
5
  "description": "Gravitee's Graphene design system: accessible React components, design tokens, icons, and shared ESLint/TypeScript configs. Built on shadcn/ui and Tailwind.",
6
6
  "keywords": [
@@ -53,6 +53,7 @@ import {
53
53
  DropdownMenuTrigger,
54
54
  FacetedFilter,
55
55
  Input,
56
+ PageHeader,
56
57
  } from '@gravitee/graphene-core';
57
58
  import {
58
59
  GlobeIcon,
@@ -214,19 +215,19 @@ export function EntityListPage() {
214
215
  const isFirstUse = totalCount === 0 && !hasFilters && !loading;
215
216
 
216
217
  return (
217
- <div className="space-y-4">
218
- <div className="flex items-center justify-between">
219
- <div>
220
- <h2 className="text-lg font-semibold">Entities</h2>
221
- <p className="text-sm text-muted-foreground">Manage your entity catalog.</p>
222
- </div>
223
- {!isFirstUse && (
224
- <Button size="sm">
225
- <PlusIcon />
226
- Add entity
227
- </Button>
228
- )}
229
- </div>
218
+ <div className="flex flex-col gap-6">
219
+ <PageHeader
220
+ title="Entities"
221
+ description="Manage your entity catalog."
222
+ actions={
223
+ !isFirstUse && (
224
+ <Button size="sm">
225
+ <PlusIcon />
226
+ Add entity
227
+ </Button>
228
+ )
229
+ }
230
+ />
230
231
 
231
232
  {isFirstUse ? (
232
233
  <div className="rounded-lg border">