@fea-ui/react 0.1.0-alpha.4 → 0.1.0-alpha.7

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/index.cjs CHANGED
@@ -633,6 +633,117 @@ Dialog.Trigger = DialogTrigger;
633
633
  Dialog.Viewport = DialogViewport;
634
634
  var dialog_default = Dialog;
635
635
 
636
+ //#endregion
637
+ //#region src/components/drawer/drawer.context.ts
638
+ const DrawerContext = (0, react.createContext)(null);
639
+
640
+ //#endregion
641
+ //#region src/components/drawer/drawer.variants.ts
642
+ const drawerVariants = (0, tailwind_variants.tv)({
643
+ defaultVariants: { position: "left" },
644
+ slots: {
645
+ backdrop: "drawer__backdrop",
646
+ close: "drawer__close",
647
+ description: "drawer__description",
648
+ popup: "drawer__popup",
649
+ portal: "drawer__portal",
650
+ root: "drawer",
651
+ title: "drawer__title",
652
+ trigger: "drawer__trigger",
653
+ viewport: "drawer__viewport"
654
+ },
655
+ variants: { position: {
656
+ bottom: { popup: "drawer--bottom" },
657
+ left: { popup: "drawer--left" },
658
+ right: { popup: "drawer--right" },
659
+ top: { popup: "drawer--top" }
660
+ } }
661
+ });
662
+
663
+ //#endregion
664
+ //#region src/components/drawer/use-drawer.ts
665
+ const useDrawer = () => {
666
+ const context = (0, react.useContext)(DrawerContext);
667
+ if (!context) throw new Error("useDrawer must be used within a DrawerProvider");
668
+ return context;
669
+ };
670
+
671
+ //#endregion
672
+ //#region src/components/drawer/drawer.tsx
673
+ const Drawer = ({ position, ...props }) => {
674
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DrawerContext, {
675
+ value: { slots: (0, react.useMemo)(() => drawerVariants({ position }), [position]) },
676
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react.Dialog.Root, { ...props })
677
+ });
678
+ };
679
+ const DrawerTrigger = ({ className, ...props }) => {
680
+ const { slots } = useDrawer();
681
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react.Dialog.Trigger, {
682
+ className: (0, tailwind_variants.cn)(slots.trigger(), className),
683
+ ...props
684
+ });
685
+ };
686
+ const DrawerPortal = ({ className, ...props }) => {
687
+ const { slots } = useDrawer();
688
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react.Dialog.Portal, {
689
+ className: (0, tailwind_variants.cn)(slots.portal(), className),
690
+ ...props
691
+ });
692
+ };
693
+ const DrawerBackdrop = ({ className, ...props }) => {
694
+ const { slots } = useDrawer();
695
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react.Dialog.Backdrop, {
696
+ className: (0, tailwind_variants.cn)(slots.backdrop(), className),
697
+ ...props
698
+ });
699
+ };
700
+ const DrawerViewport = ({ className, ...props }) => {
701
+ const { slots } = useDrawer();
702
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react.Dialog.Viewport, {
703
+ className: (0, tailwind_variants.cn)(slots.viewport(), className),
704
+ ...props
705
+ });
706
+ };
707
+ const DrawerPopup = ({ className, ...props }) => {
708
+ const { slots } = useDrawer();
709
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react.Dialog.Popup, {
710
+ className: (0, tailwind_variants.cn)(slots.popup(), className),
711
+ ...props
712
+ });
713
+ };
714
+ const DrawerTitle = ({ className, ...props }) => {
715
+ const { slots } = useDrawer();
716
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react.Dialog.Title, {
717
+ className: (0, tailwind_variants.cn)(slots.title(), className),
718
+ ...props
719
+ });
720
+ };
721
+ const DrawerDescription = ({ className, ...props }) => {
722
+ const { slots } = useDrawer();
723
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react.Dialog.Description, {
724
+ className: (0, tailwind_variants.cn)(slots.description(), className),
725
+ ...props
726
+ });
727
+ };
728
+ const DrawerClose = ({ className, children, ...props }) => {
729
+ const { slots } = useDrawer();
730
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react.Dialog.Close, {
731
+ className: (0, tailwind_variants.cn)(slots.close(), className),
732
+ ...props,
733
+ children: children ?? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.LucideX, {})
734
+ });
735
+ };
736
+ Drawer.Root = Drawer;
737
+ Drawer.Trigger = DrawerTrigger;
738
+ Drawer.Portal = DrawerPortal;
739
+ Drawer.Backdrop = DrawerBackdrop;
740
+ Drawer.Viewport = DrawerViewport;
741
+ Drawer.Popup = DrawerPopup;
742
+ Drawer.Title = DrawerTitle;
743
+ Drawer.Description = DrawerDescription;
744
+ Drawer.Close = DrawerClose;
745
+ var drawer_default = Drawer;
746
+
636
747
  //#endregion
637
748
  //#region src/components/field/field.context.ts
638
749
  const FieldContext = (0, react.createContext)(null);
@@ -766,6 +877,28 @@ const Form = ({ className, ...props }) => {
766
877
  };
767
878
  var form_default = Form;
768
879
 
880
+ //#endregion
881
+ //#region src/components/icon-button/icon-button.variants.ts
882
+ const iconButtonVariants = (0, tailwind_variants.tv)({
883
+ base: "icon-button",
884
+ defaultVariants: { isIconOnly: true },
885
+ extend: buttonVariants
886
+ });
887
+
888
+ //#endregion
889
+ //#region src/components/icon-button/icon-button.tsx
890
+ const IconButton = ({ className, variant, size, isIconOnly, ...props }) => {
891
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(button_default, {
892
+ className: (0, tailwind_variants.cn)(className, iconButtonVariants({
893
+ isIconOnly,
894
+ size,
895
+ variant
896
+ })),
897
+ ...props
898
+ });
899
+ };
900
+ var icon_button_default = IconButton;
901
+
769
902
  //#endregion
770
903
  //#region src/components/input/input.variants.ts
771
904
  const inputVariants = (0, tailwind_variants.tv)({
@@ -1112,6 +1245,27 @@ Meter.Track = MeterTrack;
1112
1245
  Meter.Value = MeterValue;
1113
1246
  var meter_default = Meter;
1114
1247
 
1248
+ //#endregion
1249
+ //#region src/components/separator/separator.variants.ts
1250
+ const separatorVariants = (0, tailwind_variants.tv)({
1251
+ base: "separator",
1252
+ defaultVariants: { orientation: "horizontal" },
1253
+ variants: { orientation: {
1254
+ horizontal: "separator--horizontal",
1255
+ vertical: "separator--vertical"
1256
+ } }
1257
+ });
1258
+
1259
+ //#endregion
1260
+ //#region src/components/separator/separator.tsx
1261
+ const Separator = ({ className, orientation, ...props }) => {
1262
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react.Separator, {
1263
+ className: (0, tailwind_variants.cn)(className, separatorVariants({ orientation })),
1264
+ ...props
1265
+ });
1266
+ };
1267
+ var separator_default = Separator;
1268
+
1115
1269
  //#endregion
1116
1270
  //#region src/components/navbar/navbar.context.ts
1117
1271
  const NavbarContext = (0, react.createContext)(null);
@@ -1197,12 +1351,20 @@ const NavbarToggle = ({ className, ...props }) => {
1197
1351
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, { className: "size-5" })
1198
1352
  });
1199
1353
  };
1200
- const NavbarMenu = ({ className, ...props }) => {
1201
- const { slots, isOpen } = useNavbar();
1202
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("ul", {
1203
- className: (0, tailwind_variants.cn)(slots.menu(), className),
1204
- "data-expanded": isOpen ? "true" : "false",
1205
- ...props
1354
+ const NavbarMenu = ({ className, header, ...props }) => {
1355
+ const { slots, isOpen, onOpenChange } = useNavbar();
1356
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(drawer_default, {
1357
+ onOpenChange,
1358
+ open: isOpen,
1359
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(drawer_default.Portal, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(drawer_default.Backdrop, {}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(drawer_default.Viewport, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(drawer_default.Popup, { children: [
1360
+ header,
1361
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(drawer_default.Close, {}),
1362
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(separator_default, {}),
1363
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("ul", {
1364
+ className: (0, tailwind_variants.cn)(slots.menu(), className),
1365
+ ...props
1366
+ })
1367
+ ] }) })] })
1206
1368
  });
1207
1369
  };
1208
1370
  const NavbarMenuItem = ({ className, ...props }) => {
@@ -1222,6 +1384,125 @@ Navbar.Menu = NavbarMenu;
1222
1384
  Navbar.MenuItem = NavbarMenuItem;
1223
1385
  var navbar_default = Navbar;
1224
1386
 
1387
+ //#endregion
1388
+ //#region src/components/popover/popover.context.ts
1389
+ const PopoverContext = (0, react.createContext)(null);
1390
+
1391
+ //#endregion
1392
+ //#region src/components/popover/popover.variants.ts
1393
+ const popoverVariants = (0, tailwind_variants.tv)({ slots: {
1394
+ arrow: "popover__arrow",
1395
+ backdrop: "popover__backdrop",
1396
+ close: "popover__close",
1397
+ description: "popover__description",
1398
+ popup: "popover__popup",
1399
+ portal: "popover__portal",
1400
+ positioner: "popover__positioner",
1401
+ root: "popover",
1402
+ title: "popover__title",
1403
+ trigger: "popover__trigger",
1404
+ viewport: "popover__viewport"
1405
+ } });
1406
+
1407
+ //#endregion
1408
+ //#region src/components/popover/use-popover.ts
1409
+ const usePopover = () => {
1410
+ const context = (0, react.useContext)(PopoverContext);
1411
+ if (!context) throw new Error("usePopover must be used within a PopoverProvider");
1412
+ return context;
1413
+ };
1414
+
1415
+ //#endregion
1416
+ //#region src/components/popover/popover.tsx
1417
+ const Popover = ({ ...props }) => {
1418
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PopoverContext, {
1419
+ value: { slots: (0, react.useMemo)(() => popoverVariants(), []) },
1420
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react.Popover.Root, { ...props })
1421
+ });
1422
+ };
1423
+ const PopoverTrigger = ({ className, ...props }) => {
1424
+ const { slots } = usePopover();
1425
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react.Popover.Trigger, {
1426
+ className: (0, tailwind_variants.cn)(slots.trigger(), className),
1427
+ ...props
1428
+ });
1429
+ };
1430
+ const PopoverPortal = ({ className, ...props }) => {
1431
+ const { slots } = usePopover();
1432
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react.Popover.Portal, {
1433
+ className: (0, tailwind_variants.cn)(slots.portal(), className),
1434
+ ...props
1435
+ });
1436
+ };
1437
+ const PopoverBackdrop = ({ className, ...props }) => {
1438
+ const { slots } = usePopover();
1439
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react.Popover.Backdrop, {
1440
+ className: (0, tailwind_variants.cn)(slots.backdrop(), className),
1441
+ ...props
1442
+ });
1443
+ };
1444
+ const PopoverPositioner = ({ className, ...props }) => {
1445
+ const { slots } = usePopover();
1446
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react.Popover.Positioner, {
1447
+ className: (0, tailwind_variants.cn)(slots.positioner(), className),
1448
+ ...props
1449
+ });
1450
+ };
1451
+ const PopoverPopup = ({ className, ...props }) => {
1452
+ const { slots } = usePopover();
1453
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react.Popover.Popup, {
1454
+ className: (0, tailwind_variants.cn)(slots.popup(), className),
1455
+ ...props
1456
+ });
1457
+ };
1458
+ const PopoverArrow = ({ className, ...props }) => {
1459
+ const { slots } = usePopover();
1460
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react.Popover.Arrow, {
1461
+ className: (0, tailwind_variants.cn)(slots.arrow(), className),
1462
+ ...props
1463
+ });
1464
+ };
1465
+ const PopoverViewport = ({ className, ...props }) => {
1466
+ const { slots } = usePopover();
1467
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react.Popover.Viewport, {
1468
+ className: (0, tailwind_variants.cn)(slots.viewport(), className),
1469
+ ...props
1470
+ });
1471
+ };
1472
+ const PopoverTitle = ({ className, ...props }) => {
1473
+ const { slots } = usePopover();
1474
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react.Popover.Title, {
1475
+ className: (0, tailwind_variants.cn)(slots.title(), className),
1476
+ ...props
1477
+ });
1478
+ };
1479
+ const PopoverDescription = ({ className, ...props }) => {
1480
+ const { slots } = usePopover();
1481
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react.Popover.Description, {
1482
+ className: (0, tailwind_variants.cn)(slots.description(), className),
1483
+ ...props
1484
+ });
1485
+ };
1486
+ const PopoverClose = ({ className, ...props }) => {
1487
+ const { slots } = usePopover();
1488
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react.Popover.Close, {
1489
+ className: (0, tailwind_variants.cn)(slots.close(), className),
1490
+ ...props
1491
+ });
1492
+ };
1493
+ Popover.Root = Popover;
1494
+ Popover.Trigger = PopoverTrigger;
1495
+ Popover.Portal = PopoverPortal;
1496
+ Popover.Backdrop = PopoverBackdrop;
1497
+ Popover.Positioner = PopoverPositioner;
1498
+ Popover.Popup = PopoverPopup;
1499
+ Popover.Arrow = PopoverArrow;
1500
+ Popover.Viewport = PopoverViewport;
1501
+ Popover.Title = PopoverTitle;
1502
+ Popover.Description = PopoverDescription;
1503
+ Popover.Close = PopoverClose;
1504
+ var popover_default = Popover;
1505
+
1225
1506
  //#endregion
1226
1507
  //#region src/components/progress/progress.context.ts
1227
1508
  const ProgressContext = (0, react.createContext)(null);
@@ -1291,27 +1572,6 @@ Progress.Indicator = ProgressIndicator;
1291
1572
  Progress.Root = Progress;
1292
1573
  var progress_default = Progress;
1293
1574
 
1294
- //#endregion
1295
- //#region src/components/separator/separator.variants.ts
1296
- const separatorVariants = (0, tailwind_variants.tv)({
1297
- base: "separator",
1298
- defaultVariants: { orientation: "horizontal" },
1299
- variants: { orientation: {
1300
- horizontal: "separator--horizontal",
1301
- vertical: "separator--vertical"
1302
- } }
1303
- });
1304
-
1305
- //#endregion
1306
- //#region src/components/separator/separator.tsx
1307
- const Separator = ({ className, orientation, ...props }) => {
1308
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react.Separator, {
1309
- className: (0, tailwind_variants.cn)(className, separatorVariants({ orientation })),
1310
- ...props
1311
- });
1312
- };
1313
- var separator_default = Separator;
1314
-
1315
1575
  //#endregion
1316
1576
  //#region src/components/slider/slider.context.ts
1317
1577
  const SliderContext = (0, react.createContext)(null);
@@ -1660,9 +1920,11 @@ exports.CheckboxGroup = checkbox_group_default;
1660
1920
  exports.Chip = chip_default;
1661
1921
  exports.Container = container_default;
1662
1922
  exports.Dialog = dialog_default;
1923
+ exports.Drawer = drawer_default;
1663
1924
  exports.Field = field_default;
1664
1925
  exports.Fieldset = fieldset_default;
1665
1926
  exports.Form = form_default;
1927
+ exports.IconButton = icon_button_default;
1666
1928
  exports.Input = input_default;
1667
1929
  exports.Label = label_default;
1668
1930
  exports.Link = link_default;
@@ -1670,6 +1932,7 @@ exports.List = list_default;
1670
1932
  exports.Menu = menu_default;
1671
1933
  exports.Meter = meter_default;
1672
1934
  exports.Navbar = navbar_default;
1935
+ exports.Popover = popover_default;
1673
1936
  exports.Progress = progress_default;
1674
1937
  exports.Separator = separator_default;
1675
1938
  exports.Slider = slider_default;
@@ -1696,9 +1959,11 @@ Object.defineProperty(exports, 'cn', {
1696
1959
  });
1697
1960
  exports.containerVariants = containerVariants;
1698
1961
  exports.dialogVariants = dialogVariants;
1962
+ exports.drawerVariants = drawerVariants;
1699
1963
  exports.fieldVariants = fieldVariants;
1700
1964
  exports.fieldsetVariants = fieldsetVariants;
1701
1965
  exports.formVariants = formVariants;
1966
+ exports.iconButtonVariants = iconButtonVariants;
1702
1967
  exports.inputVariants = inputVariants;
1703
1968
  exports.labelVariants = labelVariants;
1704
1969
  exports.linkVariants = linkVariants;
@@ -1706,6 +1971,7 @@ exports.listVariants = listVariants;
1706
1971
  exports.menuVariants = menuVariants;
1707
1972
  exports.meterVariants = meterVariants;
1708
1973
  exports.navbarVariants = navbarVariants;
1974
+ exports.popoverVariants = popoverVariants;
1709
1975
  exports.progressVariants = progressVariants;
1710
1976
  exports.separatorVariants = separatorVariants;
1711
1977
  exports.sliderVariants = sliderVariants;