@asteby/metacore-ui 2.6.1 → 2.6.2

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.
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Whether the aggregate overflow badge should render. A numeric `0` hides it
3
+ * (so hosts can pass a raw count without guarding falsy-zero), as do `false`,
4
+ * `null`, `undefined` and `''`.
5
+ */
6
+ export declare function headerActionsHasBadge(badge: number | string | boolean | null | undefined): boolean;
7
+ //# sourceMappingURL=header-actions-badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-actions-badge.d.ts","sourceRoot":"","sources":["../../src/layout/header-actions-badge.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,GAClD,OAAO,CAIT"}
@@ -0,0 +1,16 @@
1
+ // Pure, dependency-free badge predicate for the mobile header overflow trigger.
2
+ // Kept in its own module (no `@/` aliases, no JSX) so it can be unit-tested in
3
+ // the package's node test environment without resolving the component's deps.
4
+ /**
5
+ * Whether the aggregate overflow badge should render. A numeric `0` hides it
6
+ * (so hosts can pass a raw count without guarding falsy-zero), as do `false`,
7
+ * `null`, `undefined` and `''`.
8
+ */
9
+ export function headerActionsHasBadge(badge) {
10
+ if (typeof badge === 'number')
11
+ return badge !== 0;
12
+ if (typeof badge === 'boolean')
13
+ return badge;
14
+ return Boolean(badge);
15
+ }
16
+ //# sourceMappingURL=header-actions-badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-actions-badge.js","sourceRoot":"","sources":["../../src/layout/header-actions-badge.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,+EAA+E;AAC/E,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAmD;IAEnD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,KAAK,CAAC,CAAA;IACjD,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAA;IAC5C,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA;AACvB,CAAC"}
@@ -0,0 +1,46 @@
1
+ import * as React from 'react';
2
+ import { headerActionsHasBadge } from './header-actions-badge';
3
+ export { headerActionsHasBadge };
4
+ export interface HeaderActionsProps {
5
+ /**
6
+ * The secondary header toggles (search, dark-mode, print, settings, updates,
7
+ * notifications, …). On `sm:`+ they render inline; below `sm` they collapse
8
+ * into a single overflow popover so they never spill out of the cramped phone
9
+ * header.
10
+ */
11
+ children: React.ReactNode;
12
+ /**
13
+ * Aggregate badge bubbled onto the collapsed overflow trigger so a pending
14
+ * notification (e.g. the "1" of a core update) is still visible when the
15
+ * toggles are hidden in the popover. A numeric `0`, `false`, `null`,
16
+ * `undefined` or `''` renders no badge. Hosts compute this from the same
17
+ * counts that drive the individual toggles' badges.
18
+ */
19
+ overflowBadge?: number | string | boolean | null;
20
+ /** Accessible label for the overflow trigger. Defaults to "More". */
21
+ overflowLabel?: string;
22
+ /** Extra classes on the inline (desktop) container. */
23
+ className?: string;
24
+ /** Extra classes on the overflow popover content. */
25
+ contentClassName?: string;
26
+ }
27
+ /**
28
+ * Responsive wrapper for the secondary header action toggles.
29
+ *
30
+ * - **`sm:`+ (desktop/tablet):** renders `children` inline, exactly as before.
31
+ * - **below `sm` (phone):** collapses every toggle into ONE overflow button (a
32
+ * kebab) that opens a popover containing the same toggles stacked vertically,
33
+ * so the header never overflows. Any pending count is bubbled onto the kebab
34
+ * via `overflowBadge`.
35
+ *
36
+ * Purely Tailwind-driven (`hidden sm:flex` / `flex sm:hidden`) — no resize
37
+ * listeners. The toggles live in the DOM twice (inline + popover) but only the
38
+ * breakpoint-visible copy is rendered/interactive at a time. A Popover (not a
39
+ * DropdownMenu) hosts the overflow so arbitrary interactive children — including
40
+ * toggles that open their own menus — behave correctly.
41
+ *
42
+ * The user avatar / profile dropdown is intentionally NOT part of this — keep it
43
+ * a sibling that stays always-visible outside `<HeaderActions>`.
44
+ */
45
+ export declare function HeaderActions({ children, overflowBadge, overflowLabel, className, contentClassName, }: HeaderActionsProps): React.JSX.Element;
46
+ //# sourceMappingURL=header-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-actions.d.ts","sourceRoot":"","sources":["../../src/layout/header-actions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAU9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAE9D,OAAO,EAAE,qBAAqB,EAAE,CAAA;AAEhC,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;IAChD,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,aAAa,EACb,aAAsB,EACtB,SAAS,EACT,gBAAgB,GACjB,EAAE,kBAAkB,qBAkDpB"}
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { MoreVertical } from 'lucide-react';
4
+ import { cn } from '../lib/utils';
5
+ import { Button } from '../primitives/button';
6
+ import { Badge } from '../primitives/badge';
7
+ import { Popover, PopoverContent, PopoverTrigger, } from '../primitives/popover';
8
+ import { headerActionsHasBadge } from './header-actions-badge';
9
+ export { headerActionsHasBadge };
10
+ /**
11
+ * Responsive wrapper for the secondary header action toggles.
12
+ *
13
+ * - **`sm:`+ (desktop/tablet):** renders `children` inline, exactly as before.
14
+ * - **below `sm` (phone):** collapses every toggle into ONE overflow button (a
15
+ * kebab) that opens a popover containing the same toggles stacked vertically,
16
+ * so the header never overflows. Any pending count is bubbled onto the kebab
17
+ * via `overflowBadge`.
18
+ *
19
+ * Purely Tailwind-driven (`hidden sm:flex` / `flex sm:hidden`) — no resize
20
+ * listeners. The toggles live in the DOM twice (inline + popover) but only the
21
+ * breakpoint-visible copy is rendered/interactive at a time. A Popover (not a
22
+ * DropdownMenu) hosts the overflow so arbitrary interactive children — including
23
+ * toggles that open their own menus — behave correctly.
24
+ *
25
+ * The user avatar / profile dropdown is intentionally NOT part of this — keep it
26
+ * a sibling that stays always-visible outside `<HeaderActions>`.
27
+ */
28
+ export function HeaderActions({ children, overflowBadge, overflowLabel = 'More', className, contentClassName, }) {
29
+ const showBadge = headerActionsHasBadge(overflowBadge);
30
+ return (_jsxs(_Fragment, { children: [_jsx("div", { className: cn('hidden items-center gap-2 sm:flex sm:gap-4', className), children: children }), _jsx("div", { className: 'flex sm:hidden', children: _jsxs(Popover, { children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs(Button, { variant: 'ghost', size: 'icon', className: 'relative', "aria-label": overflowLabel, children: [_jsx(MoreVertical, { className: 'h-5 w-5' }), showBadge && (_jsx(Badge, { className: 'absolute -right-0.5 -top-0.5 h-4 min-w-4 justify-center rounded-full px-1 py-0 text-[10px] leading-none', "aria-hidden": true, children: typeof overflowBadge === 'boolean' ? '' : overflowBadge }))] }) }), _jsx(PopoverContent, { align: 'end', sideOffset: 8, className: cn('flex w-auto min-w-44 flex-col items-stretch gap-1 p-2', contentClassName), children: children })] }) })] }));
31
+ }
32
+ //# sourceMappingURL=header-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-actions.js","sourceRoot":"","sources":["../../src/layout/header-actions.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,GACf,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAE9D,OAAO,EAAE,qBAAqB,EAAE,CAAA;AA0BhC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,aAAa,EACb,aAAa,GAAG,MAAM,EACtB,SAAS,EACT,gBAAgB,GACG;IACnB,MAAM,SAAS,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAA;IAEtD,OAAO,CACL,8BAEE,cACE,SAAS,EAAE,EAAE,CACX,4CAA4C,EAC5C,SAAS,CACV,YAEA,QAAQ,GACL,EAGN,cAAK,SAAS,EAAC,gBAAgB,YAC7B,MAAC,OAAO,eACN,KAAC,cAAc,IAAC,OAAO,kBACrB,MAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,MAAM,EACX,SAAS,EAAC,UAAU,gBACR,aAAa,aAEzB,KAAC,YAAY,IAAC,SAAS,EAAC,SAAS,GAAG,EACnC,SAAS,IAAI,CACZ,KAAC,KAAK,IACJ,SAAS,EAAC,yGAAyG,iCAGlH,OAAO,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,GAClD,CACT,IACM,GACM,EACjB,KAAC,cAAc,IACb,KAAK,EAAC,KAAK,EACX,UAAU,EAAE,CAAC,EACb,SAAS,EAAE,EAAE,CACX,uDAAuD,EACvD,gBAAgB,CACjB,YAEA,QAAQ,GACM,IACT,GACN,IACL,CACJ,CAAA;AACH,CAAC"}
@@ -1,6 +1,7 @@
1
1
  export { AuthenticatedLayout } from './authenticated-layout';
2
2
  export { AppSidebar, OrganizationCard } from './app-sidebar';
3
3
  export { Header } from './header';
4
+ export { HeaderActions, type HeaderActionsProps } from './header-actions';
4
5
  export { NavUser } from './nav-user';
5
6
  export { NavGroup, type NavLinkComponent, type NavGroupProps } from './nav-group';
6
7
  export { checkIsActive, splitHref, declaredFiltersMatch, VIEW_PARAMS, type SplitHref, } from './nav-active';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/layout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AACjF,OAAO,EACL,aAAa,EACb,SAAS,EACT,oBAAoB,EACpB,WAAW,EACX,KAAK,SAAS,GACf,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EACL,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,2BAA2B,EAC3B,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,GACvB,MAAM,aAAa,CAAA;AACpB,YAAY,EACV,OAAO,EACP,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,UAAU,GACX,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/layout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AACjF,OAAO,EACL,aAAa,EACb,SAAS,EACT,oBAAoB,EACpB,WAAW,EACX,KAAK,SAAS,GACf,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EACL,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,2BAA2B,EAC3B,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,GACvB,MAAM,aAAa,CAAA;AACpB,YAAY,EACV,OAAO,EACP,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,UAAU,GACX,MAAM,SAAS,CAAA"}
@@ -1,6 +1,7 @@
1
1
  export { AuthenticatedLayout } from './authenticated-layout';
2
2
  export { AppSidebar, OrganizationCard } from './app-sidebar';
3
3
  export { Header } from './header';
4
+ export { HeaderActions } from './header-actions';
4
5
  export { NavUser } from './nav-user';
5
6
  export { NavGroup } from './nav-group';
6
7
  export { checkIsActive, splitHref, declaredFiltersMatch, VIEW_PARAMS, } from './nav-active';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/layout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,QAAQ,EAA6C,MAAM,aAAa,CAAA;AACjF,OAAO,EACL,aAAa,EACb,SAAS,EACT,oBAAoB,EACpB,WAAW,GAEZ,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EACL,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,2BAA2B,EAC3B,mBAAmB,EACnB,kBAAkB,GAGnB,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/layout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,aAAa,EAA2B,MAAM,kBAAkB,CAAA;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,QAAQ,EAA6C,MAAM,aAAa,CAAA;AACjF,OAAO,EACL,aAAa,EACb,SAAS,EACT,oBAAoB,EACpB,WAAW,GAEZ,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EACL,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,2BAA2B,EAC3B,mBAAmB,EACnB,kBAAkB,GAGnB,MAAM,aAAa,CAAA"}
@@ -40,10 +40,14 @@ export declare function declaredFiltersMatch(curFilters: string, targetFilters:
40
40
  *
41
41
  * View-aware, query-aware AND filter-aware so sibling navs over the same model
42
42
  * light up ONE at a time:
43
- * - `view`/`group_by` surface params must match EXACTLY in both directions.
44
- * This is what keeps "Board" (`?view=kanban&group_by=stage`) and "Issues"
45
- * (`?view=list`, or a query-less default) mutually exclusive only the item
46
- * whose view identity equals the current href stays active.
43
+ * - The `view` surface param is the item's identity, but it is matched on the
44
+ * EFFECTIVE view: an absent `?view=` resolves to the model's default
45
+ * `view_type` (`defaultView`, the same fallback `DynamicView` uses to pick a
46
+ * renderer). So a view-less landing (`/m/x?per_page=15`) lights ONLY the
47
+ * item whose view equals the model default — the board on a kanban-default
48
+ * model, the list on a list-default model — and never both. Explicit
49
+ * `?view=kanban`/`?view=list` URLs match their item directly. `group_by`
50
+ * only refines a board, so it is not part of the identity.
47
51
  * - Other non-`f_` query params (page/sort/search) must match EXACTLY only
48
52
  * when the item declares them — transient query never un-highlights a plain
49
53
  * link.
@@ -51,6 +55,11 @@ export declare function declaredFiltersMatch(curFilters: string, targetFilters:
51
55
  * must all be present in the current href. An item that declares NO filters
52
56
  * matches on path alone (a manually-filtered table still highlights its base
53
57
  * item), preserving the prior behaviour for plain links.
58
+ *
59
+ * `defaultView` is the model's default `view_type` for this path (e.g.
60
+ * `'kanban'`). Hosts thread it from `metadata.view_type`; when omitted the
61
+ * absent-view fallback is `''` (a view-less URL then only matches a view-less
62
+ * item).
54
63
  */
55
- export declare function checkIsActive(href: string, item: NavItem, mainNav?: boolean): boolean;
64
+ export declare function checkIsActive(href: string, item: NavItem, mainNav?: boolean, defaultView?: string): boolean;
56
65
  //# sourceMappingURL=nav-active.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nav-active.d.ts","sourceRoot":"","sources":["../../src/layout/nav-active.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAmC,MAAM,SAAS,CAAA;AAEvE;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,aAAgC,CAAA;AAqBxD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CA0BhD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,OAAO,CAIT;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,UAAQ,GAAG,OAAO,CA0DnF"}
1
+ {"version":3,"file":"nav-active.d.ts","sourceRoot":"","sources":["../../src/layout/nav-active.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAmC,MAAM,SAAS,CAAA;AAEvE;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,aAAgC,CAAA;AA6BxD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CA0BhD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,OAAO,CAIT;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,OAAO,UAAQ,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAqDT"}
@@ -7,21 +7,30 @@
7
7
  */
8
8
  export const VIEW_PARAMS = new Set(['view', 'group_by']);
9
9
  /**
10
- * The view-bucket strings that all denote the SAME default surface a model
11
- * paints when the current URL declares no explicit `view`. `DynamicView`
12
- * resolves a missing `?view=` to the model's `metadata.view_type`, whose
13
- * non-kanban catch-all is the table/list (`resolveViewRenderer`). So a bare
14
- * landing (`/m/x?per_page=15`, no `view`), an explicit `?view=list` and an
15
- * explicit `?view=table` are interchangeable identities of the default item.
16
- *
17
- * Two view buckets are "default-equivalent" when BOTH are in this set: this is
18
- * what lets the Issues/list nav light up on the bare default landing while the
19
- * Board (`?view=kanban`) — never in this set — stays mutually exclusive, so the
20
- * board is never lit by a view-less URL and vice-versa.
10
+ * Extracts the `view=` value from a normalized view bucket (e.g. `'kanban'`
11
+ * from `'group_by=stage&view=kanban'`, `'list'` from `'view=list'`, `''` when
12
+ * the bucket declares no `view`). The `view` param is the surface identity
13
+ * (table vs board); `group_by` only refines a board, so it never makes a nav
14
+ * item identity on its own.
15
+ */
16
+ function viewValueOf(viewBucket) {
17
+ for (const part of viewBucket.split('&')) {
18
+ if (part.startsWith('view='))
19
+ return part.slice('view='.length);
20
+ }
21
+ return '';
22
+ }
23
+ /**
24
+ * Resolves a (possibly empty) `view` value to the EFFECTIVE surface, mirroring
25
+ * `DynamicView.resolveActiveView`: an absent `?view=` falls back to the model's
26
+ * default `view_type`. This is why the matcher must be told the model default —
27
+ * a view-less landing on a kanban-default model paints (and must light) the
28
+ * board, while on a list-default model it paints (and must light) the list.
29
+ * Without a known default we resolve to `''` (no assumption) so a view-less URL
30
+ * only matches a view-less item — never both siblings.
21
31
  */
22
- const DEFAULT_VIEW_BUCKETS = new Set(['', 'view=list', 'view=table']);
23
- function isDefaultViewBucket(view) {
24
- return DEFAULT_VIEW_BUCKETS.has(view);
32
+ function resolveView(viewValue, defaultView) {
33
+ return viewValue || defaultView || '';
25
34
  }
26
35
  /**
27
36
  * Splits a URL into its path and three normalized, sorted query buckets:
@@ -82,10 +91,14 @@ export function declaredFiltersMatch(curFilters, targetFilters) {
82
91
  *
83
92
  * View-aware, query-aware AND filter-aware so sibling navs over the same model
84
93
  * light up ONE at a time:
85
- * - `view`/`group_by` surface params must match EXACTLY in both directions.
86
- * This is what keeps "Board" (`?view=kanban&group_by=stage`) and "Issues"
87
- * (`?view=list`, or a query-less default) mutually exclusive only the item
88
- * whose view identity equals the current href stays active.
94
+ * - The `view` surface param is the item's identity, but it is matched on the
95
+ * EFFECTIVE view: an absent `?view=` resolves to the model's default
96
+ * `view_type` (`defaultView`, the same fallback `DynamicView` uses to pick a
97
+ * renderer). So a view-less landing (`/m/x?per_page=15`) lights ONLY the
98
+ * item whose view equals the model default — the board on a kanban-default
99
+ * model, the list on a list-default model — and never both. Explicit
100
+ * `?view=kanban`/`?view=list` URLs match their item directly. `group_by`
101
+ * only refines a board, so it is not part of the identity.
89
102
  * - Other non-`f_` query params (page/sort/search) must match EXACTLY only
90
103
  * when the item declares them — transient query never un-highlights a plain
91
104
  * link.
@@ -93,23 +106,23 @@ export function declaredFiltersMatch(curFilters, targetFilters) {
93
106
  * must all be present in the current href. An item that declares NO filters
94
107
  * matches on path alone (a manually-filtered table still highlights its base
95
108
  * item), preserving the prior behaviour for plain links.
109
+ *
110
+ * `defaultView` is the model's default `view_type` for this path (e.g.
111
+ * `'kanban'`). Hosts thread it from `metadata.view_type`; when omitted the
112
+ * absent-view fallback is `''` (a view-less URL then only matches a view-less
113
+ * item).
96
114
  */
97
- export function checkIsActive(href, item, mainNav = false) {
115
+ export function checkIsActive(href, item, mainNav = false, defaultView) {
98
116
  const hasItems = 'items' in item && Array.isArray(item.items);
99
117
  const cur = splitHref(href);
100
118
  const target = splitHref(item.url);
101
- // Same path: this item matches only when the view-identity (view/group_by)
102
- // matches exactly (sibling surfaces are mutually exclusive), transient query
103
- // matches when declared, and declared f_ filters are all present. A same-path
104
- // item that DOESN'T match falls through (a collapsible parent can still be
105
- // active via a matching child below) rather than returning early.
106
- // View-identity match: exact in both directions, OR both buckets are
107
- // "default-equivalent" (bare/`?view=list`/`?view=table`). The latter is what
108
- // lights the Issues/list item on the bare default landing (`?per_page=15`, no
109
- // `view`) without ever lighting the Board (`?view=kanban`), which is not a
110
- // default bucket — so siblings stay mutually exclusive.
111
- const viewMatches = cur.view === target.view ||
112
- (isDefaultViewBucket(cur.view) && isDefaultViewBucket(target.view));
119
+ // Same path: this item matches only when the EFFECTIVE view (resolving an
120
+ // absent `?view=` to the model default) matches, transient query matches when
121
+ // declared, and declared f_ filters are all present. A same-path item that
122
+ // DOESN'T match falls through (a collapsible parent can still be active via a
123
+ // matching child below) rather than returning early.
124
+ const viewMatches = resolveView(viewValueOf(cur.view), defaultView) ===
125
+ resolveView(viewValueOf(target.view), defaultView);
113
126
  if (cur.path === target.path &&
114
127
  viewMatches &&
115
128
  (!target.query || cur.query === target.query) &&
@@ -117,7 +130,7 @@ export function checkIsActive(href, item, mainNav = false) {
117
130
  return true;
118
131
  }
119
132
  if (hasItems &&
120
- item.items.some((i) => checkIsActive(href, i))) {
133
+ item.items.some((i) => checkIsActive(href, i, false, defaultView))) {
121
134
  return true;
122
135
  }
123
136
  if (mainNav) {
@@ -1 +1 @@
1
- {"version":3,"file":"nav-active.js","sourceRoot":"","sources":["../../src/layout/nav-active.ts"],"names":[],"mappings":"AAQA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAA;AAExD;;;;;;;;;;;;GAYG;AACH,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAA;AAErE,SAAS,mBAAmB,CAAC,IAAY;IACvC,OAAO,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC;AASD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAC/B,IAAI,MAAM,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;IACzE,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;IACjC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;IACzD,MAAM,OAAO,GAAuB,EAAE,CAAA;IACtC,MAAM,WAAW,GAAuB,EAAE,CAAA;IAC1C,MAAM,aAAa,GAAuB,EAAE,CAAA;IAC5C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QACtC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;aAC7C,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC3B,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,CAAqB,EAAE,EAAE,CACrC,CAAC;SACE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACb,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC9D;SACA,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;SAC5B,IAAI,CAAC,GAAG,CAAC,CAAA;IACd,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC;QACvB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;QACpB,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC;KAC7B,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,UAAkB,EAClB,aAAqB;IAErB,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAA;IAC/B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IAC5D,OAAO,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1D,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,IAAa,EAAE,OAAO,GAAG,KAAK;IACxE,MAAM,QAAQ,GAAG,OAAO,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAE7D,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IAC3B,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAElC,2EAA2E;IAC3E,6EAA6E;IAC7E,8EAA8E;IAC9E,2EAA2E;IAC3E,kEAAkE;IAClE,qEAAqE;IACrE,6EAA6E;IAC7E,8EAA8E;IAC9E,2EAA2E;IAC3E,wDAAwD;IACxD,MAAM,WAAW,GACf,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;QACxB,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAErE,IACE,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;QACxB,WAAW;QACX,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC;QAC7C,oBAAoB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,EACjD,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IACE,QAAQ;QACP,IAA2B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAc,EAAE,EAAE,CACzD,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CACvB,EACD,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACrC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACxC,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACnE,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACtD,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACtD,IAAI,UAAU,KAAK,EAAE,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;YACnD,OAAO,IAAI,CAAA;QACb,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,MAAM,GAAG,IAAK,IAA2B,CAAC,KAAK,EAAE,CAAC;gBACrD,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBACzD,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,UAAU,EAAE,CAAC;oBACtD,OAAO,IAAI,CAAA;gBACb,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC"}
1
+ {"version":3,"file":"nav-active.js","sourceRoot":"","sources":["../../src/layout/nav-active.ts"],"names":[],"mappings":"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"}
@@ -37,13 +37,13 @@ function hasBadge(badge) {
37
37
  }
38
38
  function SidebarMenuLink({ item, href, LinkComponent, onItemHover, }) {
39
39
  const { setOpenMobile } = useSidebar();
40
- return (_jsx(SidebarMenuItem, { children: _jsx(SidebarMenuButton, { asChild: true, isActive: checkIsActive(href, item), tooltip: item.title, children: _jsxs(LinkComponent, { to: item.url, onClick: () => setOpenMobile(false), onMouseEnter: () => onItemHover?.(item.url), children: [item.icon && _jsx(item.icon, {}), _jsx("span", { children: item.title }), hasBadge(item.badge) && _jsx(NavBadge, { children: item.badge })] }) }) }));
40
+ return (_jsx(SidebarMenuItem, { children: _jsx(SidebarMenuButton, { asChild: true, isActive: checkIsActive(href, item, false, item.defaultView), tooltip: item.title, children: _jsxs(LinkComponent, { to: item.url, onClick: () => setOpenMobile(false), onMouseEnter: () => onItemHover?.(item.url), children: [item.icon && _jsx(item.icon, {}), _jsx("span", { children: item.title }), hasBadge(item.badge) && _jsx(NavBadge, { children: item.badge })] }) }) }));
41
41
  }
42
42
  function SidebarMenuCollapsible({ item, href, LinkComponent, onItemHover, }) {
43
43
  const { setOpenMobile } = useSidebar();
44
- return (_jsx(Collapsible, { asChild: true, defaultOpen: checkIsActive(href, item, true), className: 'group/collapsible', children: _jsxs(SidebarMenuItem, { children: [_jsx(CollapsibleTrigger, { asChild: true, children: _jsxs(SidebarMenuButton, { tooltip: item.title, children: [item.icon && _jsx(item.icon, {}), _jsx("span", { children: item.title }), hasBadge(item.badge) && _jsx(NavBadge, { children: item.badge }), _jsx(ChevronRight, { className: 'ms-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90 rtl:rotate-180' })] }) }), _jsx(CollapsibleContent, { className: 'CollapsibleContent', children: _jsx(SidebarMenuSub, { children: item.items.map((subItem) => (_jsx(SidebarMenuSubItem, { children: _jsx(SidebarMenuSubButton, { asChild: true, isActive: checkIsActive(href, subItem), children: _jsxs(LinkComponent, { to: subItem.url, onClick: () => setOpenMobile(false), onMouseEnter: () => onItemHover?.(subItem.url), children: [subItem.icon && _jsx(subItem.icon, {}), _jsx("span", { children: subItem.title }), hasBadge(subItem.badge) && _jsx(NavBadge, { children: subItem.badge })] }) }) }, subItem.title))) }) })] }) }));
44
+ return (_jsx(Collapsible, { asChild: true, defaultOpen: checkIsActive(href, item, true, item.defaultView), className: 'group/collapsible', children: _jsxs(SidebarMenuItem, { children: [_jsx(CollapsibleTrigger, { asChild: true, children: _jsxs(SidebarMenuButton, { tooltip: item.title, children: [item.icon && _jsx(item.icon, {}), _jsx("span", { children: item.title }), hasBadge(item.badge) && _jsx(NavBadge, { children: item.badge }), _jsx(ChevronRight, { className: 'ms-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90 rtl:rotate-180' })] }) }), _jsx(CollapsibleContent, { className: 'CollapsibleContent', children: _jsx(SidebarMenuSub, { children: item.items.map((subItem) => (_jsx(SidebarMenuSubItem, { children: _jsx(SidebarMenuSubButton, { asChild: true, isActive: checkIsActive(href, subItem, false, subItem.defaultView ?? item.defaultView), children: _jsxs(LinkComponent, { to: subItem.url, onClick: () => setOpenMobile(false), onMouseEnter: () => onItemHover?.(subItem.url), children: [subItem.icon && _jsx(subItem.icon, {}), _jsx("span", { children: subItem.title }), hasBadge(subItem.badge) && _jsx(NavBadge, { children: subItem.badge })] }) }) }, subItem.title))) }) })] }) }));
45
45
  }
46
46
  function SidebarMenuCollapsedDropdown({ item, href, LinkComponent, onItemHover, }) {
47
- return (_jsx(SidebarMenuItem, { children: _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(SidebarMenuButton, { tooltip: item.title, isActive: checkIsActive(href, item), children: [item.icon && _jsx(item.icon, {}), _jsx("span", { children: item.title }), hasBadge(item.badge) && _jsx(NavBadge, { children: item.badge }), _jsx(ChevronRight, { className: 'ms-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90' })] }) }), _jsxs(DropdownMenuContent, { side: 'right', align: 'start', sideOffset: 4, children: [_jsxs(DropdownMenuLabel, { children: [item.title, " ", item.badge ? `(${item.badge})` : ''] }), _jsx(DropdownMenuSeparator, {}), item.items.map((sub) => (_jsx(DropdownMenuItem, { asChild: true, children: _jsxs(LinkComponent, { to: sub.url, className: `${checkIsActive(href, sub) ? 'bg-secondary' : ''}`, onMouseEnter: () => onItemHover?.(sub.url), children: [sub.icon && _jsx(sub.icon, {}), _jsx("span", { className: 'max-w-52 text-wrap', children: sub.title }), hasBadge(sub.badge) && (_jsx("span", { className: 'ms-auto text-xs', children: sub.badge }))] }) }, `${sub.title}-${sub.url}`)))] })] }) }));
47
+ return (_jsx(SidebarMenuItem, { children: _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(SidebarMenuButton, { tooltip: item.title, isActive: checkIsActive(href, item, false, item.defaultView), children: [item.icon && _jsx(item.icon, {}), _jsx("span", { children: item.title }), hasBadge(item.badge) && _jsx(NavBadge, { children: item.badge }), _jsx(ChevronRight, { className: 'ms-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90' })] }) }), _jsxs(DropdownMenuContent, { side: 'right', align: 'start', sideOffset: 4, children: [_jsxs(DropdownMenuLabel, { children: [item.title, " ", item.badge ? `(${item.badge})` : ''] }), _jsx(DropdownMenuSeparator, {}), item.items.map((sub) => (_jsx(DropdownMenuItem, { asChild: true, children: _jsxs(LinkComponent, { to: sub.url, className: `${checkIsActive(href, sub, false, sub.defaultView ?? item.defaultView) ? 'bg-secondary' : ''}`, onMouseEnter: () => onItemHover?.(sub.url), children: [sub.icon && _jsx(sub.icon, {}), _jsx("span", { className: 'max-w-52 text-wrap', children: sub.title }), hasBadge(sub.badge) && (_jsx("span", { className: 'ms-auto text-xs', children: sub.badge }))] }) }, `${sub.title}-${sub.url}`)))] })] }) }));
48
48
  }
49
49
  //# sourceMappingURL=nav-group.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nav-group.js","sourceRoot":"","sources":["../../src/layout/nav-group.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nav-group.js","sourceRoot":"","sources":["../../src/layout/nav-group.tsx"],"names":[],"mappings":"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"}
@@ -11,6 +11,15 @@ export interface NavLinkItem {
11
11
  */
12
12
  badge?: number | string;
13
13
  role?: string;
14
+ /**
15
+ * The model's default `view_type` for this entry's path (e.g. `'kanban'` or
16
+ * `'list'`). Lets the active-state matcher resolve a view-less current URL
17
+ * (`/m/x?per_page=15`, no `?view`) to the surface the model actually paints,
18
+ * so exactly one of sibling view items (Board vs List) lights up. Hosts thread
19
+ * it from `metadata.view_type`; omit it and a view-less URL only matches a
20
+ * view-less item.
21
+ */
22
+ defaultView?: string;
14
23
  }
15
24
  export interface NavCollapsibleItem extends NavLinkItem {
16
25
  items: NavLinkItem[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/layout/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,KAAK,EAAE,WAAW,EAAE,CAAA;CACrB;AAED,MAAM,MAAM,OAAO,GAAG,WAAW,GAAG,kBAAkB,CAAA;AAEtD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,OAAO,EAAE,CAAA;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/layout/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,KAAK,EAAE,WAAW,EAAE,CAAA;CACrB;AAED,MAAM,MAAM,OAAO,GAAG,WAAW,GAAG,kBAAkB,CAAA;AAEtD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,OAAO,EAAE,CAAA;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@asteby/metacore-ui",
3
- "version": "2.6.1",
3
+ "version": "2.6.2",
4
4
  "description": "Metacore UI kit — data-table, layout shell, command-menu, hooks y primitives shadcn reutilizables",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {