@etus/ui 0.4.0-beta.17 → 0.4.0-beta.18
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/{chunk-U6EOAIPK.js → chunk-2X35C55E.js} +3 -3
- package/dist/chunk-2X35C55E.js.map +1 -0
- package/dist/{chunk-UYC7M3FM.js → chunk-34WNJNPL.js} +5 -5
- package/dist/{chunk-UYC7M3FM.js.map → chunk-34WNJNPL.js.map} +1 -1
- package/dist/{chunk-N4UTBJRY.js → chunk-3NHH7VPI.js} +3 -3
- package/dist/{chunk-N4UTBJRY.js.map → chunk-3NHH7VPI.js.map} +1 -1
- package/dist/{chunk-OEXQ2MOY.js → chunk-45YJLE4R.js} +3 -3
- package/dist/{chunk-OEXQ2MOY.js.map → chunk-45YJLE4R.js.map} +1 -1
- package/dist/{chunk-66TBTTZO.js → chunk-46SUPGQV.js} +14 -14
- package/dist/chunk-46SUPGQV.js.map +1 -0
- package/dist/{chunk-3W7FXRO5.js → chunk-56TC4CPT.js} +4 -4
- package/dist/{chunk-3W7FXRO5.js.map → chunk-56TC4CPT.js.map} +1 -1
- package/dist/{chunk-NCT5WXKG.js → chunk-5ACHKT35.js} +3 -3
- package/dist/{chunk-NCT5WXKG.js.map → chunk-5ACHKT35.js.map} +1 -1
- package/dist/{chunk-GGUWEAYD.js → chunk-5E44I7PB.js} +3 -3
- package/dist/{chunk-GGUWEAYD.js.map → chunk-5E44I7PB.js.map} +1 -1
- package/dist/{chunk-T6XRYT6Q.js → chunk-5K2SOCOX.js} +3 -3
- package/dist/{chunk-T6XRYT6Q.js.map → chunk-5K2SOCOX.js.map} +1 -1
- package/dist/{chunk-VT4IMHGE.js → chunk-5TABQJDW.js} +4 -4
- package/dist/chunk-5TABQJDW.js.map +1 -0
- package/dist/{chunk-4GVOOXYD.js → chunk-6ABGMOE2.js} +5 -5
- package/dist/chunk-6ABGMOE2.js.map +1 -0
- package/dist/{chunk-Q43KJP5A.js → chunk-6F5NWXZF.js} +7 -7
- package/dist/{chunk-Q43KJP5A.js.map → chunk-6F5NWXZF.js.map} +1 -1
- package/dist/{chunk-4RSHPKHB.js → chunk-6KMRMXR6.js} +3 -3
- package/dist/{chunk-4RSHPKHB.js.map → chunk-6KMRMXR6.js.map} +1 -1
- package/dist/{chunk-7J5OM4ZD.js → chunk-7CMOCWFX.js} +4 -4
- package/dist/{chunk-7J5OM4ZD.js.map → chunk-7CMOCWFX.js.map} +1 -1
- package/dist/{chunk-G7PBPX3K.js → chunk-7VGF6ZVE.js} +4 -4
- package/dist/{chunk-G7PBPX3K.js.map → chunk-7VGF6ZVE.js.map} +1 -1
- package/dist/{chunk-E2TI5V67.js → chunk-A4O3USMA.js} +3 -3
- package/dist/{chunk-E2TI5V67.js.map → chunk-A4O3USMA.js.map} +1 -1
- package/dist/{chunk-UPK5B2FL.js → chunk-AKRVZ2YW.js} +6 -6
- package/dist/chunk-AKRVZ2YW.js.map +1 -0
- package/dist/{chunk-VBJ26PZJ.js → chunk-AP3T3KMY.js} +3 -3
- package/dist/{chunk-VBJ26PZJ.js.map → chunk-AP3T3KMY.js.map} +1 -1
- package/dist/{chunk-X3AXEE3S.js → chunk-AR7K7Y4L.js} +3 -3
- package/dist/{chunk-X3AXEE3S.js.map → chunk-AR7K7Y4L.js.map} +1 -1
- package/dist/{chunk-WKWLKGNI.js → chunk-ARYBNQNS.js} +4 -4
- package/dist/chunk-ARYBNQNS.js.map +1 -0
- package/dist/{chunk-P27ERD6W.js → chunk-B2OCNHUW.js} +8 -8
- package/dist/{chunk-P27ERD6W.js.map → chunk-B2OCNHUW.js.map} +1 -1
- package/dist/{chunk-3NLWCX2F.js → chunk-DI3AISAZ.js} +3 -3
- package/dist/{chunk-3NLWCX2F.js.map → chunk-DI3AISAZ.js.map} +1 -1
- package/dist/{chunk-W3JVNX35.js → chunk-DSCLJ3GK.js} +4 -4
- package/dist/{chunk-W3JVNX35.js.map → chunk-DSCLJ3GK.js.map} +1 -1
- package/dist/{chunk-3KOLK3OB.js → chunk-EC5YEK3C.js} +3 -3
- package/dist/{chunk-3KOLK3OB.js.map → chunk-EC5YEK3C.js.map} +1 -1
- package/dist/{chunk-YUHPTV2A.js → chunk-EDSDAX56.js} +3 -3
- package/dist/{chunk-YUHPTV2A.js.map → chunk-EDSDAX56.js.map} +1 -1
- package/dist/{chunk-IRIIK3BU.js → chunk-F4EX3622.js} +10 -10
- package/dist/chunk-F4EX3622.js.map +1 -0
- package/dist/{chunk-XYYOV5GW.js → chunk-F5X2BBGU.js} +4 -4
- package/dist/{chunk-XYYOV5GW.js.map → chunk-F5X2BBGU.js.map} +1 -1
- package/dist/{chunk-BS5XDYOE.js → chunk-FLERVSKG.js} +5 -5
- package/dist/{chunk-BS5XDYOE.js.map → chunk-FLERVSKG.js.map} +1 -1
- package/dist/{chunk-TAZPML2P.js → chunk-G2CMEHW6.js} +3 -3
- package/dist/{chunk-TAZPML2P.js.map → chunk-G2CMEHW6.js.map} +1 -1
- package/dist/{chunk-TQBUBD3E.js → chunk-H7JHFBFD.js} +3 -3
- package/dist/{chunk-TQBUBD3E.js.map → chunk-H7JHFBFD.js.map} +1 -1
- package/dist/{chunk-Y4RKKQMB.js → chunk-HA5YVDHW.js} +3 -3
- package/dist/chunk-HA5YVDHW.js.map +1 -0
- package/dist/{chunk-ZKK7L7H7.js → chunk-HP7LEQJR.js} +3 -3
- package/dist/{chunk-ZKK7L7H7.js.map → chunk-HP7LEQJR.js.map} +1 -1
- package/dist/{chunk-W7S7GPU5.js → chunk-HV2ZZXFN.js} +4 -4
- package/dist/{chunk-W7S7GPU5.js.map → chunk-HV2ZZXFN.js.map} +1 -1
- package/dist/{chunk-K45MMHLA.js → chunk-HVFACGNK.js} +4 -4
- package/dist/{chunk-K45MMHLA.js.map → chunk-HVFACGNK.js.map} +1 -1
- package/dist/{chunk-R3HUGCGR.js → chunk-HZ47LQFJ.js} +4 -4
- package/dist/{chunk-R3HUGCGR.js.map → chunk-HZ47LQFJ.js.map} +1 -1
- package/dist/{chunk-4KOJTZVU.js → chunk-IA24GUNV.js} +25 -25
- package/dist/chunk-IA24GUNV.js.map +1 -0
- package/dist/{chunk-D6TH3EGA.js → chunk-IQKKPOI7.js} +4 -4
- package/dist/{chunk-D6TH3EGA.js.map → chunk-IQKKPOI7.js.map} +1 -1
- package/dist/{chunk-WXBC3D2N.js → chunk-IRFAIJLV.js} +4 -4
- package/dist/{chunk-WXBC3D2N.js.map → chunk-IRFAIJLV.js.map} +1 -1
- package/dist/{chunk-SXPBKGLT.js → chunk-J62NPPDO.js} +3 -3
- package/dist/{chunk-SXPBKGLT.js.map → chunk-J62NPPDO.js.map} +1 -1
- package/dist/{chunk-TNDW52VZ.js → chunk-JDG5A44W.js} +20 -13
- package/dist/chunk-JDG5A44W.js.map +1 -0
- package/dist/{chunk-Z4KW5VW6.js → chunk-JRVUEOKT.js} +5 -5
- package/dist/{chunk-Z4KW5VW6.js.map → chunk-JRVUEOKT.js.map} +1 -1
- package/dist/{chunk-NXQ25PKF.js → chunk-K43MPWTO.js} +7 -7
- package/dist/chunk-K43MPWTO.js.map +1 -0
- package/dist/{chunk-2ROFZG3A.js → chunk-KA7747GR.js} +3 -3
- package/dist/{chunk-2ROFZG3A.js.map → chunk-KA7747GR.js.map} +1 -1
- package/dist/{chunk-OBRJXVWO.js → chunk-KYURFRCH.js} +4 -4
- package/dist/{chunk-OBRJXVWO.js.map → chunk-KYURFRCH.js.map} +1 -1
- package/dist/{chunk-EYSTEGV5.js → chunk-LR56MGWT.js} +7 -7
- package/dist/{chunk-EYSTEGV5.js.map → chunk-LR56MGWT.js.map} +1 -1
- package/dist/{chunk-6ZAMTPGN.js → chunk-M6VBDPNQ.js} +3 -3
- package/dist/{chunk-6ZAMTPGN.js.map → chunk-M6VBDPNQ.js.map} +1 -1
- package/dist/{chunk-JPA2VQRW.js → chunk-MAM5PTRV.js} +3 -3
- package/dist/{chunk-JPA2VQRW.js.map → chunk-MAM5PTRV.js.map} +1 -1
- package/dist/{chunk-3L5G7VI2.js → chunk-MAM6VUKD.js} +3 -3
- package/dist/chunk-MAM6VUKD.js.map +1 -0
- package/dist/{chunk-LLI3JFJL.js → chunk-MLSIZ6JU.js} +4 -4
- package/dist/{chunk-LLI3JFJL.js.map → chunk-MLSIZ6JU.js.map} +1 -1
- package/dist/{chunk-U2R47SPY.js → chunk-NULX3RRN.js} +4 -4
- package/dist/{chunk-U2R47SPY.js.map → chunk-NULX3RRN.js.map} +1 -1
- package/dist/{chunk-GL56KIFL.js → chunk-OG3M4CMJ.js} +3 -3
- package/dist/{chunk-GL56KIFL.js.map → chunk-OG3M4CMJ.js.map} +1 -1
- package/dist/{chunk-7EGN7IGY.js → chunk-OR3NPCY2.js} +3 -3
- package/dist/{chunk-7EGN7IGY.js.map → chunk-OR3NPCY2.js.map} +1 -1
- package/dist/{chunk-5I7AXWJU.js → chunk-PGRMKSVA.js} +4 -4
- package/dist/{chunk-5I7AXWJU.js.map → chunk-PGRMKSVA.js.map} +1 -1
- package/dist/{chunk-VZZ3HP7G.js → chunk-PM344VOQ.js} +3 -3
- package/dist/{chunk-VZZ3HP7G.js.map → chunk-PM344VOQ.js.map} +1 -1
- package/dist/{chunk-46ESMCEQ.js → chunk-QBLU7J34.js} +5 -5
- package/dist/chunk-QBLU7J34.js.map +1 -0
- package/dist/{chunk-U74PNG4S.js → chunk-SMVH56FQ.js} +3 -3
- package/dist/{chunk-U74PNG4S.js.map → chunk-SMVH56FQ.js.map} +1 -1
- package/dist/{chunk-DYDXGWH2.js → chunk-T3LWBCVR.js} +4 -4
- package/dist/chunk-T3LWBCVR.js.map +1 -0
- package/dist/{chunk-ZP4HYVDG.js → chunk-TA4HCLP3.js} +3 -3
- package/dist/{chunk-ZP4HYVDG.js.map → chunk-TA4HCLP3.js.map} +1 -1
- package/dist/{chunk-7HT32DZG.js → chunk-TGLALXPU.js} +3 -3
- package/dist/{chunk-7HT32DZG.js.map → chunk-TGLALXPU.js.map} +1 -1
- package/dist/{chunk-5GE3BQA7.js → chunk-USPITOG4.js} +5 -5
- package/dist/chunk-USPITOG4.js.map +1 -0
- package/dist/{chunk-XLTSCY22.js → chunk-UYPYAOET.js} +4 -4
- package/dist/chunk-UYPYAOET.js.map +1 -0
- package/dist/{chunk-P7D6S6GX.js → chunk-V7O4X3AE.js} +38 -4
- package/dist/chunk-V7O4X3AE.js.map +1 -0
- package/dist/{chunk-2YSZPUQZ.js → chunk-VTDSGJ4R.js} +3 -3
- package/dist/{chunk-2YSZPUQZ.js.map → chunk-VTDSGJ4R.js.map} +1 -1
- package/dist/{chunk-4Y72SPNL.js → chunk-VUHJTTPV.js} +4 -4
- package/dist/chunk-VUHJTTPV.js.map +1 -0
- package/dist/{chunk-VLDAHAG6.js → chunk-VV6QE3M2.js} +4 -4
- package/dist/{chunk-VLDAHAG6.js.map → chunk-VV6QE3M2.js.map} +1 -1
- package/dist/{chunk-H5N3VPBG.js → chunk-WBERMEN7.js} +3 -3
- package/dist/{chunk-H5N3VPBG.js.map → chunk-WBERMEN7.js.map} +1 -1
- package/dist/{chunk-OXDWUKGP.js → chunk-WCMRVCIM.js} +4 -4
- package/dist/chunk-WCMRVCIM.js.map +1 -0
- package/dist/{chunk-IFHF4UES.js → chunk-WQI2USN7.js} +11 -11
- package/dist/chunk-WQI2USN7.js.map +1 -0
- package/dist/{chunk-CKD4UBV6.js → chunk-WVFQKBDB.js} +3 -3
- package/dist/{chunk-CKD4UBV6.js.map → chunk-WVFQKBDB.js.map} +1 -1
- package/dist/{chunk-3NSIUZGP.js → chunk-WZ2J4ALB.js} +3 -3
- package/dist/{chunk-3NSIUZGP.js.map → chunk-WZ2J4ALB.js.map} +1 -1
- package/dist/{chunk-7TF5PVEU.js → chunk-X5XP5QVO.js} +5 -5
- package/dist/chunk-X5XP5QVO.js.map +1 -0
- package/dist/{chunk-7Y2UQMX6.js → chunk-XKO6G5H2.js} +36 -36
- package/dist/chunk-XKO6G5H2.js.map +1 -0
- package/dist/{chunk-SUU3HNOX.js → chunk-XORDGKZI.js} +4 -4
- package/dist/{chunk-SUU3HNOX.js.map → chunk-XORDGKZI.js.map} +1 -1
- package/dist/{chunk-VAVE4ZJF.js → chunk-YGLD22TU.js} +3 -3
- package/dist/chunk-YGLD22TU.js.map +1 -0
- package/dist/{chunk-XOGMDABS.js → chunk-ZHUW6UYD.js} +8 -8
- package/dist/chunk-ZHUW6UYD.js.map +1 -0
- package/dist/{chunk-PWCMCMDN.js → chunk-ZMUUEXVD.js} +3 -3
- package/dist/{chunk-PWCMCMDN.js.map → chunk-ZMUUEXVD.js.map} +1 -1
- package/dist/components/advanced/Calendar/index.js +5 -5
- package/dist/components/advanced/EventCalendar/index.js +5 -5
- package/dist/components/advanced/FilterBuilder/index.js +7 -7
- package/dist/components/advanced/MarkdownEditor/index.js +2 -2
- package/dist/components/advanced/ReportBuilder/index.js +4 -4
- package/dist/components/advanced/RichTextEditor/index.js +2 -2
- package/dist/components/advanced/index.js +16 -16
- package/dist/components/data-display/Callout/index.js +1 -1
- package/dist/components/data-display/Carousel/index.js +5 -5
- package/dist/components/data-display/ChartCard/index.js +2 -2
- package/dist/components/data-display/DataTable/FilterBuilder/index.js +7 -7
- package/dist/components/data-display/DataTable/index.js +10 -10
- package/dist/components/data-display/ImageGallery/index.js +6 -6
- package/dist/components/data-display/Item/index.js +2 -2
- package/dist/components/data-display/KPICard/index.js +3 -3
- package/dist/components/data-display/List/index.js +2 -2
- package/dist/components/data-display/SingleStat/index.js +1 -1
- package/dist/components/data-display/index.js +31 -31
- package/dist/components/feedback/AlertDialog/index.js +5 -5
- package/dist/components/feedback/ConfirmModal/index.js +6 -6
- package/dist/components/feedback/Modal/index.js +1 -1
- package/dist/components/feedback/UpdatesWidget/index.js +1 -1
- package/dist/components/feedback/index.js +10 -10
- package/dist/components/forms/ColorPicker/index.js +1 -1
- package/dist/components/forms/Combobox/index.js +1 -1
- package/dist/components/forms/DatePicker/index.js +6 -6
- package/dist/components/forms/DateRangePicker/index.js +6 -6
- package/dist/components/forms/EmailInput/index.js +3 -3
- package/dist/components/forms/Field/index.js +3 -3
- package/dist/components/forms/Form/index.js +2 -2
- package/dist/components/forms/InputGroup/index.js +8 -8
- package/dist/components/forms/InputOTPField/index.js +4 -4
- package/dist/components/forms/NativeSelect/index.js +1 -1
- package/dist/components/forms/NumberInput/index.js +2 -2
- package/dist/components/forms/PasswordInput/index.js +3 -3
- package/dist/components/forms/PaymentInput/index.js +1 -1
- package/dist/components/forms/PhoneInput/index.js +1 -1
- package/dist/components/forms/RadioButton/index.js +1 -1
- package/dist/components/forms/SearchInput/index.js +3 -3
- package/dist/components/forms/Slider/index.js +1 -1
- package/dist/components/forms/TagsInput/index.js +2 -2
- package/dist/components/forms/TextInput/index.js +2 -2
- package/dist/components/forms/Textarea/index.js +1 -1
- package/dist/components/forms/TextareaField/index.js +5 -5
- package/dist/components/forms/URLInput/index.js +3 -3
- package/dist/components/forms/index.js +33 -33
- package/dist/components/index.js +132 -132
- package/dist/components/layout/Card/index.js +1 -1
- package/dist/components/layout/Section/index.js +1 -1
- package/dist/components/layout/index.js +6 -6
- package/dist/components/navigation/AccountSwitch/index.js +3 -3
- package/dist/components/navigation/ContextMenu/index.js +1 -1
- package/dist/components/navigation/DropdownMenu/index.js +1 -1
- package/dist/components/navigation/FileTree/index.js +1 -1
- package/dist/components/navigation/Menu/index.js +1 -1
- package/dist/components/navigation/Menubar/index.js +1 -1
- package/dist/components/navigation/Navbar/index.js +1 -1
- package/dist/components/navigation/Pagination/index.js +5 -5
- package/dist/components/navigation/Sidebar/index.js +7 -7
- package/dist/components/navigation/Toolbar/index.js +1 -1
- package/dist/components/navigation/index.js +20 -20
- package/dist/components/primitives/Badge/index.js +1 -1
- package/dist/components/primitives/Button/index.js +4 -4
- package/dist/components/primitives/ButtonGroup/index.js +2 -2
- package/dist/components/primitives/ConfirmButton/index.js +6 -6
- package/dist/components/primitives/Divider/index.js +1 -1
- package/dist/components/primitives/FolderStack/index.js +1 -1
- package/dist/components/primitives/Image/index.js +1 -1
- package/dist/components/primitives/Label/index.js +1 -1
- package/dist/components/primitives/SplitButton/index.js +2 -2
- package/dist/components/primitives/StatusIndicator/index.js +1 -1
- package/dist/components/primitives/Tag/index.js +1 -1
- package/dist/components/primitives/Thumbnail/index.js +2 -2
- package/dist/components/primitives/index.js +19 -19
- package/dist/components/workflow/ApprovalFlow/index.js +5 -5
- package/dist/components/workflow/CommentSystem/index.js +6 -6
- package/dist/components/workflow/Dashboard/index.js +5 -5
- package/dist/components/workflow/DashboardBuilder/index.js +8 -8
- package/dist/components/workflow/KanbanBoard/index.js +5 -5
- package/dist/components/workflow/ReportGenerator/index.js +6 -6
- package/dist/components/workflow/Stepper/index.js +1 -1
- package/dist/components/workflow/TaskStatus/index.js +2 -2
- package/dist/components/workflow/Wizard/index.js +6 -6
- package/dist/components/workflow/index.js +19 -19
- package/dist/index.d.ts +8 -1
- package/dist/index.js +132 -132
- package/dist/styles.css +27 -703
- package/package.json +2 -2
- package/dist/chunk-3L5G7VI2.js.map +0 -1
- package/dist/chunk-46ESMCEQ.js.map +0 -1
- package/dist/chunk-4GVOOXYD.js.map +0 -1
- package/dist/chunk-4KOJTZVU.js.map +0 -1
- package/dist/chunk-4Y72SPNL.js.map +0 -1
- package/dist/chunk-5GE3BQA7.js.map +0 -1
- package/dist/chunk-66TBTTZO.js.map +0 -1
- package/dist/chunk-7TF5PVEU.js.map +0 -1
- package/dist/chunk-7Y2UQMX6.js.map +0 -1
- package/dist/chunk-DYDXGWH2.js.map +0 -1
- package/dist/chunk-IFHF4UES.js.map +0 -1
- package/dist/chunk-IRIIK3BU.js.map +0 -1
- package/dist/chunk-NXQ25PKF.js.map +0 -1
- package/dist/chunk-OXDWUKGP.js.map +0 -1
- package/dist/chunk-P7D6S6GX.js.map +0 -1
- package/dist/chunk-TNDW52VZ.js.map +0 -1
- package/dist/chunk-U6EOAIPK.js.map +0 -1
- package/dist/chunk-UPK5B2FL.js.map +0 -1
- package/dist/chunk-VAVE4ZJF.js.map +0 -1
- package/dist/chunk-VT4IMHGE.js.map +0 -1
- package/dist/chunk-WKWLKGNI.js.map +0 -1
- package/dist/chunk-XLTSCY22.js.map +0 -1
- package/dist/chunk-XOGMDABS.js.map +0 -1
- package/dist/chunk-Y4RKKQMB.js.map +0 -1
|
@@ -40,7 +40,7 @@ function RadioButton({
|
|
|
40
40
|
{
|
|
41
41
|
className: cn(
|
|
42
42
|
"relative inline-flex items-center justify-center",
|
|
43
|
-
description && "pt-[
|
|
43
|
+
description && "pt-[var(--radio-control-offset-top)]"
|
|
44
44
|
),
|
|
45
45
|
children: [
|
|
46
46
|
/* @__PURE__ */ jsx(
|
|
@@ -62,7 +62,7 @@ function RadioButton({
|
|
|
62
62
|
{
|
|
63
63
|
className: cn(
|
|
64
64
|
radioGroupItemVariants({ size }),
|
|
65
|
-
"peer-checked:border-primary peer-focus-visible:border-
|
|
65
|
+
"peer-checked:border-primary peer-focus-visible:border-[color:var(--radio-root-border-focus)] peer-focus-visible:ring-ring/50 peer-focus-visible:ring-[3px]",
|
|
66
66
|
"peer-checked:[&_[data-slot=radio-button-indicator]]:flex"
|
|
67
67
|
),
|
|
68
68
|
"data-slot": "radio-button-visual",
|
|
@@ -182,5 +182,5 @@ var radioButtonLabelVariants = cva(
|
|
|
182
182
|
);
|
|
183
183
|
|
|
184
184
|
export { RadioButton, radioButtonIndicatorVariants, radioButtonLabelVariants, radioButtonVariants, radioButtonWrapperVariants };
|
|
185
|
-
//# sourceMappingURL=chunk-
|
|
186
|
-
//# sourceMappingURL=chunk-
|
|
185
|
+
//# sourceMappingURL=chunk-F5X2BBGU.js.map
|
|
186
|
+
//# sourceMappingURL=chunk-F5X2BBGU.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/forms/RadioButton/RadioButton.tsx","../src/components/forms/RadioButton/RadioButton.variants.ts"],"names":[],"mappings":";;;;;;AAqBA,SAAS,WAAA,CAAY;AAAA,EACnB,SAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,KAAA;AAAA,EACA,WAAA;AAAA,EACA,EAAA;AAAA,EACA,GAAA;AAAA,EACA,kBAAA,EAAoB,eAAA;AAAA,EACpB,GAAG;AACL,CAAA,EAAqB;AACnB,EAAA,MAAM,cAAoB,KAAA,CAAA,KAAA,EAAM;AAChC,EAAA,MAAM,UAAU,EAAA,IAAM,WAAA;AACtB,EAAA,MAAM,aAAA,GAAgB,GAAG,OAAO,CAAA,YAAA,CAAA;AAChC,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,OAAA,IAAW,KAAA,CAAM,cAAA,IAAkB,KAAA;AAC3D,EAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,KAAK,CAAA,IAAK,QAAQ,WAAW,CAAA;AACrD,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,cAAc,aAAA,GAAgB,MAAA;AAAA,IAC9B;AAAA,GACF,CAAE,OAAO,OAAO,CAAA;AAChB,EAAA,MAAM,cACJ,gBAAA,CAAiB,MAAA,GAAS,IAAI,gBAAA,CAAiB,IAAA,CAAK,GAAG,CAAA,GAAI,MAAA;AAE7D,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,yBAAA;AAAA,QACA,cAAc,aAAA,GAAgB;AAAA,OAChC;AAAA,MACA,eAAA,EAAe,KAAA,CAAM,QAAA,GAAW,EAAA,GAAK,MAAA;AAAA,MACrC,WAAA,EAAU,sBAAA;AAAA,MACV,YAAA,EAAY,YAAY,SAAA,GAAY,WAAA;AAAA,MAEpC,QAAA,EAAA;AAAA,wBAAA,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,kDAAA;AAAA,cACA,WAAA,IAAe;AAAA,aACjB;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,OAAA;AAAA,gBAAA;AAAA,kBACC,GAAA;AAAA,kBACA,SAAA,EAAW,EAAA;AAAA,oBACT,iFAAA;AAAA,oBACA;AAAA,mBACF;AAAA,kBACA,kBAAA,EAAkB,WAAA;AAAA,kBAClB,EAAA,EAAI,OAAA;AAAA,kBACJ,IAAA,EAAK,OAAA;AAAA,kBACJ,GAAG;AAAA;AAAA,eACN;AAAA,8BACA,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAW,EAAA;AAAA,oBACT,sBAAA,CAAuB,EAAE,IAAA,EAAM,CAAA;AAAA,oBAC/B,
|
|
1
|
+
{"version":3,"sources":["../src/components/forms/RadioButton/RadioButton.tsx","../src/components/forms/RadioButton/RadioButton.variants.ts"],"names":[],"mappings":"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","file":"chunk-F5X2BBGU.js","sourcesContent":["import type { RadioButtonProps } from \"./RadioButton.types\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n radioGroupIndicatorVariants,\n radioGroupItemVariants,\n} from \"../RadioGroup/RadioGroup.variants\"\n\n/**\n * A standalone radio button component using native HTML input.\n * For simple use cases without RadioGroup.\n * Visuals are consistent with RadioGroup.\n *\n * @example\n * ```tsx\n * <RadioButton name=\"option\" value=\"1\" label=\"Option 1\" />\n * <RadioButton name=\"option\" value=\"2\" label=\"Option 2\" />\n * ```\n */\nfunction RadioButton({\n className,\n size = \"md\",\n label,\n description,\n id,\n ref,\n \"aria-describedby\": ariaDescribedBy,\n ...props\n}: RadioButtonProps) {\n const generatedId = React.useId()\n const inputId = id ?? generatedId\n const descriptionId = `${inputId}-description`\n const isChecked = props.checked ?? props.defaultChecked ?? false\n const hasText = Boolean(label) || Boolean(description)\n const describedByParts = [\n description ? descriptionId : undefined,\n ariaDescribedBy,\n ].filter(Boolean)\n const describedBy =\n describedByParts.length > 0 ? describedByParts.join(\" \") : undefined\n\n return (\n <div\n className={cn(\n \"group inline-flex gap-2\",\n description ? \"items-start\" : \"items-center\"\n )}\n data-disabled={props.disabled ? \"\" : undefined}\n data-slot=\"radio-button-wrapper\"\n data-state={isChecked ? \"checked\" : \"unchecked\"}\n >\n <div\n className={cn(\n \"relative inline-flex items-center justify-center\",\n description && \"pt-[var(--radio-control-offset-top)]\"\n )}\n >\n <input\n ref={ref}\n className={cn(\n \"peer absolute inset-0 z-10 cursor-pointer opacity-0 disabled:cursor-not-allowed\",\n className\n )}\n aria-describedby={describedBy}\n id={inputId}\n type=\"radio\"\n {...props}\n />\n <div\n className={cn(\n radioGroupItemVariants({ size }),\n \"peer-checked:border-primary peer-focus-visible:border-[color:var(--radio-root-border-focus)] peer-focus-visible:ring-ring/50 peer-focus-visible:ring-[3px]\",\n \"peer-checked:[&_[data-slot=radio-button-indicator]]:flex\"\n )}\n data-slot=\"radio-button-visual\"\n >\n <div\n className={cn(\n radioGroupIndicatorVariants({ size }),\n \"hidden items-center justify-center bg-transparent\"\n )}\n data-slot=\"radio-button-indicator\"\n >\n <div className=\"size-full rounded-full bg-[color:var(--radio-indicator-color)]\" />\n </div>\n </div>\n </div>\n {hasText && (\n <div className=\"grid gap-1.5\">\n {label && (\n <label\n className={cn(\n \"text-sm font-medium leading-none cursor-pointer select-none\",\n \"peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n size === \"lg\" && \"text-base\",\n size === \"sm\" && \"text-xs\"\n )}\n data-slot=\"radio-button-label\"\n htmlFor={inputId}\n >\n {label}\n </label>\n )}\n {description && (\n <p\n className=\"text-xs leading-4 text-[color:var(--muted-foreground)] peer-disabled:opacity-50\"\n data-slot=\"radio-button-description\"\n >\n {description}\n </p>\n )}\n </div>\n )}\n </div>\n )\n}\n\nexport { RadioButton }\n","import { cva, type VariantProps } from \"class-variance-authority\"\n\nexport const radioButtonVariants = cva(\n [\n \"peer appearance-none shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none cursor-pointer\",\n \"border-input bg-background dark:bg-input/30\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"checked:border-primary checked:bg-primary\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n ],\n {\n variants: {\n size: {\n sm: \"size-3.5\",\n md: \"size-4\",\n lg: \"size-5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nexport const radioButtonIndicatorVariants = cva(\n [\n \"pointer-events-none absolute rounded-full bg-primary-foreground transition-transform\",\n \"scale-0 peer-checked:scale-100\",\n ],\n {\n variants: {\n size: {\n sm: \"size-1.5\",\n md: \"size-2\",\n lg: \"size-2.5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nexport const radioButtonWrapperVariants = cva(\n \"relative inline-flex items-center justify-center\",\n {\n variants: {\n size: {\n sm: \"size-3.5\",\n md: \"size-4\",\n lg: \"size-5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nexport const radioButtonLabelVariants = cva(\n \"cursor-pointer select-none peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n {\n variants: {\n size: {\n sm: \"text-sm ml-2\",\n md: \"text-sm ml-2\",\n lg: \"text-base ml-2.5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nexport type RadioButtonVariantProps = VariantProps<typeof radioButtonVariants>\nexport type RadioButtonIndicatorVariantProps = VariantProps<typeof radioButtonIndicatorVariants>\nexport type RadioButtonWrapperVariantProps = VariantProps<typeof radioButtonWrapperVariants>\nexport type RadioButtonLabelVariantProps = VariantProps<typeof radioButtonLabelVariants>\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Label } from './chunk-
|
|
2
|
-
import { TextInput } from './chunk-
|
|
3
|
-
import { Button } from './chunk-
|
|
1
|
+
import { Label } from './chunk-KA7747GR.js';
|
|
2
|
+
import { TextInput } from './chunk-ZMUUEXVD.js';
|
|
3
|
+
import { Button } from './chunk-X5XP5QVO.js';
|
|
4
4
|
import { cn } from './chunk-HRNDJU7D.js';
|
|
5
5
|
import { LayoutGrid, BarChart2, PieChart, Table, Type, Undo2, Redo2, Eye, Save, ChevronRight, ChevronLeft, X, GripVertical, Trash2 } from 'lucide-react';
|
|
6
6
|
import { useState, useMemo, useRef, useId, useCallback } from 'react';
|
|
@@ -920,5 +920,5 @@ function DashboardBuilder({
|
|
|
920
920
|
DashboardBuilder.displayName = "DashboardBuilder";
|
|
921
921
|
|
|
922
922
|
export { DashboardBuilder, DashboardBuilderCanvas, DashboardBuilderPropertiesPanel, DashboardBuilderToolbar, DashboardBuilderWidgetComponent, DashboardBuilderWidgetLibrary, dashboardBuilderCanvasVariants, dashboardBuilderDropZoneVariants, dashboardBuilderEmptyStateVariants, dashboardBuilderPropertiesPanelVariants, dashboardBuilderResizeHandleVariants, dashboardBuilderToolbarVariants, dashboardBuilderVariants, dashboardBuilderWidgetCardVariants, dashboardBuilderWidgetLibraryVariants, dashboardBuilderWidgetVariants, defaultWidgets };
|
|
923
|
-
//# sourceMappingURL=chunk-
|
|
924
|
-
//# sourceMappingURL=chunk-
|
|
923
|
+
//# sourceMappingURL=chunk-FLERVSKG.js.map
|
|
924
|
+
//# sourceMappingURL=chunk-FLERVSKG.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/workflow/DashboardBuilder/DashboardBuilder.variants.ts","../src/components/workflow/DashboardBuilder/DashboardBuilder.tsx"],"names":[],"mappings":"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","file":"chunk-BS5XDYOE.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * DashboardBuilder container variants\n */\nexport const dashboardBuilderVariants = cva(\n \"relative flex h-full w-full overflow-hidden rounded-lg border bg-background transition-all duration-300\",\n {\n variants: {\n mode: {\n edit: \"\",\n preview: \"\",\n configure: \"\",\n },\n size: {\n default: \"\",\n compact: \"\",\n full: \"h-screen\",\n },\n },\n defaultVariants: {\n mode: \"edit\",\n size: \"default\",\n },\n }\n)\n\n/**\n * Toolbar variants\n */\nexport const dashboardBuilderToolbarVariants = cva(\n \"flex h-14 shrink-0 items-center justify-between border-b bg-card px-4 transition-all duration-200\",\n {\n variants: {\n position: {\n top: \"\",\n bottom: \"border-b-0 border-t\",\n },\n },\n defaultVariants: {\n position: \"top\",\n },\n }\n)\n\n/**\n * Canvas (main work area) variants\n */\nexport const dashboardBuilderCanvasVariants = cva(\n \"relative flex-1 overflow-auto bg-muted/30 p-4 transition-all duration-200\",\n {\n variants: {\n showGrid: {\n true: [\n \"bg-[linear-gradient(to_right,var(--border)_1px,transparent_1px),linear-gradient(to_bottom,var(--border)_1px,transparent_1px)]\",\n \"bg-[size:var(--grid-size)_var(--grid-size)]\",\n ],\n false: \"\",\n },\n state: {\n idle: \"\",\n dragging: \"cursor-grabbing\",\n resizing: \"cursor-nwse-resize\",\n configuring: \"\",\n saving: \"pointer-events-none opacity-75\",\n },\n },\n defaultVariants: {\n showGrid: true,\n state: \"idle\",\n },\n }\n)\n\n/**\n * Widget library sidebar variants\n */\nexport const dashboardBuilderWidgetLibraryVariants = cva(\n \"flex w-64 shrink-0 flex-col border-r bg-card transition-all duration-200\",\n {\n variants: {\n collapsed: {\n true: \"w-14\",\n false: \"w-64\",\n },\n position: {\n left: \"border-r\",\n right: \"border-l border-r-0\",\n },\n },\n defaultVariants: {\n collapsed: false,\n position: \"left\",\n },\n }\n)\n\n/**\n * Properties panel variants\n */\nexport const dashboardBuilderPropertiesPanelVariants = cva(\n \"flex w-72 shrink-0 flex-col border-l bg-card transition-all duration-200\",\n {\n variants: {\n open: {\n true: \"w-72\",\n false: \"w-0 overflow-hidden border-l-0\",\n },\n },\n defaultVariants: {\n open: false,\n },\n }\n)\n\n/**\n * Widget card in library variants\n */\nexport const dashboardBuilderWidgetCardVariants = cva(\n \"flex cursor-grab items-center gap-3 rounded-md border bg-background p-3 transition-all duration-200 hover:border-primary hover:shadow-sm active:cursor-grabbing\",\n {\n variants: {\n category: {\n default: \"\",\n charts: \"border-l-2 border-l-blue-500\",\n kpi: \"border-l-2 border-l-green-500\",\n tables: \"border-l-2 border-l-purple-500\",\n text: \"border-l-2 border-l-orange-500\",\n },\n dragging: {\n true: \"opacity-50\",\n false: \"\",\n },\n },\n defaultVariants: {\n category: \"default\",\n dragging: false,\n },\n }\n)\n\n/**\n * Widget on canvas variants\n */\nexport const dashboardBuilderWidgetVariants = cva(\n \"group relative rounded-md border-2 bg-card transition-all duration-200\",\n {\n variants: {\n state: {\n idle: \"border-transparent hover:border-muted-foreground/30\",\n selected: \"border-primary ring-2 ring-primary/20\",\n dragging: \"border-primary border-dashed opacity-75\",\n resizing: \"border-primary\",\n preview: \"border-border\",\n },\n },\n defaultVariants: {\n state: \"idle\",\n },\n }\n)\n\n/**\n * Widget resize handle variants\n */\nexport const dashboardBuilderResizeHandleVariants = cva(\n \"absolute opacity-0 transition-opacity group-hover:opacity-100\",\n {\n variants: {\n position: {\n se: \"bottom-0 right-0 cursor-se-resize\",\n sw: \"bottom-0 left-0 cursor-sw-resize\",\n ne: \"right-0 top-0 cursor-ne-resize\",\n nw: \"left-0 top-0 cursor-nw-resize\",\n e: \"right-0 top-1/2 -translate-y-1/2 cursor-e-resize\",\n w: \"left-0 top-1/2 -translate-y-1/2 cursor-w-resize\",\n n: \"left-1/2 top-0 -translate-x-1/2 cursor-n-resize\",\n s: \"bottom-0 left-1/2 -translate-x-1/2 cursor-s-resize\",\n },\n size: {\n sm: \"h-2 w-2\",\n default: \"h-3 w-3\",\n lg: \"h-4 w-4\",\n },\n },\n defaultVariants: {\n position: \"se\",\n size: \"default\",\n },\n }\n)\n\n/**\n * Drop zone indicator variants\n */\nexport const dashboardBuilderDropZoneVariants = cva(\n \"pointer-events-none absolute rounded-md border-2 transition-all duration-200\",\n {\n variants: {\n active: {\n true: \"border-primary bg-primary/10\",\n false: \"border-transparent\",\n },\n valid: {\n true: \"border-primary bg-primary/10\",\n false: \"border-destructive bg-destructive/10\",\n },\n },\n defaultVariants: {\n active: false,\n valid: true,\n },\n }\n)\n\n/**\n * Empty state variants for canvas\n */\nexport const dashboardBuilderEmptyStateVariants = cva(\n \"flex h-full flex-col items-center justify-center gap-4 text-muted-foreground\",\n {\n variants: {\n variant: {\n default: \"\",\n minimal: \"gap-2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\n// Export variant prop types\nexport type DashboardBuilderVariantProps = VariantProps<\n typeof dashboardBuilderVariants\n>\nexport type DashboardBuilderToolbarVariantProps = VariantProps<\n typeof dashboardBuilderToolbarVariants\n>\nexport type DashboardBuilderCanvasVariantProps = VariantProps<\n typeof dashboardBuilderCanvasVariants\n>\nexport type DashboardBuilderWidgetLibraryVariantProps = VariantProps<\n typeof dashboardBuilderWidgetLibraryVariants\n>\nexport type DashboardBuilderPropertiesPanelVariantProps = VariantProps<\n typeof dashboardBuilderPropertiesPanelVariants\n>\nexport type DashboardBuilderWidgetCardVariantProps = VariantProps<\n typeof dashboardBuilderWidgetCardVariants\n>\nexport type DashboardBuilderWidgetVariantProps = VariantProps<\n typeof dashboardBuilderWidgetVariants\n>\nexport type DashboardBuilderResizeHandleVariantProps = VariantProps<\n typeof dashboardBuilderResizeHandleVariants\n>\nexport type DashboardBuilderDropZoneVariantProps = VariantProps<\n typeof dashboardBuilderDropZoneVariants\n>\nexport type DashboardBuilderEmptyStateVariantProps = VariantProps<\n typeof dashboardBuilderEmptyStateVariants\n>\n","import type {\n BuilderLayoutConfig,\n BuilderMode,\n BuilderPosition,\n BuilderState,\n BuilderWidget,\n BuilderWidgetDefinition,\n DashboardBuilderCanvasProps,\n DashboardBuilderPropertiesPanelProps,\n DashboardBuilderProps,\n DashboardBuilderToolbarProps,\n DashboardBuilderWidgetComponentProps,\n DashboardBuilderWidgetLibraryProps,\n} from \"./DashboardBuilder.types\"\nimport type { DragEvent, KeyboardEvent, ReactNode } from \"react\"\n\nimport {\n BarChart2,\n ChevronLeft,\n ChevronRight,\n Eye,\n GripVertical,\n LayoutGrid,\n PieChart,\n Redo2,\n Save,\n Table,\n Trash2,\n Type,\n Undo2,\n X,\n} from \"lucide-react\"\nimport { useCallback, useId, useMemo, useRef, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { TextInput } from \"../../forms/TextInput\"\nimport { Button } from \"../../primitives/Button\"\nimport { Label } from \"../../primitives/Label\"\nimport {\n dashboardBuilderCanvasVariants,\n dashboardBuilderEmptyStateVariants,\n dashboardBuilderPropertiesPanelVariants,\n dashboardBuilderToolbarVariants,\n dashboardBuilderVariants,\n dashboardBuilderWidgetCardVariants,\n dashboardBuilderWidgetLibraryVariants,\n dashboardBuilderWidgetVariants,\n} from \"./DashboardBuilder.variants\"\n\n// ============================================\n// DEFAULT WIDGET DEFINITIONS\n// ============================================\n\n/**\n * Placeholder widget component for demo purposes\n */\nfunction PlaceholderWidget({ config, title }: { config: Record<string, unknown>; title: string }): ReactNode {\n const value = config[\"value\"]\n const getDisplayValue = (): string => {\n if (value === null || value === undefined) return \"\"\n if (typeof value === \"object\") return JSON.stringify(value)\n return String(value as boolean | number | string)\n }\n return (\n <div className=\"flex h-full flex-col items-center justify-center p-4\">\n <span className=\"text-sm font-medium\">{title}</span>\n {value !== undefined && value !== null && (\n <span className=\"text-2xl font-bold text-primary\">\n {getDisplayValue()}\n </span>\n )}\n </div>\n )\n}\n\n/**\n * Default widgets available in the library\n */\nconst defaultWidgets: BuilderWidgetDefinition[] = [\n {\n type: \"kpi\",\n name: \"KPI Card\",\n description: \"Display a key performance indicator\",\n icon: <LayoutGrid className=\"h-4 w-4\" />,\n category: \"kpi\",\n defaultSize: { w: 3, h: 2 },\n minSize: { w: 2, h: 1 },\n maxSize: { w: 6, h: 4 },\n configSchema: {\n fields: [\n { name: \"title\", type: \"text\", label: \"Title\", defaultValue: \"KPI\" },\n { name: \"value\", type: \"text\", label: \"Value\", defaultValue: \"0\" },\n { name: \"unit\", type: \"text\", label: \"Unit\", defaultValue: \"\" },\n ],\n },\n component: PlaceholderWidget,\n },\n {\n type: \"chart-line\",\n name: \"Line Chart\",\n description: \"Display data as a line chart\",\n icon: <BarChart2 className=\"h-4 w-4\" />,\n category: \"charts\",\n defaultSize: { w: 6, h: 4 },\n minSize: { w: 4, h: 3 },\n configSchema: {\n fields: [\n { name: \"title\", type: \"text\", label: \"Title\", defaultValue: \"Chart\" },\n {\n name: \"showLegend\",\n type: \"boolean\",\n label: \"Show Legend\",\n defaultValue: true,\n },\n ],\n },\n component: PlaceholderWidget,\n },\n {\n type: \"chart-pie\",\n name: \"Pie Chart\",\n description: \"Display data as a pie chart\",\n icon: <PieChart className=\"h-4 w-4\" />,\n category: \"charts\",\n defaultSize: { w: 4, h: 4 },\n minSize: { w: 3, h: 3 },\n configSchema: {\n fields: [\n { name: \"title\", type: \"text\", label: \"Title\", defaultValue: \"Chart\" },\n ],\n },\n component: PlaceholderWidget,\n },\n {\n type: \"table\",\n name: \"Data Table\",\n description: \"Display data in a table format\",\n icon: <Table className=\"h-4 w-4\" />,\n category: \"tables\",\n defaultSize: { w: 6, h: 4 },\n minSize: { w: 4, h: 3 },\n configSchema: {\n fields: [\n { name: \"title\", type: \"text\", label: \"Title\", defaultValue: \"Table\" },\n {\n name: \"pageSize\",\n type: \"number\",\n label: \"Page Size\",\n defaultValue: 10,\n },\n ],\n },\n component: PlaceholderWidget,\n },\n {\n type: \"text\",\n name: \"Text Block\",\n description: \"Display formatted text content\",\n icon: <Type className=\"h-4 w-4\" />,\n category: \"text\",\n defaultSize: { w: 4, h: 2 },\n minSize: { w: 2, h: 1 },\n configSchema: {\n fields: [\n { name: \"content\", type: \"text\", label: \"Content\", defaultValue: \"\" },\n ],\n },\n component: PlaceholderWidget,\n },\n]\n\n// ============================================\n// SUB-COMPONENTS\n// ============================================\n\n/**\n * Toolbar component with save, undo, redo, and preview actions\n */\nfunction DashboardBuilderToolbar({\n canRedo,\n canUndo,\n onRedo,\n onSave,\n onTogglePreview,\n onUndo,\n showPreview,\n showUndo,\n}: DashboardBuilderToolbarProps): ReactNode {\n return (\n <div\n className={dashboardBuilderToolbarVariants()}\n data-slot=\"dashboard-builder-toolbar\"\n >\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium\">Dashboard Builder</span>\n </div>\n\n <div className=\"flex items-center gap-2\">\n {showUndo && (\n <>\n <Button\n aria-label=\"Undo\"\n disabled={!canUndo}\n size=\"sm\"\n variant=\"ghost\"\n onClick={onUndo}\n >\n <Undo2 className=\"h-4 w-4\" />\n </Button>\n <Button\n aria-label=\"Redo\"\n disabled={!canRedo}\n size=\"sm\"\n variant=\"ghost\"\n onClick={onRedo}\n >\n <Redo2 className=\"h-4 w-4\" />\n </Button>\n <div className=\"mx-2 h-6 w-px bg-border\" />\n </>\n )}\n\n {showPreview && (\n <Button\n aria-label=\"Preview dashboard\"\n size=\"sm\"\n variant=\"outline\"\n onClick={onTogglePreview}\n >\n <Eye className=\"mr-2 h-4 w-4\" />\n Preview\n </Button>\n )}\n\n <Button size=\"sm\" onClick={onSave}>\n <Save className=\"mr-2 h-4 w-4\" />\n Save\n </Button>\n </div>\n </div>\n )\n}\n\n/**\n * Widget library sidebar showing available widgets\n */\nfunction DashboardBuilderWidgetLibrary({\n widgets,\n}: DashboardBuilderWidgetLibraryProps): ReactNode {\n const [collapsed, setCollapsed] = useState(false)\n\n // Group widgets by category\n const groupedWidgets = useMemo(() => {\n return widgets.reduce<Record<string, BuilderWidgetDefinition[]>>((acc, widget) => {\n const category = widget.category || \"default\"\n acc[category] ??= []\n acc[category].push(widget)\n return acc\n }, {})\n }, [widgets])\n\n const handleDragStart = (e: DragEvent<HTMLDivElement>, widget: BuilderWidgetDefinition): void => {\n e.dataTransfer.setData(\"widget-type\", widget.type)\n e.dataTransfer.effectAllowed = \"copy\"\n }\n\n return (\n <div\n className={dashboardBuilderWidgetLibraryVariants({ collapsed })}\n data-slot=\"dashboard-builder-widget-library\"\n >\n <div className=\"flex h-12 items-center justify-between border-b px-4\">\n {!collapsed && (\n <span className=\"text-sm font-medium\">Widgets</span>\n )}\n <Button\n aria-label={collapsed ? \"Expand widget library\" : \"Collapse widget library\"}\n className=\"ml-auto\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={() => { setCollapsed(!collapsed); }}\n >\n {collapsed ? (\n <ChevronRight className=\"h-4 w-4\" />\n ) : (\n <ChevronLeft className=\"h-4 w-4\" />\n )}\n </Button>\n </div>\n\n {!collapsed && (\n <div className=\"flex-1 overflow-y-auto p-4\">\n <div className=\"space-y-4\">\n {Object.entries(groupedWidgets).map(([category, categoryWidgets]) => (\n <div key={category}>\n <span className=\"mb-2 block text-xs font-medium uppercase text-muted-foreground\">\n {category}\n </span>\n <div className=\"space-y-2\">\n {categoryWidgets.map((widget) => (\n <div\n key={widget.type}\n draggable\n className={dashboardBuilderWidgetCardVariants({\n category: category as \"charts\" | \"default\" | \"kpi\" | \"tables\" | \"text\",\n })}\n aria-label={`Drag ${widget.name} widget`}\n role=\"button\"\n tabIndex={0}\n title={widget.description}\n onDragStart={(e: DragEvent<HTMLDivElement>) => { handleDragStart(e, widget); }}\n >\n <span className=\"text-muted-foreground\">{widget.icon}</span>\n <span className=\"text-sm\">{widget.name}</span>\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n )\n}\n\n/**\n * Canvas component - main work area for widgets\n */\nfunction DashboardBuilderCanvas({\n children,\n columns,\n onWidgetDrop,\n rowHeight,\n showGrid,\n widgets,\n}: DashboardBuilderCanvasProps & {\n children?: ReactNode\n onWidgetClick?: (id: string) => void\n onWidgetRemove?: (id: string) => void\n selectedWidgetId?: null | string\n widgetDefinitions: BuilderWidgetDefinition[]\n}): ReactNode {\n const canvasRef = useRef<HTMLDivElement>(null)\n const [isDragOver, setIsDragOver] = useState(false)\n\n const handleDragOver = (e: DragEvent<HTMLDivElement>): void => {\n e.preventDefault()\n e.dataTransfer.dropEffect = \"copy\"\n setIsDragOver(true)\n }\n\n const handleDragLeave = (): void => {\n setIsDragOver(false)\n }\n\n const handleDrop = (e: DragEvent<HTMLDivElement>): void => {\n e.preventDefault()\n setIsDragOver(false)\n\n const widgetType = e.dataTransfer.getData(\"widget-type\")\n if (!widgetType || !canvasRef.current) return\n\n const rect = canvasRef.current.getBoundingClientRect()\n const gridWidth = rect.width / columns\n const x = Math.floor((e.clientX - rect.left) / gridWidth)\n const y = Math.floor((e.clientY - rect.top) / rowHeight)\n\n onWidgetDrop?.(widgetType, { x, y })\n }\n\n const gridSizeStyle = {\n \"--grid-size\": `${String(100 / columns)}%`,\n } as React.CSSProperties\n\n return (\n <div\n ref={canvasRef}\n className={cn(\n dashboardBuilderCanvasVariants({ showGrid }),\n isDragOver && \"ring-2 ring-primary ring-offset-2\"\n )}\n aria-describedby=\"canvas-instructions\"\n aria-label=\"Dashboard canvas\"\n data-slot=\"dashboard-builder-canvas\"\n role=\"region\"\n style={gridSizeStyle}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <span className=\"sr-only\" id=\"canvas-instructions\">\n Drag widgets from the library to add them. Use arrow keys to move selected widgets.\n Press Delete to remove selected widget.\n </span>\n\n {widgets.length === 0 ? (\n <div className={dashboardBuilderEmptyStateVariants()}>\n <LayoutGrid className=\"h-12 w-12 opacity-50\" />\n <div className=\"text-center\">\n <p className=\"text-sm font-medium\">No widgets yet</p>\n <p className=\"text-xs text-muted-foreground\">\n Drag widgets from the library to get started\n </p>\n </div>\n </div>\n ) : (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: `repeat(${String(columns)}, 1fr)`,\n gap: \"var(--spacing-4)\",\n minHeight: \"100%\",\n }}\n className=\"relative\"\n >\n {children}\n </div>\n )}\n </div>\n )\n}\n\n/**\n * Properties panel for configuring selected widget\n */\nfunction DashboardBuilderPropertiesPanel({\n onClose,\n onConfigChange,\n widget,\n widgetDefinition,\n}: DashboardBuilderPropertiesPanelProps): ReactNode {\n const panelId = useId()\n\n if (!widget || !widgetDefinition) {\n return (\n <div\n className={dashboardBuilderPropertiesPanelVariants({ open: false })}\n data-slot=\"dashboard-builder-properties-panel\"\n />\n )\n }\n\n const handleFieldChange = (fieldName: string, value: unknown): void => {\n const newConfig = { ...widget.config, [fieldName]: value }\n onConfigChange?.(newConfig)\n }\n\n return (\n <div\n aria-labelledby={`${panelId}-title`}\n className={dashboardBuilderPropertiesPanelVariants({ open: true })}\n data-slot=\"dashboard-builder-properties-panel\"\n role=\"region\"\n >\n <div className=\"flex h-12 items-center justify-between border-b px-4\">\n <span className=\"text-sm font-medium\" id={`${panelId}-title`}>\n Properties\n </span>\n <Button\n aria-label=\"Close properties panel\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={onClose}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <div className=\"flex-1 overflow-y-auto p-4\">\n <div className=\"space-y-4\">\n <div>\n <span className=\"text-xs font-medium uppercase text-muted-foreground\">\n Widget: {widgetDefinition.name}\n </span>\n </div>\n\n <div className=\"h-px w-full bg-border\" />\n\n <div className=\"space-y-4\">\n {widgetDefinition.configSchema.fields.map((field) => (\n <div key={field.name} className=\"space-y-2\">\n <Label htmlFor={`${panelId}-${field.name}`}>{field.label}</Label>\n {field.type === \"text\" && (\n <TextInput\n value={(() => {\n const val = widget.config[field.name] ?? field.defaultValue ?? \"\"\n if (typeof val === \"object\") return JSON.stringify(val)\n return String(val as boolean | number | string)\n })()}\n id={`${panelId}-${field.name}`}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => { handleFieldChange(field.name, e.target.value); }}\n />\n )}\n {field.type === \"number\" && (\n <TextInput\n value={(() => {\n const val = widget.config[field.name] ?? field.defaultValue ?? 0\n if (typeof val === \"object\") return \"0\"\n return String(val as boolean | number | string)\n })()}\n id={`${panelId}-${field.name}`}\n type=\"number\"\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => { handleFieldChange(field.name, Number(e.target.value)); }}\n />\n )}\n {field.type === \"boolean\" && (\n <input\n checked={Boolean(widget.config[field.name] ?? field.defaultValue)}\n className=\"h-4 w-4\"\n id={`${panelId}-${field.name}`}\n type=\"checkbox\"\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => { handleFieldChange(field.name, e.target.checked); }}\n />\n )}\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n )\n}\n\n/**\n * Individual widget component on the canvas\n */\nfunction DashboardBuilderWidgetComponent({\n isDragging,\n isSelected,\n onClick,\n onRemove,\n widget,\n widgetDefinition,\n}: DashboardBuilderWidgetComponentProps): ReactNode {\n const WidgetComponent = widgetDefinition?.component\n\n const state = isSelected ? \"selected\" : isDragging ? \"dragging\" : \"idle\"\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>): void => {\n if (e.key === \"Delete\" || e.key === \"Backspace\") {\n e.preventDefault()\n onRemove?.()\n }\n }\n\n return (\n <div\n style={{\n gridColumn: `span ${String(widget.w)}`,\n gridRow: `span ${String(widget.h)}`,\n minHeight: `${String(widget.h * 100)}px`,\n }}\n aria-label={`Widget: ${widget.title}`}\n aria-selected={isSelected}\n className={dashboardBuilderWidgetVariants({ state })}\n data-slot=\"dashboard-builder-widget\"\n data-widget-id={widget.id}\n role=\"button\"\n tabIndex={0}\n onClick={onClick}\n onKeyDown={handleKeyDown}\n >\n {/* Widget header */}\n <div className=\"flex items-center justify-between border-b bg-muted/50 px-3 py-2\">\n <div className=\"flex items-center gap-2\">\n <GripVertical className=\"h-4 w-4 cursor-grab text-muted-foreground\" />\n <span className=\"text-xs font-medium\">{widget.title}</span>\n </div>\n <Button\n aria-label={`Remove ${widget.title}`}\n className=\"opacity-0 group-hover:opacity-100\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={(e) => {\n e.stopPropagation()\n onRemove?.()\n }}\n >\n <Trash2 className=\"h-3 w-3\" />\n </Button>\n </div>\n\n {/* Widget content */}\n <div className=\"flex-1 overflow-hidden p-2\">\n {WidgetComponent ? (\n <WidgetComponent\n config={widget.config}\n height={widget.h}\n id={widget.id}\n title={widget.title}\n width={widget.w}\n />\n ) : (\n <div className=\"flex h-full items-center justify-center text-muted-foreground\">\n <span className=\"text-xs\">Unknown widget type</span>\n </div>\n )}\n </div>\n </div>\n )\n}\n\n// ============================================\n// MAIN COMPONENT\n// ============================================\n\n/**\n * DashboardBuilder - Visual dashboard construction interface.\n *\n * Allows users to create, edit and customize dashboards through a drag-and-drop\n * interface with a widget library and properties panel.\n *\n * @example\n * ```tsx\n * <DashboardBuilder\n * onSave={({ widgets, layout }) => console.log('Saved:', widgets, layout)}\n * />\n * ```\n *\n * @example\n * ```tsx\n * const initialWidgets = [\n * { id: '1', type: 'kpi', title: 'Sales', x: 0, y: 0, w: 3, h: 2, config: { value: '150k' } }\n * ];\n *\n * <DashboardBuilder\n * initialWidgets={initialWidgets}\n * columns={12}\n * rowHeight={100}\n * />\n * ```\n */\nfunction DashboardBuilder({\n \"aria-label\": ariaLabel = \"Dashboard builder\",\n allowOverlap = false,\n autoSaveInterval = 30000,\n availableWidgets = defaultWidgets,\n className,\n columns = 12,\n enableAutoSave = false,\n initialLayout,\n initialWidgets = [],\n mode,\n onLayoutChange,\n onPreview,\n onRedo,\n onSave,\n onUndo,\n onWidgetAdd,\n onWidgetRemove,\n onWidgetUpdate,\n rowHeight = 100,\n showGrid = true,\n showPreview = true,\n showUndo = true,\n size,\n snapToGrid = true,\n ...props\n}: DashboardBuilderProps): ReactNode {\n const builderId = useId()\n\n // State\n const [widgets, setWidgets] = useState<BuilderWidget[]>(initialWidgets)\n const [selectedWidgetId, setSelectedWidgetId] = useState<null | string>(null)\n const [_builderMode, setBuilderMode] = useState<BuilderMode>(\"edit\")\n const [_builderState, setBuilderState] = useState<BuilderState>(\"idle\")\n const [history, setHistory] = useState<BuilderWidget[][]>([initialWidgets])\n const [historyIndex, setHistoryIndex] = useState(0)\n\n // Suppress unused variable warnings for future implementation\n void snapToGrid\n void allowOverlap\n void enableAutoSave\n void autoSaveInterval\n void initialLayout\n\n // Computed\n const selectedWidget = useMemo(\n () => widgets.find((w) => w.id === selectedWidgetId) ?? null,\n [widgets, selectedWidgetId]\n )\n const selectedWidgetDefinition = useMemo(\n () =>\n selectedWidget\n ? availableWidgets.find((w) => w.type === selectedWidget.type)\n : undefined,\n [selectedWidget, availableWidgets]\n )\n\n const canUndo = historyIndex > 0\n const canRedo = historyIndex < history.length - 1\n\n // Helpers\n const updateHistory = useCallback((newWidgets: BuilderWidget[]) => {\n setHistory((prev) => {\n const newHistory = prev.slice(0, historyIndex + 1)\n newHistory.push(newWidgets)\n return newHistory\n })\n setHistoryIndex((prev) => prev + 1)\n }, [historyIndex])\n\n const generateId = (): string => `widget-${String(Date.now())}-${Math.random().toString(36).slice(2, 9)}`\n\n const getLayoutConfig = useCallback((): BuilderLayoutConfig => {\n return {\n columns,\n rowHeight,\n widgets: widgets.map((w) => ({\n i: w.id,\n x: w.x,\n y: w.y,\n w: w.w,\n h: w.h,\n })),\n }\n }, [columns, rowHeight, widgets])\n\n // Event handlers\n const handleWidgetDrop = useCallback(\n (widgetType: string, position: BuilderPosition) => {\n const definition = availableWidgets.find((w) => w.type === widgetType)\n if (!definition) return\n\n const newWidget: BuilderWidget = {\n id: generateId(),\n type: widgetType,\n title: definition.name,\n x: position.x,\n y: position.y,\n w: definition.defaultSize.w,\n h: definition.defaultSize.h,\n config: definition.configSchema.fields.reduce<Record<string, unknown>>(\n (acc, field) => {\n acc[field.name] = field.defaultValue\n return acc\n },\n {}\n ),\n }\n\n const newWidgets = [...widgets, newWidget]\n setWidgets(newWidgets)\n updateHistory(newWidgets)\n setSelectedWidgetId(newWidget.id)\n\n onWidgetAdd?.({ widget: newWidget, position })\n onLayoutChange?.(getLayoutConfig())\n },\n [availableWidgets, widgets, updateHistory, onWidgetAdd, onLayoutChange, getLayoutConfig]\n )\n\n const handleWidgetRemove = useCallback(\n (widgetId: string) => {\n const newWidgets = widgets.filter((w) => w.id !== widgetId)\n setWidgets(newWidgets)\n updateHistory(newWidgets)\n\n if (selectedWidgetId === widgetId) {\n setSelectedWidgetId(null)\n }\n\n onWidgetRemove?.({ widgetId })\n onLayoutChange?.(getLayoutConfig())\n },\n [widgets, selectedWidgetId, updateHistory, onWidgetRemove, onLayoutChange, getLayoutConfig]\n )\n\n const handleWidgetSelect = useCallback((widgetId: string) => {\n setSelectedWidgetId(widgetId)\n setBuilderState(\"configuring\")\n }, [])\n\n const handleConfigChange = useCallback(\n (newConfig: Record<string, unknown>) => {\n if (!selectedWidgetId) return\n\n const newWidgets = widgets.map((w) =>\n w.id === selectedWidgetId ? { ...w, config: newConfig } : w\n )\n setWidgets(newWidgets)\n updateHistory(newWidgets)\n\n onWidgetUpdate?.({ widgetId: selectedWidgetId, config: newConfig })\n },\n [selectedWidgetId, widgets, updateHistory, onWidgetUpdate]\n )\n\n const handleSave = useCallback(() => {\n setBuilderState(\"saving\")\n onSave?.({ widgets, layout: getLayoutConfig() })\n setBuilderState(\"idle\")\n }, [widgets, getLayoutConfig, onSave])\n\n const handleUndo = useCallback(() => {\n if (!canUndo) return\n const newIndex = historyIndex - 1\n setHistoryIndex(newIndex)\n setWidgets(history[newIndex] ?? [])\n onUndo?.()\n }, [canUndo, historyIndex, history, onUndo])\n\n const handleRedo = useCallback(() => {\n if (!canRedo) return\n const newIndex = historyIndex + 1\n setHistoryIndex(newIndex)\n setWidgets(history[newIndex] ?? [])\n onRedo?.()\n }, [canRedo, historyIndex, history, onRedo])\n\n const handlePreview = useCallback(() => {\n setBuilderMode(\"preview\")\n onPreview?.()\n }, [onPreview])\n\n const handleCloseProperties = useCallback(() => {\n setSelectedWidgetId(null)\n setBuilderState(\"idle\")\n }, [])\n\n // Keyboard shortcuts\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n // Ctrl/Cmd + S: Save\n if ((e.ctrlKey || e.metaKey) && e.key === \"s\") {\n e.preventDefault()\n handleSave()\n }\n // Ctrl/Cmd + Z: Undo\n if ((e.ctrlKey || e.metaKey) && e.key === \"z\" && !e.shiftKey) {\n e.preventDefault()\n handleUndo()\n }\n // Ctrl/Cmd + Shift + Z or Ctrl/Cmd + Y: Redo\n if ((e.ctrlKey || e.metaKey) && (e.key === \"y\" || (e.key === \"z\" && e.shiftKey))) {\n e.preventDefault()\n handleRedo()\n }\n // Delete: Remove selected widget\n if ((e.key === \"Delete\" || e.key === \"Backspace\") && selectedWidgetId) {\n e.preventDefault()\n handleWidgetRemove(selectedWidgetId)\n }\n },\n [handleSave, handleUndo, handleRedo, selectedWidgetId, handleWidgetRemove]\n )\n\n return (\n <div\n aria-label={ariaLabel}\n className={cn(dashboardBuilderVariants({ mode, size }), className)}\n data-slot=\"dashboard-builder\"\n id={builderId}\n role=\"application\"\n tabIndex={-1}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {/* Toolbar */}\n <div className=\"flex flex-col\">\n <DashboardBuilderToolbar\n canRedo={canRedo}\n canUndo={canUndo}\n showPreview={showPreview}\n showUndo={showUndo}\n onRedo={handleRedo}\n onSave={handleSave}\n onTogglePreview={handlePreview}\n onUndo={handleUndo}\n />\n\n {/* Main content area */}\n <div className=\"flex flex-1 overflow-hidden\">\n {/* Widget Library */}\n <DashboardBuilderWidgetLibrary widgets={availableWidgets} />\n\n {/* Canvas */}\n <div className=\"flex flex-1 flex-col\">\n <DashboardBuilderCanvas\n columns={columns}\n rowHeight={rowHeight}\n selectedWidgetId={selectedWidgetId}\n showGrid={showGrid}\n widgetDefinitions={availableWidgets}\n widgets={widgets}\n onWidgetClick={handleWidgetSelect}\n onWidgetDrop={handleWidgetDrop}\n onWidgetRemove={handleWidgetRemove}\n >\n {widgets.map((widget) => {\n const definition = availableWidgets.find(\n (w) => w.type === widget.type\n )\n return (\n <DashboardBuilderWidgetComponent\n key={widget.id}\n isSelected={widget.id === selectedWidgetId}\n widget={widget}\n widgetDefinition={definition}\n onClick={() => { handleWidgetSelect(widget.id); }}\n onRemove={() => { handleWidgetRemove(widget.id); }}\n />\n )\n })}\n </DashboardBuilderCanvas>\n </div>\n\n {/* Properties Panel */}\n <DashboardBuilderPropertiesPanel\n widget={selectedWidget}\n widgetDefinition={selectedWidgetDefinition}\n onClose={handleCloseProperties}\n onConfigChange={handleConfigChange}\n />\n </div>\n </div>\n </div>\n )\n}\n\nDashboardBuilder.displayName = \"DashboardBuilder\"\n\n// ============================================\n// EXPORTS\n// ============================================\n\nexport {\n DashboardBuilder,\n DashboardBuilderCanvas,\n DashboardBuilderPropertiesPanel,\n DashboardBuilderToolbar,\n DashboardBuilderWidgetComponent,\n DashboardBuilderWidgetLibrary,\n defaultWidgets,\n}\nexport type {\n DashboardBuilderCanvasProps,\n DashboardBuilderPropertiesPanelProps,\n DashboardBuilderProps,\n DashboardBuilderToolbarProps,\n DashboardBuilderWidgetComponentProps,\n DashboardBuilderWidgetLibraryProps,\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/workflow/DashboardBuilder/DashboardBuilder.variants.ts","../src/components/workflow/DashboardBuilder/DashboardBuilder.tsx"],"names":[],"mappings":"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","file":"chunk-FLERVSKG.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * DashboardBuilder container variants\n */\nexport const dashboardBuilderVariants = cva(\n \"relative flex h-full w-full overflow-hidden rounded-lg border bg-background transition-all duration-300\",\n {\n variants: {\n mode: {\n edit: \"\",\n preview: \"\",\n configure: \"\",\n },\n size: {\n default: \"\",\n compact: \"\",\n full: \"h-screen\",\n },\n },\n defaultVariants: {\n mode: \"edit\",\n size: \"default\",\n },\n }\n)\n\n/**\n * Toolbar variants\n */\nexport const dashboardBuilderToolbarVariants = cva(\n \"flex h-14 shrink-0 items-center justify-between border-b bg-card px-4 transition-all duration-200\",\n {\n variants: {\n position: {\n top: \"\",\n bottom: \"border-b-0 border-t\",\n },\n },\n defaultVariants: {\n position: \"top\",\n },\n }\n)\n\n/**\n * Canvas (main work area) variants\n */\nexport const dashboardBuilderCanvasVariants = cva(\n \"relative flex-1 overflow-auto bg-muted/30 p-4 transition-all duration-200\",\n {\n variants: {\n showGrid: {\n true: [\n \"bg-[linear-gradient(to_right,var(--border)_1px,transparent_1px),linear-gradient(to_bottom,var(--border)_1px,transparent_1px)]\",\n \"bg-[size:var(--grid-size)_var(--grid-size)]\",\n ],\n false: \"\",\n },\n state: {\n idle: \"\",\n dragging: \"cursor-grabbing\",\n resizing: \"cursor-nwse-resize\",\n configuring: \"\",\n saving: \"pointer-events-none opacity-75\",\n },\n },\n defaultVariants: {\n showGrid: true,\n state: \"idle\",\n },\n }\n)\n\n/**\n * Widget library sidebar variants\n */\nexport const dashboardBuilderWidgetLibraryVariants = cva(\n \"flex w-64 shrink-0 flex-col border-r bg-card transition-all duration-200\",\n {\n variants: {\n collapsed: {\n true: \"w-14\",\n false: \"w-64\",\n },\n position: {\n left: \"border-r\",\n right: \"border-l border-r-0\",\n },\n },\n defaultVariants: {\n collapsed: false,\n position: \"left\",\n },\n }\n)\n\n/**\n * Properties panel variants\n */\nexport const dashboardBuilderPropertiesPanelVariants = cva(\n \"flex w-72 shrink-0 flex-col border-l bg-card transition-all duration-200\",\n {\n variants: {\n open: {\n true: \"w-72\",\n false: \"w-0 overflow-hidden border-l-0\",\n },\n },\n defaultVariants: {\n open: false,\n },\n }\n)\n\n/**\n * Widget card in library variants\n */\nexport const dashboardBuilderWidgetCardVariants = cva(\n \"flex cursor-grab items-center gap-3 rounded-md border bg-background p-3 transition-all duration-200 hover:border-primary hover:shadow-sm active:cursor-grabbing\",\n {\n variants: {\n category: {\n default: \"\",\n charts: \"border-l-2 border-l-blue-500\",\n kpi: \"border-l-2 border-l-green-500\",\n tables: \"border-l-2 border-l-purple-500\",\n text: \"border-l-2 border-l-orange-500\",\n },\n dragging: {\n true: \"opacity-50\",\n false: \"\",\n },\n },\n defaultVariants: {\n category: \"default\",\n dragging: false,\n },\n }\n)\n\n/**\n * Widget on canvas variants\n */\nexport const dashboardBuilderWidgetVariants = cva(\n \"group relative rounded-md border-2 bg-card transition-all duration-200\",\n {\n variants: {\n state: {\n idle: \"border-transparent hover:border-muted-foreground/30\",\n selected: \"border-primary ring-2 ring-primary/20\",\n dragging: \"border-primary border-dashed opacity-75\",\n resizing: \"border-primary\",\n preview: \"border-border\",\n },\n },\n defaultVariants: {\n state: \"idle\",\n },\n }\n)\n\n/**\n * Widget resize handle variants\n */\nexport const dashboardBuilderResizeHandleVariants = cva(\n \"absolute opacity-0 transition-opacity group-hover:opacity-100\",\n {\n variants: {\n position: {\n se: \"bottom-0 right-0 cursor-se-resize\",\n sw: \"bottom-0 left-0 cursor-sw-resize\",\n ne: \"right-0 top-0 cursor-ne-resize\",\n nw: \"left-0 top-0 cursor-nw-resize\",\n e: \"right-0 top-1/2 -translate-y-1/2 cursor-e-resize\",\n w: \"left-0 top-1/2 -translate-y-1/2 cursor-w-resize\",\n n: \"left-1/2 top-0 -translate-x-1/2 cursor-n-resize\",\n s: \"bottom-0 left-1/2 -translate-x-1/2 cursor-s-resize\",\n },\n size: {\n sm: \"h-2 w-2\",\n default: \"h-3 w-3\",\n lg: \"h-4 w-4\",\n },\n },\n defaultVariants: {\n position: \"se\",\n size: \"default\",\n },\n }\n)\n\n/**\n * Drop zone indicator variants\n */\nexport const dashboardBuilderDropZoneVariants = cva(\n \"pointer-events-none absolute rounded-md border-2 transition-all duration-200\",\n {\n variants: {\n active: {\n true: \"border-primary bg-primary/10\",\n false: \"border-transparent\",\n },\n valid: {\n true: \"border-primary bg-primary/10\",\n false: \"border-destructive bg-destructive/10\",\n },\n },\n defaultVariants: {\n active: false,\n valid: true,\n },\n }\n)\n\n/**\n * Empty state variants for canvas\n */\nexport const dashboardBuilderEmptyStateVariants = cva(\n \"flex h-full flex-col items-center justify-center gap-4 text-muted-foreground\",\n {\n variants: {\n variant: {\n default: \"\",\n minimal: \"gap-2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\n// Export variant prop types\nexport type DashboardBuilderVariantProps = VariantProps<\n typeof dashboardBuilderVariants\n>\nexport type DashboardBuilderToolbarVariantProps = VariantProps<\n typeof dashboardBuilderToolbarVariants\n>\nexport type DashboardBuilderCanvasVariantProps = VariantProps<\n typeof dashboardBuilderCanvasVariants\n>\nexport type DashboardBuilderWidgetLibraryVariantProps = VariantProps<\n typeof dashboardBuilderWidgetLibraryVariants\n>\nexport type DashboardBuilderPropertiesPanelVariantProps = VariantProps<\n typeof dashboardBuilderPropertiesPanelVariants\n>\nexport type DashboardBuilderWidgetCardVariantProps = VariantProps<\n typeof dashboardBuilderWidgetCardVariants\n>\nexport type DashboardBuilderWidgetVariantProps = VariantProps<\n typeof dashboardBuilderWidgetVariants\n>\nexport type DashboardBuilderResizeHandleVariantProps = VariantProps<\n typeof dashboardBuilderResizeHandleVariants\n>\nexport type DashboardBuilderDropZoneVariantProps = VariantProps<\n typeof dashboardBuilderDropZoneVariants\n>\nexport type DashboardBuilderEmptyStateVariantProps = VariantProps<\n typeof dashboardBuilderEmptyStateVariants\n>\n","import type {\n BuilderLayoutConfig,\n BuilderMode,\n BuilderPosition,\n BuilderState,\n BuilderWidget,\n BuilderWidgetDefinition,\n DashboardBuilderCanvasProps,\n DashboardBuilderPropertiesPanelProps,\n DashboardBuilderProps,\n DashboardBuilderToolbarProps,\n DashboardBuilderWidgetComponentProps,\n DashboardBuilderWidgetLibraryProps,\n} from \"./DashboardBuilder.types\"\nimport type { DragEvent, KeyboardEvent, ReactNode } from \"react\"\n\nimport {\n BarChart2,\n ChevronLeft,\n ChevronRight,\n Eye,\n GripVertical,\n LayoutGrid,\n PieChart,\n Redo2,\n Save,\n Table,\n Trash2,\n Type,\n Undo2,\n X,\n} from \"lucide-react\"\nimport { useCallback, useId, useMemo, useRef, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { TextInput } from \"../../forms/TextInput\"\nimport { Button } from \"../../primitives/Button\"\nimport { Label } from \"../../primitives/Label\"\nimport {\n dashboardBuilderCanvasVariants,\n dashboardBuilderEmptyStateVariants,\n dashboardBuilderPropertiesPanelVariants,\n dashboardBuilderToolbarVariants,\n dashboardBuilderVariants,\n dashboardBuilderWidgetCardVariants,\n dashboardBuilderWidgetLibraryVariants,\n dashboardBuilderWidgetVariants,\n} from \"./DashboardBuilder.variants\"\n\n// ============================================\n// DEFAULT WIDGET DEFINITIONS\n// ============================================\n\n/**\n * Placeholder widget component for demo purposes\n */\nfunction PlaceholderWidget({ config, title }: { config: Record<string, unknown>; title: string }): ReactNode {\n const value = config[\"value\"]\n const getDisplayValue = (): string => {\n if (value === null || value === undefined) return \"\"\n if (typeof value === \"object\") return JSON.stringify(value)\n return String(value as boolean | number | string)\n }\n return (\n <div className=\"flex h-full flex-col items-center justify-center p-4\">\n <span className=\"text-sm font-medium\">{title}</span>\n {value !== undefined && value !== null && (\n <span className=\"text-2xl font-bold text-primary\">\n {getDisplayValue()}\n </span>\n )}\n </div>\n )\n}\n\n/**\n * Default widgets available in the library\n */\nconst defaultWidgets: BuilderWidgetDefinition[] = [\n {\n type: \"kpi\",\n name: \"KPI Card\",\n description: \"Display a key performance indicator\",\n icon: <LayoutGrid className=\"h-4 w-4\" />,\n category: \"kpi\",\n defaultSize: { w: 3, h: 2 },\n minSize: { w: 2, h: 1 },\n maxSize: { w: 6, h: 4 },\n configSchema: {\n fields: [\n { name: \"title\", type: \"text\", label: \"Title\", defaultValue: \"KPI\" },\n { name: \"value\", type: \"text\", label: \"Value\", defaultValue: \"0\" },\n { name: \"unit\", type: \"text\", label: \"Unit\", defaultValue: \"\" },\n ],\n },\n component: PlaceholderWidget,\n },\n {\n type: \"chart-line\",\n name: \"Line Chart\",\n description: \"Display data as a line chart\",\n icon: <BarChart2 className=\"h-4 w-4\" />,\n category: \"charts\",\n defaultSize: { w: 6, h: 4 },\n minSize: { w: 4, h: 3 },\n configSchema: {\n fields: [\n { name: \"title\", type: \"text\", label: \"Title\", defaultValue: \"Chart\" },\n {\n name: \"showLegend\",\n type: \"boolean\",\n label: \"Show Legend\",\n defaultValue: true,\n },\n ],\n },\n component: PlaceholderWidget,\n },\n {\n type: \"chart-pie\",\n name: \"Pie Chart\",\n description: \"Display data as a pie chart\",\n icon: <PieChart className=\"h-4 w-4\" />,\n category: \"charts\",\n defaultSize: { w: 4, h: 4 },\n minSize: { w: 3, h: 3 },\n configSchema: {\n fields: [\n { name: \"title\", type: \"text\", label: \"Title\", defaultValue: \"Chart\" },\n ],\n },\n component: PlaceholderWidget,\n },\n {\n type: \"table\",\n name: \"Data Table\",\n description: \"Display data in a table format\",\n icon: <Table className=\"h-4 w-4\" />,\n category: \"tables\",\n defaultSize: { w: 6, h: 4 },\n minSize: { w: 4, h: 3 },\n configSchema: {\n fields: [\n { name: \"title\", type: \"text\", label: \"Title\", defaultValue: \"Table\" },\n {\n name: \"pageSize\",\n type: \"number\",\n label: \"Page Size\",\n defaultValue: 10,\n },\n ],\n },\n component: PlaceholderWidget,\n },\n {\n type: \"text\",\n name: \"Text Block\",\n description: \"Display formatted text content\",\n icon: <Type className=\"h-4 w-4\" />,\n category: \"text\",\n defaultSize: { w: 4, h: 2 },\n minSize: { w: 2, h: 1 },\n configSchema: {\n fields: [\n { name: \"content\", type: \"text\", label: \"Content\", defaultValue: \"\" },\n ],\n },\n component: PlaceholderWidget,\n },\n]\n\n// ============================================\n// SUB-COMPONENTS\n// ============================================\n\n/**\n * Toolbar component with save, undo, redo, and preview actions\n */\nfunction DashboardBuilderToolbar({\n canRedo,\n canUndo,\n onRedo,\n onSave,\n onTogglePreview,\n onUndo,\n showPreview,\n showUndo,\n}: DashboardBuilderToolbarProps): ReactNode {\n return (\n <div\n className={dashboardBuilderToolbarVariants()}\n data-slot=\"dashboard-builder-toolbar\"\n >\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium\">Dashboard Builder</span>\n </div>\n\n <div className=\"flex items-center gap-2\">\n {showUndo && (\n <>\n <Button\n aria-label=\"Undo\"\n disabled={!canUndo}\n size=\"sm\"\n variant=\"ghost\"\n onClick={onUndo}\n >\n <Undo2 className=\"h-4 w-4\" />\n </Button>\n <Button\n aria-label=\"Redo\"\n disabled={!canRedo}\n size=\"sm\"\n variant=\"ghost\"\n onClick={onRedo}\n >\n <Redo2 className=\"h-4 w-4\" />\n </Button>\n <div className=\"mx-2 h-6 w-px bg-border\" />\n </>\n )}\n\n {showPreview && (\n <Button\n aria-label=\"Preview dashboard\"\n size=\"sm\"\n variant=\"outline\"\n onClick={onTogglePreview}\n >\n <Eye className=\"mr-2 h-4 w-4\" />\n Preview\n </Button>\n )}\n\n <Button size=\"sm\" onClick={onSave}>\n <Save className=\"mr-2 h-4 w-4\" />\n Save\n </Button>\n </div>\n </div>\n )\n}\n\n/**\n * Widget library sidebar showing available widgets\n */\nfunction DashboardBuilderWidgetLibrary({\n widgets,\n}: DashboardBuilderWidgetLibraryProps): ReactNode {\n const [collapsed, setCollapsed] = useState(false)\n\n // Group widgets by category\n const groupedWidgets = useMemo(() => {\n return widgets.reduce<Record<string, BuilderWidgetDefinition[]>>((acc, widget) => {\n const category = widget.category || \"default\"\n acc[category] ??= []\n acc[category].push(widget)\n return acc\n }, {})\n }, [widgets])\n\n const handleDragStart = (e: DragEvent<HTMLDivElement>, widget: BuilderWidgetDefinition): void => {\n e.dataTransfer.setData(\"widget-type\", widget.type)\n e.dataTransfer.effectAllowed = \"copy\"\n }\n\n return (\n <div\n className={dashboardBuilderWidgetLibraryVariants({ collapsed })}\n data-slot=\"dashboard-builder-widget-library\"\n >\n <div className=\"flex h-12 items-center justify-between border-b px-4\">\n {!collapsed && (\n <span className=\"text-sm font-medium\">Widgets</span>\n )}\n <Button\n aria-label={collapsed ? \"Expand widget library\" : \"Collapse widget library\"}\n className=\"ml-auto\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={() => { setCollapsed(!collapsed); }}\n >\n {collapsed ? (\n <ChevronRight className=\"h-4 w-4\" />\n ) : (\n <ChevronLeft className=\"h-4 w-4\" />\n )}\n </Button>\n </div>\n\n {!collapsed && (\n <div className=\"flex-1 overflow-y-auto p-4\">\n <div className=\"space-y-4\">\n {Object.entries(groupedWidgets).map(([category, categoryWidgets]) => (\n <div key={category}>\n <span className=\"mb-2 block text-xs font-medium uppercase text-muted-foreground\">\n {category}\n </span>\n <div className=\"space-y-2\">\n {categoryWidgets.map((widget) => (\n <div\n key={widget.type}\n draggable\n className={dashboardBuilderWidgetCardVariants({\n category: category as \"charts\" | \"default\" | \"kpi\" | \"tables\" | \"text\",\n })}\n aria-label={`Drag ${widget.name} widget`}\n role=\"button\"\n tabIndex={0}\n title={widget.description}\n onDragStart={(e: DragEvent<HTMLDivElement>) => { handleDragStart(e, widget); }}\n >\n <span className=\"text-muted-foreground\">{widget.icon}</span>\n <span className=\"text-sm\">{widget.name}</span>\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n )\n}\n\n/**\n * Canvas component - main work area for widgets\n */\nfunction DashboardBuilderCanvas({\n children,\n columns,\n onWidgetDrop,\n rowHeight,\n showGrid,\n widgets,\n}: DashboardBuilderCanvasProps & {\n children?: ReactNode\n onWidgetClick?: (id: string) => void\n onWidgetRemove?: (id: string) => void\n selectedWidgetId?: null | string\n widgetDefinitions: BuilderWidgetDefinition[]\n}): ReactNode {\n const canvasRef = useRef<HTMLDivElement>(null)\n const [isDragOver, setIsDragOver] = useState(false)\n\n const handleDragOver = (e: DragEvent<HTMLDivElement>): void => {\n e.preventDefault()\n e.dataTransfer.dropEffect = \"copy\"\n setIsDragOver(true)\n }\n\n const handleDragLeave = (): void => {\n setIsDragOver(false)\n }\n\n const handleDrop = (e: DragEvent<HTMLDivElement>): void => {\n e.preventDefault()\n setIsDragOver(false)\n\n const widgetType = e.dataTransfer.getData(\"widget-type\")\n if (!widgetType || !canvasRef.current) return\n\n const rect = canvasRef.current.getBoundingClientRect()\n const gridWidth = rect.width / columns\n const x = Math.floor((e.clientX - rect.left) / gridWidth)\n const y = Math.floor((e.clientY - rect.top) / rowHeight)\n\n onWidgetDrop?.(widgetType, { x, y })\n }\n\n const gridSizeStyle = {\n \"--grid-size\": `${String(100 / columns)}%`,\n } as React.CSSProperties\n\n return (\n <div\n ref={canvasRef}\n className={cn(\n dashboardBuilderCanvasVariants({ showGrid }),\n isDragOver && \"ring-2 ring-primary ring-offset-2\"\n )}\n aria-describedby=\"canvas-instructions\"\n aria-label=\"Dashboard canvas\"\n data-slot=\"dashboard-builder-canvas\"\n role=\"region\"\n style={gridSizeStyle}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <span className=\"sr-only\" id=\"canvas-instructions\">\n Drag widgets from the library to add them. Use arrow keys to move selected widgets.\n Press Delete to remove selected widget.\n </span>\n\n {widgets.length === 0 ? (\n <div className={dashboardBuilderEmptyStateVariants()}>\n <LayoutGrid className=\"h-12 w-12 opacity-50\" />\n <div className=\"text-center\">\n <p className=\"text-sm font-medium\">No widgets yet</p>\n <p className=\"text-xs text-muted-foreground\">\n Drag widgets from the library to get started\n </p>\n </div>\n </div>\n ) : (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: `repeat(${String(columns)}, 1fr)`,\n gap: \"var(--spacing-4)\",\n minHeight: \"100%\",\n }}\n className=\"relative\"\n >\n {children}\n </div>\n )}\n </div>\n )\n}\n\n/**\n * Properties panel for configuring selected widget\n */\nfunction DashboardBuilderPropertiesPanel({\n onClose,\n onConfigChange,\n widget,\n widgetDefinition,\n}: DashboardBuilderPropertiesPanelProps): ReactNode {\n const panelId = useId()\n\n if (!widget || !widgetDefinition) {\n return (\n <div\n className={dashboardBuilderPropertiesPanelVariants({ open: false })}\n data-slot=\"dashboard-builder-properties-panel\"\n />\n )\n }\n\n const handleFieldChange = (fieldName: string, value: unknown): void => {\n const newConfig = { ...widget.config, [fieldName]: value }\n onConfigChange?.(newConfig)\n }\n\n return (\n <div\n aria-labelledby={`${panelId}-title`}\n className={dashboardBuilderPropertiesPanelVariants({ open: true })}\n data-slot=\"dashboard-builder-properties-panel\"\n role=\"region\"\n >\n <div className=\"flex h-12 items-center justify-between border-b px-4\">\n <span className=\"text-sm font-medium\" id={`${panelId}-title`}>\n Properties\n </span>\n <Button\n aria-label=\"Close properties panel\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={onClose}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <div className=\"flex-1 overflow-y-auto p-4\">\n <div className=\"space-y-4\">\n <div>\n <span className=\"text-xs font-medium uppercase text-muted-foreground\">\n Widget: {widgetDefinition.name}\n </span>\n </div>\n\n <div className=\"h-px w-full bg-border\" />\n\n <div className=\"space-y-4\">\n {widgetDefinition.configSchema.fields.map((field) => (\n <div key={field.name} className=\"space-y-2\">\n <Label htmlFor={`${panelId}-${field.name}`}>{field.label}</Label>\n {field.type === \"text\" && (\n <TextInput\n value={(() => {\n const val = widget.config[field.name] ?? field.defaultValue ?? \"\"\n if (typeof val === \"object\") return JSON.stringify(val)\n return String(val as boolean | number | string)\n })()}\n id={`${panelId}-${field.name}`}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => { handleFieldChange(field.name, e.target.value); }}\n />\n )}\n {field.type === \"number\" && (\n <TextInput\n value={(() => {\n const val = widget.config[field.name] ?? field.defaultValue ?? 0\n if (typeof val === \"object\") return \"0\"\n return String(val as boolean | number | string)\n })()}\n id={`${panelId}-${field.name}`}\n type=\"number\"\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => { handleFieldChange(field.name, Number(e.target.value)); }}\n />\n )}\n {field.type === \"boolean\" && (\n <input\n checked={Boolean(widget.config[field.name] ?? field.defaultValue)}\n className=\"h-4 w-4\"\n id={`${panelId}-${field.name}`}\n type=\"checkbox\"\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => { handleFieldChange(field.name, e.target.checked); }}\n />\n )}\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n )\n}\n\n/**\n * Individual widget component on the canvas\n */\nfunction DashboardBuilderWidgetComponent({\n isDragging,\n isSelected,\n onClick,\n onRemove,\n widget,\n widgetDefinition,\n}: DashboardBuilderWidgetComponentProps): ReactNode {\n const WidgetComponent = widgetDefinition?.component\n\n const state = isSelected ? \"selected\" : isDragging ? \"dragging\" : \"idle\"\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>): void => {\n if (e.key === \"Delete\" || e.key === \"Backspace\") {\n e.preventDefault()\n onRemove?.()\n }\n }\n\n return (\n <div\n style={{\n gridColumn: `span ${String(widget.w)}`,\n gridRow: `span ${String(widget.h)}`,\n minHeight: `${String(widget.h * 100)}px`,\n }}\n aria-label={`Widget: ${widget.title}`}\n aria-selected={isSelected}\n className={dashboardBuilderWidgetVariants({ state })}\n data-slot=\"dashboard-builder-widget\"\n data-widget-id={widget.id}\n role=\"button\"\n tabIndex={0}\n onClick={onClick}\n onKeyDown={handleKeyDown}\n >\n {/* Widget header */}\n <div className=\"flex items-center justify-between border-b bg-muted/50 px-3 py-2\">\n <div className=\"flex items-center gap-2\">\n <GripVertical className=\"h-4 w-4 cursor-grab text-muted-foreground\" />\n <span className=\"text-xs font-medium\">{widget.title}</span>\n </div>\n <Button\n aria-label={`Remove ${widget.title}`}\n className=\"opacity-0 group-hover:opacity-100\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={(e) => {\n e.stopPropagation()\n onRemove?.()\n }}\n >\n <Trash2 className=\"h-3 w-3\" />\n </Button>\n </div>\n\n {/* Widget content */}\n <div className=\"flex-1 overflow-hidden p-2\">\n {WidgetComponent ? (\n <WidgetComponent\n config={widget.config}\n height={widget.h}\n id={widget.id}\n title={widget.title}\n width={widget.w}\n />\n ) : (\n <div className=\"flex h-full items-center justify-center text-muted-foreground\">\n <span className=\"text-xs\">Unknown widget type</span>\n </div>\n )}\n </div>\n </div>\n )\n}\n\n// ============================================\n// MAIN COMPONENT\n// ============================================\n\n/**\n * DashboardBuilder - Visual dashboard construction interface.\n *\n * Allows users to create, edit and customize dashboards through a drag-and-drop\n * interface with a widget library and properties panel.\n *\n * @example\n * ```tsx\n * <DashboardBuilder\n * onSave={({ widgets, layout }) => console.log('Saved:', widgets, layout)}\n * />\n * ```\n *\n * @example\n * ```tsx\n * const initialWidgets = [\n * { id: '1', type: 'kpi', title: 'Sales', x: 0, y: 0, w: 3, h: 2, config: { value: '150k' } }\n * ];\n *\n * <DashboardBuilder\n * initialWidgets={initialWidgets}\n * columns={12}\n * rowHeight={100}\n * />\n * ```\n */\nfunction DashboardBuilder({\n \"aria-label\": ariaLabel = \"Dashboard builder\",\n allowOverlap = false,\n autoSaveInterval = 30000,\n availableWidgets = defaultWidgets,\n className,\n columns = 12,\n enableAutoSave = false,\n initialLayout,\n initialWidgets = [],\n mode,\n onLayoutChange,\n onPreview,\n onRedo,\n onSave,\n onUndo,\n onWidgetAdd,\n onWidgetRemove,\n onWidgetUpdate,\n rowHeight = 100,\n showGrid = true,\n showPreview = true,\n showUndo = true,\n size,\n snapToGrid = true,\n ...props\n}: DashboardBuilderProps): ReactNode {\n const builderId = useId()\n\n // State\n const [widgets, setWidgets] = useState<BuilderWidget[]>(initialWidgets)\n const [selectedWidgetId, setSelectedWidgetId] = useState<null | string>(null)\n const [_builderMode, setBuilderMode] = useState<BuilderMode>(\"edit\")\n const [_builderState, setBuilderState] = useState<BuilderState>(\"idle\")\n const [history, setHistory] = useState<BuilderWidget[][]>([initialWidgets])\n const [historyIndex, setHistoryIndex] = useState(0)\n\n // Suppress unused variable warnings for future implementation\n void snapToGrid\n void allowOverlap\n void enableAutoSave\n void autoSaveInterval\n void initialLayout\n\n // Computed\n const selectedWidget = useMemo(\n () => widgets.find((w) => w.id === selectedWidgetId) ?? null,\n [widgets, selectedWidgetId]\n )\n const selectedWidgetDefinition = useMemo(\n () =>\n selectedWidget\n ? availableWidgets.find((w) => w.type === selectedWidget.type)\n : undefined,\n [selectedWidget, availableWidgets]\n )\n\n const canUndo = historyIndex > 0\n const canRedo = historyIndex < history.length - 1\n\n // Helpers\n const updateHistory = useCallback((newWidgets: BuilderWidget[]) => {\n setHistory((prev) => {\n const newHistory = prev.slice(0, historyIndex + 1)\n newHistory.push(newWidgets)\n return newHistory\n })\n setHistoryIndex((prev) => prev + 1)\n }, [historyIndex])\n\n const generateId = (): string => `widget-${String(Date.now())}-${Math.random().toString(36).slice(2, 9)}`\n\n const getLayoutConfig = useCallback((): BuilderLayoutConfig => {\n return {\n columns,\n rowHeight,\n widgets: widgets.map((w) => ({\n i: w.id,\n x: w.x,\n y: w.y,\n w: w.w,\n h: w.h,\n })),\n }\n }, [columns, rowHeight, widgets])\n\n // Event handlers\n const handleWidgetDrop = useCallback(\n (widgetType: string, position: BuilderPosition) => {\n const definition = availableWidgets.find((w) => w.type === widgetType)\n if (!definition) return\n\n const newWidget: BuilderWidget = {\n id: generateId(),\n type: widgetType,\n title: definition.name,\n x: position.x,\n y: position.y,\n w: definition.defaultSize.w,\n h: definition.defaultSize.h,\n config: definition.configSchema.fields.reduce<Record<string, unknown>>(\n (acc, field) => {\n acc[field.name] = field.defaultValue\n return acc\n },\n {}\n ),\n }\n\n const newWidgets = [...widgets, newWidget]\n setWidgets(newWidgets)\n updateHistory(newWidgets)\n setSelectedWidgetId(newWidget.id)\n\n onWidgetAdd?.({ widget: newWidget, position })\n onLayoutChange?.(getLayoutConfig())\n },\n [availableWidgets, widgets, updateHistory, onWidgetAdd, onLayoutChange, getLayoutConfig]\n )\n\n const handleWidgetRemove = useCallback(\n (widgetId: string) => {\n const newWidgets = widgets.filter((w) => w.id !== widgetId)\n setWidgets(newWidgets)\n updateHistory(newWidgets)\n\n if (selectedWidgetId === widgetId) {\n setSelectedWidgetId(null)\n }\n\n onWidgetRemove?.({ widgetId })\n onLayoutChange?.(getLayoutConfig())\n },\n [widgets, selectedWidgetId, updateHistory, onWidgetRemove, onLayoutChange, getLayoutConfig]\n )\n\n const handleWidgetSelect = useCallback((widgetId: string) => {\n setSelectedWidgetId(widgetId)\n setBuilderState(\"configuring\")\n }, [])\n\n const handleConfigChange = useCallback(\n (newConfig: Record<string, unknown>) => {\n if (!selectedWidgetId) return\n\n const newWidgets = widgets.map((w) =>\n w.id === selectedWidgetId ? { ...w, config: newConfig } : w\n )\n setWidgets(newWidgets)\n updateHistory(newWidgets)\n\n onWidgetUpdate?.({ widgetId: selectedWidgetId, config: newConfig })\n },\n [selectedWidgetId, widgets, updateHistory, onWidgetUpdate]\n )\n\n const handleSave = useCallback(() => {\n setBuilderState(\"saving\")\n onSave?.({ widgets, layout: getLayoutConfig() })\n setBuilderState(\"idle\")\n }, [widgets, getLayoutConfig, onSave])\n\n const handleUndo = useCallback(() => {\n if (!canUndo) return\n const newIndex = historyIndex - 1\n setHistoryIndex(newIndex)\n setWidgets(history[newIndex] ?? [])\n onUndo?.()\n }, [canUndo, historyIndex, history, onUndo])\n\n const handleRedo = useCallback(() => {\n if (!canRedo) return\n const newIndex = historyIndex + 1\n setHistoryIndex(newIndex)\n setWidgets(history[newIndex] ?? [])\n onRedo?.()\n }, [canRedo, historyIndex, history, onRedo])\n\n const handlePreview = useCallback(() => {\n setBuilderMode(\"preview\")\n onPreview?.()\n }, [onPreview])\n\n const handleCloseProperties = useCallback(() => {\n setSelectedWidgetId(null)\n setBuilderState(\"idle\")\n }, [])\n\n // Keyboard shortcuts\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n // Ctrl/Cmd + S: Save\n if ((e.ctrlKey || e.metaKey) && e.key === \"s\") {\n e.preventDefault()\n handleSave()\n }\n // Ctrl/Cmd + Z: Undo\n if ((e.ctrlKey || e.metaKey) && e.key === \"z\" && !e.shiftKey) {\n e.preventDefault()\n handleUndo()\n }\n // Ctrl/Cmd + Shift + Z or Ctrl/Cmd + Y: Redo\n if ((e.ctrlKey || e.metaKey) && (e.key === \"y\" || (e.key === \"z\" && e.shiftKey))) {\n e.preventDefault()\n handleRedo()\n }\n // Delete: Remove selected widget\n if ((e.key === \"Delete\" || e.key === \"Backspace\") && selectedWidgetId) {\n e.preventDefault()\n handleWidgetRemove(selectedWidgetId)\n }\n },\n [handleSave, handleUndo, handleRedo, selectedWidgetId, handleWidgetRemove]\n )\n\n return (\n <div\n aria-label={ariaLabel}\n className={cn(dashboardBuilderVariants({ mode, size }), className)}\n data-slot=\"dashboard-builder\"\n id={builderId}\n role=\"application\"\n tabIndex={-1}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {/* Toolbar */}\n <div className=\"flex flex-col\">\n <DashboardBuilderToolbar\n canRedo={canRedo}\n canUndo={canUndo}\n showPreview={showPreview}\n showUndo={showUndo}\n onRedo={handleRedo}\n onSave={handleSave}\n onTogglePreview={handlePreview}\n onUndo={handleUndo}\n />\n\n {/* Main content area */}\n <div className=\"flex flex-1 overflow-hidden\">\n {/* Widget Library */}\n <DashboardBuilderWidgetLibrary widgets={availableWidgets} />\n\n {/* Canvas */}\n <div className=\"flex flex-1 flex-col\">\n <DashboardBuilderCanvas\n columns={columns}\n rowHeight={rowHeight}\n selectedWidgetId={selectedWidgetId}\n showGrid={showGrid}\n widgetDefinitions={availableWidgets}\n widgets={widgets}\n onWidgetClick={handleWidgetSelect}\n onWidgetDrop={handleWidgetDrop}\n onWidgetRemove={handleWidgetRemove}\n >\n {widgets.map((widget) => {\n const definition = availableWidgets.find(\n (w) => w.type === widget.type\n )\n return (\n <DashboardBuilderWidgetComponent\n key={widget.id}\n isSelected={widget.id === selectedWidgetId}\n widget={widget}\n widgetDefinition={definition}\n onClick={() => { handleWidgetSelect(widget.id); }}\n onRemove={() => { handleWidgetRemove(widget.id); }}\n />\n )\n })}\n </DashboardBuilderCanvas>\n </div>\n\n {/* Properties Panel */}\n <DashboardBuilderPropertiesPanel\n widget={selectedWidget}\n widgetDefinition={selectedWidgetDefinition}\n onClose={handleCloseProperties}\n onConfigChange={handleConfigChange}\n />\n </div>\n </div>\n </div>\n )\n}\n\nDashboardBuilder.displayName = \"DashboardBuilder\"\n\n// ============================================\n// EXPORTS\n// ============================================\n\nexport {\n DashboardBuilder,\n DashboardBuilderCanvas,\n DashboardBuilderPropertiesPanel,\n DashboardBuilderToolbar,\n DashboardBuilderWidgetComponent,\n DashboardBuilderWidgetLibrary,\n defaultWidgets,\n}\nexport type {\n DashboardBuilderCanvasProps,\n DashboardBuilderPropertiesPanelProps,\n DashboardBuilderProps,\n DashboardBuilderToolbarProps,\n DashboardBuilderWidgetComponentProps,\n DashboardBuilderWidgetLibraryProps,\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Divider } from './chunk-
|
|
1
|
+
import { Divider } from './chunk-MAM6VUKD.js';
|
|
2
2
|
import { cn } from './chunk-HRNDJU7D.js';
|
|
3
3
|
import { Slot } from '@radix-ui/react-slot';
|
|
4
4
|
import { cva } from 'class-variance-authority';
|
|
@@ -194,5 +194,5 @@ function ButtonGroupItem({
|
|
|
194
194
|
}
|
|
195
195
|
|
|
196
196
|
export { ButtonGroup, ButtonGroupContext, ButtonGroupItem, ButtonGroupSeparator, ButtonGroupText, buttonGroupItemVariants, buttonGroupVariants, useButtonGroup };
|
|
197
|
-
//# sourceMappingURL=chunk-
|
|
198
|
-
//# sourceMappingURL=chunk-
|
|
197
|
+
//# sourceMappingURL=chunk-G2CMEHW6.js.map
|
|
198
|
+
//# sourceMappingURL=chunk-G2CMEHW6.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/primitives/ButtonGroup/ButtonGroup.tsx"],"names":[],"mappings":"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","file":"chunk-TAZPML2P.js","sourcesContent":["import type {\n ButtonGroupContextValue,\n ButtonGroupItemProps,\n ButtonGroupProps,\n ButtonGroupSeparatorProps,\n ButtonGroupTextProps,\n} from \"./ButtonGroup.types\"\n\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Divider } from \"../Divider\"\n\n/**\n * Context for ButtonGroup prop inheritance\n * Child buttons can use useButtonGroup() to access group-level props\n */\nconst ButtonGroupContext = React.createContext<ButtonGroupContextValue | null>(null)\n\n/**\n * Hook to access ButtonGroup context values\n * Returns null if not inside a ButtonGroup\n */\nfunction useButtonGroup(): ButtonGroupContextValue | null {\n return React.use(ButtonGroupContext)\n}\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch [&>*]:focus-visible:z-10 [&>*]:focus-visible:relative [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md has-[>[data-slot=button-group]]:gap-2\",\n {\n variants: {\n variant: {\n default: \"\",\n segmented:\n \"border border-[color:var(--button-group-root-border-color-default)] rounded-[var(--button-group-root-radius)] shadow-[var(--button-group-root-shadow)] overflow-clip isolate [&>*:not(:first-child)]:rounded-none [&>*:first-child]:rounded-l-[var(--button-group-root-radius)] [&>*:first-child]:rounded-r-none [&>*:last-child]:rounded-r-[var(--button-group-root-radius)] [&>*:last-child]:rounded-l-none\",\n primary:\n \"border border-[color:var(--button-group-root-border-color-primary)] bg-[color:var(--button-group-root-bg-primary)] text-[color:var(--button-group-root-fg-primary)] rounded-[var(--button-group-root-radius)] shadow-[var(--button-group-root-shadow)] overflow-clip isolate [&>*:not(:first-child)]:rounded-none [&>*:first-child]:rounded-l-[var(--button-group-root-radius)] [&>*:first-child]:rounded-r-none [&>*:last-child]:rounded-r-[var(--button-group-root-radius)] [&>*:last-child]:rounded-l-none\",\n },\n orientation: {\n horizontal:\n \"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none\",\n vertical:\n \"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none\",\n },\n },\n compoundVariants: [\n // Segmented variant removes default border handling (items have their own dividers)\n {\n variant: \"segmented\",\n orientation: \"horizontal\",\n className:\n \"[&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:border-r [&>*:not(:last-child)]:border-border\",\n },\n {\n variant: \"segmented\",\n orientation: \"vertical\",\n className:\n \"[&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:border-b [&>*:not(:last-child)]:border-border\",\n },\n ],\n defaultVariants: {\n variant: \"default\",\n orientation: \"horizontal\",\n },\n }\n)\n\nconst buttonGroupItemVariants = cva(\n \"inline-flex items-center justify-center gap-[var(--button-group-item-gap)] leading-[length:var(--button-group-item-line-height)] font-[var(--button-group-item-font-weight)] transition-colors outline-none whitespace-nowrap [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-5 [&_svg]:shrink-0 focus-visible:z-10 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset disabled:pointer-events-none disabled:text-muted-foreground\",\n {\n variants: {\n size: {\n sm: \"h-[var(--button-group-item-height-sm)] text-[length:var(--button-group-item-font-size-sm)]\",\n md: \"h-[var(--button-group-item-height-md)] text-[length:var(--button-group-item-font-size-md)]\",\n lg: \"h-[var(--button-group-item-height-lg)] text-[length:var(--button-group-item-font-size-lg)]\",\n },\n iconMode: {\n none: \"\",\n leading: \"\",\n dot: \"\",\n only: \"\",\n },\n current: {\n true: \"bg-[color:var(--button-group-item-background-active)]\",\n false: \"bg-[color:var(--button-group-item-background)] hover:bg-[color:var(--button-group-item-background-hover)]\",\n },\n },\n compoundVariants: [\n // Padding pairs per size × iconMode (only is icon-only, gets symmetric px)\n { size: \"sm\", iconMode: \"none\", className: \"px-[var(--button-group-item-padding-x-sm)] py-[var(--button-group-item-padding-y-sm)]\" },\n { size: \"sm\", iconMode: \"leading\", className: \"pl-2.5 pr-[var(--button-group-item-padding-x-sm)] py-[var(--button-group-item-padding-y-sm)]\" },\n { size: \"sm\", iconMode: \"dot\", className: \"px-[var(--button-group-item-padding-x-sm)] py-[var(--button-group-item-padding-y-sm)]\" },\n { size: \"sm\", iconMode: \"only\", className: \"px-2 py-[var(--button-group-item-padding-y-sm)]\" },\n { size: \"md\", iconMode: \"none\", className: \"px-[var(--button-group-item-padding-x-md)] py-[var(--button-group-item-padding-y-md)]\" },\n { size: \"md\", iconMode: \"leading\", className: \"pl-3 pr-[var(--button-group-item-padding-x-md)] py-[var(--button-group-item-padding-y-md)]\" },\n { size: \"md\", iconMode: \"dot\", className: \"px-[var(--button-group-item-padding-x-md)] py-[var(--button-group-item-padding-y-md)]\" },\n { size: \"md\", iconMode: \"only\", className: \"px-2.5 py-[var(--button-group-item-padding-y-md)]\" },\n { size: \"lg\", iconMode: \"none\", className: \"px-[var(--button-group-item-padding-x-lg)] py-[var(--button-group-item-padding-y-lg)]\" },\n { size: \"lg\", iconMode: \"leading\", className: \"pl-3.5 pr-[var(--button-group-item-padding-x-lg)] py-[var(--button-group-item-padding-y-lg)]\" },\n { size: \"lg\", iconMode: \"dot\", className: \"px-[var(--button-group-item-padding-x-lg)] py-[var(--button-group-item-padding-y-lg)]\" },\n { size: \"lg\", iconMode: \"only\", className: \"px-3 py-[var(--button-group-item-padding-y-lg)]\" },\n ],\n defaultVariants: {\n size: \"md\",\n iconMode: \"none\",\n current: false,\n },\n }\n)\n\nfunction ButtonGroup({\n className,\n orientation,\n variant,\n size,\n buttonVariant,\n disabled,\n children,\n ...props\n}: ButtonGroupProps) {\n const contextValue = React.useMemo<ButtonGroupContextValue>(\n () => ({ size, buttonVariant, disabled }),\n [size, buttonVariant, disabled]\n )\n\n return (\n <ButtonGroupContext value={contextValue}>\n <div\n className={cn(buttonGroupVariants({ orientation, variant }), className)}\n data-orientation={orientation}\n data-slot=\"button-group\"\n data-variant={variant}\n role=\"group\"\n {...props}\n >\n {children}\n </div>\n </ButtonGroupContext>\n )\n}\n\nfunction ButtonGroupText({\n className,\n asChild = false,\n ...props\n}: ButtonGroupTextProps) {\n const Comp = asChild ? Slot : \"div\"\n\n return (\n <Comp\n className={cn(\n \"bg-[color:var(--button-group-text-background)] flex items-center gap-2 rounded-[var(--button-group-root-radius)] border px-[var(--button-group-text-padding-x)] text-[length:var(--button-group-text-font-size)] font-[var(--button-group-text-font-weight)] shadow-xs [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n data-slot=\"button-group-text\"\n {...props}\n />\n )\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: ButtonGroupSeparatorProps) {\n return (\n <Divider\n className={cn(\n \"bg-[color:var(--button-group-separator-color)] relative !m-0 self-stretch data-[orientation=vertical]:h-auto\",\n className\n )}\n data-slot=\"button-group-separator\"\n orientation={orientation}\n {...props}\n />\n )\n}\n\n/**\n * ButtonGroupItem - Individual segment in a segmented button group\n * Use within ButtonGroup variant=\"segmented\"\n */\nfunction ButtonGroupItem({\n className,\n current = false,\n iconMode = \"none\",\n icon,\n dot,\n children,\n disabled,\n size = \"md\",\n ...props\n}: ButtonGroupItemProps) {\n // Determine effective icon mode based on props\n const effectiveIconMode = icon && !children ? \"only\" : dot ? \"dot\" : icon ? \"leading\" : iconMode\n\n return (\n <button\n className={cn(\n buttonGroupItemVariants({\n size,\n iconMode: effectiveIconMode,\n current,\n }),\n className\n )}\n data-current={current}\n data-slot=\"button-group-item\"\n disabled={disabled}\n type=\"button\"\n {...props}\n >\n {/* Status dot */}\n {dot && (\n <span\n className={cn(\n \"size-2 rounded-full shrink-0\",\n typeof dot === \"string\" ? dot : \"bg-success\"\n )}\n data-slot=\"button-group-item-dot\"\n />\n )}\n\n {/* Leading icon */}\n {icon && effectiveIconMode !== \"dot\" && (\n <span className=\"shrink-0\" data-slot=\"button-group-item-icon\">\n {icon}\n </span>\n )}\n\n {/* Text content */}\n {children && effectiveIconMode !== \"only\" && (\n <span data-slot=\"button-group-item-text\">{children}</span>\n )}\n </button>\n )\n}\n\nexport {\n ButtonGroup,\n ButtonGroupContext,\n ButtonGroupItem,\n buttonGroupItemVariants,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n useButtonGroup,\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/primitives/ButtonGroup/ButtonGroup.tsx"],"names":[],"mappings":"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","file":"chunk-G2CMEHW6.js","sourcesContent":["import type {\n ButtonGroupContextValue,\n ButtonGroupItemProps,\n ButtonGroupProps,\n ButtonGroupSeparatorProps,\n ButtonGroupTextProps,\n} from \"./ButtonGroup.types\"\n\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Divider } from \"../Divider\"\n\n/**\n * Context for ButtonGroup prop inheritance\n * Child buttons can use useButtonGroup() to access group-level props\n */\nconst ButtonGroupContext = React.createContext<ButtonGroupContextValue | null>(null)\n\n/**\n * Hook to access ButtonGroup context values\n * Returns null if not inside a ButtonGroup\n */\nfunction useButtonGroup(): ButtonGroupContextValue | null {\n return React.use(ButtonGroupContext)\n}\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch [&>*]:focus-visible:z-10 [&>*]:focus-visible:relative [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md has-[>[data-slot=button-group]]:gap-2\",\n {\n variants: {\n variant: {\n default: \"\",\n segmented:\n \"border border-[color:var(--button-group-root-border-color-default)] rounded-[var(--button-group-root-radius)] shadow-[var(--button-group-root-shadow)] overflow-clip isolate [&>*:not(:first-child)]:rounded-none [&>*:first-child]:rounded-l-[var(--button-group-root-radius)] [&>*:first-child]:rounded-r-none [&>*:last-child]:rounded-r-[var(--button-group-root-radius)] [&>*:last-child]:rounded-l-none\",\n primary:\n \"border border-[color:var(--button-group-root-border-color-primary)] bg-[color:var(--button-group-root-bg-primary)] text-[color:var(--button-group-root-fg-primary)] rounded-[var(--button-group-root-radius)] shadow-[var(--button-group-root-shadow)] overflow-clip isolate [&>*:not(:first-child)]:rounded-none [&>*:first-child]:rounded-l-[var(--button-group-root-radius)] [&>*:first-child]:rounded-r-none [&>*:last-child]:rounded-r-[var(--button-group-root-radius)] [&>*:last-child]:rounded-l-none\",\n },\n orientation: {\n horizontal:\n \"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none\",\n vertical:\n \"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none\",\n },\n },\n compoundVariants: [\n // Segmented variant removes default border handling (items have their own dividers)\n {\n variant: \"segmented\",\n orientation: \"horizontal\",\n className:\n \"[&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:border-r [&>*:not(:last-child)]:border-border\",\n },\n {\n variant: \"segmented\",\n orientation: \"vertical\",\n className:\n \"[&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:border-b [&>*:not(:last-child)]:border-border\",\n },\n ],\n defaultVariants: {\n variant: \"default\",\n orientation: \"horizontal\",\n },\n }\n)\n\nconst buttonGroupItemVariants = cva(\n \"inline-flex items-center justify-center gap-[var(--button-group-item-gap)] leading-[length:var(--button-group-item-line-height)] font-[var(--button-group-item-font-weight)] transition-colors outline-none whitespace-nowrap [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-5 [&_svg]:shrink-0 focus-visible:z-10 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset disabled:pointer-events-none disabled:text-muted-foreground\",\n {\n variants: {\n size: {\n sm: \"h-[var(--button-group-item-height-sm)] text-[length:var(--button-group-item-font-size-sm)]\",\n md: \"h-[var(--button-group-item-height-md)] text-[length:var(--button-group-item-font-size-md)]\",\n lg: \"h-[var(--button-group-item-height-lg)] text-[length:var(--button-group-item-font-size-lg)]\",\n },\n iconMode: {\n none: \"\",\n leading: \"\",\n dot: \"\",\n only: \"\",\n },\n current: {\n true: \"bg-[color:var(--button-group-item-background-active)]\",\n false: \"bg-[color:var(--button-group-item-background)] hover:bg-[color:var(--button-group-item-background-hover)]\",\n },\n },\n compoundVariants: [\n // Padding pairs per size × iconMode (only is icon-only, gets symmetric px)\n { size: \"sm\", iconMode: \"none\", className: \"px-[var(--button-group-item-padding-x-sm)] py-[var(--button-group-item-padding-y-sm)]\" },\n { size: \"sm\", iconMode: \"leading\", className: \"pl-2.5 pr-[var(--button-group-item-padding-x-sm)] py-[var(--button-group-item-padding-y-sm)]\" },\n { size: \"sm\", iconMode: \"dot\", className: \"px-[var(--button-group-item-padding-x-sm)] py-[var(--button-group-item-padding-y-sm)]\" },\n { size: \"sm\", iconMode: \"only\", className: \"px-2 py-[var(--button-group-item-padding-y-sm)]\" },\n { size: \"md\", iconMode: \"none\", className: \"px-[var(--button-group-item-padding-x-md)] py-[var(--button-group-item-padding-y-md)]\" },\n { size: \"md\", iconMode: \"leading\", className: \"pl-3 pr-[var(--button-group-item-padding-x-md)] py-[var(--button-group-item-padding-y-md)]\" },\n { size: \"md\", iconMode: \"dot\", className: \"px-[var(--button-group-item-padding-x-md)] py-[var(--button-group-item-padding-y-md)]\" },\n { size: \"md\", iconMode: \"only\", className: \"px-2.5 py-[var(--button-group-item-padding-y-md)]\" },\n { size: \"lg\", iconMode: \"none\", className: \"px-[var(--button-group-item-padding-x-lg)] py-[var(--button-group-item-padding-y-lg)]\" },\n { size: \"lg\", iconMode: \"leading\", className: \"pl-3.5 pr-[var(--button-group-item-padding-x-lg)] py-[var(--button-group-item-padding-y-lg)]\" },\n { size: \"lg\", iconMode: \"dot\", className: \"px-[var(--button-group-item-padding-x-lg)] py-[var(--button-group-item-padding-y-lg)]\" },\n { size: \"lg\", iconMode: \"only\", className: \"px-3 py-[var(--button-group-item-padding-y-lg)]\" },\n ],\n defaultVariants: {\n size: \"md\",\n iconMode: \"none\",\n current: false,\n },\n }\n)\n\nfunction ButtonGroup({\n className,\n orientation,\n variant,\n size,\n buttonVariant,\n disabled,\n children,\n ...props\n}: ButtonGroupProps) {\n const contextValue = React.useMemo<ButtonGroupContextValue>(\n () => ({ size, buttonVariant, disabled }),\n [size, buttonVariant, disabled]\n )\n\n return (\n <ButtonGroupContext value={contextValue}>\n <div\n className={cn(buttonGroupVariants({ orientation, variant }), className)}\n data-orientation={orientation}\n data-slot=\"button-group\"\n data-variant={variant}\n role=\"group\"\n {...props}\n >\n {children}\n </div>\n </ButtonGroupContext>\n )\n}\n\nfunction ButtonGroupText({\n className,\n asChild = false,\n ...props\n}: ButtonGroupTextProps) {\n const Comp = asChild ? Slot : \"div\"\n\n return (\n <Comp\n className={cn(\n \"bg-[color:var(--button-group-text-background)] flex items-center gap-2 rounded-[var(--button-group-root-radius)] border px-[var(--button-group-text-padding-x)] text-[length:var(--button-group-text-font-size)] font-[var(--button-group-text-font-weight)] shadow-xs [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n data-slot=\"button-group-text\"\n {...props}\n />\n )\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: ButtonGroupSeparatorProps) {\n return (\n <Divider\n className={cn(\n \"bg-[color:var(--button-group-separator-color)] relative !m-0 self-stretch data-[orientation=vertical]:h-auto\",\n className\n )}\n data-slot=\"button-group-separator\"\n orientation={orientation}\n {...props}\n />\n )\n}\n\n/**\n * ButtonGroupItem - Individual segment in a segmented button group\n * Use within ButtonGroup variant=\"segmented\"\n */\nfunction ButtonGroupItem({\n className,\n current = false,\n iconMode = \"none\",\n icon,\n dot,\n children,\n disabled,\n size = \"md\",\n ...props\n}: ButtonGroupItemProps) {\n // Determine effective icon mode based on props\n const effectiveIconMode = icon && !children ? \"only\" : dot ? \"dot\" : icon ? \"leading\" : iconMode\n\n return (\n <button\n className={cn(\n buttonGroupItemVariants({\n size,\n iconMode: effectiveIconMode,\n current,\n }),\n className\n )}\n data-current={current}\n data-slot=\"button-group-item\"\n disabled={disabled}\n type=\"button\"\n {...props}\n >\n {/* Status dot */}\n {dot && (\n <span\n className={cn(\n \"size-2 rounded-full shrink-0\",\n typeof dot === \"string\" ? dot : \"bg-success\"\n )}\n data-slot=\"button-group-item-dot\"\n />\n )}\n\n {/* Leading icon */}\n {icon && effectiveIconMode !== \"dot\" && (\n <span className=\"shrink-0\" data-slot=\"button-group-item-icon\">\n {icon}\n </span>\n )}\n\n {/* Text content */}\n {children && effectiveIconMode !== \"only\" && (\n <span data-slot=\"button-group-item-text\">{children}</span>\n )}\n </button>\n )\n}\n\nexport {\n ButtonGroup,\n ButtonGroupContext,\n ButtonGroupItem,\n buttonGroupItemVariants,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n useButtonGroup,\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TextInput } from './chunk-
|
|
1
|
+
import { TextInput } from './chunk-ZMUUEXVD.js';
|
|
2
2
|
import { cn } from './chunk-HRNDJU7D.js';
|
|
3
3
|
import { LinkIcon, CheckCircle2Icon, XCircleIcon } from 'lucide-react';
|
|
4
4
|
import { cva } from 'class-variance-authority';
|
|
@@ -96,5 +96,5 @@ function URLInput({
|
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
export { URLInput, urlLinkIconVariants, urlValidationIconVariants };
|
|
99
|
-
//# sourceMappingURL=chunk-
|
|
100
|
-
//# sourceMappingURL=chunk-
|
|
99
|
+
//# sourceMappingURL=chunk-H7JHFBFD.js.map
|
|
100
|
+
//# sourceMappingURL=chunk-H7JHFBFD.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/forms/URLInput/URLInput.variants.ts","../src/components/forms/URLInput/URLInput.tsx"],"names":[],"mappings":";;;;;;AAKO,IAAM,mBAAA,GAAsB,GAAA;AAAA,EACjC,2DAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,gBAAA;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI,gBAAA;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ;AAKO,IAAM,yBAAA,GAA4B,GAAA;AAAA,EACvC,oDAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,eAAA,EAAiB;AAAA,QACf,IAAA,EAAM,uBAAA;AAAA,QACN,KAAA,EAAO,cAAA;AAAA,QACP,OAAA,EAAS;AAAA,OACX;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,gBAAA;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI,gBAAA;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,eAAA,EAAiB,MAAA;AAAA,MACjB,IAAA,EAAM;AAAA;AACR;AAEJ;AC7BA,SAAS,QAAA,CAAS;AAAA,EAChB,SAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,OAAA;AAAA,EACA,eAAA,GAAkB,MAAA;AAAA,EAClB,kBAAA,GAAqB,KAAA;AAAA,EACrB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAkB;AAChB,EAAA,MAAM,cAAA,GAAiB,sBAAsB,eAAA,KAAoB,MAAA;AAEjE,EAAA,MAAM,OAAA,mBACJ,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,MAAA;AAAA,MACZ,WAAW,EAAA,CAAG,mBAAA,CAAoB,EAAE,IAAA,EAAM,CAAC,CAAA;AAAA,MAC3C,WAAA,EAAU,WAAA;AAAA,MAET,QAAA,EAAA,QAAA,wBAAa,QAAA,EAAA,EAAS;AAAA;AAAA,GACzB;AAGF,EAAA,MAAM,WAAW,cAAA,mBACf,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,MAAA;AAAA,MACZ,WAAW,EAAA,CAAG,yBAAA,CAA0B,EAAE,IAAA,EAAM,eAAA,EAAiB,CAAC,CAAA;AAAA,MAClE,WAAA,EAAU,qBAAA;AAAA,MAET,QAAA,EAAA;AAAA,QAAA,eAAA,KAAoB,OAAA,KAAY,SAAA,oBAAa,GAAA,CAAC,gBAAA,EAAA,EAAiB,CAAA,CAAA;AAAA,QAC/D,eAAA,KAAoB,SAAA,KAAc,WAAA,oBAAe,GAAA,CAAC,WAAA,EAAA,EAAY,CAAA;AAAA;AAAA;AAAA,GACjE,GACE,MAAA;AAEJ,EAAA,uBACE,GAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,cAAA,EAAc,eAAA,KAAoB,SAAA,GAAY,IAAA,GAAO,MAAA;AAAA,MACrD,SAAA;AAAA,MACA,WAAA,EAAU,WAAA;AAAA,MACV,QAAA;AAAA,MACA,WAAA,EAAa,OAAA;AAAA,MACb,IAAA;AAAA,MACA,YAAA,EAAc,QAAA;AAAA,MACd,IAAA,EAAK,KAAA;AAAA,MACL,OAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/forms/URLInput/URLInput.variants.ts","../src/components/forms/URLInput/URLInput.tsx"],"names":[],"mappings":";;;;;;AAKO,IAAM,mBAAA,GAAsB,GAAA;AAAA,EACjC,2DAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,gBAAA;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI,gBAAA;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ;AAKO,IAAM,yBAAA,GAA4B,GAAA;AAAA,EACvC,oDAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,eAAA,EAAiB;AAAA,QACf,IAAA,EAAM,uBAAA;AAAA,QACN,KAAA,EAAO,cAAA;AAAA,QACP,OAAA,EAAS;AAAA,OACX;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,gBAAA;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI,gBAAA;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,eAAA,EAAiB,MAAA;AAAA,MACjB,IAAA,EAAM;AAAA;AACR;AAEJ;AC7BA,SAAS,QAAA,CAAS;AAAA,EAChB,SAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,OAAA;AAAA,EACA,eAAA,GAAkB,MAAA;AAAA,EAClB,kBAAA,GAAqB,KAAA;AAAA,EACrB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAkB;AAChB,EAAA,MAAM,cAAA,GAAiB,sBAAsB,eAAA,KAAoB,MAAA;AAEjE,EAAA,MAAM,OAAA,mBACJ,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,MAAA;AAAA,MACZ,WAAW,EAAA,CAAG,mBAAA,CAAoB,EAAE,IAAA,EAAM,CAAC,CAAA;AAAA,MAC3C,WAAA,EAAU,WAAA;AAAA,MAET,QAAA,EAAA,QAAA,wBAAa,QAAA,EAAA,EAAS;AAAA;AAAA,GACzB;AAGF,EAAA,MAAM,WAAW,cAAA,mBACf,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,MAAA;AAAA,MACZ,WAAW,EAAA,CAAG,yBAAA,CAA0B,EAAE,IAAA,EAAM,eAAA,EAAiB,CAAC,CAAA;AAAA,MAClE,WAAA,EAAU,qBAAA;AAAA,MAET,QAAA,EAAA;AAAA,QAAA,eAAA,KAAoB,OAAA,KAAY,SAAA,oBAAa,GAAA,CAAC,gBAAA,EAAA,EAAiB,CAAA,CAAA;AAAA,QAC/D,eAAA,KAAoB,SAAA,KAAc,WAAA,oBAAe,GAAA,CAAC,WAAA,EAAA,EAAY,CAAA;AAAA;AAAA;AAAA,GACjE,GACE,MAAA;AAEJ,EAAA,uBACE,GAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,cAAA,EAAc,eAAA,KAAoB,SAAA,GAAY,IAAA,GAAO,MAAA;AAAA,MACrD,SAAA;AAAA,MACA,WAAA,EAAU,WAAA;AAAA,MACV,QAAA;AAAA,MACA,WAAA,EAAa,OAAA;AAAA,MACb,IAAA;AAAA,MACA,YAAA,EAAc,QAAA;AAAA,MACd,IAAA,EAAK,KAAA;AAAA,MACL,OAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ","file":"chunk-H7JHFBFD.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * URL link icon visual variants\n */\nexport const urlLinkIconVariants = cva(\n \"flex items-center justify-center text-muted-foreground/80\",\n {\n variants: {\n size: {\n xs: \"[&_svg]:size-3\",\n sm: \"[&_svg]:size-3.5\",\n md: \"[&_svg]:size-4\",\n lg: \"[&_svg]:size-4.5\",\n xl: \"[&_svg]:size-5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\n/**\n * URL validation icon visual variants\n */\nexport const urlValidationIconVariants = cva(\n \"flex items-center justify-center transition-colors\",\n {\n variants: {\n validationState: {\n idle: \"text-muted-foreground\",\n valid: \"text-success\",\n invalid: \"text-destructive\",\n },\n size: {\n xs: \"[&_svg]:size-3\",\n sm: \"[&_svg]:size-3.5\",\n md: \"[&_svg]:size-4\",\n lg: \"[&_svg]:size-4.5\",\n xl: \"[&_svg]:size-5\",\n },\n },\n defaultVariants: {\n validationState: \"idle\",\n size: \"md\",\n },\n }\n)\n\nexport type URLLinkIconVariantProps = VariantProps<typeof urlLinkIconVariants>\nexport type URLValidationIconVariantProps = VariantProps<typeof urlValidationIconVariants>\n","\"use client\"\n\nimport type { URLInputProps } from \"./URLInput.types\"\n\nimport { CheckCircle2Icon, LinkIcon, XCircleIcon } from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { TextInput } from \"../TextInput\"\nimport { urlLinkIconVariants, urlValidationIconVariants } from \"./URLInput.variants\"\n\n/**\n * URLInput component with link icon and optional validation state indicator.\n * Now uses TextInput internally for consistency.\n *\n * @example\n * ```tsx\n * <URLInput placeholder=\"Enter URL\" />\n * ```\n */\nfunction URLInput({\n className,\n size = \"md\",\n variant,\n validationState = \"idle\",\n showValidationIcon = false,\n linkIcon,\n validIcon,\n invalidIcon,\n disabled,\n ...props\n}: URLInputProps) {\n const showValidation = showValidationIcon && validationState !== \"idle\"\n\n const leading = (\n <div\n aria-hidden=\"true\"\n className={cn(urlLinkIconVariants({ size }))}\n data-slot=\"link-icon\"\n >\n {linkIcon ?? <LinkIcon />}\n </div>\n )\n\n const trailing = showValidation ? (\n <div\n aria-hidden=\"true\"\n className={cn(urlValidationIconVariants({ size, validationState }))}\n data-slot=\"url-validation-icon\"\n >\n {validationState === \"valid\" && (validIcon ?? <CheckCircle2Icon />)}\n {validationState === \"invalid\" && (invalidIcon ?? <XCircleIcon />)}\n </div>\n ) : undefined\n\n return (\n <TextInput\n aria-invalid={validationState === \"invalid\" ? true : undefined}\n className={className}\n data-slot=\"url-input\"\n disabled={disabled}\n leadingIcon={leading}\n size={size}\n trailingIcon={trailing}\n type=\"url\"\n variant={variant}\n {...props}\n />\n )\n}\n\nexport { URLInput }"]}
|
|
@@ -8,7 +8,7 @@ var tagVariants = cva(
|
|
|
8
8
|
// Base styles (always applied)
|
|
9
9
|
[
|
|
10
10
|
"inline-flex items-center justify-center",
|
|
11
|
-
"font-medium whitespace-nowrap shrink-0 gap-
|
|
11
|
+
"font-medium whitespace-nowrap shrink-0 gap-[var(--tag-size-gap-default)]",
|
|
12
12
|
"rounded-[var(--tag-radius)] border bg-background text-foreground",
|
|
13
13
|
"transition-colors duration-200",
|
|
14
14
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
|
|
@@ -378,5 +378,5 @@ function Tag({
|
|
|
378
378
|
Tag.displayName = "Tag";
|
|
379
379
|
|
|
380
380
|
export { Tag, TagGroup, tagCheckboxVariants, tagCountVariants, tagGroupVariants, tagVariants, useTagGroup };
|
|
381
|
-
//# sourceMappingURL=chunk-
|
|
382
|
-
//# sourceMappingURL=chunk-
|
|
381
|
+
//# sourceMappingURL=chunk-HA5YVDHW.js.map
|
|
382
|
+
//# sourceMappingURL=chunk-HA5YVDHW.js.map
|