@exxatdesignux/ui 0.5.2 → 0.5.3
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.
- package/CHANGELOG.md +9 -0
- package/consumer-extras/cursor-rules/exxat-data-tables.mdc +8 -6
- package/consumer-extras/cursor-rules/exxat-ds-agents.mdc +2 -1
- package/consumer-extras/cursor-rules/exxat-hub-supported-views.mdc +54 -0
- package/consumer-extras/cursor-rules/exxat-nav-single-active.mdc +31 -0
- package/consumer-extras/cursor-skills/exxat-ds-skill/SKILL.md +8 -3
- package/consumer-extras/cursor-skills/exxat-ds-skill/references/data-table-pattern.md +15 -5
- package/consumer-extras/cursor-skills/exxat-token-economy/SKILL.md +11 -4
- package/consumer-extras/handbook/HANDBOOK.md +1 -1
- package/consumer-extras/handbook/reference-implementations.md +2 -2
- package/consumer-extras/patterns/data-views-pattern.md +6 -0
- package/consumer-extras/patterns/hub-supported-views-pattern.md +53 -0
- package/dist/components/data-table/index.js +13 -9
- package/dist/components/data-table/index.js.map +1 -1
- package/dist/components/data-table/pagination.js +13 -9
- package/dist/components/data-table/pagination.js.map +1 -1
- package/dist/components/data-views/hub-table.d.ts +8 -4
- package/dist/components/data-views/hub-table.js +25 -10
- package/dist/components/data-views/hub-table.js.map +1 -1
- package/dist/components/data-views/index.d.ts +1 -1
- package/dist/components/data-views/index.js +25 -10
- package/dist/components/data-views/index.js.map +1 -1
- package/dist/components/data-views/list-page-connected-view-body.d.ts +1 -1
- package/dist/components/data-views/list-page-connected-view-body.js +1 -0
- package/dist/components/data-views/list-page-connected-view-body.js.map +1 -1
- package/dist/components/table-properties/drawer-button.js +1 -0
- package/dist/components/table-properties/drawer-button.js.map +1 -1
- package/dist/components/table-properties/drawer.js +1 -0
- package/dist/components/table-properties/drawer.js.map +1 -1
- package/dist/components/table-properties/index.d.ts +1 -1
- package/dist/components/table-properties/index.js +1 -0
- package/dist/components/table-properties/index.js.map +1 -1
- package/dist/components/templates/index.d.ts +1 -1
- package/dist/components/templates/index.js +12 -2
- package/dist/components/templates/index.js.map +1 -1
- package/dist/components/templates/list-page.d.ts +4 -2
- package/dist/components/templates/list-page.js +12 -2
- package/dist/components/templates/list-page.js.map +1 -1
- package/dist/{data-list-view-registry-CyBoBML4.d.ts → data-list-view-registry-BstmlfQ3.d.ts} +16 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +135 -13
- package/dist/index.js.map +1 -1
- package/dist/lib/data-list-view-registry.d.ts +1 -1
- package/dist/lib/data-list-view-registry.js +17 -1
- package/dist/lib/data-list-view-registry.js.map +1 -1
- package/dist/lib/data-list-view-surface.d.ts +1 -1
- package/dist/lib/data-list-view-surface.js +1 -0
- package/dist/lib/data-list-view-surface.js.map +1 -1
- package/dist/lib/list-page-table-properties.d.ts +1 -1
- package/dist/lib/list-page-table-properties.js +1 -0
- package/dist/lib/list-page-table-properties.js.map +1 -1
- package/dist/lib/nav-active.d.ts +38 -0
- package/dist/lib/nav-active.js +104 -0
- package/dist/lib/nav-active.js.map +1 -0
- package/package.json +1 -1
- package/src/components/data-table/index.tsx +25 -17
- package/src/components/data-views/hub-table.tsx +9 -3
- package/src/components/templates/list-page.tsx +9 -3
- package/src/index.ts +1 -0
- package/src/lib/data-list-view-registry.ts +31 -0
- package/src/lib/nav-active.ts +162 -0
- package/template/.claude/skills/exxat-ds-skill/SKILL.md +2 -1
- package/template/AGENTS.md +16 -1
- package/template/components/columns-client.tsx +3 -2
- package/template/components/columns-showcase.tsx +22 -18
- package/template/components/exxat-product-logo.tsx +1 -1
- package/template/components/library-table.tsx +62 -23
- package/template/components/new-library-item-form.tsx +0 -7
- package/template/components/product-wordmark.tsx +1 -1
- package/template/components/sidebar/app-sidebar.tsx +14 -106
- package/template/components/sidebar/secondary-nav.tsx +22 -4
- package/template/components/tokens-hub-auxiliary-views.tsx +301 -0
- package/template/components/tokens-themes-client.tsx +44 -16
- package/template/docs/HANDBOOK.md +1 -1
- package/template/docs/data-views-pattern.md +6 -0
- package/template/docs/glossary.md +2 -1
- package/template/docs/hub-supported-views-pattern.md +53 -0
- package/template/docs/reference-implementations.md +2 -2
- package/template/lib/full-hub-supported-views.ts +8 -0
- package/template/lib/library-supported-views.ts +5 -12
- package/template/package.json +1 -0
- package/tokens/hooks-index.json +2 -2
package/dist/{data-list-view-registry-CyBoBML4.d.ts → data-list-view-registry-BstmlfQ3.d.ts}
RENAMED
|
@@ -39,6 +39,7 @@ declare function usesToolbarWithFilteredRows(view: DataListViewType): boolean;
|
|
|
39
39
|
* `getDataListViewRenderKind` + `ListPageConnectedViewBody` (never a dashboard fallback).
|
|
40
40
|
*
|
|
41
41
|
* @see `docs/data-views-pattern.md` — "View registry and connected bodies"
|
|
42
|
+
* @see `.cursor/rules/exxat-hub-supported-views.mdc` — default hubs use **`FULL_HUB_SUPPORTED_VIEWS`** (seven views)
|
|
42
43
|
*/
|
|
43
44
|
|
|
44
45
|
interface DataListViewDefinition {
|
|
@@ -50,6 +51,20 @@ interface DataListViewDefinition {
|
|
|
50
51
|
hubMetricsStrip: boolean;
|
|
51
52
|
}
|
|
52
53
|
declare const DATA_LIST_VIEW_REGISTRY: readonly DataListViewDefinition[];
|
|
54
|
+
/**
|
|
55
|
+
* Default view allowlist for **primary list hubs** (Placements / Team / Students-style pages).
|
|
56
|
+
* Pair with `ListPageTemplate` + `HubTable` when the hub implements table, list, board,
|
|
57
|
+
* and dashboard renderers. Omit `supportedViewTypes` on both components to use this default.
|
|
58
|
+
*/
|
|
59
|
+
declare const PRIMARY_HUB_SUPPORTED_VIEWS: readonly ["table", "list", "board", "dashboard"];
|
|
60
|
+
/**
|
|
61
|
+
* Default allowlist for **list-page hubs** in this design system (Library / Column types /
|
|
62
|
+
* Tokens, etc.). Matches the All questions hub: table, list, board, dashboard, folder,
|
|
63
|
+
* panel, and tree-panel. Pair with renderers for each kind on `HubTable` + `ListPageTemplate`.
|
|
64
|
+
*/
|
|
65
|
+
declare const FULL_HUB_SUPPORTED_VIEWS: readonly ["table", "list", "board", "dashboard", "folder", "panel", "tree-panel"];
|
|
66
|
+
/** Every registered view type (includes folder, panel, calendar, tree-panel). */
|
|
67
|
+
declare const ALL_DATA_LIST_VIEW_TYPES: DataListViewType[];
|
|
53
68
|
declare function dataListViewDefinition(view: DataListViewType): DataListViewDefinition;
|
|
54
69
|
/** `ListPageTemplate` hub KPI strip — false for calendar and dashboard (inline KPIs). */
|
|
55
70
|
declare function showsListPageHubMetricsStrip(view: DataListViewType): boolean;
|
|
@@ -70,4 +85,4 @@ declare const DATA_LIST_SURFACE_VIEW_TYPES: ReadonlySet<DataListViewType>;
|
|
|
70
85
|
declare function isDataListSurfaceViewType(viewType: string): viewType is DataListViewType;
|
|
71
86
|
declare function isDataListViewTypeSupported(view: DataListViewType, supported: readonly DataListViewType[]): boolean;
|
|
72
87
|
|
|
73
|
-
export { DATA_LIST_SURFACE_VIEW_TYPES as D, DATA_LIST_VIEW_REGISTRY as a, type DataListViewDefinition as b, type DataListViewRenderKind as c, dataListViewDefinition as d, dataListViewSelectionTilesForHub as e, dataListViewTilesForHub as f, getDataListViewRenderKind as g, isDataListViewTypeSupported as h, isDataListSurfaceViewType as i, usesDataTableComponent as j, usesToolbarWithFilteredRows as k, showsListPageHubMetricsStrip as s, usesDashboardSurface as u };
|
|
88
|
+
export { ALL_DATA_LIST_VIEW_TYPES as A, DATA_LIST_SURFACE_VIEW_TYPES as D, FULL_HUB_SUPPORTED_VIEWS as F, PRIMARY_HUB_SUPPORTED_VIEWS as P, DATA_LIST_VIEW_REGISTRY as a, type DataListViewDefinition as b, type DataListViewRenderKind as c, dataListViewDefinition as d, dataListViewSelectionTilesForHub as e, dataListViewTilesForHub as f, getDataListViewRenderKind as g, isDataListViewTypeSupported as h, isDataListSurfaceViewType as i, usesDataTableComponent as j, usesToolbarWithFilteredRows as k, showsListPageHubMetricsStrip as s, usesDashboardSurface as u };
|
package/dist/index.d.ts
CHANGED
|
@@ -31,7 +31,8 @@ export { ColumnRow } from './components/table-properties/column-row.js';
|
|
|
31
31
|
export { useDraggableList } from './components/table-properties/draggable-list.js';
|
|
32
32
|
export { CreateListPageEditViewHandlerOptions, OpenTablePropertiesHandle, createListPageEditViewHandler } from './lib/list-page-table-properties.js';
|
|
33
33
|
export { DATA_LIST_VIEW_TILES, DataListViewType, dataListViewAddShortcut, dataListViewIcon, dataListViewLabel } from './lib/data-list-view.js';
|
|
34
|
-
export { D as DATA_LIST_SURFACE_VIEW_TYPES, a as DATA_LIST_VIEW_REGISTRY, b as DataListViewDefinition, c as DataListViewRenderKind, d as dataListViewDefinition, e as dataListViewSelectionTilesForHub, f as dataListViewTilesForHub, g as getDataListViewRenderKind, i as isDataListSurfaceViewType, h as isDataListViewTypeSupported, s as showsListPageHubMetricsStrip, u as usesDashboardSurface, j as usesDataTableComponent, k as usesToolbarWithFilteredRows } from './data-list-view-registry-
|
|
34
|
+
export { A as ALL_DATA_LIST_VIEW_TYPES, D as DATA_LIST_SURFACE_VIEW_TYPES, a as DATA_LIST_VIEW_REGISTRY, b as DataListViewDefinition, c as DataListViewRenderKind, F as FULL_HUB_SUPPORTED_VIEWS, P as PRIMARY_HUB_SUPPORTED_VIEWS, d as dataListViewDefinition, e as dataListViewSelectionTilesForHub, f as dataListViewTilesForHub, g as getDataListViewRenderKind, i as isDataListSurfaceViewType, h as isDataListViewTypeSupported, s as showsListPageHubMetricsStrip, u as usesDashboardSurface, j as usesDataTableComponent, k as usesToolbarWithFilteredRows } from './data-list-view-registry-BstmlfQ3.js';
|
|
35
|
+
export { buildNavHashClaims, collectNavUrls, isNavHrefActive, navUrlFragment, navUrlPath, normalizePathname, normalizedLocationHash, resolveActiveNavHref } from './lib/nav-active.js';
|
|
35
36
|
export { BoardLineCount, DEFAULT_DATA_LIST_DISPLAY_OPTIONS, DataListDisplayOptions } from './lib/data-list-display-options.js';
|
|
36
37
|
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from './components/ui/accordion.js';
|
|
37
38
|
export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger } from './components/ui/alert-dialog.js';
|
package/dist/index.js
CHANGED
|
@@ -2719,13 +2719,15 @@ function useBulkBarFixedToTableScrollEl(scrollRef, active, fullWidth) {
|
|
|
2719
2719
|
const scheduled = rafThrottle(apply);
|
|
2720
2720
|
const ro = new ResizeObserver(scheduled);
|
|
2721
2721
|
ro.observe(el);
|
|
2722
|
+
el.addEventListener("scroll", scheduled, { passive: true });
|
|
2722
2723
|
window.addEventListener("resize", scheduled, { passive: true });
|
|
2723
|
-
window.addEventListener("scroll", scheduled, { passive: true
|
|
2724
|
+
window.addEventListener("scroll", scheduled, { passive: true });
|
|
2724
2725
|
return () => {
|
|
2725
2726
|
scheduled.cancel();
|
|
2726
2727
|
ro.disconnect();
|
|
2728
|
+
el.removeEventListener("scroll", scheduled);
|
|
2727
2729
|
window.removeEventListener("resize", scheduled);
|
|
2728
|
-
window.removeEventListener("scroll", scheduled
|
|
2730
|
+
window.removeEventListener("scroll", scheduled);
|
|
2729
2731
|
};
|
|
2730
2732
|
}, [active, fullWidth, scrollRef]);
|
|
2731
2733
|
return style;
|
|
@@ -2892,11 +2894,13 @@ function DataTableInner({
|
|
|
2892
2894
|
};
|
|
2893
2895
|
update();
|
|
2894
2896
|
const scheduled = rafThrottle(update);
|
|
2895
|
-
|
|
2897
|
+
wrapEl.addEventListener("scroll", scheduled, { passive: true });
|
|
2898
|
+
window.addEventListener("scroll", scheduled, { passive: true });
|
|
2896
2899
|
window.addEventListener("resize", scheduled, { passive: true });
|
|
2897
2900
|
return () => {
|
|
2898
2901
|
scheduled.cancel();
|
|
2899
|
-
|
|
2902
|
+
wrapEl.removeEventListener("scroll", scheduled);
|
|
2903
|
+
window.removeEventListener("scroll", scheduled);
|
|
2900
2904
|
window.removeEventListener("resize", scheduled);
|
|
2901
2905
|
};
|
|
2902
2906
|
}, [showColumnHeaders, rows.length, displayCols.length]);
|
|
@@ -3333,11 +3337,11 @@ function DataTableInner({
|
|
|
3333
3337
|
const rowPy = rowHeight === "compact" ? "py-1" : rowHeight === "comfortable" ? "py-4" : "py-2.5";
|
|
3334
3338
|
const cs = cellStyle(col.key);
|
|
3335
3339
|
const tdBase = cn(
|
|
3336
|
-
`px-3 ${rowPy} align-middle`,
|
|
3340
|
+
`px-3 ${rowPy} align-middle max-w-0`,
|
|
3337
3341
|
showGridlines && !isEdgePin && "border-e border-border last:border-e-0",
|
|
3338
3342
|
"border-b border-border group-last/row:border-b-0",
|
|
3339
3343
|
isPinned && [
|
|
3340
|
-
"z-20 pinned-cell",
|
|
3344
|
+
"z-20 pinned-cell relative",
|
|
3341
3345
|
"bg-dt-row-bg",
|
|
3342
3346
|
"group-data-[state=selected]/row:bg-dt-row-selected",
|
|
3343
3347
|
"group-hover/row:bg-dt-row-hover",
|
|
@@ -3387,17 +3391,17 @@ function DataTableInner({
|
|
|
3387
3391
|
wrap && "[&_.truncate]:!whitespace-normal [&_.truncate]:!overflow-visible [&_.truncate]:!text-clip"
|
|
3388
3392
|
),
|
|
3389
3393
|
style: tdStyle,
|
|
3390
|
-
children: col.cell(row, {
|
|
3394
|
+
children: /* @__PURE__ */ jsx("div", { className: "min-w-0 overflow-hidden", children: col.cell(row, {
|
|
3391
3395
|
rowIndex,
|
|
3392
3396
|
selected: isSelected,
|
|
3393
3397
|
onSelect: (checked) => checked ? setSelected((prev) => /* @__PURE__ */ new Set([...prev, rowId])) : toggleRow(rowId)
|
|
3394
|
-
})
|
|
3398
|
+
}) })
|
|
3395
3399
|
},
|
|
3396
3400
|
col.key
|
|
3397
3401
|
);
|
|
3398
3402
|
}
|
|
3399
3403
|
const rawVal = String(row[col.key] ?? "");
|
|
3400
|
-
return /* @__PURE__ */ jsx("td", { className: cn(tdBase, "text-sm text-foreground/80"), style: tdStyle, children: /* @__PURE__ */ jsx("span", { className: wrap ? "whitespace-normal" : "block truncate", title: !wrap ? rawVal : void 0, children: rawVal }) }, col.key);
|
|
3404
|
+
return /* @__PURE__ */ jsx("td", { className: cn(tdBase, "text-sm text-foreground/80"), style: tdStyle, children: /* @__PURE__ */ jsx("div", { className: "min-w-0 overflow-hidden", children: /* @__PURE__ */ jsx("span", { className: wrap ? "whitespace-normal" : "block truncate", title: !wrap ? rawVal : void 0, children: rawVal }) }) }, col.key);
|
|
3401
3405
|
})
|
|
3402
3406
|
},
|
|
3403
3407
|
String(rowId)
|
|
@@ -3795,6 +3799,22 @@ var BY_VALUE = new Map(
|
|
|
3795
3799
|
DEFINITIONS.map((d) => [d.value, d])
|
|
3796
3800
|
);
|
|
3797
3801
|
var DATA_LIST_VIEW_REGISTRY = DEFINITIONS;
|
|
3802
|
+
var PRIMARY_HUB_SUPPORTED_VIEWS = [
|
|
3803
|
+
"table",
|
|
3804
|
+
"list",
|
|
3805
|
+
"board",
|
|
3806
|
+
"dashboard"
|
|
3807
|
+
];
|
|
3808
|
+
var FULL_HUB_SUPPORTED_VIEWS = [
|
|
3809
|
+
"table",
|
|
3810
|
+
"list",
|
|
3811
|
+
"board",
|
|
3812
|
+
"dashboard",
|
|
3813
|
+
"folder",
|
|
3814
|
+
"panel",
|
|
3815
|
+
"tree-panel"
|
|
3816
|
+
];
|
|
3817
|
+
var ALL_DATA_LIST_VIEW_TYPES = DATA_LIST_VIEW_REGISTRY.map((d) => d.value);
|
|
3798
3818
|
function dataListViewDefinition(view) {
|
|
3799
3819
|
const def = BY_VALUE.get(view);
|
|
3800
3820
|
if (!def) {
|
|
@@ -6157,7 +6177,7 @@ function HubTable({
|
|
|
6157
6177
|
columns,
|
|
6158
6178
|
view,
|
|
6159
6179
|
onViewChange,
|
|
6160
|
-
supportedViewTypes,
|
|
6180
|
+
supportedViewTypes: supportedViewTypesProp,
|
|
6161
6181
|
hubLabel,
|
|
6162
6182
|
lifecycleTabLabel,
|
|
6163
6183
|
searchAriaLabel,
|
|
@@ -6193,6 +6213,7 @@ function HubTable({
|
|
|
6193
6213
|
boardColumnCountBadgeClassName,
|
|
6194
6214
|
boardEmptyColumnLabel
|
|
6195
6215
|
}) {
|
|
6216
|
+
const supportedViewTypes = supportedViewTypesProp ?? FULL_HUB_SUPPORTED_VIEWS;
|
|
6196
6217
|
const filterFields = React10.useMemo(() => columnsToFilterFields(columns), [columns]);
|
|
6197
6218
|
const fieldDefinitions = React10.useMemo(() => columnsToFieldDefinitions(columns), [columns]);
|
|
6198
6219
|
const resolveColumnLabel = React10.useCallback(
|
|
@@ -8331,8 +8352,8 @@ function ListPageTemplate({
|
|
|
8331
8352
|
supportedViewTypes
|
|
8332
8353
|
}) {
|
|
8333
8354
|
const addableViewTypes = React10.useMemo(() => {
|
|
8334
|
-
|
|
8335
|
-
const allowed = new Set(
|
|
8355
|
+
const allowlist = supportedViewTypes && supportedViewTypes.length > 0 ? supportedViewTypes : FULL_HUB_SUPPORTED_VIEWS;
|
|
8356
|
+
const allowed = new Set(allowlist);
|
|
8336
8357
|
return VIEW_TYPES.filter((v) => allowed.has(v.type));
|
|
8337
8358
|
}, [supportedViewTypes]);
|
|
8338
8359
|
const controlled = tabsProp !== void 0 && onTabsChange !== void 0 && activeTabIdProp !== void 0 && onActiveTabChange !== void 0;
|
|
@@ -8986,6 +9007,107 @@ var DEDICATED_SEARCH_RESULTS_OUTER_CONTENT_CLASSNAME = "border-t border-border/4
|
|
|
8986
9007
|
function DedicatedSearchResultsHeaderChrome({ children, className }) {
|
|
8987
9008
|
return /* @__PURE__ */ jsx("div", { className: cn("border-b border-border/50 bg-muted/15", className), children });
|
|
8988
9009
|
}
|
|
9010
|
+
|
|
9011
|
+
// src/lib/nav-active.ts
|
|
9012
|
+
function normalizePathname(pathname) {
|
|
9013
|
+
if (pathname.length > 1 && pathname.endsWith("/")) return pathname.slice(0, -1);
|
|
9014
|
+
return pathname;
|
|
9015
|
+
}
|
|
9016
|
+
function navUrlPath(url) {
|
|
9017
|
+
const hash = url.indexOf("#");
|
|
9018
|
+
return hash >= 0 ? url.slice(0, hash) : url;
|
|
9019
|
+
}
|
|
9020
|
+
function navUrlFragment(url) {
|
|
9021
|
+
const i = url.indexOf("#");
|
|
9022
|
+
return i >= 0 ? url.slice(i + 1) : null;
|
|
9023
|
+
}
|
|
9024
|
+
function normalizedLocationHash(locationHash) {
|
|
9025
|
+
if (!locationHash) return "";
|
|
9026
|
+
return locationHash.startsWith("#") ? locationHash.slice(1) : locationHash;
|
|
9027
|
+
}
|
|
9028
|
+
function buildNavHashClaims(urls) {
|
|
9029
|
+
const map = /* @__PURE__ */ new Map();
|
|
9030
|
+
for (const url of urls) {
|
|
9031
|
+
const p = navUrlPath(url);
|
|
9032
|
+
const f = navUrlFragment(url);
|
|
9033
|
+
if (!p || f === null) continue;
|
|
9034
|
+
let set = map.get(p);
|
|
9035
|
+
if (!set) {
|
|
9036
|
+
set = /* @__PURE__ */ new Set();
|
|
9037
|
+
map.set(p, set);
|
|
9038
|
+
}
|
|
9039
|
+
set.add(f);
|
|
9040
|
+
}
|
|
9041
|
+
return map;
|
|
9042
|
+
}
|
|
9043
|
+
function navHasMoreSpecificHashMatch(pathname, locationHash, hashClaimsByPath) {
|
|
9044
|
+
const claims = hashClaimsByPath.get(pathname);
|
|
9045
|
+
if (!claims) return false;
|
|
9046
|
+
const h = normalizedLocationHash(locationHash);
|
|
9047
|
+
if (h === "") return false;
|
|
9048
|
+
return claims.has(h);
|
|
9049
|
+
}
|
|
9050
|
+
function pathnameMatchesNavPath(pathname, pathOnly, locationHash, hashClaimsByPath) {
|
|
9051
|
+
const norm = normalizePathname(pathname);
|
|
9052
|
+
const h = normalizedLocationHash(locationHash);
|
|
9053
|
+
if (pathOnly === "/") {
|
|
9054
|
+
if (norm !== "/" || h !== "") return false;
|
|
9055
|
+
return !navHasMoreSpecificHashMatch("/", locationHash, hashClaimsByPath);
|
|
9056
|
+
}
|
|
9057
|
+
if (norm === pathOnly) {
|
|
9058
|
+
return !navHasMoreSpecificHashMatch(pathOnly, locationHash, hashClaimsByPath);
|
|
9059
|
+
}
|
|
9060
|
+
if (pathOnly === "/library") {
|
|
9061
|
+
return norm.startsWith("/library/");
|
|
9062
|
+
}
|
|
9063
|
+
if (pathOnly.startsWith("/library/")) {
|
|
9064
|
+
return norm === pathOnly;
|
|
9065
|
+
}
|
|
9066
|
+
return norm.startsWith(`${pathOnly}/`);
|
|
9067
|
+
}
|
|
9068
|
+
function resolveActiveNavHref(pathname, candidateUrls, options) {
|
|
9069
|
+
const norm = normalizePathname(pathname);
|
|
9070
|
+
const hashClaims = options?.hashClaimsByPath ?? buildNavHashClaims(candidateUrls);
|
|
9071
|
+
const locationHash = options?.locationHash ?? "";
|
|
9072
|
+
let bestHref = null;
|
|
9073
|
+
let bestLen = -1;
|
|
9074
|
+
for (const url of candidateUrls) {
|
|
9075
|
+
const pathOnly = navUrlPath(url);
|
|
9076
|
+
const frag = navUrlFragment(url);
|
|
9077
|
+
if (!pathOnly || pathOnly === "#") continue;
|
|
9078
|
+
let matches = false;
|
|
9079
|
+
if (frag !== null) {
|
|
9080
|
+
const h = normalizedLocationHash(locationHash);
|
|
9081
|
+
if (pathOnly === "/") matches = norm === "/" && h === frag;
|
|
9082
|
+
else if (pathOnly === "/library") matches = norm.startsWith("/library/") && h === frag;
|
|
9083
|
+
else if (pathOnly.startsWith("/library/")) matches = norm === pathOnly && h === frag;
|
|
9084
|
+
else matches = norm === pathOnly && h === frag;
|
|
9085
|
+
} else {
|
|
9086
|
+
matches = pathnameMatchesNavPath(norm, pathOnly, locationHash, hashClaims);
|
|
9087
|
+
}
|
|
9088
|
+
if (matches && pathOnly.length > bestLen) {
|
|
9089
|
+
bestHref = url;
|
|
9090
|
+
bestLen = pathOnly.length;
|
|
9091
|
+
}
|
|
9092
|
+
}
|
|
9093
|
+
return bestHref;
|
|
9094
|
+
}
|
|
9095
|
+
function isNavHrefActive(pathname, url, allNavUrls, options) {
|
|
9096
|
+
const active = resolveActiveNavHref(pathname, allNavUrls, options);
|
|
9097
|
+
if (!active) return false;
|
|
9098
|
+
return navUrlPath(active) === navUrlPath(url) && navUrlFragment(active) === navUrlFragment(url);
|
|
9099
|
+
}
|
|
9100
|
+
function collectNavUrls(items) {
|
|
9101
|
+
const out = [];
|
|
9102
|
+
const walk = (list) => {
|
|
9103
|
+
for (const it of list) {
|
|
9104
|
+
if (typeof it.url === "string" && it.url.length > 0 && it.url !== "#") out.push(it.url);
|
|
9105
|
+
if (Array.isArray(it.children)) walk(it.children);
|
|
9106
|
+
}
|
|
9107
|
+
};
|
|
9108
|
+
walk(items);
|
|
9109
|
+
return out;
|
|
9110
|
+
}
|
|
8989
9111
|
function Accordion({
|
|
8990
9112
|
...props
|
|
8991
9113
|
}) {
|
|
@@ -13417,6 +13539,6 @@ function useCoachMark({
|
|
|
13417
13539
|
};
|
|
13418
13540
|
}
|
|
13419
13541
|
|
|
13420
|
-
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, AvatarInitials, AvatarLeoAssistant, AvatarNotificationCount, AvatarPlusAction, AvatarStatus, AvatarVerified, Badge, BoardCardIconRow, BoardCardTwoLineBlock, BoardNewCardPlaceholder, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, COACH_MARK_FLOW_COMPLETED_EVENT, Calendar, CalendarDayButton, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, CheckboxLabel, CoachMark, Collapsible, CollapsibleContent, CollapsibleTrigger, ColumnRow, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CountSyncer, DATA_LIST_SURFACE_VIEW_TYPES, DATA_LIST_VIEW_REGISTRY, DATA_LIST_VIEW_TILES, DATE_PICKER_ICON_CLASS, DEDICATED_SEARCH_RESULTS_OUTER_CONTENT_CLASSNAME, DEFAULT_DATA_LIST_DISPLAY_OPTIONS, DROPDOWN_MENU_CONTENT_SURFACE_CLASS, DataRowList, DataTable, DataTablePaginated, DataTableToolbar, DatePickerField, DateTextInputField, DedicatedSearchLandingTemplate, DedicatedSearchResultsHeaderChrome, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DragHandleGripIcon, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFilterCard, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerSortCard, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ExportDrawer, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, FilterDateCalendar, FilterTextValueInput, FinderGroupStrip, FinderPanelView, FolderGridView, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, GroupsColumn, HoverCard, HoverCardContent, HoverCardTrigger, HubRecordCard, HubTable, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, Kbd, KbdGroup, KeyMetrics, KeyMetricsContent, KeyMetricsProvider, LIST_PAGE_SPLIT_HUB_HEIGHT_STYLE, LIST_PAGE_SPLIT_MILLER_COLUMN_PANEL_CLASS, LIST_PAGE_SPLIT_MILLER_DETAIL_PANEL_CLASS, LIST_PAGE_SPLIT_RESIZABLE_HANDLE_CLASS, LIST_PAGE_VIEW_FRAME_GUTTER, LIST_PAGE_VIEW_FRAME_MAX_ICON_GRID, LIST_PAGE_VIEW_FRAME_MAX_WIDE, Label, ListPageBoardCard, ListPageBoardCardAvatar, ListPageBoardCardBadgeRow, ListPageBoardCardBody, ListPageBoardCardHeader, ListPageBoardCardSecondary, ListPageBoardCardTitleRow, ListPageBoardTemplate, ListPageConnectedViewBody, ListPageSplitDetailsPlaceholder, ListPageSplitHubChrome, ListPageTemplate, ListPageTreeColumnHeader, ListPageTreePanelShell, ListPageViewFrame, ListPageViewNotConfigured, LocalBanner, MaskedInput, NestedSecondaryPanelShell, OPERATOR_LABELS, OS_FOLDER_GLYPH_SRC, OUTLINE_TREE_CHEVRON_GUIDE_SPACER_CLASS, OUTLINE_TREE_COLLAPSIBLE_CONTENT_RAIL_CLASS, OUTLINE_TREE_SUB_ROW_SHIFT_CLASS, OsFolderGlyph, OutlineTreeCollapsibleContentRail, OutlineTreeLeafButton, OutlineTreeMenu, OutlineTreeMenuItem, OutlineTreeSub, OutlineTreeSubItem, PageHeader, PaginationBar, PaymentCardFieldsGroup, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, ROW_HEIGHT_TILES, RULE_COLORS, RadioGroup, RadioGroupItem, RadioGroupLabel, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SelectionTileGrid, Separator2 as Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Shortcut, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, StatusBadge, SystemBanner, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TablePropertiesDrawer, TablePropertiesDrawerButton, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Tip, Toaster, Toggle, ToggleGroup, ToggleGroupItem, ToggleSwitch, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, VIEW_TYPES, ViewSegmentedControl, avatarRootVariants, badgeVariants, buttonVariants, chartTooltipKeyboardSyncProps, checkboxVariants, cn, columnsToFieldDefinitions, columnsToFilterFields, composeRefs, conditionalRuleMatchesRow, createListPageEditViewHandler, dataListViewAddShortcut, dataListViewDefinition, dataListViewIcon, dataListViewLabel, dataListViewSelectionTilesForHub, dataListViewTilesForHub, devLog, exxatInputMaskDefaults, exxatMaskPatterns, exxatTimeMaskOptions, formatDateFromDate, formatDateTimeUS, formatDateUS, formatYmdForDisplay, getAllCoachMarkKeys, getConditionalCellBackground, getConditionalRowBackground, getDataListViewRenderKind, isDataListSurfaceViewType, isDataListViewTypeSupported, isEditableTarget, lineClampClass, localDateToYmd, metricTrendAriaQualifier, metricTrendTone, parseRowDateToYmd, radioGroupItemVariants, rafThrottle, resetAllCoachMarks, resetCoachMarkFlow, selectionTileClassNames, selectionTilePreviewClassNames, showsListPageHubMetricsStrip, statusBadgeVariants, tabsListVariants, toggleVariants, useAltKeyLabel, useAppTheme, useCoachMark, useDraggableList, useExxatCustomMask, useExxatDateMDYMask, useExxatMaskedFieldRef, useExxatPhoneMask, useExxatTimeMask, useExxatZipMask, useFormField, useIsMobile, useKeyMetricsContext, useModKeyLabel, useShortcut, useSidebar, useTableState, usesDashboardSurface, usesDataTableComponent, usesToolbarWithFilteredRows, viewSegmentedButtonClass, viewSegmentedToolbarClass, ymdToLocalDate };
|
|
13542
|
+
export { ALL_DATA_LIST_VIEW_TYPES, Accordion, AccordionContent, AccordionItem, AccordionTrigger, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, AvatarInitials, AvatarLeoAssistant, AvatarNotificationCount, AvatarPlusAction, AvatarStatus, AvatarVerified, Badge, BoardCardIconRow, BoardCardTwoLineBlock, BoardNewCardPlaceholder, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, COACH_MARK_FLOW_COMPLETED_EVENT, Calendar, CalendarDayButton, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, CheckboxLabel, CoachMark, Collapsible, CollapsibleContent, CollapsibleTrigger, ColumnRow, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CountSyncer, DATA_LIST_SURFACE_VIEW_TYPES, DATA_LIST_VIEW_REGISTRY, DATA_LIST_VIEW_TILES, DATE_PICKER_ICON_CLASS, DEDICATED_SEARCH_RESULTS_OUTER_CONTENT_CLASSNAME, DEFAULT_DATA_LIST_DISPLAY_OPTIONS, DROPDOWN_MENU_CONTENT_SURFACE_CLASS, DataRowList, DataTable, DataTablePaginated, DataTableToolbar, DatePickerField, DateTextInputField, DedicatedSearchLandingTemplate, DedicatedSearchResultsHeaderChrome, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DragHandleGripIcon, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFilterCard, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerSortCard, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ExportDrawer, FULL_HUB_SUPPORTED_VIEWS, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, FilterDateCalendar, FilterTextValueInput, FinderGroupStrip, FinderPanelView, FolderGridView, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, GroupsColumn, HoverCard, HoverCardContent, HoverCardTrigger, HubRecordCard, HubTable, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, Kbd, KbdGroup, KeyMetrics, KeyMetricsContent, KeyMetricsProvider, LIST_PAGE_SPLIT_HUB_HEIGHT_STYLE, LIST_PAGE_SPLIT_MILLER_COLUMN_PANEL_CLASS, LIST_PAGE_SPLIT_MILLER_DETAIL_PANEL_CLASS, LIST_PAGE_SPLIT_RESIZABLE_HANDLE_CLASS, LIST_PAGE_VIEW_FRAME_GUTTER, LIST_PAGE_VIEW_FRAME_MAX_ICON_GRID, LIST_PAGE_VIEW_FRAME_MAX_WIDE, Label, ListPageBoardCard, ListPageBoardCardAvatar, ListPageBoardCardBadgeRow, ListPageBoardCardBody, ListPageBoardCardHeader, ListPageBoardCardSecondary, ListPageBoardCardTitleRow, ListPageBoardTemplate, ListPageConnectedViewBody, ListPageSplitDetailsPlaceholder, ListPageSplitHubChrome, ListPageTemplate, ListPageTreeColumnHeader, ListPageTreePanelShell, ListPageViewFrame, ListPageViewNotConfigured, LocalBanner, MaskedInput, NestedSecondaryPanelShell, OPERATOR_LABELS, OS_FOLDER_GLYPH_SRC, OUTLINE_TREE_CHEVRON_GUIDE_SPACER_CLASS, OUTLINE_TREE_COLLAPSIBLE_CONTENT_RAIL_CLASS, OUTLINE_TREE_SUB_ROW_SHIFT_CLASS, OsFolderGlyph, OutlineTreeCollapsibleContentRail, OutlineTreeLeafButton, OutlineTreeMenu, OutlineTreeMenuItem, OutlineTreeSub, OutlineTreeSubItem, PRIMARY_HUB_SUPPORTED_VIEWS, PageHeader, PaginationBar, PaymentCardFieldsGroup, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, ROW_HEIGHT_TILES, RULE_COLORS, RadioGroup, RadioGroupItem, RadioGroupLabel, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SelectionTileGrid, Separator2 as Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Shortcut, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, StatusBadge, SystemBanner, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TablePropertiesDrawer, TablePropertiesDrawerButton, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Tip, Toaster, Toggle, ToggleGroup, ToggleGroupItem, ToggleSwitch, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, VIEW_TYPES, ViewSegmentedControl, avatarRootVariants, badgeVariants, buildNavHashClaims, buttonVariants, chartTooltipKeyboardSyncProps, checkboxVariants, cn, collectNavUrls, columnsToFieldDefinitions, columnsToFilterFields, composeRefs, conditionalRuleMatchesRow, createListPageEditViewHandler, dataListViewAddShortcut, dataListViewDefinition, dataListViewIcon, dataListViewLabel, dataListViewSelectionTilesForHub, dataListViewTilesForHub, devLog, exxatInputMaskDefaults, exxatMaskPatterns, exxatTimeMaskOptions, formatDateFromDate, formatDateTimeUS, formatDateUS, formatYmdForDisplay, getAllCoachMarkKeys, getConditionalCellBackground, getConditionalRowBackground, getDataListViewRenderKind, isDataListSurfaceViewType, isDataListViewTypeSupported, isEditableTarget, isNavHrefActive, lineClampClass, localDateToYmd, metricTrendAriaQualifier, metricTrendTone, navUrlFragment, navUrlPath, normalizePathname, normalizedLocationHash, parseRowDateToYmd, radioGroupItemVariants, rafThrottle, resetAllCoachMarks, resetCoachMarkFlow, resolveActiveNavHref, selectionTileClassNames, selectionTilePreviewClassNames, showsListPageHubMetricsStrip, statusBadgeVariants, tabsListVariants, toggleVariants, useAltKeyLabel, useAppTheme, useCoachMark, useDraggableList, useExxatCustomMask, useExxatDateMDYMask, useExxatMaskedFieldRef, useExxatPhoneMask, useExxatTimeMask, useExxatZipMask, useFormField, useIsMobile, useKeyMetricsContext, useModKeyLabel, useShortcut, useSidebar, useTableState, usesDashboardSurface, usesDataTableComponent, usesToolbarWithFilteredRows, viewSegmentedButtonClass, viewSegmentedToolbarClass, ymdToLocalDate };
|
|
13421
13543
|
//# sourceMappingURL=index.js.map
|
|
13422
13544
|
//# sourceMappingURL=index.js.map
|