@zaamx/netme-pos 0.0.9 → 0.0.11

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.
@@ -311,24 +311,24 @@ const CreateOperatorModal = () => {
311
311
  ] }) }) })
312
312
  ] });
313
313
  };
314
- const columnHelper = ui.createDataTableColumnHelper();
315
- const useColumns = () => {
314
+ const columnHelper$1 = ui.createDataTableColumnHelper();
315
+ const useColumns$1 = () => {
316
316
  return react.useMemo(
317
317
  () => [
318
- columnHelper.accessor("first_name", {
318
+ columnHelper$1.accessor("first_name", {
319
319
  header: "First Name"
320
320
  }),
321
- columnHelper.accessor("last_name", {
321
+ columnHelper$1.accessor("last_name", {
322
322
  header: "Last Name"
323
323
  }),
324
- columnHelper.accessor("email", {
324
+ columnHelper$1.accessor("email", {
325
325
  header: "Email"
326
326
  }),
327
- columnHelper.accessor("created_at", {
327
+ columnHelper$1.accessor("created_at", {
328
328
  header: "Date Added",
329
329
  cell: ({ getValue }) => new Date(getValue()).toLocaleDateString()
330
330
  }),
331
- columnHelper.display({
331
+ columnHelper$1.display({
332
332
  id: "actions",
333
333
  cell: ({ row }) => /* @__PURE__ */ jsxRuntime.jsx(OperatorActions, { operator: row.original })
334
334
  })
@@ -355,7 +355,7 @@ const OperatorTable = () => {
355
355
  queryKey: ["operators", limit, offset, searchValue],
356
356
  placeholderData: (previousData) => previousData
357
357
  });
358
- const columns = useColumns();
358
+ const columns = useColumns$1();
359
359
  const table = ui.useDataTable({
360
360
  data: (data == null ? void 0 : data.operators) || [],
361
361
  columns,
@@ -386,10 +386,499 @@ const OperatorsPage = () => {
386
386
  /* @__PURE__ */ jsxRuntime.jsx(OperatorTable, {})
387
387
  ] });
388
388
  };
389
- const config = adminSdk.defineRouteConfig({
389
+ const config$1 = adminSdk.defineRouteConfig({
390
390
  label: "Operators",
391
391
  icon: icons.Users
392
392
  });
393
+ const STATUS_OPTIONS = [
394
+ "pending",
395
+ "paid",
396
+ "approved",
397
+ "rejected",
398
+ "canceled"
399
+ ];
400
+ const toForm = (po) => ({
401
+ payment_method: po.payment_method ?? "",
402
+ amount: po.amount != null ? String(po.amount) : "",
403
+ status: po.status ?? "",
404
+ concept: po.concept ?? "",
405
+ reference_code: po.reference_code ?? "",
406
+ institution: po.institution ?? "",
407
+ depositor_name: po.depositor_name ?? "",
408
+ terminal_reference: po.terminal_reference ?? "",
409
+ ticket_amount: po.ticket_amount != null ? String(po.ticket_amount) : "",
410
+ authorizer: po.authorizer ?? "",
411
+ receipt_file: po.receipt_file ?? ""
412
+ });
413
+ const EditPaymentOptionDrawer = ({
414
+ paymentOption,
415
+ open,
416
+ setOpen
417
+ }) => {
418
+ const [formData, setFormData] = react.useState(toForm(paymentOption));
419
+ const queryClient = reactQuery.useQueryClient();
420
+ react.useEffect(() => {
421
+ if (open) {
422
+ setFormData(toForm(paymentOption));
423
+ }
424
+ }, [open, paymentOption]);
425
+ const update = (key, value) => setFormData((prev) => ({ ...prev, [key]: value }));
426
+ const updateMutation = reactQuery.useMutation({
427
+ mutationFn: () => {
428
+ const payload = {
429
+ payment_method: formData.payment_method,
430
+ status: formData.status,
431
+ concept: formData.concept,
432
+ reference_code: formData.reference_code,
433
+ institution: formData.institution,
434
+ depositor_name: formData.depositor_name,
435
+ terminal_reference: formData.terminal_reference,
436
+ authorizer: formData.authorizer,
437
+ receipt_file: formData.receipt_file
438
+ };
439
+ if (formData.amount.trim() !== "") {
440
+ payload.amount = Number(formData.amount);
441
+ }
442
+ if (formData.ticket_amount.trim() !== "") {
443
+ payload.ticket_amount = Number(formData.ticket_amount);
444
+ }
445
+ return sdk.client.fetch(
446
+ `/admin/payment-options/${paymentOption.id}`,
447
+ {
448
+ method: "POST",
449
+ body: payload
450
+ }
451
+ );
452
+ },
453
+ onSuccess: () => {
454
+ queryClient.invalidateQueries({ queryKey: ["payment-options"] });
455
+ ui.toast.success("Nota de pago actualizada");
456
+ setOpen(false);
457
+ },
458
+ onError: (error) => {
459
+ ui.toast.error(error.message || "No se pudo actualizar la nota de pago");
460
+ }
461
+ });
462
+ const statusOptions = STATUS_OPTIONS.includes(formData.status) || !formData.status ? STATUS_OPTIONS : [formData.status, ...STATUS_OPTIONS];
463
+ return /* @__PURE__ */ jsxRuntime.jsx(ui.Drawer, { open, onOpenChange: setOpen, children: /* @__PURE__ */ jsxRuntime.jsxs(ui.Drawer.Content, { children: [
464
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Drawer.Header, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Drawer.Title, { children: "Editar nota de pago" }) }),
465
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Drawer.Body, { className: "flex-1 overflow-auto p-4", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-y-4", children: [
466
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-y-1", children: [
467
+ paymentOption.order_display_id ? /* @__PURE__ */ jsxRuntime.jsxs(ui.Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: [
468
+ "Orden #",
469
+ paymentOption.order_display_id
470
+ ] }) : null,
471
+ /* @__PURE__ */ jsxRuntime.jsxs(ui.Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: [
472
+ "Pago: ",
473
+ paymentOption.payment_id
474
+ ] })
475
+ ] }),
476
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-y-2", children: [
477
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { children: "Método de pago" }),
478
+ /* @__PURE__ */ jsxRuntime.jsx(
479
+ ui.Input,
480
+ {
481
+ value: formData.payment_method,
482
+ onChange: (e) => update("payment_method", e.target.value)
483
+ }
484
+ )
485
+ ] }),
486
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-x-3", children: [
487
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-y-2", children: [
488
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { children: "Monto" }),
489
+ /* @__PURE__ */ jsxRuntime.jsx(
490
+ ui.Input,
491
+ {
492
+ type: "number",
493
+ step: "0.01",
494
+ value: formData.amount,
495
+ onChange: (e) => update("amount", e.target.value)
496
+ }
497
+ )
498
+ ] }),
499
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-y-2", children: [
500
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { children: "Estatus" }),
501
+ /* @__PURE__ */ jsxRuntime.jsxs(
502
+ ui.Select,
503
+ {
504
+ value: formData.status,
505
+ onValueChange: (value) => update("status", value),
506
+ children: [
507
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Trigger, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Value, { placeholder: "Seleccionar estatus" }) }),
508
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Content, { children: statusOptions.map((s) => /* @__PURE__ */ jsxRuntime.jsx(ui.Select.Item, { value: s, children: s }, s)) })
509
+ ]
510
+ }
511
+ )
512
+ ] })
513
+ ] }),
514
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-y-2", children: [
515
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { children: "Concepto" }),
516
+ /* @__PURE__ */ jsxRuntime.jsx(
517
+ ui.Input,
518
+ {
519
+ value: formData.concept,
520
+ onChange: (e) => update("concept", e.target.value)
521
+ }
522
+ )
523
+ ] }),
524
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-y-2", children: [
525
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { children: "Folio / Referencia" }),
526
+ /* @__PURE__ */ jsxRuntime.jsx(
527
+ ui.Input,
528
+ {
529
+ value: formData.reference_code,
530
+ onChange: (e) => update("reference_code", e.target.value)
531
+ }
532
+ )
533
+ ] }),
534
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-y-2", children: [
535
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { children: "Institución" }),
536
+ /* @__PURE__ */ jsxRuntime.jsx(
537
+ ui.Input,
538
+ {
539
+ value: formData.institution,
540
+ onChange: (e) => update("institution", e.target.value)
541
+ }
542
+ )
543
+ ] }),
544
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-y-2", children: [
545
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { children: "Nombre del depositante" }),
546
+ /* @__PURE__ */ jsxRuntime.jsx(
547
+ ui.Input,
548
+ {
549
+ value: formData.depositor_name,
550
+ onChange: (e) => update("depositor_name", e.target.value)
551
+ }
552
+ )
553
+ ] }),
554
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-x-3", children: [
555
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-y-2", children: [
556
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { children: "Referencia de terminal" }),
557
+ /* @__PURE__ */ jsxRuntime.jsx(
558
+ ui.Input,
559
+ {
560
+ value: formData.terminal_reference,
561
+ onChange: (e) => update("terminal_reference", e.target.value)
562
+ }
563
+ )
564
+ ] }),
565
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-y-2", children: [
566
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { children: "Monto del ticket" }),
567
+ /* @__PURE__ */ jsxRuntime.jsx(
568
+ ui.Input,
569
+ {
570
+ type: "number",
571
+ step: "0.01",
572
+ value: formData.ticket_amount,
573
+ onChange: (e) => update("ticket_amount", e.target.value)
574
+ }
575
+ )
576
+ ] })
577
+ ] }),
578
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-y-2", children: [
579
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { children: "Autorizó" }),
580
+ /* @__PURE__ */ jsxRuntime.jsx(
581
+ ui.Input,
582
+ {
583
+ value: formData.authorizer,
584
+ onChange: (e) => update("authorizer", e.target.value)
585
+ }
586
+ )
587
+ ] }),
588
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-y-2", children: [
589
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { children: "Comprobante (URL)" }),
590
+ /* @__PURE__ */ jsxRuntime.jsx(
591
+ ui.Input,
592
+ {
593
+ value: formData.receipt_file,
594
+ onChange: (e) => update("receipt_file", e.target.value)
595
+ }
596
+ ),
597
+ formData.receipt_file && /* @__PURE__ */ jsxRuntime.jsx(
598
+ "a",
599
+ {
600
+ href: formData.receipt_file,
601
+ target: "_blank",
602
+ rel: "noreferrer",
603
+ className: "text-ui-fg-interactive text-xs",
604
+ children: "Ver comprobante"
605
+ }
606
+ )
607
+ ] })
608
+ ] }) }),
609
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Drawer.Footer, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-x-2", children: [
610
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Drawer.Close, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
611
+ ui.Button,
612
+ {
613
+ size: "small",
614
+ variant: "secondary",
615
+ disabled: updateMutation.isPending,
616
+ children: "Cancelar"
617
+ }
618
+ ) }),
619
+ /* @__PURE__ */ jsxRuntime.jsx(
620
+ ui.Button,
621
+ {
622
+ size: "small",
623
+ onClick: () => updateMutation.mutate(),
624
+ isLoading: updateMutation.isPending,
625
+ children: "Guardar"
626
+ }
627
+ )
628
+ ] }) })
629
+ ] }) });
630
+ };
631
+ const DeletePaymentOptionModal = ({
632
+ paymentOption,
633
+ open,
634
+ setOpen
635
+ }) => {
636
+ const queryClient = reactQuery.useQueryClient();
637
+ const deleteMutation = reactQuery.useMutation({
638
+ mutationFn: () => sdk.client.fetch(`/admin/payment-options/${paymentOption.id}`, {
639
+ method: "DELETE"
640
+ }),
641
+ onSuccess: () => {
642
+ queryClient.invalidateQueries({ queryKey: ["payment-options"] });
643
+ ui.toast.success("Nota de pago eliminada");
644
+ setOpen(false);
645
+ },
646
+ onError: (error) => {
647
+ ui.toast.error(error.message || "No se pudo eliminar la nota de pago");
648
+ }
649
+ });
650
+ const label = paymentOption.reference_code || paymentOption.concept || paymentOption.payment_method || paymentOption.id;
651
+ return /* @__PURE__ */ jsxRuntime.jsx(ui.Prompt, { open, onOpenChange: setOpen, children: /* @__PURE__ */ jsxRuntime.jsxs(ui.Prompt.Content, { children: [
652
+ /* @__PURE__ */ jsxRuntime.jsxs(ui.Prompt.Header, { children: [
653
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Prompt.Title, { children: "Eliminar nota de pago" }),
654
+ /* @__PURE__ */ jsxRuntime.jsxs(ui.Prompt.Description, { children: [
655
+ '¿Seguro que deseas eliminar la nota de pago "',
656
+ label,
657
+ '"? Esta acción no se puede deshacer.'
658
+ ] })
659
+ ] }),
660
+ /* @__PURE__ */ jsxRuntime.jsxs(ui.Prompt.Footer, { children: [
661
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Prompt.Cancel, { children: "Cancelar" }),
662
+ /* @__PURE__ */ jsxRuntime.jsx(
663
+ ui.Prompt.Action,
664
+ {
665
+ onClick: () => deleteMutation.mutate(),
666
+ disabled: deleteMutation.isPending,
667
+ children: "Eliminar"
668
+ }
669
+ )
670
+ ] })
671
+ ] }) });
672
+ };
673
+ const PaymentOptionActions = ({
674
+ paymentOption
675
+ }) => {
676
+ const [editOpen, setEditOpen] = react.useState(false);
677
+ const [deleteOpen, setDeleteOpen] = react.useState(false);
678
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
679
+ /* @__PURE__ */ jsxRuntime.jsxs(ui.DropdownMenu, { children: [
680
+ /* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenu.Trigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ui.IconButton, { size: "small", variant: "transparent", children: /* @__PURE__ */ jsxRuntime.jsx(icons.EllipsisHorizontal, {}) }) }),
681
+ /* @__PURE__ */ jsxRuntime.jsxs(ui.DropdownMenu.Content, { children: [
682
+ /* @__PURE__ */ jsxRuntime.jsxs(
683
+ ui.DropdownMenu.Item,
684
+ {
685
+ onClick: () => setEditOpen(true),
686
+ className: "gap-x-2",
687
+ children: [
688
+ /* @__PURE__ */ jsxRuntime.jsx(icons.PencilSquare, { className: "text-ui-fg-subtle" }),
689
+ "Editar"
690
+ ]
691
+ }
692
+ ),
693
+ /* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenu.Separator, {}),
694
+ /* @__PURE__ */ jsxRuntime.jsxs(
695
+ ui.DropdownMenu.Item,
696
+ {
697
+ onClick: () => setDeleteOpen(true),
698
+ className: "gap-x-2",
699
+ children: [
700
+ /* @__PURE__ */ jsxRuntime.jsx(icons.Trash, { className: "text-ui-fg-subtle" }),
701
+ "Eliminar"
702
+ ]
703
+ }
704
+ )
705
+ ] })
706
+ ] }),
707
+ /* @__PURE__ */ jsxRuntime.jsx(
708
+ EditPaymentOptionDrawer,
709
+ {
710
+ paymentOption,
711
+ open: editOpen,
712
+ setOpen: setEditOpen
713
+ }
714
+ ),
715
+ /* @__PURE__ */ jsxRuntime.jsx(
716
+ DeletePaymentOptionModal,
717
+ {
718
+ paymentOption,
719
+ open: deleteOpen,
720
+ setOpen: setDeleteOpen
721
+ }
722
+ )
723
+ ] });
724
+ };
725
+ const columnHelper = ui.createDataTableColumnHelper();
726
+ const formatAmount = (value) => {
727
+ const n = Number(value ?? 0);
728
+ return n.toLocaleString("es-MX", {
729
+ minimumFractionDigits: 2,
730
+ maximumFractionDigits: 2
731
+ });
732
+ };
733
+ const statusColor = (status) => {
734
+ switch ((status || "").toLowerCase()) {
735
+ case "paid":
736
+ case "pagado":
737
+ case "approved":
738
+ case "aprobado":
739
+ case "completed":
740
+ return "green";
741
+ case "pending":
742
+ case "pendiente":
743
+ case "in_progress":
744
+ return "orange";
745
+ case "rejected":
746
+ case "rechazado":
747
+ case "failed":
748
+ case "canceled":
749
+ case "cancelled":
750
+ case "cancelado":
751
+ return "red";
752
+ default:
753
+ return "grey";
754
+ }
755
+ };
756
+ const useColumns = () => {
757
+ return react.useMemo(
758
+ () => [
759
+ columnHelper.accessor("order_display_id", {
760
+ header: "Orden",
761
+ cell: ({ row }) => {
762
+ const displayId = row.original.order_display_id;
763
+ const orderId = row.original.order_id;
764
+ if (!displayId) {
765
+ return "—";
766
+ }
767
+ if (!orderId) {
768
+ return `#${displayId}`;
769
+ }
770
+ return /* @__PURE__ */ jsxRuntime.jsxs(
771
+ "a",
772
+ {
773
+ href: `/app/orders/${orderId}`,
774
+ className: "text-ui-fg-interactive hover:underline",
775
+ onClick: (e) => e.stopPropagation(),
776
+ children: [
777
+ "#",
778
+ displayId
779
+ ]
780
+ }
781
+ );
782
+ }
783
+ }),
784
+ columnHelper.accessor("reference_code", {
785
+ header: "Folio / Referencia",
786
+ cell: ({ getValue }) => getValue() || "—"
787
+ }),
788
+ columnHelper.accessor("payment_method", {
789
+ header: "Método",
790
+ cell: ({ getValue }) => getValue() || "—"
791
+ }),
792
+ columnHelper.accessor("amount", {
793
+ header: "Monto",
794
+ cell: ({ getValue }) => formatAmount(getValue())
795
+ }),
796
+ columnHelper.accessor("status", {
797
+ header: "Estatus",
798
+ cell: ({ getValue }) => {
799
+ const status = getValue();
800
+ if (!status) {
801
+ return "—";
802
+ }
803
+ return /* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { size: "2xsmall", color: statusColor(status), children: status });
804
+ }
805
+ }),
806
+ columnHelper.accessor("concept", {
807
+ header: "Concepto",
808
+ cell: ({ getValue }) => getValue() || "—"
809
+ }),
810
+ columnHelper.accessor("created_at", {
811
+ header: "Fecha",
812
+ cell: ({ getValue }) => new Date(getValue()).toLocaleString()
813
+ }),
814
+ columnHelper.display({
815
+ id: "actions",
816
+ cell: ({ row }) => /* @__PURE__ */ jsxRuntime.jsx(PaymentOptionActions, { paymentOption: row.original })
817
+ })
818
+ ],
819
+ []
820
+ );
821
+ };
822
+ const PaymentOptionTable = () => {
823
+ const [searchValue, setSearchValue] = react.useState("");
824
+ const [pagination, setPagination] = react.useState({
825
+ pageIndex: 0,
826
+ pageSize: 15
827
+ });
828
+ const limit = pagination.pageSize;
829
+ const offset = pagination.pageIndex * limit;
830
+ const { data, isLoading } = reactQuery.useQuery({
831
+ queryFn: () => sdk.client.fetch("/admin/payment-options", {
832
+ query: {
833
+ limit,
834
+ offset,
835
+ q: searchValue || void 0
836
+ }
837
+ }),
838
+ queryKey: ["payment-options", limit, offset, searchValue],
839
+ placeholderData: (previousData) => previousData
840
+ });
841
+ const columns = useColumns();
842
+ const table = ui.useDataTable({
843
+ data: (data == null ? void 0 : data.payment_options) || [],
844
+ columns,
845
+ getRowId: (row) => row.id,
846
+ rowCount: (data == null ? void 0 : data.count) || 0,
847
+ isLoading,
848
+ search: {
849
+ state: searchValue,
850
+ onSearchChange: setSearchValue
851
+ },
852
+ pagination: {
853
+ state: pagination,
854
+ onPaginationChange: setPagination
855
+ }
856
+ });
857
+ return /* @__PURE__ */ jsxRuntime.jsxs(ui.DataTable, { instance: table, children: [
858
+ /* @__PURE__ */ jsxRuntime.jsx(ui.DataTable.Toolbar, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full items-center justify-between gap-x-2", children: [
859
+ /* @__PURE__ */ jsxRuntime.jsxs(ui.Text, { size: "small", className: "text-ui-fg-subtle", children: [
860
+ (data == null ? void 0 : data.count) ?? 0,
861
+ " notas"
862
+ ] }),
863
+ /* @__PURE__ */ jsxRuntime.jsx(ui.DataTable.Search, { placeholder: "Buscar por orden, folio, concepto, método..." })
864
+ ] }) }),
865
+ /* @__PURE__ */ jsxRuntime.jsx(ui.DataTable.Table, {}),
866
+ /* @__PURE__ */ jsxRuntime.jsx(ui.DataTable.Pagination, {})
867
+ ] });
868
+ };
869
+ const PaymentOptionsPage = () => {
870
+ return /* @__PURE__ */ jsxRuntime.jsxs(ui.Container, { className: "flex flex-col items-stretch overflow-hidden p-0", children: [
871
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-between border-b border-ui-border-base px-6 py-4", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-y-1", children: [
872
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { level: "h2", children: "Notas de pago (POS)" }),
873
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "small", className: "text-ui-fg-subtle", children: "Revisa, edita o elimina las notas de pago registradas desde el POS." })
874
+ ] }) }),
875
+ /* @__PURE__ */ jsxRuntime.jsx(PaymentOptionTable, {})
876
+ ] });
877
+ };
878
+ const config = adminSdk.defineRouteConfig({
879
+ label: "Notas de pago",
880
+ icon: icons.CurrencyDollar
881
+ });
393
882
  const i18nTranslations0 = {};
394
883
  const widgetModule = { widgets: [] };
395
884
  const routeModule = {
@@ -397,15 +886,27 @@ const routeModule = {
397
886
  {
398
887
  Component: OperatorsPage,
399
888
  path: "/operators"
889
+ },
890
+ {
891
+ Component: PaymentOptionsPage,
892
+ path: "/payment-options"
400
893
  }
401
894
  ]
402
895
  };
403
896
  const menuItemModule = {
404
897
  menuItems: [
898
+ {
899
+ label: config$1.label,
900
+ icon: config$1.icon,
901
+ path: "/operators",
902
+ nested: void 0,
903
+ rank: void 0,
904
+ translationNs: void 0
905
+ },
405
906
  {
406
907
  label: config.label,
407
908
  icon: config.icon,
408
- path: "/operators",
909
+ path: "/payment-options",
409
910
  nested: void 0,
410
911
  rank: void 0,
411
912
  translationNs: void 0