@codefast/ui 0.0.8 → 0.0.10
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/accordion.d.mts +8 -4
- package/dist/accordion.d.ts +8 -4
- package/dist/accordion.js +42 -32
- package/dist/accordion.js.map +1 -1
- package/dist/accordion.mjs +42 -32
- package/dist/accordion.mjs.map +1 -1
- package/dist/alert-dialog.d.mts +17 -8
- package/dist/alert-dialog.d.ts +17 -8
- package/dist/alert-dialog.js +47 -75
- package/dist/alert-dialog.js.map +1 -1
- package/dist/alert-dialog.mjs +47 -75
- package/dist/alert-dialog.mjs.map +1 -1
- package/dist/alert.d.mts +10 -5
- package/dist/alert.d.ts +10 -5
- package/dist/alert.js +5 -26
- package/dist/alert.js.map +1 -1
- package/dist/alert.mjs +5 -26
- package/dist/alert.mjs.map +1 -1
- package/dist/aspect-ratio.d.mts +2 -1
- package/dist/aspect-ratio.d.ts +2 -1
- package/dist/aspect-ratio.js.map +1 -1
- package/dist/aspect-ratio.mjs.map +1 -1
- package/dist/avatar.d.mts +7 -4
- package/dist/avatar.d.ts +7 -4
- package/dist/avatar.js +3 -16
- package/dist/avatar.js.map +1 -1
- package/dist/avatar.mjs +3 -16
- package/dist/avatar.mjs.map +1 -1
- package/dist/badge.d.mts +5 -2
- package/dist/badge.d.ts +5 -2
- package/dist/badge.js +1 -5
- package/dist/badge.js.map +1 -1
- package/dist/badge.mjs +1 -5
- package/dist/badge.mjs.map +1 -1
- package/dist/blockquote.d.mts +5 -4
- package/dist/blockquote.d.ts +5 -4
- package/dist/blockquote.js.map +1 -1
- package/dist/blockquote.mjs.map +1 -1
- package/dist/box.d.mts +1 -1
- package/dist/box.d.ts +1 -1
- package/dist/box.js +4 -6
- package/dist/box.js.map +1 -1
- package/dist/box.mjs +4 -6
- package/dist/box.mjs.map +1 -1
- package/dist/breadcrumb.d.mts +18 -11
- package/dist/breadcrumb.d.ts +18 -11
- package/dist/breadcrumb.js +12 -39
- package/dist/breadcrumb.js.map +1 -1
- package/dist/breadcrumb.mjs +12 -39
- package/dist/breadcrumb.mjs.map +1 -1
- package/dist/button.d.mts +4 -2
- package/dist/button.d.ts +4 -2
- package/dist/button.js +3 -2
- package/dist/button.mjs +2 -1
- package/dist/calendar.d.mts +3 -2
- package/dist/calendar.d.ts +3 -2
- package/dist/calendar.js +7 -19
- package/dist/calendar.js.map +1 -1
- package/dist/calendar.mjs +6 -18
- package/dist/calendar.mjs.map +1 -1
- package/dist/card.d.mts +13 -7
- package/dist/card.d.ts +13 -7
- package/dist/card.js +7 -44
- package/dist/card.js.map +1 -1
- package/dist/card.mjs +7 -44
- package/dist/card.mjs.map +1 -1
- package/dist/carousel.d.mts +13 -8
- package/dist/carousel.d.ts +13 -8
- package/dist/carousel.js +104 -104
- package/dist/carousel.js.map +1 -1
- package/dist/carousel.mjs +104 -104
- package/dist/carousel.mjs.map +1 -1
- package/dist/checkbox-cards.d.mts +15 -0
- package/dist/checkbox-cards.d.ts +15 -0
- package/dist/checkbox-cards.js +56 -0
- package/dist/checkbox-cards.js.map +1 -0
- package/dist/checkbox-cards.mjs +56 -0
- package/dist/checkbox-cards.mjs.map +1 -0
- package/dist/checkbox-group.d.mts +13 -0
- package/dist/checkbox-group.d.ts +13 -0
- package/dist/checkbox-group.js +44 -0
- package/dist/checkbox-group.js.map +1 -0
- package/dist/checkbox-group.mjs +44 -0
- package/dist/checkbox-group.mjs.map +1 -0
- package/dist/checkbox-group.primitive.d.mts +38 -0
- package/dist/checkbox-group.primitive.d.ts +38 -0
- package/dist/checkbox-group.primitive.js +19 -0
- package/dist/checkbox-group.primitive.js.map +1 -0
- package/dist/checkbox-group.primitive.mjs +19 -0
- package/dist/checkbox-group.primitive.mjs.map +1 -0
- package/dist/checkbox.d.mts +3 -2
- package/dist/checkbox.d.ts +3 -2
- package/dist/checkbox.js +5 -1
- package/dist/checkbox.js.map +1 -1
- package/dist/checkbox.mjs +5 -1
- package/dist/checkbox.mjs.map +1 -1
- package/dist/chunk-3ZZ3SRTJ.js +148 -0
- package/dist/chunk-3ZZ3SRTJ.js.map +1 -0
- package/dist/chunk-5UHPKXF4.mjs +60 -0
- package/dist/chunk-5UHPKXF4.mjs.map +1 -0
- package/dist/chunk-EWS3N4OZ.mjs +148 -0
- package/dist/chunk-EWS3N4OZ.mjs.map +1 -0
- package/dist/{chunk-PTD4AMHI.mjs → chunk-FGI3JA75.mjs} +1 -1
- package/dist/chunk-FGI3JA75.mjs.map +1 -0
- package/dist/{chunk-RTKEO347.js → chunk-IVYGBU4G.js} +1 -1
- package/dist/chunk-IVYGBU4G.js.map +1 -0
- package/dist/chunk-IXEJO7ZP.js +86 -0
- package/dist/chunk-IXEJO7ZP.js.map +1 -0
- package/dist/chunk-J6COVJTP.js +60 -0
- package/dist/chunk-J6COVJTP.js.map +1 -0
- package/dist/chunk-JULVZPCS.mjs +120 -0
- package/dist/chunk-JULVZPCS.mjs.map +1 -0
- package/dist/chunk-LNSEYAPJ.js +121 -0
- package/dist/chunk-LNSEYAPJ.js.map +1 -0
- package/dist/chunk-MOJNV3XZ.js +120 -0
- package/dist/chunk-MOJNV3XZ.js.map +1 -0
- package/dist/{chunk-U2WDUCW3.js → chunk-NEP3JDVQ.js} +31 -6
- package/dist/chunk-NEP3JDVQ.js.map +1 -0
- package/dist/chunk-OK63Q6EJ.mjs +121 -0
- package/dist/chunk-OK63Q6EJ.mjs.map +1 -0
- package/dist/{chunk-5GHZ6EXI.js → chunk-ORAVN37L.js} +6 -10
- package/dist/chunk-ORAVN37L.js.map +1 -0
- package/dist/{chunk-T52N6ZBP.mjs → chunk-XCBBSHAK.mjs} +6 -10
- package/dist/chunk-XCBBSHAK.mjs.map +1 -0
- package/dist/chunk-XCKLBP2V.mjs +86 -0
- package/dist/chunk-XCKLBP2V.mjs.map +1 -0
- package/dist/chunk-XHZUPL2U.mjs +81 -0
- package/dist/chunk-XHZUPL2U.mjs.map +1 -0
- package/dist/code.d.mts +5 -4
- package/dist/code.d.ts +5 -4
- package/dist/code.js.map +1 -1
- package/dist/code.mjs.map +1 -1
- package/dist/collapsible.d.mts +4 -1
- package/dist/collapsible.d.ts +4 -1
- package/dist/collapsible.js.map +1 -1
- package/dist/collapsible.mjs.map +1 -1
- package/dist/command.d.mts +24 -12
- package/dist/command.d.ts +24 -12
- package/dist/command.js +9 -40
- package/dist/command.js.map +1 -1
- package/dist/command.mjs +9 -40
- package/dist/command.mjs.map +1 -1
- package/dist/container.d.mts +5 -4
- package/dist/container.d.ts +5 -4
- package/dist/container.js.map +1 -1
- package/dist/container.mjs.map +1 -1
- package/dist/context-menu.d.mts +31 -16
- package/dist/context-menu.d.ts +31 -16
- package/dist/context-menu.js +108 -124
- package/dist/context-menu.js.map +1 -1
- package/dist/context-menu.mjs +109 -125
- package/dist/context-menu.mjs.map +1 -1
- package/dist/data-table.d.mts +10 -7
- package/dist/data-table.d.ts +10 -7
- package/dist/data-table.js +131 -149
- package/dist/data-table.js.map +1 -1
- package/dist/data-table.mjs +120 -138
- package/dist/data-table.mjs.map +1 -1
- package/dist/dialog.d.mts +14 -6
- package/dist/dialog.d.ts +14 -6
- package/dist/dialog.js +2 -2
- package/dist/dialog.mjs +1 -1
- package/dist/drawer.d.mts +12 -4
- package/dist/drawer.d.ts +12 -4
- package/dist/drawer.js +30 -63
- package/dist/drawer.js.map +1 -1
- package/dist/drawer.mjs +30 -63
- package/dist/drawer.mjs.map +1 -1
- package/dist/dropdown-menu.d.mts +29 -15
- package/dist/dropdown-menu.d.ts +29 -15
- package/dist/dropdown-menu.js +2 -2
- package/dist/dropdown-menu.mjs +1 -1
- package/dist/em.d.mts +5 -4
- package/dist/em.d.ts +5 -4
- package/dist/em.js.map +1 -1
- package/dist/em.mjs.map +1 -1
- package/dist/form.d.mts +14 -6
- package/dist/form.d.ts +14 -6
- package/dist/form.js +13 -40
- package/dist/form.js.map +1 -1
- package/dist/form.mjs +13 -40
- package/dist/form.mjs.map +1 -1
- package/dist/heading.d.mts +6 -5
- package/dist/heading.d.ts +6 -5
- package/dist/heading.js.map +1 -1
- package/dist/heading.mjs.map +1 -1
- package/dist/hover-card.d.mts +5 -2
- package/dist/hover-card.d.ts +5 -2
- package/dist/hover-card.js +15 -13
- package/dist/hover-card.js.map +1 -1
- package/dist/hover-card.mjs +15 -13
- package/dist/hover-card.mjs.map +1 -1
- package/dist/input-otp.d.mts +12 -32
- package/dist/input-otp.d.ts +12 -32
- package/dist/input-otp.js +16 -13
- package/dist/input-otp.js.map +1 -1
- package/dist/input-otp.mjs +15 -12
- package/dist/input-otp.mjs.map +1 -1
- package/dist/input.d.mts +6 -3
- package/dist/input.d.ts +6 -3
- package/dist/input.js +8 -10
- package/dist/input.js.map +1 -1
- package/dist/input.mjs +8 -10
- package/dist/input.mjs.map +1 -1
- package/dist/kbd.d.mts +5 -4
- package/dist/kbd.d.ts +5 -4
- package/dist/kbd.js.map +1 -1
- package/dist/kbd.mjs.map +1 -1
- package/dist/label.d.mts +3 -2
- package/dist/label.d.ts +3 -2
- package/dist/label.js +2 -2
- package/dist/label.mjs +1 -1
- package/dist/menubar.d.mts +32 -17
- package/dist/menubar.d.ts +32 -17
- package/dist/menubar.js +73 -93
- package/dist/menubar.js.map +1 -1
- package/dist/menubar.mjs +74 -94
- package/dist/menubar.mjs.map +1 -1
- package/dist/navigation-menu.d.mts +16 -8
- package/dist/navigation-menu.d.ts +16 -8
- package/dist/navigation-menu.js +89 -93
- package/dist/navigation-menu.js.map +1 -1
- package/dist/navigation-menu.mjs +89 -93
- package/dist/navigation-menu.mjs.map +1 -1
- package/dist/pagination.d.mts +13 -7
- package/dist/pagination.d.ts +13 -7
- package/dist/pagination.js +18 -55
- package/dist/pagination.js.map +1 -1
- package/dist/pagination.mjs +18 -55
- package/dist/pagination.mjs.map +1 -1
- package/dist/popover.d.mts +8 -3
- package/dist/popover.d.ts +8 -3
- package/dist/popover.js +16 -21
- package/dist/popover.js.map +1 -1
- package/dist/popover.mjs +16 -21
- package/dist/popover.mjs.map +1 -1
- package/dist/pre.d.mts +5 -4
- package/dist/pre.d.ts +5 -4
- package/dist/pre.js.map +1 -1
- package/dist/pre.mjs.map +1 -1
- package/dist/progress.d.mts +3 -2
- package/dist/progress.d.ts +3 -2
- package/dist/progress.js +2 -5
- package/dist/progress.js.map +1 -1
- package/dist/progress.mjs +2 -5
- package/dist/progress.mjs.map +1 -1
- package/dist/quote.d.mts +5 -4
- package/dist/quote.d.ts +5 -4
- package/dist/quote.js.map +1 -1
- package/dist/quote.mjs.map +1 -1
- package/dist/radio-cards.d.mts +9 -0
- package/dist/radio-cards.d.ts +9 -0
- package/dist/radio-cards.js +36 -0
- package/dist/radio-cards.js.map +1 -0
- package/dist/radio-cards.mjs +36 -0
- package/dist/radio-cards.mjs.map +1 -0
- package/dist/radio-group.d.mts +5 -3
- package/dist/radio-group.d.ts +5 -3
- package/dist/radio-group.js +3 -9
- package/dist/radio-group.js.map +1 -1
- package/dist/radio-group.mjs +3 -9
- package/dist/radio-group.mjs.map +1 -1
- package/dist/radio.d.mts +8 -0
- package/dist/radio.d.ts +8 -0
- package/dist/radio.js +35 -0
- package/dist/radio.js.map +1 -0
- package/dist/radio.mjs +35 -0
- package/dist/radio.mjs.map +1 -0
- package/dist/resizable.d.mts +6 -6
- package/dist/resizable.d.ts +6 -6
- package/dist/resizable.js +4 -6
- package/dist/resizable.js.map +1 -1
- package/dist/resizable.mjs +4 -6
- package/dist/resizable.mjs.map +1 -1
- package/dist/scroll-area.d.mts +5 -3
- package/dist/scroll-area.d.ts +5 -3
- package/dist/scroll-area.js +25 -31
- package/dist/scroll-area.js.map +1 -1
- package/dist/scroll-area.mjs +25 -31
- package/dist/scroll-area.mjs.map +1 -1
- package/dist/section.d.mts +5 -4
- package/dist/section.d.ts +5 -4
- package/dist/section.js.map +1 -1
- package/dist/section.mjs.map +1 -1
- package/dist/select.d.mts +18 -8
- package/dist/select.d.ts +18 -8
- package/dist/select.js +2 -2
- package/dist/select.mjs +1 -1
- package/dist/separator.d.mts +3 -2
- package/dist/separator.d.ts +3 -2
- package/dist/separator.js +1 -5
- package/dist/separator.js.map +1 -1
- package/dist/separator.mjs +1 -5
- package/dist/separator.mjs.map +1 -1
- package/dist/sheet.d.mts +20 -10
- package/dist/sheet.d.ts +20 -10
- package/dist/sheet.js +35 -76
- package/dist/sheet.js.map +1 -1
- package/dist/sheet.mjs +35 -76
- package/dist/sheet.mjs.map +1 -1
- package/dist/skeleton.d.mts +3 -2
- package/dist/skeleton.d.ts +3 -2
- package/dist/skeleton.js +2 -11
- package/dist/skeleton.js.map +1 -1
- package/dist/skeleton.mjs +2 -11
- package/dist/skeleton.mjs.map +1 -1
- package/dist/slider.d.mts +3 -2
- package/dist/slider.d.ts +3 -2
- package/dist/slider.js +10 -5
- package/dist/slider.js.map +1 -1
- package/dist/slider.mjs +10 -5
- package/dist/slider.mjs.map +1 -1
- package/dist/sonner.d.mts +1 -1
- package/dist/sonner.d.ts +1 -1
- package/dist/sonner.js +1 -6
- package/dist/sonner.js.map +1 -1
- package/dist/sonner.mjs +1 -6
- package/dist/sonner.mjs.map +1 -1
- package/dist/spinner.d.mts +8 -0
- package/dist/spinner.d.ts +8 -0
- package/dist/spinner.js +8 -0
- package/dist/spinner.js.map +1 -0
- package/dist/spinner.mjs +8 -0
- package/dist/spinner.mjs.map +1 -0
- package/dist/strong.d.mts +5 -4
- package/dist/strong.d.ts +5 -4
- package/dist/strong.js.map +1 -1
- package/dist/strong.mjs.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/styles.css.map +1 -1
- package/dist/switch.d.mts +3 -2
- package/dist/switch.d.ts +3 -2
- package/dist/switch.js +2 -1
- package/dist/switch.js.map +1 -1
- package/dist/switch.mjs +2 -1
- package/dist/switch.mjs.map +1 -1
- package/dist/table.d.mts +17 -9
- package/dist/table.d.ts +17 -9
- package/dist/table.js +6 -47
- package/dist/table.js.map +1 -1
- package/dist/table.mjs +6 -47
- package/dist/table.mjs.map +1 -1
- package/dist/tabs.d.mts +8 -4
- package/dist/tabs.d.ts +8 -4
- package/dist/tabs.js +4 -2
- package/dist/tabs.js.map +1 -1
- package/dist/tabs.mjs +4 -2
- package/dist/tabs.mjs.map +1 -1
- package/dist/text.d.mts +1 -1
- package/dist/text.d.ts +1 -1
- package/dist/text.js +4 -6
- package/dist/text.js.map +1 -1
- package/dist/text.mjs +4 -6
- package/dist/text.mjs.map +1 -1
- package/dist/textarea.d.mts +3 -2
- package/dist/textarea.d.ts +3 -2
- package/dist/textarea.js +2 -1
- package/dist/textarea.js.map +1 -1
- package/dist/textarea.mjs +2 -1
- package/dist/textarea.mjs.map +1 -1
- package/dist/toggle-group.d.mts +5 -3
- package/dist/toggle-group.d.ts +5 -3
- package/dist/toggle-group.js +41 -34
- package/dist/toggle-group.js.map +1 -1
- package/dist/toggle-group.mjs +40 -33
- package/dist/toggle-group.mjs.map +1 -1
- package/dist/toggle.d.mts +3 -2
- package/dist/toggle.d.ts +3 -2
- package/dist/toggle.js +2 -2
- package/dist/toggle.mjs +1 -1
- package/dist/tooltip.d.mts +8 -3
- package/dist/tooltip.d.ts +8 -3
- package/dist/tooltip.js +15 -20
- package/dist/tooltip.js.map +1 -1
- package/dist/tooltip.mjs +15 -20
- package/dist/tooltip.mjs.map +1 -1
- package/package.json +40 -9
- package/src/accordion.tsx +63 -40
- package/src/alert-dialog.tsx +84 -84
- package/src/alert.tsx +25 -32
- package/src/aspect-ratio.tsx +3 -1
- package/src/avatar.tsx +19 -26
- package/src/badge.tsx +8 -9
- package/src/blockquote.tsx +9 -7
- package/src/box.tsx +8 -7
- package/src/breadcrumb.tsx +55 -54
- package/src/button.tsx +44 -15
- package/src/calendar.tsx +8 -23
- package/src/card.tsx +44 -53
- package/src/carousel.tsx +152 -134
- package/src/checkbox-cards.tsx +68 -0
- package/src/checkbox-group.primitive.tsx +199 -0
- package/src/checkbox-group.tsx +57 -0
- package/src/checkbox.tsx +11 -6
- package/src/code.tsx +9 -5
- package/src/collapsible.tsx +12 -1
- package/src/command.tsx +65 -65
- package/src/container.tsx +9 -7
- package/src/context-menu.tsx +184 -160
- package/src/data-table.tsx +43 -48
- package/src/dialog.tsx +68 -71
- package/src/drawer.tsx +59 -67
- package/src/dropdown-menu.tsx +164 -139
- package/src/em.tsx +9 -5
- package/src/form.tsx +61 -69
- package/src/heading.tsx +10 -8
- package/src/hover-card.tsx +30 -18
- package/src/input-otp.tsx +40 -26
- package/src/input.tsx +16 -15
- package/src/kbd.tsx +9 -5
- package/src/label.tsx +6 -5
- package/src/menubar.tsx +154 -139
- package/src/navigation-menu.tsx +118 -102
- package/src/pagination.tsx +39 -49
- package/src/popover.tsx +41 -27
- package/src/pre.tsx +9 -5
- package/src/progress.tsx +8 -10
- package/src/quote.tsx +9 -5
- package/src/radio-cards.tsx +50 -0
- package/src/radio-group.tsx +14 -17
- package/src/radio.tsx +44 -0
- package/src/resizable.tsx +7 -8
- package/src/scroll-area.tsx +33 -37
- package/src/section.tsx +9 -7
- package/src/select.tsx +116 -105
- package/src/separator.tsx +8 -14
- package/src/sheet.tsx +62 -70
- package/src/skeleton.tsx +5 -11
- package/src/slider.tsx +13 -10
- package/src/sonner.tsx +4 -8
- package/src/spinner.tsx +75 -0
- package/src/strong.tsx +9 -5
- package/src/switch.tsx +8 -6
- package/src/table.tsx +54 -64
- package/src/tabs.tsx +30 -15
- package/src/text.tsx +9 -9
- package/src/textarea.tsx +8 -6
- package/src/toggle-group.tsx +59 -48
- package/src/toggle.tsx +12 -13
- package/src/tooltip.tsx +33 -25
- package/dist/chunk-2D7SRYKN.js +0 -135
- package/dist/chunk-2D7SRYKN.js.map +0 -1
- package/dist/chunk-5GHZ6EXI.js.map +0 -1
- package/dist/chunk-EDVCMWDT.mjs +0 -158
- package/dist/chunk-EDVCMWDT.mjs.map +0 -1
- package/dist/chunk-EIHWTXQ4.mjs +0 -112
- package/dist/chunk-EIHWTXQ4.mjs.map +0 -1
- package/dist/chunk-ESWGFN3R.mjs +0 -135
- package/dist/chunk-ESWGFN3R.mjs.map +0 -1
- package/dist/chunk-KW5FJ62U.mjs +0 -56
- package/dist/chunk-KW5FJ62U.mjs.map +0 -1
- package/dist/chunk-LDYBRDAY.js +0 -112
- package/dist/chunk-LDYBRDAY.js.map +0 -1
- package/dist/chunk-OCLLX7EY.js +0 -158
- package/dist/chunk-OCLLX7EY.js.map +0 -1
- package/dist/chunk-PTD4AMHI.mjs.map +0 -1
- package/dist/chunk-RTKEO347.js.map +0 -1
- package/dist/chunk-T52N6ZBP.mjs.map +0 -1
- package/dist/chunk-U2WDUCW3.js.map +0 -1
package/src/context-menu.tsx
CHANGED
|
@@ -2,257 +2,266 @@
|
|
|
2
2
|
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import * as ContextMenuPrimitive from "@radix-ui/react-context-menu";
|
|
5
|
-
import {
|
|
6
|
-
CheckIcon,
|
|
7
|
-
ChevronRightIcon,
|
|
8
|
-
DotFilledIcon,
|
|
9
|
-
} from "@radix-ui/react-icons";
|
|
5
|
+
import { CheckIcon, ChevronRightIcon, DotFilledIcon } from "@radix-ui/react-icons";
|
|
10
6
|
import { cn } from "./utils";
|
|
11
7
|
|
|
12
8
|
/* -----------------------------------------------------------------------------
|
|
13
9
|
* Component: ContextMenu
|
|
14
10
|
* -------------------------------------------------------------------------- */
|
|
15
11
|
|
|
12
|
+
type ContextMenuProps = React.ComponentProps<typeof ContextMenuPrimitive.Root>;
|
|
16
13
|
const ContextMenu = ContextMenuPrimitive.Root;
|
|
17
14
|
|
|
18
15
|
/* -----------------------------------------------------------------------------
|
|
19
16
|
* Component: ContextMenuTrigger
|
|
20
17
|
* -------------------------------------------------------------------------- */
|
|
21
18
|
|
|
19
|
+
type ContextMenuTriggerProps = React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Trigger>;
|
|
22
20
|
const ContextMenuTrigger = ContextMenuPrimitive.Trigger;
|
|
23
21
|
|
|
24
22
|
/* -----------------------------------------------------------------------------
|
|
25
23
|
* Component: ContextMenuGroup
|
|
26
24
|
* -------------------------------------------------------------------------- */
|
|
27
25
|
|
|
26
|
+
type ContextMenuGroupProps = React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Group>;
|
|
28
27
|
const ContextMenuGroup = ContextMenuPrimitive.Group;
|
|
29
28
|
|
|
30
29
|
/* -----------------------------------------------------------------------------
|
|
31
30
|
* Component: ContextMenuSub
|
|
32
31
|
* -------------------------------------------------------------------------- */
|
|
33
32
|
|
|
33
|
+
type ContextMenuSubProps = React.ComponentProps<typeof ContextMenuPrimitive.Sub>;
|
|
34
34
|
const ContextMenuSub = ContextMenuPrimitive.Sub;
|
|
35
35
|
|
|
36
36
|
/* -----------------------------------------------------------------------------
|
|
37
37
|
* Component: ContextMenuRadioGroup
|
|
38
38
|
* -------------------------------------------------------------------------- */
|
|
39
39
|
|
|
40
|
+
type ContextMenuRadioGroupProps = React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioGroup>;
|
|
40
41
|
const ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
|
|
41
42
|
|
|
42
43
|
/* -----------------------------------------------------------------------------
|
|
43
44
|
* Component: ContextMenuSubTrigger
|
|
44
45
|
* -------------------------------------------------------------------------- */
|
|
45
46
|
|
|
46
|
-
|
|
47
|
-
React.ElementRef<typeof ContextMenuPrimitive.SubTrigger>,
|
|
48
|
-
ContextMenuPrimitive.ContextMenuSubTriggerProps & {
|
|
49
|
-
inset?: boolean;
|
|
50
|
-
}
|
|
51
|
-
>(({ className, inset, children, ...props }, ref) => (
|
|
52
|
-
<ContextMenuPrimitive.SubTrigger
|
|
53
|
-
ref={ref}
|
|
54
|
-
className={cn(
|
|
55
|
-
"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm focus:outline-none",
|
|
56
|
-
inset && "pl-8",
|
|
57
|
-
className,
|
|
58
|
-
)}
|
|
59
|
-
{...props}
|
|
60
|
-
>
|
|
61
|
-
{children}
|
|
62
|
-
<ChevronRightIcon className="ml-auto size-4" />
|
|
63
|
-
</ContextMenuPrimitive.SubTrigger>
|
|
64
|
-
));
|
|
65
|
-
ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
|
|
47
|
+
type ContextMenuSubTriggerElement = React.ElementRef<typeof ContextMenuPrimitive.SubTrigger>;
|
|
66
48
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
49
|
+
interface ContextMenuSubTriggerProps extends React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger> {
|
|
50
|
+
inset?: boolean;
|
|
51
|
+
}
|
|
70
52
|
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
>(({ className, ...props }, ref) => (
|
|
75
|
-
<ContextMenuPrimitive.Portal>
|
|
76
|
-
<ContextMenuPrimitive.SubContent
|
|
53
|
+
const ContextMenuSubTrigger = React.forwardRef<ContextMenuSubTriggerElement, ContextMenuSubTriggerProps>(
|
|
54
|
+
({ className, inset, children, ...props }, ref) => (
|
|
55
|
+
<ContextMenuPrimitive.SubTrigger
|
|
77
56
|
ref={ref}
|
|
78
57
|
className={cn(
|
|
79
|
-
"bg-
|
|
58
|
+
"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm focus:outline-none",
|
|
59
|
+
inset && "pl-8",
|
|
80
60
|
className,
|
|
81
61
|
)}
|
|
82
62
|
{...props}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
63
|
+
>
|
|
64
|
+
{children}
|
|
65
|
+
<ChevronRightIcon className="ml-auto size-4" />
|
|
66
|
+
</ContextMenuPrimitive.SubTrigger>
|
|
67
|
+
),
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
|
|
71
|
+
|
|
72
|
+
/* -----------------------------------------------------------------------------
|
|
73
|
+
* Component: ContextMenuSubContent
|
|
74
|
+
* -------------------------------------------------------------------------- */
|
|
75
|
+
|
|
76
|
+
type ContextMenuSubContentElement = React.ElementRef<typeof ContextMenuPrimitive.SubContent>;
|
|
77
|
+
type ContextMenuSubContentProps = React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>;
|
|
78
|
+
|
|
79
|
+
const ContextMenuSubContent = React.forwardRef<ContextMenuSubContentElement, ContextMenuSubContentProps>(
|
|
80
|
+
({ className, ...props }, ref) => (
|
|
81
|
+
<ContextMenuPrimitive.Portal>
|
|
82
|
+
<ContextMenuPrimitive.SubContent
|
|
83
|
+
ref={ref}
|
|
84
|
+
className={cn(
|
|
85
|
+
"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:data-[side=top]:slide-in-from-bottom-2 data-[state=open]:data-[side=right]:slide-in-from-left-2 data-[state=open]:data-[side=bottom]:slide-in-from-top-2 data-[state=open]:data-[side=left]:slide-in-from-right-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:data-[side=top]:slide-out-to-bottom-2 data-[state=closed]:data-[side=right]:slide-out-to-left-2 data-[state=closed]:data-[side=bottom]:slide-out-to-top-2 data-[state=closed]:data-[side=left]:slide-out-to-right-2 z-50 min-w-[8rem] rounded-md border p-1 shadow-md focus:outline-none",
|
|
86
|
+
className,
|
|
87
|
+
)}
|
|
88
|
+
{...props}
|
|
89
|
+
/>
|
|
90
|
+
</ContextMenuPrimitive.Portal>
|
|
91
|
+
),
|
|
92
|
+
);
|
|
93
|
+
|
|
86
94
|
ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
|
|
87
95
|
|
|
88
96
|
/* -----------------------------------------------------------------------------
|
|
89
97
|
* Component: ContextMenuContent
|
|
90
98
|
* -------------------------------------------------------------------------- */
|
|
91
99
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
<ContextMenuPrimitive.
|
|
100
|
+
type ContextMenuContentElement = React.ElementRef<typeof ContextMenuPrimitive.Content>;
|
|
101
|
+
type ContextMenuContentProps = React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>;
|
|
102
|
+
|
|
103
|
+
const ContextMenuContent = React.forwardRef<ContextMenuContentElement, ContextMenuContentProps>(
|
|
104
|
+
({ className, ...props }, ref) => (
|
|
105
|
+
<ContextMenuPrimitive.Portal>
|
|
106
|
+
<ContextMenuPrimitive.Content
|
|
107
|
+
ref={ref}
|
|
108
|
+
className={cn(
|
|
109
|
+
"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:data-[side=top]:slide-in-from-bottom-2 data-[state=open]:data-[side=right]:slide-in-from-left-2 data-[state=open]:data-[side=bottom]:slide-in-from-top-2 data-[state=open]:data-[side=left]:slide-in-from-right-2 z-50 min-w-[8rem] rounded-md border p-1 shadow-md focus:outline-none",
|
|
110
|
+
className,
|
|
111
|
+
)}
|
|
112
|
+
{...props}
|
|
113
|
+
/>
|
|
114
|
+
</ContextMenuPrimitive.Portal>
|
|
115
|
+
),
|
|
116
|
+
);
|
|
117
|
+
|
|
118
|
+
ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
|
|
119
|
+
|
|
120
|
+
/* -----------------------------------------------------------------------------
|
|
121
|
+
* Component: ContextMenuItem
|
|
122
|
+
* -------------------------------------------------------------------------- */
|
|
123
|
+
|
|
124
|
+
type ContextMenuItemElement = React.ElementRef<typeof ContextMenuPrimitive.Item>;
|
|
125
|
+
|
|
126
|
+
interface ContextMenuItemProps extends React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item> {
|
|
127
|
+
inset?: boolean;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
const ContextMenuItem = React.forwardRef<ContextMenuItemElement, ContextMenuItemProps>(
|
|
131
|
+
({ className, inset, ...props }, ref) => (
|
|
132
|
+
<ContextMenuPrimitive.Item
|
|
98
133
|
ref={ref}
|
|
99
134
|
className={cn(
|
|
100
|
-
"bg-
|
|
135
|
+
"focus:bg-accent focus:text-accent-foreground relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm focus:outline-none aria-disabled:pointer-events-none aria-disabled:opacity-50",
|
|
136
|
+
inset && "pl-8",
|
|
101
137
|
className,
|
|
102
138
|
)}
|
|
103
139
|
{...props}
|
|
104
140
|
/>
|
|
105
|
-
|
|
106
|
-
)
|
|
107
|
-
ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
|
|
141
|
+
),
|
|
142
|
+
);
|
|
108
143
|
|
|
109
|
-
/* -----------------------------------------------------------------------------
|
|
110
|
-
* Component: ContextMenuItem
|
|
111
|
-
* -------------------------------------------------------------------------- */
|
|
112
|
-
|
|
113
|
-
const ContextMenuItem = React.forwardRef<
|
|
114
|
-
React.ElementRef<typeof ContextMenuPrimitive.Item>,
|
|
115
|
-
ContextMenuPrimitive.ContextMenuItemProps & {
|
|
116
|
-
inset?: boolean;
|
|
117
|
-
}
|
|
118
|
-
>(({ className, inset, ...props }, ref) => (
|
|
119
|
-
<ContextMenuPrimitive.Item
|
|
120
|
-
ref={ref}
|
|
121
|
-
className={cn(
|
|
122
|
-
"focus:bg-accent focus:text-accent-foreground relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm focus:outline-none aria-disabled:pointer-events-none aria-disabled:opacity-50",
|
|
123
|
-
inset && "pl-8",
|
|
124
|
-
className,
|
|
125
|
-
)}
|
|
126
|
-
{...props}
|
|
127
|
-
/>
|
|
128
|
-
));
|
|
129
144
|
ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
|
|
130
145
|
|
|
131
146
|
/* -----------------------------------------------------------------------------
|
|
132
147
|
* Component: ContextMenuCheckboxItem
|
|
133
148
|
* -------------------------------------------------------------------------- */
|
|
134
149
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
<
|
|
150
|
-
<
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
150
|
+
type ContextMenuCheckboxItemElement = React.ElementRef<typeof ContextMenuPrimitive.CheckboxItem>;
|
|
151
|
+
type ContextMenuCheckboxItemProps = React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem>;
|
|
152
|
+
|
|
153
|
+
const ContextMenuCheckboxItem = React.forwardRef<ContextMenuCheckboxItemElement, ContextMenuCheckboxItemProps>(
|
|
154
|
+
({ className, children, checked, ...props }, ref) => (
|
|
155
|
+
<ContextMenuPrimitive.CheckboxItem
|
|
156
|
+
ref={ref}
|
|
157
|
+
className={cn(
|
|
158
|
+
"focus:bg-accent focus:text-accent-foreground relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm focus:outline-none aria-disabled:pointer-events-none aria-disabled:opacity-50",
|
|
159
|
+
className,
|
|
160
|
+
)}
|
|
161
|
+
checked={checked}
|
|
162
|
+
{...props}
|
|
163
|
+
>
|
|
164
|
+
<span className="absolute left-2 flex size-3.5 items-center justify-center">
|
|
165
|
+
<ContextMenuPrimitive.ItemIndicator>
|
|
166
|
+
<CheckIcon className="size-4" />
|
|
167
|
+
</ContextMenuPrimitive.ItemIndicator>
|
|
168
|
+
</span>
|
|
169
|
+
{children}
|
|
170
|
+
</ContextMenuPrimitive.CheckboxItem>
|
|
171
|
+
),
|
|
172
|
+
);
|
|
173
|
+
|
|
174
|
+
ContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;
|
|
158
175
|
|
|
159
176
|
/* -----------------------------------------------------------------------------
|
|
160
177
|
* Component: ContextMenuRadioItem
|
|
161
178
|
* -------------------------------------------------------------------------- */
|
|
162
179
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
<
|
|
177
|
-
<
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
180
|
+
type ContextMenuRadioItemElement = React.ElementRef<typeof ContextMenuPrimitive.RadioItem>;
|
|
181
|
+
type ContextMenuRadioItemProps = React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem>;
|
|
182
|
+
|
|
183
|
+
const ContextMenuRadioItem = React.forwardRef<ContextMenuRadioItemElement, ContextMenuRadioItemProps>(
|
|
184
|
+
({ className, children, ...props }, ref) => (
|
|
185
|
+
<ContextMenuPrimitive.RadioItem
|
|
186
|
+
ref={ref}
|
|
187
|
+
className={cn(
|
|
188
|
+
"focus:bg-accent focus:text-accent-foreground relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm focus:outline-none aria-disabled:pointer-events-none aria-disabled:opacity-50",
|
|
189
|
+
className,
|
|
190
|
+
)}
|
|
191
|
+
{...props}
|
|
192
|
+
>
|
|
193
|
+
<span className="absolute left-2 flex size-3.5 items-center justify-center">
|
|
194
|
+
<ContextMenuPrimitive.ItemIndicator>
|
|
195
|
+
<DotFilledIcon className="size-4 fill-current" />
|
|
196
|
+
</ContextMenuPrimitive.ItemIndicator>
|
|
197
|
+
</span>
|
|
198
|
+
{children}
|
|
199
|
+
</ContextMenuPrimitive.RadioItem>
|
|
200
|
+
),
|
|
201
|
+
);
|
|
202
|
+
|
|
183
203
|
ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
|
|
184
204
|
|
|
185
205
|
/* -----------------------------------------------------------------------------
|
|
186
206
|
* Component: ContextMenuLabel
|
|
187
207
|
* -------------------------------------------------------------------------- */
|
|
188
208
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
inset && "pl-8",
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
209
|
+
type ContextMenuLabelElement = React.ElementRef<typeof ContextMenuPrimitive.Label>;
|
|
210
|
+
|
|
211
|
+
interface ContextMenuLabelProps extends React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> {
|
|
212
|
+
inset?: boolean;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
const ContextMenuLabel = React.forwardRef<ContextMenuLabelElement, ContextMenuLabelProps>(
|
|
216
|
+
({ className, inset, ...props }, ref) => (
|
|
217
|
+
<ContextMenuPrimitive.Label
|
|
218
|
+
ref={ref}
|
|
219
|
+
className={cn("text-foreground px-2 py-1.5 text-sm font-semibold", inset && "pl-8", className)}
|
|
220
|
+
{...props}
|
|
221
|
+
/>
|
|
222
|
+
),
|
|
223
|
+
);
|
|
224
|
+
|
|
205
225
|
ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;
|
|
206
226
|
|
|
207
227
|
/* -----------------------------------------------------------------------------
|
|
208
228
|
* Component: ContextMenuSeparator
|
|
209
229
|
* -------------------------------------------------------------------------- */
|
|
210
230
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
ref={ref}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
));
|
|
231
|
+
type ContextMenuSeparatorElement = React.ElementRef<typeof ContextMenuPrimitive.Separator>;
|
|
232
|
+
type ContextMenuSeparatorProps = React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>;
|
|
233
|
+
|
|
234
|
+
const ContextMenuSeparator = React.forwardRef<ContextMenuSeparatorElement, ContextMenuSeparatorProps>(
|
|
235
|
+
({ className, ...props }, ref) => (
|
|
236
|
+
<ContextMenuPrimitive.Separator ref={ref} className={cn("bg-border -mx-1 my-1 h-px", className)} {...props} />
|
|
237
|
+
),
|
|
238
|
+
);
|
|
239
|
+
|
|
221
240
|
ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;
|
|
222
241
|
|
|
223
242
|
/* -----------------------------------------------------------------------------
|
|
224
243
|
* Component: ContextMenuShortcut
|
|
225
244
|
* -------------------------------------------------------------------------- */
|
|
226
245
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
return (
|
|
232
|
-
<span
|
|
233
|
-
className={cn(
|
|
234
|
-
"text-muted-foreground ml-auto text-xs tracking-widest",
|
|
235
|
-
className,
|
|
236
|
-
)}
|
|
237
|
-
{...props}
|
|
238
|
-
/>
|
|
239
|
-
);
|
|
246
|
+
type ContextMenuShortcutProps = React.HTMLAttributes<HTMLSpanElement>;
|
|
247
|
+
|
|
248
|
+
function ContextMenuShortcut({ className, ...props }: ContextMenuShortcutProps): React.JSX.Element {
|
|
249
|
+
return <span className={cn("text-muted-foreground ml-auto text-xs tracking-widest", className)} {...props} />;
|
|
240
250
|
}
|
|
241
251
|
|
|
242
252
|
/* -----------------------------------------------------------------------------
|
|
243
253
|
* Component: ContextMenuArrow
|
|
244
254
|
* -------------------------------------------------------------------------- */
|
|
245
255
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
ref={ref}
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
));
|
|
256
|
+
type ContextMenuArrowElement = React.ElementRef<typeof ContextMenuPrimitive.Arrow>;
|
|
257
|
+
type ContextMenuArrowProps = ContextMenuPrimitive.ContextMenuArrowProps;
|
|
258
|
+
|
|
259
|
+
const ContextMenuArrow = React.forwardRef<ContextMenuArrowElement, ContextMenuArrowProps>(
|
|
260
|
+
({ className, ...props }, ref) => (
|
|
261
|
+
<ContextMenuPrimitive.Arrow ref={ref} className={cn("fill-popover", className)} {...props} />
|
|
262
|
+
),
|
|
263
|
+
);
|
|
264
|
+
|
|
256
265
|
ContextMenuArrow.displayName = ContextMenuPrimitive.Arrow.displayName;
|
|
257
266
|
|
|
258
267
|
/* -----------------------------------------------------------------------------
|
|
@@ -275,4 +284,19 @@ export {
|
|
|
275
284
|
ContextMenuSubTrigger,
|
|
276
285
|
ContextMenuRadioGroup,
|
|
277
286
|
ContextMenuArrow,
|
|
287
|
+
type ContextMenuProps,
|
|
288
|
+
type ContextMenuTriggerProps,
|
|
289
|
+
type ContextMenuContentProps,
|
|
290
|
+
type ContextMenuItemProps,
|
|
291
|
+
type ContextMenuCheckboxItemProps,
|
|
292
|
+
type ContextMenuRadioItemProps,
|
|
293
|
+
type ContextMenuLabelProps,
|
|
294
|
+
type ContextMenuSeparatorProps,
|
|
295
|
+
type ContextMenuShortcutProps,
|
|
296
|
+
type ContextMenuGroupProps,
|
|
297
|
+
type ContextMenuSubProps,
|
|
298
|
+
type ContextMenuSubContentProps,
|
|
299
|
+
type ContextMenuSubTriggerProps,
|
|
300
|
+
type ContextMenuRadioGroupProps,
|
|
301
|
+
type ContextMenuArrowProps,
|
|
278
302
|
};
|
package/src/data-table.tsx
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import type * as ReactTable from "@tanstack/react-table";
|
|
5
|
+
import { type SortDirection } from "@tanstack/react-table";
|
|
5
6
|
import {
|
|
6
7
|
ArrowDownIcon,
|
|
7
8
|
ArrowUpIcon,
|
|
@@ -23,32 +24,22 @@ import {
|
|
|
23
24
|
DropdownMenuTrigger,
|
|
24
25
|
} from "./dropdown-menu";
|
|
25
26
|
import { Button } from "./button";
|
|
26
|
-
import {
|
|
27
|
-
Select,
|
|
28
|
-
SelectContent,
|
|
29
|
-
SelectItem,
|
|
30
|
-
SelectTrigger,
|
|
31
|
-
SelectValue,
|
|
32
|
-
} from "./select";
|
|
27
|
+
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "./select";
|
|
33
28
|
import { cn } from "./utils";
|
|
34
29
|
|
|
35
30
|
/* -----------------------------------------------------------------------------
|
|
36
31
|
* Component: DataTableViewOptions
|
|
37
32
|
* -------------------------------------------------------------------------- */
|
|
38
33
|
|
|
39
|
-
|
|
40
|
-
table,
|
|
41
|
-
}: {
|
|
34
|
+
interface DataTableViewOptionsProps<TData> {
|
|
42
35
|
table: ReactTable.Table<TData>;
|
|
43
|
-
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function DataTableViewOptions<TData>({ table }: DataTableViewOptionsProps<TData>): React.JSX.Element {
|
|
44
39
|
return (
|
|
45
40
|
<DropdownMenu>
|
|
46
41
|
<DropdownMenuTrigger asChild>
|
|
47
|
-
<Button
|
|
48
|
-
variant="outline"
|
|
49
|
-
size="sm"
|
|
50
|
-
className="ml-auto hidden h-8 lg:flex"
|
|
51
|
-
>
|
|
42
|
+
<Button variant="outline" size="sm" className="ml-auto hidden h-8 lg:flex">
|
|
52
43
|
<MixerHorizontalIcon className="mr-2 size-4" />
|
|
53
44
|
View
|
|
54
45
|
</Button>
|
|
@@ -58,10 +49,7 @@ function DataTableViewOptions<TData>({
|
|
|
58
49
|
<DropdownMenuSeparator />
|
|
59
50
|
{table
|
|
60
51
|
.getAllColumns()
|
|
61
|
-
.filter(
|
|
62
|
-
(column) =>
|
|
63
|
-
typeof column.accessorFn !== "undefined" && column.getCanHide(),
|
|
64
|
-
)
|
|
52
|
+
.filter((column) => typeof column.accessorFn !== "undefined" && column.getCanHide())
|
|
65
53
|
.map((column) => {
|
|
66
54
|
return (
|
|
67
55
|
<DropdownMenuCheckboxItem
|
|
@@ -85,21 +73,19 @@ function DataTableViewOptions<TData>({
|
|
|
85
73
|
* Component: DataTablePagination
|
|
86
74
|
* -------------------------------------------------------------------------- */
|
|
87
75
|
|
|
76
|
+
interface DataTablePaginationProps<TData> extends React.HTMLAttributes<HTMLDivElement> {
|
|
77
|
+
table: ReactTable.Table<TData>;
|
|
78
|
+
}
|
|
79
|
+
|
|
88
80
|
function DataTablePagination<TData>({
|
|
89
81
|
table,
|
|
90
82
|
className,
|
|
91
83
|
...props
|
|
92
|
-
}:
|
|
93
|
-
table: ReactTable.Table<TData>;
|
|
94
|
-
}): React.JSX.Element {
|
|
84
|
+
}: DataTablePaginationProps<TData>): React.JSX.Element {
|
|
95
85
|
return (
|
|
96
|
-
<div
|
|
97
|
-
className={cn("flex items-center justify-between px-2", className)}
|
|
98
|
-
{...props}
|
|
99
|
-
>
|
|
86
|
+
<div className={cn("flex items-center justify-between px-2", className)} {...props}>
|
|
100
87
|
<div className="text-muted-foreground flex-1 text-sm">
|
|
101
|
-
{table.getFilteredSelectedRowModel().rows.length} of{
|
|
102
|
-
{table.getFilteredRowModel().rows.length} row(s) selected.
|
|
88
|
+
{table.getFilteredSelectedRowModel().rows.length} of {table.getFilteredRowModel().rows.length} row(s) selected.
|
|
103
89
|
</div>
|
|
104
90
|
<div className="flex items-center space-x-6 lg:space-x-8">
|
|
105
91
|
<div className="flex items-center space-x-2">
|
|
@@ -123,8 +109,7 @@ function DataTablePagination<TData>({
|
|
|
123
109
|
</Select>
|
|
124
110
|
</div>
|
|
125
111
|
<div className="flex w-[100px] items-center justify-center text-sm font-medium">
|
|
126
|
-
Page {table.getState().pagination.pageIndex + 1} of{
|
|
127
|
-
{table.getPageCount()}
|
|
112
|
+
Page {table.getState().pagination.pageIndex + 1} of {table.getPageCount()}
|
|
128
113
|
</div>
|
|
129
114
|
<div className="flex items-center space-x-2">
|
|
130
115
|
<Button
|
|
@@ -183,14 +168,16 @@ function DataTablePagination<TData>({
|
|
|
183
168
|
* Component: DataTableColumnHeader
|
|
184
169
|
* -------------------------------------------------------------------------- */
|
|
185
170
|
|
|
171
|
+
interface DataTableColumnHeaderProps<TData, TValue> extends React.HTMLAttributes<HTMLDivElement> {
|
|
172
|
+
column: ReactTable.Column<TData, TValue>;
|
|
173
|
+
title: string;
|
|
174
|
+
}
|
|
175
|
+
|
|
186
176
|
function DataTableColumnHeader<TData, TValue>({
|
|
187
177
|
column,
|
|
188
178
|
title,
|
|
189
179
|
className,
|
|
190
|
-
}:
|
|
191
|
-
column: ReactTable.Column<TData, TValue>;
|
|
192
|
-
title: string;
|
|
193
|
-
}): React.JSX.Element {
|
|
180
|
+
}: DataTableColumnHeaderProps<TData, TValue>): React.JSX.Element {
|
|
194
181
|
if (!column.getCanSort()) {
|
|
195
182
|
return <div className={cn(className)}>{title}</div>;
|
|
196
183
|
}
|
|
@@ -199,19 +186,9 @@ function DataTableColumnHeader<TData, TValue>({
|
|
|
199
186
|
<div className={cn("flex items-center space-x-2", className)}>
|
|
200
187
|
<DropdownMenu>
|
|
201
188
|
<DropdownMenuTrigger asChild>
|
|
202
|
-
<Button
|
|
203
|
-
variant="ghost"
|
|
204
|
-
size="xs"
|
|
205
|
-
className="data-[state=open]:bg-accent -ml-3"
|
|
206
|
-
>
|
|
189
|
+
<Button variant="ghost" size="xs" className="data-[state=open]:bg-accent -ml-3">
|
|
207
190
|
<span>{title}</span>
|
|
208
|
-
{column.getIsSorted()
|
|
209
|
-
<ArrowDownIcon className="ml-2 size-4" />
|
|
210
|
-
) : column.getIsSorted() === "asc" ? (
|
|
211
|
-
<ArrowUpIcon className="ml-2 size-4" />
|
|
212
|
-
) : (
|
|
213
|
-
<CaretSortIcon className="ml-2 size-4" />
|
|
214
|
-
)}
|
|
191
|
+
<SortIcon sorted={column.getIsSorted()} />
|
|
215
192
|
</Button>
|
|
216
193
|
</DropdownMenuTrigger>
|
|
217
194
|
<DropdownMenuContent align="start">
|
|
@@ -246,10 +223,28 @@ function DataTableColumnHeader<TData, TValue>({
|
|
|
246
223
|
);
|
|
247
224
|
}
|
|
248
225
|
|
|
226
|
+
function SortIcon({ sorted }: { sorted: false | SortDirection }): React.JSX.Element {
|
|
227
|
+
switch (sorted) {
|
|
228
|
+
case "desc":
|
|
229
|
+
return <ArrowDownIcon className="ml-2 size-4" />;
|
|
230
|
+
case "asc":
|
|
231
|
+
return <ArrowUpIcon className="ml-2 size-4" />;
|
|
232
|
+
default:
|
|
233
|
+
return <CaretSortIcon className="ml-2 size-4" />;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
249
237
|
/* -----------------------------------------------------------------------------
|
|
250
238
|
* Exports
|
|
251
239
|
* -------------------------------------------------------------------------- */
|
|
252
240
|
|
|
253
|
-
export {
|
|
241
|
+
export {
|
|
242
|
+
DataTableViewOptions,
|
|
243
|
+
DataTablePagination,
|
|
244
|
+
DataTableColumnHeader,
|
|
245
|
+
type DataTableViewOptionsProps,
|
|
246
|
+
type DataTablePaginationProps,
|
|
247
|
+
type DataTableColumnHeaderProps,
|
|
248
|
+
};
|
|
254
249
|
|
|
255
250
|
export * from "@tanstack/react-table";
|