@wealthx/shadcn 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +235 -154
- package/CHANGELOG.md +6 -0
- package/dist/{chunk-6OJF6XRN.mjs → chunk-24FUO7TD.mjs} +4 -8
- package/dist/{chunk-4AJ5HWHD.mjs → chunk-2I5S2AMY.mjs} +3 -3
- package/dist/chunk-2SF672SZ.mjs +161 -0
- package/dist/{chunk-GPRJQ24C.mjs → chunk-34NWQURD.mjs} +2 -2
- package/dist/{chunk-MQ72DIBH.mjs → chunk-3GF7OVTP.mjs} +14 -5
- package/dist/chunk-3WMX6KWS.mjs +245 -0
- package/dist/{chunk-PMKODV6M.mjs → chunk-462HMNO4.mjs} +6 -10
- package/dist/chunk-4CX4SBRO.mjs +153 -0
- package/dist/chunk-4MN6UQHG.mjs +443 -0
- package/dist/{chunk-GLW2UO6O.mjs → chunk-5QQVZTVZ.mjs} +82 -61
- package/dist/{chunk-BGP2N52Z.mjs → chunk-66MI7Q4B.mjs} +5 -5
- package/dist/chunk-6FCGKSZX.mjs +268 -0
- package/dist/{chunk-CGOKTPXU.mjs → chunk-6JQFUE5I.mjs} +20 -23
- package/dist/{chunk-Z3MK2KKZ.mjs → chunk-7DHU4VGG.mjs} +7 -3
- package/dist/{chunk-VZ2NR7L3.mjs → chunk-7PYJD5JI.mjs} +35 -27
- package/dist/{chunk-JU2RUWHF.mjs → chunk-7XJHLGUV.mjs} +1 -1
- package/dist/{chunk-BMFN37JH.mjs → chunk-7YAU5CY6.mjs} +1 -1
- package/dist/chunk-A56YQQHG.mjs +402 -0
- package/dist/chunk-AH52LG6N.mjs +315 -0
- package/dist/{chunk-SLWCCURD.mjs → chunk-CLIN5525.mjs} +8 -4
- package/dist/{chunk-3VQNJ235.mjs → chunk-CSDO6VBW.mjs} +7 -0
- package/dist/chunk-D4ILTPOG.mjs +293 -0
- package/dist/{chunk-HS7TFG7V.mjs → chunk-D6ID6M4V.mjs} +1 -1
- package/dist/chunk-DOH3EHX7.mjs +378 -0
- package/dist/{chunk-MJIEMGRD.mjs → chunk-EFRENWEJ.mjs} +9 -17
- package/dist/{chunk-YBXCIF5Q.mjs → chunk-ERGGHC2V.mjs} +36 -49
- package/dist/{chunk-OXQQNQZI.mjs → chunk-FEZKMUCF.mjs} +10 -1
- package/dist/{chunk-55CEW76V.mjs → chunk-FH6QVUVZ.mjs} +1 -1
- package/dist/chunk-FMAXJ2SI.mjs +71 -0
- package/dist/chunk-FZIXGLMV.mjs +173 -0
- package/dist/{chunk-DS2AMHN2.mjs → chunk-GYMYRIZP.mjs} +2 -2
- package/dist/{chunk-KQDD5MU3.mjs → chunk-H45TKD34.mjs} +5 -5
- package/dist/{chunk-BBJBJSXQ.mjs → chunk-J5UICVJS.mjs} +1 -1
- package/dist/{chunk-RL772EH7.mjs → chunk-JHJHG4GO.mjs} +4 -12
- package/dist/{chunk-RN67642N.mjs → chunk-KMCGSZTX.mjs} +47 -41
- package/dist/{chunk-FHNT55I5.mjs → chunk-KUDCQ4FI.mjs} +4 -4
- package/dist/chunk-LE6YFY6D.mjs +209 -0
- package/dist/{chunk-NLLKTU4B.mjs → chunk-LLVQKSU3.mjs} +21 -17
- package/dist/{chunk-KKHTJNMM.mjs → chunk-MARPPFOJ.mjs} +8 -4
- package/dist/{chunk-6AFMNC42.mjs → chunk-N2PT566P.mjs} +15 -11
- package/dist/chunk-NLCKVHWB.mjs +161 -0
- package/dist/{chunk-YN5SYTOO.mjs → chunk-NQPOYKAQ.mjs} +9 -5
- package/dist/{chunk-ZZV5JVNW.mjs → chunk-NSLMILBT.mjs} +3 -7
- package/dist/chunk-NXA3CZ7A.mjs +248 -0
- package/dist/chunk-OGOYQ7BG.mjs +150 -0
- package/dist/{chunk-3NQGYJEZ.mjs → chunk-P6AM5V7O.mjs} +10 -18
- package/dist/{chunk-CZ3BW5GL.mjs → chunk-P76HMUI6.mjs} +5 -11
- package/dist/chunk-PCPLO5HT.mjs +671 -0
- package/dist/chunk-PG6K5XEC.mjs +475 -0
- package/dist/{chunk-5JGQAAQV.mjs → chunk-PJHPSRYD.mjs} +84 -62
- package/dist/{chunk-DDPA2XXS.mjs → chunk-PMB3A7V3.mjs} +2 -2
- package/dist/chunk-PR6V5XKM.mjs +209 -0
- package/dist/{chunk-46OFHMQA.mjs → chunk-Q76O3RIQ.mjs} +10 -6
- package/dist/chunk-QVKWW6KE.mjs +272 -0
- package/dist/chunk-RGU7HOEC.mjs +140 -0
- package/dist/{chunk-JF4PHPD5.mjs → chunk-RGVKLTLH.mjs} +4 -4
- package/dist/{chunk-VG6UF6UT.mjs → chunk-RP3SQYA3.mjs} +2 -2
- package/dist/chunk-RRBS6D63.mjs +163 -0
- package/dist/{chunk-UEL4RD5P.mjs → chunk-SMQ3DG25.mjs} +80 -67
- package/dist/chunk-SPJ5KXW7.mjs +199 -0
- package/dist/chunk-SYOD63OZ.mjs +225 -0
- package/dist/chunk-UFYSFDER.mjs +42 -0
- package/dist/chunk-VACKZOMY.mjs +190 -0
- package/dist/chunk-VLQZANBF.mjs +42 -0
- package/dist/chunk-WA6O6EUR.mjs +1885 -0
- package/dist/{chunk-E3K6O4FZ.mjs → chunk-WAZD7NFU.mjs} +5 -2
- package/dist/chunk-WG6JGJXB.mjs +165 -0
- package/dist/{chunk-I64K754C.mjs → chunk-WNGWBVLV.mjs} +2 -2
- package/dist/{chunk-3U7SD3MS.mjs → chunk-WOEHFRGB.mjs} +3 -3
- package/dist/{chunk-DKZRJOMF.mjs → chunk-XIRTEFKH.mjs} +12 -12
- package/dist/chunk-Y6DWJSKZ.mjs +79 -0
- package/dist/chunk-YKPROFLB.mjs +161 -0
- package/dist/{chunk-CJ46PDXE.mjs → chunk-ZRO5JO3H.mjs} +106 -66
- package/dist/{chunk-VYMHBV6D.mjs → chunk-ZU4NV6RG.mjs} +5 -3
- package/dist/components/ui/accordion.js +40 -4
- package/dist/components/ui/accordion.mjs +2 -2
- package/dist/components/ui/add-column-modal.js +789 -0
- package/dist/components/ui/add-column-modal.mjs +17 -0
- package/dist/components/ui/add-lead-modal.js +647 -0
- package/dist/components/ui/add-lead-modal.mjs +16 -0
- package/dist/components/ui/ai-assistant-drawer.js +686 -0
- package/dist/components/ui/ai-assistant-drawer.mjs +16 -0
- package/dist/components/ui/alert-dialog.js +37 -5
- package/dist/components/ui/alert-dialog.mjs +4 -4
- package/dist/components/ui/alert.js +37 -11
- package/dist/components/ui/alert.mjs +2 -2
- package/dist/components/ui/avatar.js +36 -8
- package/dist/components/ui/avatar.mjs +2 -2
- package/dist/components/ui/backoffice-alert-history-chart.js +624 -0
- package/dist/components/ui/backoffice-alert-history-chart.mjs +16 -0
- package/dist/components/ui/backoffice-contact-history-chart.js +687 -0
- package/dist/components/ui/backoffice-contact-history-chart.mjs +16 -0
- package/dist/components/ui/badge.js +37 -2
- package/dist/components/ui/badge.mjs +2 -2
- package/dist/components/ui/borrowing-capacity-line-chart.js +639 -0
- package/dist/components/ui/borrowing-capacity-line-chart.mjs +16 -0
- package/dist/components/ui/button.js +35 -3
- package/dist/components/ui/button.mjs +2 -2
- package/dist/components/ui/calendar.js +43 -19
- package/dist/components/ui/calendar.mjs +3 -3
- package/dist/components/ui/card.js +40 -4
- package/dist/components/ui/card.mjs +2 -2
- package/dist/components/ui/cash-balance-line-chart.js +627 -0
- package/dist/components/ui/cash-balance-line-chart.mjs +16 -0
- package/dist/components/ui/cashflow-bar-chart.js +123 -69
- package/dist/components/ui/cashflow-bar-chart.mjs +8 -8
- package/dist/components/ui/checkbox.js +36 -5
- package/dist/components/ui/checkbox.mjs +2 -3
- package/dist/components/ui/chip.js +37 -2
- package/dist/components/ui/chip.mjs +3 -3
- package/dist/components/ui/combobox.js +68 -49
- package/dist/components/ui/combobox.mjs +2 -2
- package/dist/components/ui/data-table.js +160 -88
- package/dist/components/ui/data-table.mjs +10 -11
- package/dist/components/ui/date-picker.js +44 -20
- package/dist/components/ui/date-picker.mjs +6 -7
- package/dist/components/ui/dialog.js +44 -12
- package/dist/components/ui/dialog.mjs +4 -4
- package/dist/components/ui/drawer.js +46 -10
- package/dist/components/ui/drawer.mjs +3 -3
- package/dist/components/ui/dropdown-menu.js +40 -16
- package/dist/components/ui/dropdown-menu.mjs +3 -3
- package/dist/components/ui/empty.js +41 -5
- package/dist/components/ui/empty.mjs +2 -2
- package/dist/components/ui/expense-bar-chart.js +165 -66
- package/dist/components/ui/expense-bar-chart.mjs +8 -8
- package/dist/components/ui/field.js +53 -21
- package/dist/components/ui/field.mjs +4 -4
- package/dist/components/ui/financial-cards.js +1002 -0
- package/dist/components/ui/financial-cards.mjs +24 -0
- package/dist/components/ui/financial-drawers.js +637 -0
- package/dist/components/ui/financial-drawers.mjs +17 -0
- package/dist/components/ui/financial-primitives.js +218 -0
- package/dist/components/ui/financial-primitives.mjs +22 -0
- package/dist/components/ui/financial-sections.js +1422 -0
- package/dist/components/ui/financial-sections.mjs +30 -0
- package/dist/components/ui/form-primitives.js +682 -0
- package/dist/components/ui/form-primitives.mjs +19 -0
- package/dist/components/ui/income-bar-chart.js +163 -65
- package/dist/components/ui/income-bar-chart.mjs +8 -8
- package/dist/components/ui/input-group.js +43 -7
- package/dist/components/ui/input-group.mjs +5 -5
- package/dist/components/ui/input-otp.js +39 -3
- package/dist/components/ui/input-otp.mjs +2 -2
- package/dist/components/ui/input.js +34 -2
- package/dist/components/ui/input.mjs +2 -2
- package/dist/components/ui/kanban-column.js +1143 -0
- package/dist/components/ui/kanban-column.mjs +20 -0
- package/dist/components/ui/label.js +35 -7
- package/dist/components/ui/label.mjs +2 -2
- package/dist/components/ui/opportunity-card.js +960 -0
- package/dist/components/ui/opportunity-card.mjs +20 -0
- package/dist/components/ui/opportunity-edit-modals.js +3360 -0
- package/dist/components/ui/opportunity-edit-modals.mjs +37 -0
- package/dist/components/ui/opportunity-summary-tab.js +4365 -0
- package/dist/components/ui/opportunity-summary-tab.mjs +34 -0
- package/dist/components/ui/pagination.js +35 -3
- package/dist/components/ui/pagination.mjs +3 -3
- package/dist/components/ui/pipeline-alerts.js +103 -0
- package/dist/components/ui/pipeline-alerts.mjs +8 -0
- package/dist/components/ui/pipeline-board.js +1408 -0
- package/dist/components/ui/pipeline-board.mjs +24 -0
- package/dist/components/ui/pipeline-chart.js +216 -0
- package/dist/components/ui/pipeline-chart.mjs +10 -0
- package/dist/components/ui/pipeline-dialogs.js +1183 -0
- package/dist/components/ui/pipeline-dialogs.mjs +23 -0
- package/dist/components/ui/pipeline-primitives.js +300 -0
- package/dist/components/ui/pipeline-primitives.mjs +11 -0
- package/dist/components/ui/popover.js +45 -4
- package/dist/components/ui/popover.mjs +3 -3
- package/dist/components/ui/progress.js +33 -1
- package/dist/components/ui/progress.mjs +2 -2
- package/dist/components/ui/property-cashflow-doughnut-chart.js +523 -0
- package/dist/components/ui/property-cashflow-doughnut-chart.mjs +16 -0
- package/dist/components/ui/property-debt-equity-doughnut-chart.js +521 -0
- package/dist/components/ui/property-debt-equity-doughnut-chart.mjs +16 -0
- package/dist/components/ui/property-mobile-estimate-line-chart.js +682 -0
- package/dist/components/ui/property-mobile-estimate-line-chart.mjs +16 -0
- package/dist/components/ui/radio-group.js +33 -1
- package/dist/components/ui/radio-group.mjs +2 -2
- package/dist/components/ui/select.js +66 -26
- package/dist/components/ui/select.mjs +3 -3
- package/dist/components/ui/separator.js +33 -1
- package/dist/components/ui/separator.mjs +2 -2
- package/dist/components/ui/sheet.js +37 -9
- package/dist/components/ui/sheet.mjs +3 -3
- package/dist/components/ui/skeleton.js +33 -1
- package/dist/components/ui/skeleton.mjs +2 -2
- package/dist/components/ui/slider.js +86 -102
- package/dist/components/ui/slider.mjs +2 -2
- package/dist/components/ui/spinner.js +33 -1
- package/dist/components/ui/spinner.mjs +2 -2
- package/dist/components/ui/stage-timeline.js +579 -0
- package/dist/components/ui/stage-timeline.mjs +15 -0
- package/dist/components/ui/switch.js +37 -4
- package/dist/components/ui/switch.mjs +2 -3
- package/dist/components/ui/table.js +37 -5
- package/dist/components/ui/table.mjs +2 -2
- package/dist/components/ui/tabs.js +36 -12
- package/dist/components/ui/tabs.mjs +2 -2
- package/dist/components/ui/textarea.js +34 -2
- package/dist/components/ui/textarea.mjs +2 -2
- package/dist/components/ui/toggle-group.js +35 -4
- package/dist/components/ui/toggle-group.mjs +3 -4
- package/dist/components/ui/toggle.js +35 -4
- package/dist/components/ui/toggle.mjs +2 -3
- package/dist/components/ui/tooltip.js +51 -22
- package/dist/components/ui/tooltip.mjs +3 -3
- package/dist/components/ui/transactions-expense-categories-doughnut-chart.js +528 -0
- package/dist/components/ui/transactions-expense-categories-doughnut-chart.mjs +16 -0
- package/dist/components/ui/transactions-income-expense-bar-chart.js +76 -38
- package/dist/components/ui/transactions-income-expense-bar-chart.mjs +8 -8
- package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.js +528 -0
- package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.mjs +16 -0
- package/dist/index.js +11616 -3831
- package/dist/index.mjs +333 -161
- package/dist/lib/theme-provider.js +10 -1
- package/dist/lib/theme-provider.mjs +1 -1
- package/dist/lib/typography.js +8 -0
- package/dist/lib/typography.mjs +3 -1
- package/dist/lib/utils.js +33 -1
- package/dist/lib/utils.mjs +1 -1
- package/dist/styles.css +1 -1
- package/package.json +140 -5
- package/src/components/index.tsx +296 -42
- package/src/components/ui/accordion.tsx +6 -3
- package/src/components/ui/add-column-modal.tsx +339 -0
- package/src/components/ui/add-lead-modal.tsx +290 -0
- package/src/components/ui/ai-assistant-drawer.tsx +408 -0
- package/src/components/ui/alert-dialog.tsx +80 -54
- package/src/components/ui/alert.tsx +28 -28
- package/src/components/ui/avatar.tsx +30 -29
- package/src/components/ui/backoffice-alert-history-chart.tsx +260 -0
- package/src/components/ui/backoffice-contact-history-chart.tsx +325 -0
- package/src/components/ui/badge.tsx +17 -15
- package/src/components/ui/borrowing-capacity-line-chart.tsx +357 -0
- package/src/components/ui/button.tsx +30 -27
- package/src/components/ui/calendar.tsx +53 -67
- package/src/components/ui/card.tsx +27 -24
- package/src/components/ui/cash-balance-line-chart.tsx +302 -0
- package/src/components/ui/cashflow-bar-chart.tsx +104 -77
- package/src/components/ui/chart-shared.tsx +176 -15
- package/src/components/ui/checkbox.tsx +30 -26
- package/src/components/ui/combobox.tsx +78 -72
- package/src/components/ui/data-table.tsx +160 -99
- package/src/components/ui/date-picker.tsx +0 -2
- package/src/components/ui/dialog.tsx +70 -60
- package/src/components/ui/drawer.tsx +57 -48
- package/src/components/ui/dropdown-menu.tsx +90 -82
- package/src/components/ui/empty.tsx +31 -27
- package/src/components/ui/expense-bar-chart.tsx +83 -65
- package/src/components/ui/field.tsx +70 -62
- package/src/components/ui/financial-cards.tsx +830 -0
- package/src/components/ui/financial-drawers.tsx +339 -0
- package/src/components/ui/financial-primitives.tsx +331 -0
- package/src/components/ui/financial-sections.tsx +672 -0
- package/src/components/ui/form-primitives.tsx +536 -0
- package/src/components/ui/income-bar-chart.tsx +79 -60
- package/src/components/ui/input-group.tsx +41 -34
- package/src/components/ui/input-otp.tsx +29 -24
- package/src/components/ui/input.tsx +8 -8
- package/src/components/ui/kanban-column.tsx +333 -0
- package/src/components/ui/label.tsx +9 -12
- package/src/components/ui/opportunity-card.tsx +616 -0
- package/src/components/ui/opportunity-edit-modals.tsx +2528 -0
- package/src/components/ui/opportunity-summary-tab.tsx +579 -0
- package/src/components/ui/pipeline-alerts.tsx +74 -0
- package/src/components/ui/pipeline-board.tsx +268 -0
- package/src/components/ui/pipeline-chart.tsx +173 -0
- package/src/components/ui/pipeline-dialogs.tsx +303 -0
- package/src/components/ui/pipeline-primitives.tsx +108 -0
- package/src/components/ui/popover.tsx +41 -36
- package/src/components/ui/property-cashflow-doughnut-chart.tsx +188 -0
- package/src/components/ui/property-debt-equity-doughnut-chart.tsx +185 -0
- package/src/components/ui/property-mobile-estimate-line-chart.tsx +393 -0
- package/src/components/ui/select.tsx +65 -52
- package/src/components/ui/sheet.tsx +55 -52
- package/src/components/ui/slider.tsx +54 -77
- package/src/components/ui/stage-timeline.tsx +205 -0
- package/src/components/ui/switch.tsx +42 -29
- package/src/components/ui/table.tsx +28 -28
- package/src/components/ui/tabs.tsx +22 -28
- package/src/components/ui/textarea.tsx +8 -8
- package/src/components/ui/toggle-group.tsx +0 -2
- package/src/components/ui/toggle.tsx +13 -15
- package/src/components/ui/tooltip.tsx +30 -28
- package/src/components/ui/transactions-expense-categories-doughnut-chart.tsx +191 -0
- package/src/components/ui/transactions-income-expense-bar-chart.tsx +45 -38
- package/src/components/ui/transactions-liabilities-breakdown-doughnut-chart.tsx +191 -0
- package/src/lib/theme-provider.tsx +10 -0
- package/src/lib/typography.ts +9 -0
- package/src/lib/utils.ts +41 -3
- package/src/styles/globals.css +371 -124
- package/src/styles/styles-css.ts +1 -1
- package/tsup.config.ts +27 -0
- package/dist/chunk-3EQP72AW.mjs +0 -58
- package/dist/chunk-K74JRTJR.mjs +0 -105
- package/dist/chunk-V7CNWJT3.mjs +0 -10
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
import { Switch as SwitchPrimitive } from "@base-ui/react/switch"
|
|
5
|
-
import { cn } from "@/lib/utils"
|
|
1
|
+
import { type ReactElement, useState, type ComponentProps } from "react";
|
|
2
|
+
import { Switch as SwitchPrimitive } from "@base-ui/react/switch";
|
|
3
|
+
import { cn } from "@/lib/utils";
|
|
6
4
|
|
|
7
5
|
/**
|
|
8
6
|
* Switch — shadcn/WealthX
|
|
@@ -13,8 +11,8 @@ import { cn } from "@/lib/utils"
|
|
|
13
11
|
* Tokens: unchecked=input, checked=primary, error=destructive, thumb=background.
|
|
14
12
|
*/
|
|
15
13
|
export type SwitchProps = ComponentProps<typeof SwitchPrimitive.Root> & {
|
|
16
|
-
size?: "sm" | "default"
|
|
17
|
-
}
|
|
14
|
+
size?: "sm" | "default";
|
|
15
|
+
};
|
|
18
16
|
|
|
19
17
|
function Switch({
|
|
20
18
|
className,
|
|
@@ -32,7 +30,7 @@ function Switch({
|
|
|
32
30
|
"data-checked:bg-primary data-unchecked:bg-input",
|
|
33
31
|
"aria-invalid:data-checked:bg-destructive aria-invalid:border-destructive",
|
|
34
32
|
"dark:data-unchecked:bg-input/80",
|
|
35
|
-
className
|
|
33
|
+
className,
|
|
36
34
|
)}
|
|
37
35
|
data-size={size}
|
|
38
36
|
data-slot="switch"
|
|
@@ -43,25 +41,28 @@ function Switch({
|
|
|
43
41
|
"pointer-events-none block rounded-full bg-background ring-0 transition-transform",
|
|
44
42
|
"group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3",
|
|
45
43
|
"data-checked:translate-x-[calc(100%-2px)] data-unchecked:translate-x-0",
|
|
46
|
-
"dark:data-checked:bg-primary-foreground dark:data-unchecked:bg-foreground"
|
|
44
|
+
"dark:data-checked:bg-primary-foreground dark:data-unchecked:bg-foreground",
|
|
47
45
|
)}
|
|
48
46
|
data-slot="switch-thumb"
|
|
49
47
|
/>
|
|
50
48
|
</SwitchPrimitive.Root>
|
|
51
|
-
)
|
|
49
|
+
);
|
|
52
50
|
}
|
|
53
51
|
|
|
54
52
|
/**
|
|
55
53
|
* SwitchCard -- card wrapper with label + description + switch toggle.
|
|
56
54
|
* Figma: SwitchCard (3041:6237)
|
|
57
55
|
*/
|
|
58
|
-
export type SwitchCardProps = Omit<
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
56
|
+
export type SwitchCardProps = Omit<
|
|
57
|
+
ComponentProps<typeof SwitchPrimitive.Root>,
|
|
58
|
+
"children"
|
|
59
|
+
> & {
|
|
60
|
+
label: string;
|
|
61
|
+
description?: string;
|
|
62
|
+
error?: boolean;
|
|
63
|
+
switchPosition?: "left" | "right";
|
|
64
|
+
size?: "sm" | "default";
|
|
65
|
+
};
|
|
65
66
|
|
|
66
67
|
function SwitchCard({
|
|
67
68
|
className,
|
|
@@ -76,8 +77,10 @@ function SwitchCard({
|
|
|
76
77
|
size,
|
|
77
78
|
...props
|
|
78
79
|
}: SwitchCardProps): ReactElement {
|
|
79
|
-
const [internalChecked, setInternalChecked] = useState(
|
|
80
|
-
|
|
80
|
+
const [internalChecked, setInternalChecked] = useState(
|
|
81
|
+
defaultChecked ?? false,
|
|
82
|
+
);
|
|
83
|
+
const isChecked = checked ?? internalChecked;
|
|
81
84
|
|
|
82
85
|
const switchElement = (
|
|
83
86
|
<Switch
|
|
@@ -86,20 +89,24 @@ function SwitchCard({
|
|
|
86
89
|
className="shrink-0"
|
|
87
90
|
disabled={disabled}
|
|
88
91
|
onCheckedChange={(value, event) => {
|
|
89
|
-
setInternalChecked(value)
|
|
90
|
-
onCheckedChange?.(value, event)
|
|
92
|
+
setInternalChecked(value);
|
|
93
|
+
onCheckedChange?.(value, event);
|
|
91
94
|
}}
|
|
92
95
|
size={size}
|
|
93
96
|
{...props}
|
|
94
97
|
/>
|
|
95
|
-
)
|
|
98
|
+
);
|
|
96
99
|
|
|
97
100
|
const contentElement = (
|
|
98
101
|
<div className="flex flex-col gap-1">
|
|
99
102
|
<span className="text-sm font-medium leading-none">{label}</span>
|
|
100
|
-
{description ?
|
|
103
|
+
{description ? (
|
|
104
|
+
<span className="text-body-small text-muted-foreground">
|
|
105
|
+
{description}
|
|
106
|
+
</span>
|
|
107
|
+
) : null}
|
|
101
108
|
</div>
|
|
102
|
-
)
|
|
109
|
+
);
|
|
103
110
|
|
|
104
111
|
return (
|
|
105
112
|
<label
|
|
@@ -110,17 +117,23 @@ function SwitchCard({
|
|
|
110
117
|
error
|
|
111
118
|
? ["border-destructive", isChecked && "bg-destructive/5"]
|
|
112
119
|
: isChecked && "border-primary bg-primary/5",
|
|
113
|
-
className
|
|
120
|
+
className,
|
|
114
121
|
)}
|
|
115
122
|
data-slot="switch-card"
|
|
116
123
|
>
|
|
117
124
|
{switchPosition === "left" ? (
|
|
118
|
-
<>
|
|
125
|
+
<>
|
|
126
|
+
{switchElement}
|
|
127
|
+
{contentElement}
|
|
128
|
+
</>
|
|
119
129
|
) : (
|
|
120
|
-
<>
|
|
130
|
+
<>
|
|
131
|
+
{contentElement}
|
|
132
|
+
{switchElement}
|
|
133
|
+
</>
|
|
121
134
|
)}
|
|
122
135
|
</label>
|
|
123
|
-
)
|
|
136
|
+
);
|
|
124
137
|
}
|
|
125
138
|
|
|
126
|
-
export { Switch, SwitchCard }
|
|
139
|
+
export { Switch, SwitchCard };
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
* - TableRow: `data-[state=selected]:bg-muted` -- `data-[state=selected]:bg-primary/10` — selected tint matches Figma (primary + 10% opacity)
|
|
10
10
|
* - TableFooter: inherits same cell padding via className
|
|
11
11
|
*/
|
|
12
|
-
import { type ReactElement } from "react"
|
|
13
|
-
import * as React from "react"
|
|
14
|
-
import { cn } from "@/lib/utils"
|
|
12
|
+
import { type ReactElement } from "react";
|
|
13
|
+
import * as React from "react";
|
|
14
|
+
import { cn } from "@/lib/utils";
|
|
15
15
|
|
|
16
|
-
export type TableProps = React.ComponentProps<"table"
|
|
16
|
+
export type TableProps = React.ComponentProps<"table">;
|
|
17
17
|
|
|
18
18
|
function Table({ className, ...props }: TableProps): ReactElement {
|
|
19
19
|
return (
|
|
@@ -22,15 +22,15 @@ function Table({ className, ...props }: TableProps): ReactElement {
|
|
|
22
22
|
data-slot="table-container"
|
|
23
23
|
>
|
|
24
24
|
<table
|
|
25
|
-
className={cn("w-full caption-bottom text-
|
|
25
|
+
className={cn("w-full caption-bottom text-body-small", className)}
|
|
26
26
|
data-slot="table"
|
|
27
27
|
{...props}
|
|
28
28
|
/>
|
|
29
29
|
</div>
|
|
30
|
-
)
|
|
30
|
+
);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
export type TableHeaderProps = React.ComponentProps<"thead"
|
|
33
|
+
export type TableHeaderProps = React.ComponentProps<"thead">;
|
|
34
34
|
|
|
35
35
|
function TableHeader({ className, ...props }: TableHeaderProps): ReactElement {
|
|
36
36
|
return (
|
|
@@ -39,10 +39,10 @@ function TableHeader({ className, ...props }: TableHeaderProps): ReactElement {
|
|
|
39
39
|
data-slot="table-header"
|
|
40
40
|
{...props}
|
|
41
41
|
/>
|
|
42
|
-
)
|
|
42
|
+
);
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
export type TableBodyProps = React.ComponentProps<"tbody"
|
|
45
|
+
export type TableBodyProps = React.ComponentProps<"tbody">;
|
|
46
46
|
|
|
47
47
|
function TableBody({ className, ...props }: TableBodyProps): ReactElement {
|
|
48
48
|
return (
|
|
@@ -51,56 +51,56 @@ function TableBody({ className, ...props }: TableBodyProps): ReactElement {
|
|
|
51
51
|
data-slot="table-body"
|
|
52
52
|
{...props}
|
|
53
53
|
/>
|
|
54
|
-
)
|
|
54
|
+
);
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
export type TableFooterProps = React.ComponentProps<"tfoot"
|
|
57
|
+
export type TableFooterProps = React.ComponentProps<"tfoot">;
|
|
58
58
|
|
|
59
59
|
function TableFooter({ className, ...props }: TableFooterProps): ReactElement {
|
|
60
60
|
return (
|
|
61
61
|
<tfoot
|
|
62
62
|
className={cn(
|
|
63
|
-
"border-t bg-muted/50
|
|
64
|
-
className
|
|
63
|
+
"border-t bg-muted/50 text-label-medium [&>tr]:last:border-b-0",
|
|
64
|
+
className,
|
|
65
65
|
)}
|
|
66
66
|
data-slot="table-footer"
|
|
67
67
|
{...props}
|
|
68
68
|
/>
|
|
69
|
-
)
|
|
69
|
+
);
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
export type TableRowProps = React.ComponentProps<"tr"
|
|
72
|
+
export type TableRowProps = React.ComponentProps<"tr">;
|
|
73
73
|
|
|
74
74
|
function TableRow({ className, ...props }: TableRowProps): ReactElement {
|
|
75
75
|
return (
|
|
76
76
|
<tr
|
|
77
77
|
className={cn(
|
|
78
78
|
"border-b transition-[background-color,opacity] hover:bg-muted/50 data-[state=selected]:bg-primary/10",
|
|
79
|
-
className
|
|
79
|
+
className,
|
|
80
80
|
)}
|
|
81
81
|
data-slot="table-row"
|
|
82
82
|
{...props}
|
|
83
83
|
/>
|
|
84
|
-
)
|
|
84
|
+
);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
export type TableHeadProps = React.ComponentProps<"th"
|
|
87
|
+
export type TableHeadProps = React.ComponentProps<"th">;
|
|
88
88
|
|
|
89
89
|
function TableHead({ className, ...props }: TableHeadProps): ReactElement {
|
|
90
90
|
return (
|
|
91
91
|
<th
|
|
92
92
|
className={cn(
|
|
93
|
-
"h-10 px-4 text-left align-middle
|
|
93
|
+
"h-10 px-4 text-left align-middle text-label-medium whitespace-nowrap text-muted-foreground",
|
|
94
94
|
"[&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
|
|
95
|
-
className
|
|
95
|
+
className,
|
|
96
96
|
)}
|
|
97
97
|
data-slot="table-head"
|
|
98
98
|
{...props}
|
|
99
99
|
/>
|
|
100
|
-
)
|
|
100
|
+
);
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
-
export type TableCellProps = React.ComponentProps<"td"
|
|
103
|
+
export type TableCellProps = React.ComponentProps<"td">;
|
|
104
104
|
|
|
105
105
|
function TableCell({ className, ...props }: TableCellProps): ReactElement {
|
|
106
106
|
return (
|
|
@@ -108,15 +108,15 @@ function TableCell({ className, ...props }: TableCellProps): ReactElement {
|
|
|
108
108
|
className={cn(
|
|
109
109
|
"px-4 py-3 align-middle whitespace-nowrap",
|
|
110
110
|
"[&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
|
|
111
|
-
className
|
|
111
|
+
className,
|
|
112
112
|
)}
|
|
113
113
|
data-slot="table-cell"
|
|
114
114
|
{...props}
|
|
115
115
|
/>
|
|
116
|
-
)
|
|
116
|
+
);
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
-
export type TableCaptionProps = React.ComponentProps<"caption"
|
|
119
|
+
export type TableCaptionProps = React.ComponentProps<"caption">;
|
|
120
120
|
|
|
121
121
|
function TableCaption({
|
|
122
122
|
className,
|
|
@@ -124,11 +124,11 @@ function TableCaption({
|
|
|
124
124
|
}: TableCaptionProps): ReactElement {
|
|
125
125
|
return (
|
|
126
126
|
<caption
|
|
127
|
-
className={cn("mt-4 text-
|
|
127
|
+
className={cn("mt-4 text-body-small text-muted-foreground", className)}
|
|
128
128
|
data-slot="table-caption"
|
|
129
129
|
{...props}
|
|
130
130
|
/>
|
|
131
|
-
)
|
|
131
|
+
);
|
|
132
132
|
}
|
|
133
133
|
|
|
134
134
|
export {
|
|
@@ -140,4 +140,4 @@ export {
|
|
|
140
140
|
TableRow,
|
|
141
141
|
TableCell,
|
|
142
142
|
TableCaption,
|
|
143
|
-
}
|
|
143
|
+
};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { type ReactElement } from "react"
|
|
2
|
-
import * as React from "react"
|
|
3
|
-
import { cva, type VariantProps } from "class-variance-authority"
|
|
4
|
-
import { Tabs as TabsPrimitive } from "@base-ui/react/tabs"
|
|
5
|
-
import { cn } from "@/lib/utils"
|
|
1
|
+
import { type ReactElement } from "react";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { cva, type VariantProps } from "class-variance-authority";
|
|
4
|
+
import { Tabs as TabsPrimitive } from "@base-ui/react/tabs";
|
|
5
|
+
import { cn } from "@/lib/utils";
|
|
6
6
|
|
|
7
7
|
export type TabsProps = React.ComponentProps<typeof TabsPrimitive.Root> & {
|
|
8
|
-
orientation?: "horizontal" | "vertical"
|
|
9
|
-
}
|
|
8
|
+
orientation?: "horizontal" | "vertical";
|
|
9
|
+
};
|
|
10
10
|
|
|
11
11
|
function Tabs({
|
|
12
12
|
className,
|
|
@@ -17,13 +17,13 @@ function Tabs({
|
|
|
17
17
|
<TabsPrimitive.Root
|
|
18
18
|
className={cn(
|
|
19
19
|
"group/tabs flex gap-2 data-[orientation=horizontal]:flex-col",
|
|
20
|
-
className
|
|
20
|
+
className,
|
|
21
21
|
)}
|
|
22
22
|
data-orientation={orientation}
|
|
23
23
|
data-slot="tabs"
|
|
24
24
|
{...props}
|
|
25
25
|
/>
|
|
26
|
-
)
|
|
26
|
+
);
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
const tabsListVariants = cva(
|
|
@@ -38,11 +38,11 @@ const tabsListVariants = cva(
|
|
|
38
38
|
defaultVariants: {
|
|
39
39
|
variant: "default",
|
|
40
40
|
},
|
|
41
|
-
}
|
|
42
|
-
)
|
|
41
|
+
},
|
|
42
|
+
);
|
|
43
43
|
|
|
44
44
|
export type TabsListProps = React.ComponentProps<typeof TabsPrimitive.List> &
|
|
45
|
-
VariantProps<typeof tabsListVariants
|
|
45
|
+
VariantProps<typeof tabsListVariants>;
|
|
46
46
|
|
|
47
47
|
function TabsList({
|
|
48
48
|
className,
|
|
@@ -56,21 +56,18 @@ function TabsList({
|
|
|
56
56
|
data-variant={variant}
|
|
57
57
|
{...props}
|
|
58
58
|
/>
|
|
59
|
-
)
|
|
59
|
+
);
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
export type TabsTriggerProps = React.ComponentProps<typeof TabsPrimitive.Tab
|
|
62
|
+
export type TabsTriggerProps = React.ComponentProps<typeof TabsPrimitive.Tab>;
|
|
63
63
|
|
|
64
|
-
function TabsTrigger({
|
|
65
|
-
className,
|
|
66
|
-
...props
|
|
67
|
-
}: TabsTriggerProps): ReactElement {
|
|
64
|
+
function TabsTrigger({ className, ...props }: TabsTriggerProps): ReactElement {
|
|
68
65
|
return (
|
|
69
66
|
<TabsPrimitive.Tab
|
|
70
67
|
className={cn(
|
|
71
68
|
// Base layout & typography
|
|
72
69
|
"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 whitespace-nowrap",
|
|
73
|
-
"rounded-none border border-transparent px-1.5 py-1 text-
|
|
70
|
+
"rounded-none border border-transparent px-1.5 py-1 text-label-medium",
|
|
74
71
|
"text-muted-foreground transition-all",
|
|
75
72
|
// Vertical orientation
|
|
76
73
|
"group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start",
|
|
@@ -93,27 +90,24 @@ function TabsTrigger({
|
|
|
93
90
|
"group-data-[variant=line]/tabs-list:data-active:after:opacity-100",
|
|
94
91
|
// SVG icons
|
|
95
92
|
"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
96
|
-
className
|
|
93
|
+
className,
|
|
97
94
|
)}
|
|
98
95
|
data-slot="tabs-trigger"
|
|
99
96
|
{...props}
|
|
100
97
|
/>
|
|
101
|
-
)
|
|
98
|
+
);
|
|
102
99
|
}
|
|
103
100
|
|
|
104
|
-
export type TabsContentProps = React.ComponentProps<typeof TabsPrimitive.Panel
|
|
101
|
+
export type TabsContentProps = React.ComponentProps<typeof TabsPrimitive.Panel>;
|
|
105
102
|
|
|
106
|
-
function TabsContent({
|
|
107
|
-
className,
|
|
108
|
-
...props
|
|
109
|
-
}: TabsContentProps): ReactElement {
|
|
103
|
+
function TabsContent({ className, ...props }: TabsContentProps): ReactElement {
|
|
110
104
|
return (
|
|
111
105
|
<TabsPrimitive.Panel
|
|
112
106
|
className={cn("flex-1 outline-none", className)}
|
|
113
107
|
data-slot="tabs-content"
|
|
114
108
|
{...props}
|
|
115
109
|
/>
|
|
116
|
-
)
|
|
110
|
+
);
|
|
117
111
|
}
|
|
118
112
|
|
|
119
|
-
export { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }
|
|
113
|
+
export { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants };
|
|
@@ -5,24 +5,24 @@
|
|
|
5
5
|
* - `shadow-xs` removed — flat panels per Figma
|
|
6
6
|
* - `font-sans` added — consistent typography token
|
|
7
7
|
*/
|
|
8
|
-
import { type ReactElement } from "react"
|
|
9
|
-
import * as React from "react"
|
|
10
|
-
import { cn } from "@/lib/utils"
|
|
8
|
+
import { type ReactElement } from "react";
|
|
9
|
+
import * as React from "react";
|
|
10
|
+
import { cn } from "@/lib/utils";
|
|
11
11
|
|
|
12
|
-
export type TextareaProps = React.ComponentProps<"textarea"
|
|
12
|
+
export type TextareaProps = React.ComponentProps<"textarea">;
|
|
13
13
|
|
|
14
14
|
function Textarea({ className, ...props }: TextareaProps): ReactElement {
|
|
15
15
|
return (
|
|
16
16
|
<textarea
|
|
17
17
|
className={cn(
|
|
18
18
|
// WealthX: removed shadow-xs (flat panels), added font-sans
|
|
19
|
-
"flex field-sizing-content min-h-16 w-full border border-input bg-transparent px-3 py-2 text-
|
|
20
|
-
className
|
|
19
|
+
"flex field-sizing-content min-h-16 w-full border border-input bg-transparent px-3 py-2 text-body-medium font-sans transition-[color,box-shadow] outline-none placeholder:font-normal placeholder:text-muted-foreground focus-visible:border-primary focus-visible:ring-[3px] focus-visible:ring-primary/20 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:bg-input/30 dark:aria-invalid:ring-destructive/40",
|
|
20
|
+
className,
|
|
21
21
|
)}
|
|
22
22
|
data-slot="textarea"
|
|
23
23
|
{...props}
|
|
24
24
|
/>
|
|
25
|
-
)
|
|
25
|
+
);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
export { Textarea }
|
|
28
|
+
export { Textarea };
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { type
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import { Toggle as ToggleComponent } from "@base-ui/react/toggle"
|
|
7
|
-
import { cn } from "@/lib/utils"
|
|
1
|
+
import { type ReactElement } from "react";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { cva, type VariantProps } from "class-variance-authority";
|
|
4
|
+
import { Toggle as ToggleComponent } from "@base-ui/react/toggle";
|
|
5
|
+
import { cn } from "@/lib/utils";
|
|
8
6
|
|
|
9
7
|
/**
|
|
10
8
|
* Toggle — WealthX DS overrides (shadcn base)
|
|
@@ -12,12 +10,12 @@ import { cn } from "@/lib/utils"
|
|
|
12
10
|
* Changes from shadcn default:
|
|
13
11
|
* - `rounded-md` removed — sharp corners per WealthX DS
|
|
14
12
|
* - `shadow-xs` removed from outline variant — flat panels
|
|
15
|
-
* - Pressed/on state uses `bg-primary/10` + `inset-ring-primary` via Figma tokens
|
|
13
|
+
* - Pressed/on state uses `bg-primary/10` + `inset-ring-primary` + `text-foreground` via Figma tokens
|
|
16
14
|
* (inset-ring instead of border-primary so indicator is independent of border-width,
|
|
17
15
|
* works correctly inside ToggleGroup where border-l is collapsed for connected items)
|
|
18
16
|
*/
|
|
19
17
|
const toggleVariants = cva(
|
|
20
|
-
"inline-flex items-center justify-center gap-2 text-
|
|
18
|
+
"inline-flex items-center justify-center gap-2 text-label-medium whitespace-nowrap transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-pressed:bg-primary/10 data-pressed:inset-ring data-pressed:inset-ring-primary data-pressed:text-foreground data-pressed:hover:bg-primary/10 data-pressed:hover:text-foreground dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
21
19
|
{
|
|
22
20
|
variants: {
|
|
23
21
|
variant: {
|
|
@@ -27,7 +25,7 @@ const toggleVariants = cva(
|
|
|
27
25
|
},
|
|
28
26
|
size: {
|
|
29
27
|
default: "h-9 min-w-9 px-2",
|
|
30
|
-
sm: "h-8 min-w-8 px-1.5",
|
|
28
|
+
sm: "h-8 min-w-8 px-1.5 text-caption",
|
|
31
29
|
lg: "h-10 min-w-10 px-2.5",
|
|
32
30
|
},
|
|
33
31
|
},
|
|
@@ -35,11 +33,11 @@ const toggleVariants = cva(
|
|
|
35
33
|
variant: "default",
|
|
36
34
|
size: "default",
|
|
37
35
|
},
|
|
38
|
-
}
|
|
39
|
-
)
|
|
36
|
+
},
|
|
37
|
+
);
|
|
40
38
|
|
|
41
39
|
export type ToggleProps = React.ComponentProps<typeof ToggleComponent> &
|
|
42
|
-
VariantProps<typeof toggleVariants
|
|
40
|
+
VariantProps<typeof toggleVariants>;
|
|
43
41
|
|
|
44
42
|
function Toggle({
|
|
45
43
|
className,
|
|
@@ -53,7 +51,7 @@ function Toggle({
|
|
|
53
51
|
data-slot="toggle"
|
|
54
52
|
{...props}
|
|
55
53
|
/>
|
|
56
|
-
)
|
|
54
|
+
);
|
|
57
55
|
}
|
|
58
56
|
|
|
59
|
-
export { Toggle, toggleVariants }
|
|
57
|
+
export { Toggle, toggleVariants };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { type ReactElement } from "react"
|
|
2
|
-
import * as React from "react"
|
|
3
|
-
import { Tooltip as TooltipPrimitive } from "@base-ui/react/tooltip"
|
|
4
|
-
import { cn } from "@/lib/utils"
|
|
5
|
-
import { useThemeVars } from "@/lib/theme-provider"
|
|
1
|
+
import { type ReactElement } from "react";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { Tooltip as TooltipPrimitive } from "@base-ui/react/tooltip";
|
|
4
|
+
import { cn } from "@/lib/utils";
|
|
5
|
+
import { useThemeVars } from "@/lib/theme-provider";
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Tooltip — WealthX Design System
|
|
@@ -12,7 +12,9 @@ import { useThemeVars } from "@/lib/theme-provider"
|
|
|
12
12
|
* WealthX overrides: bg-brand-secondary, text-brand-secondary-foreground, sharp corners (no rounded-md)
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
-
export type TooltipProviderProps = React.ComponentProps<
|
|
15
|
+
export type TooltipProviderProps = React.ComponentProps<
|
|
16
|
+
typeof TooltipPrimitive.Provider
|
|
17
|
+
>;
|
|
16
18
|
|
|
17
19
|
function TooltipProvider({
|
|
18
20
|
delay = 0,
|
|
@@ -24,32 +26,34 @@ function TooltipProvider({
|
|
|
24
26
|
delay={delay}
|
|
25
27
|
{...props}
|
|
26
28
|
/>
|
|
27
|
-
)
|
|
29
|
+
);
|
|
28
30
|
}
|
|
29
31
|
|
|
30
|
-
export type TooltipProps = React.ComponentProps<typeof TooltipPrimitive.Root
|
|
32
|
+
export type TooltipProps = React.ComponentProps<typeof TooltipPrimitive.Root>;
|
|
31
33
|
|
|
32
|
-
function Tooltip({
|
|
33
|
-
...props
|
|
34
|
-
}: TooltipProps): ReactElement {
|
|
35
|
-
return <TooltipPrimitive.Root data-slot="tooltip" {...props} />
|
|
34
|
+
function Tooltip({ ...props }: TooltipProps): ReactElement {
|
|
35
|
+
return <TooltipPrimitive.Root data-slot="tooltip" {...props} />;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
export type TooltipTriggerProps = React.ComponentProps<
|
|
38
|
+
export type TooltipTriggerProps = React.ComponentProps<
|
|
39
|
+
typeof TooltipPrimitive.Trigger
|
|
40
|
+
>;
|
|
39
41
|
|
|
40
|
-
function TooltipTrigger({
|
|
41
|
-
...props
|
|
42
|
-
}: TooltipTriggerProps): ReactElement {
|
|
43
|
-
return <TooltipPrimitive.Trigger data-slot="tooltip-trigger" {...props} />
|
|
42
|
+
function TooltipTrigger({ ...props }: TooltipTriggerProps): ReactElement {
|
|
43
|
+
return <TooltipPrimitive.Trigger data-slot="tooltip-trigger" {...props} />;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
export type TooltipContentProps = React.ComponentProps<
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
export type TooltipContentProps = React.ComponentProps<
|
|
47
|
+
typeof TooltipPrimitive.Popup
|
|
48
|
+
> & {
|
|
49
|
+
sideOffset?: number;
|
|
50
|
+
side?: React.ComponentProps<typeof TooltipPrimitive.Positioner>["side"];
|
|
51
|
+
};
|
|
49
52
|
|
|
50
53
|
function TooltipContent({
|
|
51
54
|
className,
|
|
52
55
|
sideOffset = 8,
|
|
56
|
+
side,
|
|
53
57
|
children,
|
|
54
58
|
style,
|
|
55
59
|
...props
|
|
@@ -57,24 +61,22 @@ function TooltipContent({
|
|
|
57
61
|
const themeVars = useThemeVars();
|
|
58
62
|
return (
|
|
59
63
|
<TooltipPrimitive.Portal>
|
|
60
|
-
<TooltipPrimitive.Positioner sideOffset={sideOffset}>
|
|
64
|
+
<TooltipPrimitive.Positioner sideOffset={sideOffset} side={side}>
|
|
61
65
|
<TooltipPrimitive.Popup
|
|
62
66
|
className={cn(
|
|
63
|
-
"z-50 w-fit animate-in bg-brand-secondary px-3 py-1.5 text-
|
|
64
|
-
className
|
|
67
|
+
"relative z-50 w-fit animate-in overflow-visible bg-brand-secondary px-3 py-1.5 text-caption text-balance text-brand-secondary-foreground fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-ending-style:animate-out data-ending-style:fade-out-0 data-ending-style:zoom-out-95 data-ending-style:fill-mode-forwards",
|
|
68
|
+
className,
|
|
65
69
|
)}
|
|
66
70
|
data-slot="tooltip-content"
|
|
67
71
|
style={{ ...themeVars, ...style } as React.CSSProperties}
|
|
68
72
|
{...props}
|
|
69
73
|
>
|
|
70
74
|
{children}
|
|
75
|
+
<TooltipPrimitive.Arrow className="z-50 size-2.5 rotate-45 bg-brand-secondary data-[side=bottom]:-top-1 data-[side=left]:-right-1 data-[side=right]:-left-1 data-[side=top]:-bottom-1" />
|
|
71
76
|
</TooltipPrimitive.Popup>
|
|
72
|
-
<TooltipPrimitive.Arrow
|
|
73
|
-
className="z-50 size-2.5 rotate-45 bg-brand-secondary"
|
|
74
|
-
/>
|
|
75
77
|
</TooltipPrimitive.Positioner>
|
|
76
78
|
</TooltipPrimitive.Portal>
|
|
77
|
-
)
|
|
79
|
+
);
|
|
78
80
|
}
|
|
79
81
|
|
|
80
|
-
export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }
|
|
82
|
+
export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
|