@marktiderman/genesis-ui 1.2.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AppShell-BJarYZzz.d.ts +198 -0
- package/dist/{chunk-NJMO3VPA.js → chunk-22XB3Q6H.js} +8 -8
- package/dist/chunk-22XB3Q6H.js.map +1 -0
- package/dist/{chunk-2MXMWBDV.js → chunk-27ELYTGE.js} +6 -6
- package/dist/chunk-27ELYTGE.js.map +1 -0
- package/dist/chunk-46TZGMFW.js +159 -0
- package/dist/chunk-46TZGMFW.js.map +1 -0
- package/dist/chunk-4CQHPWJD.js +117 -0
- package/dist/chunk-4CQHPWJD.js.map +1 -0
- package/dist/{chunk-ZDAT5JDH.js → chunk-65SPT7EA.js} +24 -6
- package/dist/chunk-65SPT7EA.js.map +1 -0
- package/dist/chunk-6KHY647C.js +67 -0
- package/dist/chunk-6KHY647C.js.map +1 -0
- package/dist/chunk-6M4NHHKG.js +51 -0
- package/dist/chunk-6M4NHHKG.js.map +1 -0
- package/dist/{chunk-AI6CCNWK.js → chunk-6NPEMLBA.js} +2 -2
- package/dist/chunk-6NPEMLBA.js.map +1 -0
- package/dist/chunk-6Q6CLLJ4.js +9 -0
- package/dist/chunk-6Q6CLLJ4.js.map +1 -0
- package/dist/{chunk-UGHQFQOE.js → chunk-6TVMQH6M.js} +28 -28
- package/dist/chunk-6TVMQH6M.js.map +1 -0
- package/dist/{chunk-UKSBLFEK.js → chunk-6XPMU65K.js} +5 -5
- package/dist/{chunk-UKSBLFEK.js.map → chunk-6XPMU65K.js.map} +1 -1
- package/dist/{chunk-YZEA5TGK.js → chunk-7XMZVISM.js} +16 -16
- package/dist/chunk-7XMZVISM.js.map +1 -0
- package/dist/chunk-A7AHVDG7.js +52 -0
- package/dist/chunk-A7AHVDG7.js.map +1 -0
- package/dist/chunk-AFZ76Q26.js +84 -0
- package/dist/chunk-AFZ76Q26.js.map +1 -0
- package/dist/{chunk-4V4H2ZM7.js → chunk-AL5TMEZQ.js} +31 -31
- package/dist/chunk-AL5TMEZQ.js.map +1 -0
- package/dist/{chunk-O4B5ALO7.js → chunk-AOZGQM6W.js} +3 -3
- package/dist/chunk-AOZGQM6W.js.map +1 -0
- package/dist/chunk-ARJI2JUV.js +122 -0
- package/dist/chunk-ARJI2JUV.js.map +1 -0
- package/dist/chunk-AVFZ4P4B.js +25 -0
- package/dist/chunk-AVFZ4P4B.js.map +1 -0
- package/dist/chunk-B2GIBUQD.js +11 -0
- package/dist/chunk-B2GIBUQD.js.map +1 -0
- package/dist/{chunk-JXI2MYL3.js → chunk-C46ITXE4.js} +5 -5
- package/dist/chunk-C46ITXE4.js.map +1 -0
- package/dist/chunk-CNTWQSUT.js +65 -0
- package/dist/chunk-CNTWQSUT.js.map +1 -0
- package/dist/chunk-D2LIXA2Y.js +65 -0
- package/dist/chunk-D2LIXA2Y.js.map +1 -0
- package/dist/{chunk-FCGFG4RV.js → chunk-D4JTQYP5.js} +3 -3
- package/dist/{chunk-FCGFG4RV.js.map → chunk-D4JTQYP5.js.map} +1 -1
- package/dist/{chunk-T5VX5DYO.js → chunk-F47U5KNW.js} +5 -5
- package/dist/chunk-F47U5KNW.js.map +1 -0
- package/dist/chunk-FEJAZFP3.js +1100 -0
- package/dist/chunk-FEJAZFP3.js.map +1 -0
- package/dist/{chunk-2B3MFHBQ.js → chunk-FK42ZGGV.js} +21 -21
- package/dist/chunk-FK42ZGGV.js.map +1 -0
- package/dist/{chunk-XISSLIMH.js → chunk-FTTNGGLA.js} +2 -2
- package/dist/{chunk-XISSLIMH.js.map → chunk-FTTNGGLA.js.map} +1 -1
- package/dist/chunk-G5YKBPBF.js +74 -0
- package/dist/chunk-G5YKBPBF.js.map +1 -0
- package/dist/chunk-GCQFVMPI.js +56 -0
- package/dist/chunk-GCQFVMPI.js.map +1 -0
- package/dist/{chunk-LDPPIBIJ.js → chunk-IJCT5IJD.js} +3 -3
- package/dist/{chunk-LDPPIBIJ.js.map → chunk-IJCT5IJD.js.map} +1 -1
- package/dist/{chunk-DGRHPJ3M.js → chunk-J6FBA7PH.js} +3 -3
- package/dist/{chunk-DGRHPJ3M.js.map → chunk-J6FBA7PH.js.map} +1 -1
- package/dist/chunk-JAMLFMDS.js +12 -0
- package/dist/chunk-JAMLFMDS.js.map +1 -0
- package/dist/{chunk-C6H7AMO4.js → chunk-LNFF2RBD.js} +9 -9
- package/dist/chunk-LNFF2RBD.js.map +1 -0
- package/dist/{chunk-QBZMY2AF.js → chunk-M62CHO3N.js} +18 -18
- package/dist/chunk-M62CHO3N.js.map +1 -0
- package/dist/{chunk-5Q4FABZQ.js → chunk-NUXW6NPP.js} +8 -8
- package/dist/chunk-NUXW6NPP.js.map +1 -0
- package/dist/{chunk-I6JQHP6D.js → chunk-NWSCYLPT.js} +78 -17
- package/dist/chunk-NWSCYLPT.js.map +1 -0
- package/dist/{chunk-63FW5ZUA.js → chunk-P3ZL6FGR.js} +7 -7
- package/dist/chunk-P3ZL6FGR.js.map +1 -0
- package/dist/chunk-P64MFQXZ.js +191 -0
- package/dist/chunk-P64MFQXZ.js.map +1 -0
- package/dist/chunk-PLIYF6KI.js +52 -0
- package/dist/chunk-PLIYF6KI.js.map +1 -0
- package/dist/chunk-PSR47JRA.js +26 -0
- package/dist/chunk-PSR47JRA.js.map +1 -0
- package/dist/{chunk-QLCDAFS7.js → chunk-Q4I4SFBD.js} +3 -3
- package/dist/chunk-Q4I4SFBD.js.map +1 -0
- package/dist/{chunk-SBJV3K4G.js → chunk-QJ6P2DW6.js} +28 -28
- package/dist/chunk-QJ6P2DW6.js.map +1 -0
- package/dist/{chunk-IP6TMT3D.js → chunk-R7QFP6EL.js} +3 -3
- package/dist/chunk-R7QFP6EL.js.map +1 -0
- package/dist/{chunk-WZWR2ELB.js → chunk-SEBU6JCK.js} +6 -6
- package/dist/chunk-SEBU6JCK.js.map +1 -0
- package/dist/{chunk-7OBL3H5P.js → chunk-SEFK4NZV.js} +3 -3
- package/dist/chunk-SEFK4NZV.js.map +1 -0
- package/dist/chunk-SRIT4NFQ.js +67 -0
- package/dist/chunk-SRIT4NFQ.js.map +1 -0
- package/dist/chunk-SY62XJFA.js +19 -0
- package/dist/chunk-SY62XJFA.js.map +1 -0
- package/dist/{chunk-SVXDWPLO.js → chunk-THD3YOOZ.js} +17 -17
- package/dist/chunk-THD3YOOZ.js.map +1 -0
- package/dist/chunk-VXFYETRK.js +58 -0
- package/dist/chunk-VXFYETRK.js.map +1 -0
- package/dist/chunk-XBX6QMR5.js +58 -0
- package/dist/chunk-XBX6QMR5.js.map +1 -0
- package/dist/{chunk-SCUT2ZCD.js → chunk-XCGZPFT7.js} +17 -17
- package/dist/chunk-XCGZPFT7.js.map +1 -0
- package/dist/chunk-XMK3T4TA.js +73 -0
- package/dist/chunk-XMK3T4TA.js.map +1 -0
- package/dist/chunk-YJ6MPS6U.js +226 -0
- package/dist/chunk-YJ6MPS6U.js.map +1 -0
- package/dist/chunk-YRYQXU3G.js +38 -0
- package/dist/chunk-YRYQXU3G.js.map +1 -0
- package/dist/{chunk-5J7BP5DI.js → chunk-YWFPMND7.js} +10 -10
- package/dist/chunk-YWFPMND7.js.map +1 -0
- package/dist/chunk-YYEGAFUE.js +94 -0
- package/dist/chunk-YYEGAFUE.js.map +1 -0
- package/dist/{chunk-TKA4LOMT.js → chunk-ZZ7H7VVX.js} +8 -8
- package/dist/chunk-ZZ7H7VVX.js.map +1 -0
- package/dist/components/data/index.d.ts +223 -74
- package/dist/components/data/index.js +504 -539
- package/dist/components/data/index.js.map +1 -1
- package/dist/components/layout/dashboard-page.d.ts +4 -0
- package/dist/components/layout/dashboard-page.js +5 -0
- package/dist/components/layout/dashboard-page.js.map +1 -0
- package/dist/components/layout/detail-page.d.ts +91 -0
- package/dist/components/layout/detail-page.js +6 -0
- package/dist/components/layout/detail-page.js.map +1 -0
- package/dist/components/layout/form-page.d.ts +82 -0
- package/dist/components/layout/form-page.js +5 -0
- package/dist/components/layout/form-page.js.map +1 -0
- package/dist/components/layout/index.d.ts +15 -0
- package/dist/components/layout/index.js +21 -0
- package/dist/components/layout/index.js.map +1 -0
- package/dist/components/layout/settings-page.d.ts +114 -0
- package/dist/components/layout/settings-page.js +6 -0
- package/dist/components/layout/settings-page.js.map +1 -0
- package/dist/components/patterns/empty-state.d.ts +74 -0
- package/dist/components/{ui → patterns}/empty-state.js +2 -1
- package/dist/components/{ui → patterns}/form-field.d.ts +2 -2
- package/dist/components/{ui → patterns}/form-field.js +2 -2
- package/dist/components/patterns/index.d.ts +18 -0
- package/dist/components/patterns/index.js +18 -0
- package/dist/components/patterns/index.js.map +1 -0
- package/dist/components/patterns/page-loading.d.ts +25 -0
- package/dist/components/patterns/page-loading.js +5 -0
- package/dist/components/patterns/page-loading.js.map +1 -0
- package/dist/components/patterns/settings-row.d.ts +42 -0
- package/dist/components/patterns/settings-row.js +6 -0
- package/dist/components/patterns/settings-row.js.map +1 -0
- package/dist/components/patterns/status-badge.d.ts +38 -0
- package/dist/components/patterns/status-badge.js +4 -0
- package/dist/components/patterns/status-badge.js.map +1 -0
- package/dist/components/patterns/toggle-row.d.ts +36 -0
- package/dist/components/patterns/toggle-row.js +8 -0
- package/dist/components/patterns/toggle-row.js.map +1 -0
- package/dist/components/patterns/user-avatar.d.ts +34 -0
- package/dist/components/patterns/user-avatar.js +5 -0
- package/dist/components/patterns/user-avatar.js.map +1 -0
- package/dist/components/ui/accessible-icon.d.ts +48 -0
- package/dist/components/ui/accessible-icon.js +3 -0
- package/dist/components/ui/accessible-icon.js.map +1 -0
- package/dist/components/ui/accordion.d.ts +5 -5
- package/dist/components/ui/accordion.js +1 -1
- package/dist/components/ui/alert-dialog.d.ts +10 -10
- package/dist/components/ui/alert-dialog.js +1 -1
- package/dist/components/ui/aspect-ratio.d.ts +2 -2
- package/dist/components/ui/aspect-ratio.js +1 -1
- package/dist/components/ui/avatar.d.ts +4 -4
- package/dist/components/ui/avatar.js +1 -1
- package/dist/components/ui/button.d.ts +75 -8
- package/dist/components/ui/button.js +1 -1
- package/dist/components/ui/calendar.js +2 -2
- package/dist/components/ui/carousel.d.ts +4 -3
- package/dist/components/ui/carousel.js +2 -2
- package/dist/components/ui/checkbox.d.ts +2 -2
- package/dist/components/ui/checkbox.js +1 -1
- package/dist/components/ui/collapsible.d.ts +4 -4
- package/dist/components/ui/collapsible.js +1 -1
- package/dist/components/ui/command-palette.d.ts +30 -0
- package/dist/components/ui/command-palette.js +6 -0
- package/dist/components/ui/command-palette.js.map +1 -0
- package/dist/components/ui/command.d.ts +9 -9
- package/dist/components/ui/command.js +2 -2
- package/dist/components/ui/context-menu.d.ts +15 -15
- package/dist/components/ui/context-menu.js +1 -1
- package/dist/components/ui/date-picker.js +4 -4
- package/dist/components/ui/dialog.d.ts +9 -9
- package/dist/components/ui/dialog.js +1 -1
- package/dist/components/ui/drawer.d.ts +7 -7
- package/dist/components/ui/dropdown-menu.d.ts +15 -15
- package/dist/components/ui/dropdown-menu.js +1 -1
- package/dist/components/ui/hover-card.d.ts +4 -4
- package/dist/components/ui/hover-card.js +1 -1
- package/dist/components/ui/input-otp.d.ts +2 -2
- package/dist/components/ui/label.d.ts +2 -2
- package/dist/components/ui/label.js +1 -1
- package/dist/components/ui/menubar.d.ts +16 -16
- package/dist/components/ui/menubar.js +1 -1
- package/dist/components/ui/navigation-menu.d.ts +9 -9
- package/dist/components/ui/navigation-menu.js +1 -1
- package/dist/components/ui/pagination.js +2 -2
- package/dist/components/ui/password-toggle-field.d.ts +121 -0
- package/dist/components/ui/password-toggle-field.js +4 -0
- package/dist/components/ui/password-toggle-field.js.map +1 -0
- package/dist/components/ui/popover.d.ts +4 -4
- package/dist/components/ui/popover.js +1 -1
- package/dist/components/ui/radio-group.d.ts +3 -3
- package/dist/components/ui/radio-group.js +1 -1
- package/dist/components/ui/resizable.d.ts +1 -1
- package/dist/components/ui/scroll-area.d.ts +60 -3
- package/dist/components/ui/scroll-area.js +1 -1
- package/dist/components/ui/select.d.ts +9 -9
- package/dist/components/ui/select.js +1 -1
- package/dist/components/ui/sheet.d.ts +11 -9
- package/dist/components/ui/sheet.js +1 -1
- package/dist/components/ui/slider.d.ts +2 -2
- package/dist/components/ui/slider.js +1 -1
- package/dist/components/ui/switch.d.ts +2 -2
- package/dist/components/ui/switch.js +1 -1
- package/dist/components/ui/tabs.d.ts +29 -14
- package/dist/components/ui/tabs.js +1 -1
- package/dist/components/ui/toggle-group.d.ts +3 -3
- package/dist/components/ui/toggle-group.js +2 -2
- package/dist/components/ui/toggle.d.ts +2 -2
- package/dist/components/ui/toggle.js +1 -1
- package/dist/components/ui/toolbar.d.ts +104 -0
- package/dist/components/ui/toolbar.js +6 -0
- package/dist/components/ui/toolbar.js.map +1 -0
- package/dist/components/ui/tooltip.d.ts +46 -4
- package/dist/components/ui/tooltip.js +1 -1
- package/dist/components/ui/visually-hidden.d.ts +48 -0
- package/dist/components/ui/visually-hidden.js +4 -0
- package/dist/components/ui/visually-hidden.js.map +1 -0
- package/dist/dashboard-page-C0TihRl5.d.ts +107 -0
- package/dist/hooks/index.d.ts +5 -3
- package/dist/hooks/index.js +10 -5
- package/dist/hooks/use-data-filters.d.ts +1 -1
- package/dist/hooks/use-data-filters.js +2 -2
- package/dist/hooks/use-keyboard-navigation.d.ts +58 -2
- package/dist/hooks/use-keyboard-navigation.js +1 -1
- package/dist/hooks/use-resource-page.d.ts +3 -2
- package/dist/hooks/use-resource-page.js +2 -2
- package/dist/hooks/use-saved-views.d.ts +28 -0
- package/dist/hooks/use-saved-views.js +3 -0
- package/dist/hooks/use-saved-views.js.map +1 -0
- package/dist/hooks/use-view-preference.d.ts +1 -1
- package/dist/hooks/use-view-preference.js +1 -1
- package/dist/index.d.ts +25 -26
- package/dist/index.js +55 -38
- package/dist/{navigation-qI86Ldug.d.ts → navigation-CpOEyUSb.d.ts} +4 -0
- package/dist/spacing-BS6qECD4.d.ts +191 -0
- package/dist/split-Dk9f4Mi0.d.ts +57 -0
- package/dist/{use-resource-page-B-CFcikK.d.ts → use-resource-page-CPs6wjKt.d.ts} +10 -2
- package/dist/view-settings--KXNT_jE.d.ts +12 -0
- package/package.json +77 -32
- package/dist/chunk-2B3MFHBQ.js.map +0 -1
- package/dist/chunk-2MXMWBDV.js.map +0 -1
- package/dist/chunk-4V4H2ZM7.js.map +0 -1
- package/dist/chunk-5J7BP5DI.js.map +0 -1
- package/dist/chunk-5Q4FABZQ.js.map +0 -1
- package/dist/chunk-63FW5ZUA.js.map +0 -1
- package/dist/chunk-7OBL3H5P.js.map +0 -1
- package/dist/chunk-AI6CCNWK.js.map +0 -1
- package/dist/chunk-C6H7AMO4.js.map +0 -1
- package/dist/chunk-EI5EGKHL.js +0 -32
- package/dist/chunk-EI5EGKHL.js.map +0 -1
- package/dist/chunk-I6JQHP6D.js.map +0 -1
- package/dist/chunk-IP6TMT3D.js.map +0 -1
- package/dist/chunk-JJ4NOMMI.js +0 -73
- package/dist/chunk-JJ4NOMMI.js.map +0 -1
- package/dist/chunk-JXI2MYL3.js.map +0 -1
- package/dist/chunk-KBS4BHME.js +0 -11
- package/dist/chunk-KBS4BHME.js.map +0 -1
- package/dist/chunk-LRXDZBV2.js +0 -26
- package/dist/chunk-LRXDZBV2.js.map +0 -1
- package/dist/chunk-NJMO3VPA.js.map +0 -1
- package/dist/chunk-O4B5ALO7.js.map +0 -1
- package/dist/chunk-OCTV3S4I.js +0 -29
- package/dist/chunk-OCTV3S4I.js.map +0 -1
- package/dist/chunk-QBZMY2AF.js.map +0 -1
- package/dist/chunk-QLCDAFS7.js.map +0 -1
- package/dist/chunk-SBJV3K4G.js.map +0 -1
- package/dist/chunk-SCUT2ZCD.js.map +0 -1
- package/dist/chunk-SVXDWPLO.js.map +0 -1
- package/dist/chunk-T465NJRL.js +0 -134
- package/dist/chunk-T465NJRL.js.map +0 -1
- package/dist/chunk-T5VX5DYO.js.map +0 -1
- package/dist/chunk-TKA4LOMT.js.map +0 -1
- package/dist/chunk-UGHQFQOE.js.map +0 -1
- package/dist/chunk-WALXVR6V.js +0 -9
- package/dist/chunk-WALXVR6V.js.map +0 -1
- package/dist/chunk-WZWR2ELB.js.map +0 -1
- package/dist/chunk-YZEA5TGK.js.map +0 -1
- package/dist/chunk-ZDAT5JDH.js.map +0 -1
- package/dist/components/ui/empty-state.d.ts +0 -22
- /package/dist/components/{ui → patterns}/empty-state.js.map +0 -0
- /package/dist/components/{ui → patterns}/form-field.js.map +0 -0
- /package/dist/{ViewToggle-DDe_Luj2.d.ts → view-toggle-DDe_Luj2.d.ts} +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn } from './chunk-NZ5WBA4R.js';
|
|
3
3
|
import * as React from 'react';
|
|
4
|
-
import
|
|
4
|
+
import { RadioGroup as RadioGroup$1 } from 'radix-ui';
|
|
5
5
|
import { Circle } from 'lucide-react';
|
|
6
6
|
import { jsx } from 'react/jsx-runtime';
|
|
7
7
|
|
|
8
8
|
var RadioGroup = React.forwardRef(({ className, ...props }, ref) => {
|
|
9
9
|
return /* @__PURE__ */ jsx(
|
|
10
|
-
|
|
10
|
+
RadioGroup$1.Root,
|
|
11
11
|
{
|
|
12
12
|
className: cn("grid gap-2", className),
|
|
13
13
|
...props,
|
|
@@ -15,10 +15,10 @@ var RadioGroup = React.forwardRef(({ className, ...props }, ref) => {
|
|
|
15
15
|
}
|
|
16
16
|
);
|
|
17
17
|
});
|
|
18
|
-
RadioGroup.displayName =
|
|
18
|
+
RadioGroup.displayName = RadioGroup$1.Root.displayName;
|
|
19
19
|
var RadioGroupItem = React.forwardRef(({ className, ...props }, ref) => {
|
|
20
20
|
return /* @__PURE__ */ jsx(
|
|
21
|
-
|
|
21
|
+
RadioGroup$1.Item,
|
|
22
22
|
{
|
|
23
23
|
ref,
|
|
24
24
|
className: cn(
|
|
@@ -26,12 +26,12 @@ var RadioGroupItem = React.forwardRef(({ className, ...props }, ref) => {
|
|
|
26
26
|
className
|
|
27
27
|
),
|
|
28
28
|
...props,
|
|
29
|
-
children: /* @__PURE__ */ jsx(
|
|
29
|
+
children: /* @__PURE__ */ jsx(RadioGroup$1.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx(Circle, { className: "h-2.5 w-2.5 fill-current text-current" }) })
|
|
30
30
|
}
|
|
31
31
|
);
|
|
32
32
|
});
|
|
33
|
-
RadioGroupItem.displayName =
|
|
33
|
+
RadioGroupItem.displayName = RadioGroup$1.Item.displayName;
|
|
34
34
|
|
|
35
35
|
export { RadioGroup, RadioGroupItem };
|
|
36
|
-
//# sourceMappingURL=chunk-
|
|
37
|
-
//# sourceMappingURL=chunk-
|
|
36
|
+
//# sourceMappingURL=chunk-ZZ7H7VVX.js.map
|
|
37
|
+
//# sourceMappingURL=chunk-ZZ7H7VVX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/radio-group.tsx"],"names":["RadioGroupPrimitive"],"mappings":";;;;;;AAOA,IAAM,UAAA,GAAmB,iBAGvB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAClC,EAAA,uBACE,GAAA;AAAA,IAACA,YAAA,CAAoB,IAAA;AAAA,IAApB;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,SAAS,CAAA;AAAA,MACpC,GAAG,KAAA;AAAA,MACJ;AAAA;AAAA,GACF;AAEJ,CAAC;AACD,UAAA,CAAW,WAAA,GAAcA,aAAoB,IAAA,CAAK,WAAA;AAElD,IAAM,cAAA,GAAuB,iBAG3B,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAClC,EAAA,uBACE,GAAA;AAAA,IAACA,YAAA,CAAoB,IAAA;AAAA,IAApB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,0OAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA,GAAA,CAACA,YAAA,CAAoB,SAAA,EAApB,EAA8B,SAAA,EAAU,oCACvC,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAU,uCAAA,EAAwC,CAAA,EAC5D;AAAA;AAAA,GACF;AAEJ,CAAC;AACD,cAAA,CAAe,WAAA,GAAcA,aAAoB,IAAA,CAAK,WAAA","file":"chunk-ZZ7H7VVX.js","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { RadioGroup as RadioGroupPrimitive } from \"radix-ui\";\nimport { Circle } from \"lucide-react\";\nimport { cn } from \"../../utils\";\n\nconst RadioGroup = React.forwardRef<\n React.ComponentRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn(\"grid gap-2\", className)}\n {...props}\n ref={ref}\n />\n );\n});\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n\nconst RadioGroupItem = React.forwardRef<\n React.ComponentRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <Circle className=\"h-2.5 w-2.5 fill-current text-current\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n});\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n\nexport { RadioGroup, RadioGroupItem };\n"]}
|
|
@@ -1,19 +1,25 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { ReactNode, RefObject } from 'react';
|
|
4
|
-
import {
|
|
5
|
-
export { a as
|
|
4
|
+
import { c as PageHeaderOptions, A as AppShell$1, P as PageHeader$1 } from '../../AppShell-BJarYZzz.js';
|
|
5
|
+
export { a as AppShellOptions, b as AppShellProps, N as NavItem, d as PageHeaderProps } from '../../AppShell-BJarYZzz.js';
|
|
6
|
+
import { V as ViewMode } from '../../view-toggle-DDe_Luj2.js';
|
|
7
|
+
export { a as ViewToggle } from '../../view-toggle-DDe_Luj2.js';
|
|
6
8
|
import { LucideIcon } from 'lucide-react';
|
|
7
9
|
import { Density } from '../../hooks/use-view-settings.js';
|
|
8
|
-
import { a as ResourceColumnDef } from '../../use-resource-page-
|
|
9
|
-
export { D as DataTable, c as DataTableColumn, d as DataTableProps, L as LinkCell,
|
|
10
|
-
|
|
11
|
-
export {
|
|
10
|
+
import { R as ResourceActions, a as ResourceColumnDef } from '../../use-resource-page-CPs6wjKt.js';
|
|
11
|
+
export { D as DataTable, c as DataTableColumn, d as DataTableProps, L as LinkCell, T as ThumbnailCell } from '../../use-resource-page-CPs6wjKt.js';
|
|
12
|
+
export { EmptyState } from '../patterns/empty-state.js';
|
|
13
|
+
export { V as ViewSettings } from '../../view-settings--KXNT_jE.js';
|
|
14
|
+
import { L as LinkComponent, N as NavigateFn } from '../../navigation-CpOEyUSb.js';
|
|
15
|
+
export { D as DefaultLink, G as GenesisLinkProps, d as defaultNavigate, i as isPathActive } from '../../navigation-CpOEyUSb.js';
|
|
12
16
|
import { UseFormReturn, Control, FieldErrors } from 'react-hook-form';
|
|
13
17
|
import { WizardStep, UseResourceOptions } from '@marktiderman/genesis-core/hooks';
|
|
14
|
-
import { FilterParam } from '@marktiderman/genesis-core/provider';
|
|
18
|
+
import { FilterParam, BaseRecord, Identifier } from '@marktiderman/genesis-core/provider';
|
|
15
19
|
import { ResourceFormFieldDef } from '@marktiderman/genesis-core';
|
|
16
20
|
export { FieldType, ResourceFormFieldDef, SelectOption } from '@marktiderman/genesis-core';
|
|
21
|
+
export { CommandPalette, CommandPaletteItem, CommandPaletteProps, useCommandPaletteHotkey } from '../ui/command-palette.js';
|
|
22
|
+
export { UseSavedViewsReturn, useSavedViews } from '../../hooks/use-saved-views.js';
|
|
17
23
|
|
|
18
24
|
interface DataPageShellProps {
|
|
19
25
|
/** Display title for the page */
|
|
@@ -49,9 +55,26 @@ interface DataPageShellProps {
|
|
|
49
55
|
/** Whether filters are currently active */
|
|
50
56
|
hasActiveFilters?: boolean;
|
|
51
57
|
onClearFilters?: () => void;
|
|
58
|
+
/**
|
|
59
|
+
* When true, filters render inside PageHeader details (collapsed by default).
|
|
60
|
+
* Default false preserves always-visible filters on existing boards.
|
|
61
|
+
*/
|
|
62
|
+
filtersCollapsible?: boolean;
|
|
63
|
+
defaultFiltersOpen?: boolean;
|
|
64
|
+
filtersOpen?: boolean;
|
|
65
|
+
onFiltersOpenChange?: (open: boolean) => void;
|
|
66
|
+
filtersLabel?: string;
|
|
67
|
+
filtersHint?: ReactNode;
|
|
68
|
+
/**
|
|
69
|
+
* PageHeader chrome config — developer defaults; users can further
|
|
70
|
+
* customize via the in-header Header options menu.
|
|
71
|
+
*/
|
|
72
|
+
headerOptions?: PageHeaderOptions;
|
|
73
|
+
/** Persist user header-option overrides (localStorage) */
|
|
74
|
+
headerOptionsStorageKey?: string;
|
|
52
75
|
children: ReactNode;
|
|
53
76
|
}
|
|
54
|
-
declare function DataPageShell({ title, icon
|
|
77
|
+
declare function DataPageShell({ title, icon, entityName, subtitle, createAction, isLoading, isEmpty, emptyIcon, emptyMessage, emptyAction, hasError, errorMessage, onRetry, count, totalCount, viewMode, onViewModeChange, pageSize, onPageSizeChange, density, onDensityChange, filters, hasActiveFilters, onClearFilters, filtersCollapsible, defaultFiltersOpen, filtersOpen, onFiltersOpenChange, filtersLabel, filtersHint, headerOptions, headerOptionsStorageKey, children, }: DataPageShellProps): react_jsx_runtime.JSX.Element;
|
|
55
78
|
|
|
56
79
|
interface FilterOption {
|
|
57
80
|
value: string;
|
|
@@ -181,24 +204,6 @@ declare function CurrencyCell(currency?: string, locale?: string): (_item: unkno
|
|
|
181
204
|
*/
|
|
182
205
|
declare function BadgeCell(colorMap?: Record<string, "default" | "secondary" | "destructive" | "outline" | "success" | "warning" | "info" | "muted">): (_item: unknown, value: unknown) => react_jsx_runtime.JSX.Element | "—";
|
|
183
206
|
|
|
184
|
-
interface EmptyStateProps {
|
|
185
|
-
icon?: LucideIcon;
|
|
186
|
-
message?: string;
|
|
187
|
-
action?: ReactNode;
|
|
188
|
-
/** If true, shows a "no results" message with clear button */
|
|
189
|
-
hasFilters?: boolean;
|
|
190
|
-
onClearFilters?: () => void;
|
|
191
|
-
}
|
|
192
|
-
declare function EmptyState({ icon: Icon, message, action, hasFilters, onClearFilters, }: EmptyStateProps): react_jsx_runtime.JSX.Element;
|
|
193
|
-
|
|
194
|
-
interface ViewSettingsProps {
|
|
195
|
-
pageSize: number;
|
|
196
|
-
onPageSizeChange: (size: number) => void;
|
|
197
|
-
density: Density;
|
|
198
|
-
onDensityChange: (density: Density) => void;
|
|
199
|
-
}
|
|
200
|
-
declare function ViewSettings({ pageSize, onPageSizeChange, density, onDensityChange, }: ViewSettingsProps): react_jsx_runtime.JSX.Element;
|
|
201
|
-
|
|
202
207
|
type StatCardColor = "primary" | "success" | "warning" | "info" | "destructive" | "muted";
|
|
203
208
|
interface StatCardProps {
|
|
204
209
|
label: string;
|
|
@@ -249,6 +254,13 @@ interface DataListProps<T> {
|
|
|
249
254
|
}
|
|
250
255
|
declare function DataList<T>({ items, renderItem, emptyMessage, className, }: DataListProps<T>): react_jsx_runtime.JSX.Element;
|
|
251
256
|
|
|
257
|
+
/**
|
|
258
|
+
* Props for {@link DetailPanel} — a shell-agnostic record detail view.
|
|
259
|
+
* `layout` selects only the surrounding shell (inline / dialog / sheet);
|
|
260
|
+
* the header and content below it render identically across all three.
|
|
261
|
+
*
|
|
262
|
+
* @stability Beta
|
|
263
|
+
*/
|
|
252
264
|
interface DetailPanelProps<T> {
|
|
253
265
|
/** The record to display */
|
|
254
266
|
item: T | null;
|
|
@@ -272,11 +284,57 @@ interface DetailPanelProps<T> {
|
|
|
272
284
|
label: string;
|
|
273
285
|
render?: (value: unknown, item: T) => ReactNode;
|
|
274
286
|
}>;
|
|
275
|
-
/**
|
|
287
|
+
/**
|
|
288
|
+
* Panel width. For `"sheet"` / `"inline"` this is a fixed pixel width
|
|
289
|
+
* (matching this component's original, pre-`layout` sizing exactly). For
|
|
290
|
+
* `"dialog"` it maps to Tailwind's modal max-width scale instead, since a
|
|
291
|
+
* centered modal has a different sizing idiom than an edge-anchored panel.
|
|
292
|
+
*/
|
|
276
293
|
width?: "sm" | "md" | "lg";
|
|
294
|
+
/**
|
|
295
|
+
* Rendering shell for the header + content below.
|
|
296
|
+
* - `"sheet"` (default): fixed, right-anchored slide-in panel, composed
|
|
297
|
+
* from the shared `Sheet` primitive. Matches this component's original
|
|
298
|
+
* (pre-`layout`-prop) behavior — existing consumers that don't pass
|
|
299
|
+
* `layout` see no change, other than an overlay now present at all
|
|
300
|
+
* breakpoints (previously mobile-only) since it's a real `Sheet`.
|
|
301
|
+
* - `"dialog"`: centered modal overlay, composed from the shared `Dialog`
|
|
302
|
+
* primitive.
|
|
303
|
+
* - `"inline"`: plain in-flow panel — no overlay, backdrop, or fixed
|
|
304
|
+
* positioning — for master-detail / split-pane layouts.
|
|
305
|
+
*/
|
|
306
|
+
layout?: "inline" | "dialog" | "sheet";
|
|
277
307
|
}
|
|
278
|
-
declare function DetailPanel<T extends Record<string, unknown>>({ item, open, onClose, title, subtitle, onEdit, onDelete, children, fields, width, }: DetailPanelProps<T>): react_jsx_runtime.JSX.Element | null;
|
|
308
|
+
declare function DetailPanel<T extends Record<string, unknown>>({ item, open, onClose, title, subtitle, onEdit, onDelete, children, fields, width, layout, }: DetailPanelProps<T>): react_jsx_runtime.JSX.Element | null;
|
|
279
309
|
|
|
310
|
+
/**
|
|
311
|
+
* Row-bound actions handed to `renderCard`, on top of the resource-wide
|
|
312
|
+
* `ResourceActions`. `open` is per-row, which is why it lives here rather
|
|
313
|
+
* than on `ResourceActions` — that object is built once and shared by every
|
|
314
|
+
* row and column, so it cannot carry a row-specific callback.
|
|
315
|
+
*
|
|
316
|
+
* @stability Beta
|
|
317
|
+
*/
|
|
318
|
+
interface ResourceCardActions<T> extends ResourceActions<T> {
|
|
319
|
+
/**
|
|
320
|
+
* Activate this row — opens the configured detail panel / modal / route,
|
|
321
|
+
* exactly as clicking the built-in card does. Wire it to your card's
|
|
322
|
+
* `onClick` (and call `stopPropagation` on any nested control that should
|
|
323
|
+
* not also activate the row).
|
|
324
|
+
*/
|
|
325
|
+
open: () => void;
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Config-driven resource page: wires data-fetching (or a pre-fetched `data`
|
|
329
|
+
* array), search/filter/sort, table/grid/list views, and a detail
|
|
330
|
+
* panel/modal/route around a `DataProvider` resource — the CRUD page most
|
|
331
|
+
* apps hand-roll, expressed as one component tree. `renderCard` lets a
|
|
332
|
+
* consumer fully own item presentation while ResourcePage keeps handling
|
|
333
|
+
* data-fetching, filtering, and layout; see also the built-in
|
|
334
|
+
* `useKeyboardNavigation` wiring (`keyboardNavigation` prop) and `gridCols`.
|
|
335
|
+
*
|
|
336
|
+
* @stability Beta
|
|
337
|
+
*/
|
|
280
338
|
interface ResourcePageProps<T extends Record<string, unknown> = Record<string, unknown>> {
|
|
281
339
|
/** Client-side mode: resource name passed to useResource / DataProvider. */
|
|
282
340
|
resource?: string;
|
|
@@ -332,6 +390,46 @@ interface ResourcePageProps<T extends Record<string, unknown> = Record<string, u
|
|
|
332
390
|
variant?: "default" | "destructive";
|
|
333
391
|
onAction: (ids: string[]) => void | Promise<void>;
|
|
334
392
|
}>;
|
|
393
|
+
/**
|
|
394
|
+
* Override the default card renderer used for grid view (and, absent a
|
|
395
|
+
* dedicated list layout, list view too — DataGrid falls back to the same
|
|
396
|
+
* renderer there). ResourcePage still owns data-fetching, filtering,
|
|
397
|
+
* sorting, and layout (grid columns, infinite-scroll batching, stagger
|
|
398
|
+
* animation) — this only swaps what's rendered inside each item slot.
|
|
399
|
+
*
|
|
400
|
+
* Receives `ResourceCardActions`: the row's `update`/`remove`/`refetch`
|
|
401
|
+
* plus `open()` to activate the row (opening the configured detail
|
|
402
|
+
* panel/modal/route). Row activation is *not* applied automatically to a
|
|
403
|
+
* custom card — wrapping it would double-fire against cards that bring
|
|
404
|
+
* their own click handling and would hijack clicks on nested buttons — so
|
|
405
|
+
* call `actions.open()` from wherever your card should activate.
|
|
406
|
+
*/
|
|
407
|
+
renderCard?: (item: T, index: number, actions: ResourceCardActions<T>) => ReactNode;
|
|
408
|
+
/**
|
|
409
|
+
* Tailwind grid-column classes for the card grid, passed through to
|
|
410
|
+
* `DataGrid`'s `gridCols` — e.g. `"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3"`.
|
|
411
|
+
* Defaults to DataGrid's own responsive 1/2/3/4-column ramp.
|
|
412
|
+
*/
|
|
413
|
+
gridCols?: string;
|
|
414
|
+
/**
|
|
415
|
+
* Built-in list keyboard navigation via `useKeyboardNavigation`: j/k (or
|
|
416
|
+
* Arrow Up/Down) move a focus cursor, Enter opens the focused item,
|
|
417
|
+
* Backspace (⌫) closes an open detail view, and x toggles the focused
|
|
418
|
+
* item's selection when `bulkActions` are configured. Set to `false` to
|
|
419
|
+
* opt out.
|
|
420
|
+
*
|
|
421
|
+
* Default-on, and scoped so that being on by default stays safe:
|
|
422
|
+
* - Only while the grid or list view is showing. Table view keeps its own
|
|
423
|
+
* independent sort/pagination, so a flat focus index can't reliably map
|
|
424
|
+
* onto its visible rows.
|
|
425
|
+
* - Cursor keys suspend while a detail panel/modal or the built-in form
|
|
426
|
+
* is open, so they can't drive the list behind the overlay; ⌫ stays
|
|
427
|
+
* live there so it can close it.
|
|
428
|
+
* - Backspace is only intercepted while there's an open detail to close.
|
|
429
|
+
* - Modified chords (Ctrl/Cmd/Alt) are never captured, so an app's
|
|
430
|
+
* Cmd+K-style shortcuts keep working.
|
|
431
|
+
*/
|
|
432
|
+
keyboardNavigation?: boolean;
|
|
335
433
|
toolbar?: ReactNode;
|
|
336
434
|
emptyState?: ReactNode;
|
|
337
435
|
/**
|
|
@@ -343,9 +441,93 @@ interface ResourcePageProps<T extends Record<string, unknown> = Record<string, u
|
|
|
343
441
|
onNavigate?: NavigateFn;
|
|
344
442
|
resourceOptions?: UseResourceOptions<T>;
|
|
345
443
|
defaultView?: ViewMode;
|
|
444
|
+
/**
|
|
445
|
+
* Persist key for density / page size via `useViewSettings`.
|
|
446
|
+
* Defaults to `resource` or a slug of `title`.
|
|
447
|
+
*/
|
|
448
|
+
viewSettingsKey?: string;
|
|
346
449
|
}
|
|
347
450
|
declare function ResourcePage<T extends Record<string, unknown> = Record<string, unknown>>(props: ResourcePageProps<T>): react_jsx_runtime.JSX.Element;
|
|
348
451
|
|
|
452
|
+
interface ResourceDetailPageProps<T extends BaseRecord = BaseRecord> {
|
|
453
|
+
/** Resource name, resolved through the mounted `DataProvider`. */
|
|
454
|
+
resource: string;
|
|
455
|
+
/**
|
|
456
|
+
* Record id. Nullish means "not resolved yet" — no request goes out and the
|
|
457
|
+
* page shows its loading state, which is what a route param that hasn't
|
|
458
|
+
* arrived should look like. It is deliberately NOT the not-found state:
|
|
459
|
+
* nothing has been asked, so nothing is missing.
|
|
460
|
+
*/
|
|
461
|
+
id: Identifier | undefined | null;
|
|
462
|
+
/**
|
|
463
|
+
* Field used as the page title. Defaults to `name`, then `title`, then the
|
|
464
|
+
* id — the same fallback chain `ResourcePage` uses for a row's label.
|
|
465
|
+
*/
|
|
466
|
+
titleField?: string;
|
|
467
|
+
/** Field used as the line under the title. */
|
|
468
|
+
subtitleField?: string;
|
|
469
|
+
/** Provider select/join syntax, e.g. `"*, owner:profiles(name)"`. */
|
|
470
|
+
select?: string;
|
|
471
|
+
/** Slot above the title: a `Breadcrumb`, a back link, a `StatusBadge`. */
|
|
472
|
+
breadcrumb?: ReactNode;
|
|
473
|
+
/** Record-scoped controls, built from the loaded record. */
|
|
474
|
+
actions?: (record: T) => ReactNode;
|
|
475
|
+
/** Metadata column, built from the loaded record. */
|
|
476
|
+
sidebar?: (record: T) => ReactNode;
|
|
477
|
+
/** The primary content region. */
|
|
478
|
+
children: (record: T) => ReactNode;
|
|
479
|
+
className?: string;
|
|
480
|
+
/** Stable test/automation selector (emitted as `data-testid`). */
|
|
481
|
+
testID?: string;
|
|
482
|
+
}
|
|
483
|
+
/**
|
|
484
|
+
* ResourceDetailPage — `DetailPage` with a record bound to it: fetches one
|
|
485
|
+
* record by id through the mounted `DataProvider` and hands it to the title,
|
|
486
|
+
* the actions, the sidebar and the content.
|
|
487
|
+
*
|
|
488
|
+
* ```tsx
|
|
489
|
+
* <ResourceDetailPage
|
|
490
|
+
* resource="people"
|
|
491
|
+
* id={params.id}
|
|
492
|
+
* subtitleField="role"
|
|
493
|
+
* actions={(person) => <Button testID="edit">Edit {person.name}</Button>}
|
|
494
|
+
* sidebar={(person) => <StatCard label="Sessions" value={person.session_count} />}
|
|
495
|
+
* >
|
|
496
|
+
* {(person) => <Section title="Timeline"><Timeline personId={person.id} /></Section>}
|
|
497
|
+
* </ResourceDetailPage>
|
|
498
|
+
* ```
|
|
499
|
+
*
|
|
500
|
+
* This is the detail-route counterpart to `ResourcePage`, which is the list
|
|
501
|
+
* one. Both are **data-bound**, not layouts: they need a resource contract
|
|
502
|
+
* to be useful, which is the layers table's admission test for this tier.
|
|
503
|
+
* The structure they render is a layout and lives one layer down —
|
|
504
|
+
* `DetailPage` in `@marktiderman/genesis-ui/layout` — so an app with its own
|
|
505
|
+
* fetching keeps the page shape without inheriting the provider. That
|
|
506
|
+
* layout/data-bound pairing is the same one `AppShell` and `ResourcePage`
|
|
507
|
+
* already have.
|
|
508
|
+
*
|
|
509
|
+
* The three non-record states are rendered here rather than left to the
|
|
510
|
+
* caller, because a per-app "loading…" is exactly the hand-written code a
|
|
511
|
+
* template exists to remove:
|
|
512
|
+
* - loading, or no id yet -> `PageLoading`
|
|
513
|
+
* - absent -> `EmptyState` saying so, distinct from the error state, since a
|
|
514
|
+
* deleted record and a broken query need different words. Every provider
|
|
515
|
+
* Genesis ships signals "no such row" by throwing rather than by resolving
|
|
516
|
+
* empty, so this state is reached by classifying the error (see
|
|
517
|
+
* `isNotFoundError`) as well as by a falsy `data`
|
|
518
|
+
* - any other failure -> `EmptyState` carrying the provider's message, which
|
|
519
|
+
* is kept verbatim: an error state that hides what went wrong is the one
|
|
520
|
+
* nobody can act on
|
|
521
|
+
*
|
|
522
|
+
* `titleField` is exact: name a field and you get that field, empty string
|
|
523
|
+
* included. The `name` -> `title` -> id chain is the DEFAULT, not a fallback
|
|
524
|
+
* layered under an explicit choice — a page silently titled by a different
|
|
525
|
+
* column than the one asked for is worse than a blank one.
|
|
526
|
+
*
|
|
527
|
+
* @stability Beta
|
|
528
|
+
*/
|
|
529
|
+
declare function ResourceDetailPage<T extends BaseRecord = BaseRecord>({ resource, id, titleField, subtitleField, select, breadcrumb, actions, sidebar, children, className, testID, }: ResourceDetailPageProps<T>): react_jsx_runtime.JSX.Element;
|
|
530
|
+
|
|
349
531
|
interface ResourceFormProps {
|
|
350
532
|
resource: string;
|
|
351
533
|
action: "create" | "edit";
|
|
@@ -405,52 +587,19 @@ interface WizardFormProps {
|
|
|
405
587
|
}
|
|
406
588
|
declare function WizardForm({ steps, form, fields, onSubmit, isSaving, renderField, action, onInvalid, }: WizardFormProps): react_jsx_runtime.JSX.Element;
|
|
407
589
|
|
|
408
|
-
interface NavItem {
|
|
409
|
-
to: string;
|
|
410
|
-
icon: LucideIcon;
|
|
411
|
-
label: string;
|
|
412
|
-
}
|
|
413
590
|
/**
|
|
414
|
-
* @
|
|
591
|
+
* @deprecated Import `AppShell` from `@marktiderman/genesis-ui/layout` instead.
|
|
592
|
+
* `AppShell` is a layout, not a data-bound component. This `/data` alias is
|
|
593
|
+
* removed in the next major — see docs/FRAMEWORK.md rule 5.
|
|
594
|
+
* @stability Deprecated
|
|
415
595
|
*/
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
children: ReactNode;
|
|
425
|
-
/** Show theme toggle (default: true) */
|
|
426
|
-
showThemeToggle?: boolean;
|
|
427
|
-
/**
|
|
428
|
-
* Injectable link component. Defaults to a plain `<a>` (no router). Pass a
|
|
429
|
-
* router adapter — e.g. React Router `({ href, ...p }) => <Link to={href} {...p} />`
|
|
430
|
-
* or Next.js `next/link` — to get client-side navigation.
|
|
431
|
-
*/
|
|
432
|
-
linkComponent?: LinkComponent;
|
|
433
|
-
/**
|
|
434
|
-
* Current path used to highlight the active nav item. Router consumers pass
|
|
435
|
-
* `useLocation().pathname` (RR) or `usePathname()` (Next). Omit to disable
|
|
436
|
-
* active highlighting.
|
|
437
|
-
*/
|
|
438
|
-
activePath?: string;
|
|
439
|
-
/**
|
|
440
|
-
* Optional custom active-state matcher. Defaults to a prefix match (with `/`
|
|
441
|
-
* treated as exact), mirroring React Router `NavLink`.
|
|
442
|
-
*/
|
|
443
|
-
isActive?: (to: string, activePath?: string) => boolean;
|
|
444
|
-
}
|
|
445
|
-
declare function AppShell({ appName, appLogo, navItems, children, showThemeToggle, linkComponent, activePath, isActive, }: AppShellProps): react_jsx_runtime.JSX.Element;
|
|
446
|
-
|
|
447
|
-
interface PageHeaderProps {
|
|
448
|
-
title: string;
|
|
449
|
-
subtitle?: string;
|
|
450
|
-
icon?: LucideIcon;
|
|
451
|
-
/** Optional action area (buttons, etc.) */
|
|
452
|
-
actions?: ReactNode;
|
|
453
|
-
}
|
|
454
|
-
declare function PageHeader({ title, subtitle, icon: Icon, actions }: PageHeaderProps): react_jsx_runtime.JSX.Element;
|
|
596
|
+
declare const AppShell: typeof AppShell$1;
|
|
597
|
+
/**
|
|
598
|
+
* @deprecated Import `PageHeader` from `@marktiderman/genesis-ui/layout`
|
|
599
|
+
* instead. `PageHeader` is a layout, not a data-bound component. This `/data`
|
|
600
|
+
* alias is removed in the next major — see docs/FRAMEWORK.md rule 5.
|
|
601
|
+
* @stability Deprecated
|
|
602
|
+
*/
|
|
603
|
+
declare const PageHeader: typeof PageHeader$1;
|
|
455
604
|
|
|
456
|
-
export { AppShell,
|
|
605
|
+
export { AppShell, BadgeCell, type BulkAction, type ColumnStatus, CurrencyCell, DataBulkBar, type DataFilterConfig, DataFilters, DataGrid, DataList, type DataListProps, DataPageShell, type DataPageShellProps, DateCell, Density, DetailPanel, type DetailPanelProps, FieldArrayRenderer, FileUploadField, FilterCombobox, type FilterOption, KanbanBoard, type KanbanBoardProps, type KanbanColumn, LinkComponent, NavigateFn, NumberCell, PageHeader, PageHeaderOptions, RelationField, ResourceActions, type ResourceCardActions, ResourceColumnDef, ResourceDetailPage, type ResourceDetailPageProps, ResourceForm, type ResourceFormProps, ResourcePage, type ResourcePageProps, type SavedViewItem, StatCard, type StatCardColor, type StatCardProps, ViewMode, WizardForm };
|