aural-ui 2.0.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/LICENSE +21 -0
- package/README.md +456 -0
- package/dist/components/aspect-ratio/AspectRatio.stories.tsx +1327 -0
- package/dist/components/aspect-ratio/index.tsx +10 -0
- package/dist/components/aspect-ratio/meta.ts +8 -0
- package/dist/components/avatar/Avatar.stories.tsx +645 -0
- package/dist/components/avatar/index.tsx +50 -0
- package/dist/components/avatar/meta.ts +8 -0
- package/dist/components/badge/Badge.stories.tsx +169 -0
- package/dist/components/badge/index.tsx +28 -0
- package/dist/components/badge/meta.ts +6 -0
- package/dist/components/banner/Banner.stories.tsx +475 -0
- package/dist/components/banner/index.tsx +256 -0
- package/dist/components/banner/meta.ts +36 -0
- package/dist/components/button/Button.stories.tsx +74 -0
- package/dist/components/button/index.tsx +158 -0
- package/dist/components/button/meta.ts +33 -0
- package/dist/components/card/Card.stories.tsx +377 -0
- package/dist/components/card/index.tsx +85 -0
- package/dist/components/card/meta.ts +14 -0
- package/dist/components/char-count/CharCount.stories.tsx +334 -0
- package/dist/components/char-count/index.tsx +51 -0
- package/dist/components/char-count/meta.ts +13 -0
- package/dist/components/checkbox/Checkbox.stories.tsx +209 -0
- package/dist/components/checkbox/index.tsx +34 -0
- package/dist/components/checkbox/meta.ts +19 -0
- package/dist/components/chip/Chip.stories.tsx +207 -0
- package/dist/components/chip/index.tsx +92 -0
- package/dist/components/chip/meta.ts +17 -0
- package/dist/components/circular-loader/CircularLoader.stories.tsx +741 -0
- package/dist/components/circular-loader/index.tsx +138 -0
- package/dist/components/circular-loader/meta.ts +11 -0
- package/dist/components/collapsible/Collapsible.stories.tsx +319 -0
- package/dist/components/collapsible/index.tsx +158 -0
- package/dist/components/collapsible/meta.ts +22 -0
- package/dist/components/command/Command.stories.tsx +996 -0
- package/dist/components/command/index.tsx +324 -0
- package/dist/components/command/meta.ts +18 -0
- package/dist/components/dialog/Dialog.stories.tsx +963 -0
- package/dist/components/dialog/index.tsx +250 -0
- package/dist/components/dialog/meta.ts +28 -0
- package/dist/components/divider/Divider.stories.tsx +633 -0
- package/dist/components/divider/index.tsx +181 -0
- package/dist/components/divider/meta.ts +12 -0
- package/dist/components/dot-loader/DotLoader.stories.tsx +352 -0
- package/dist/components/dot-loader/index.tsx +78 -0
- package/dist/components/dot-loader/meta.ts +14 -0
- package/dist/components/dropdown/Dropdown.stories.tsx +1210 -0
- package/dist/components/dropdown/index.tsx +479 -0
- package/dist/components/dropdown/meta.ts +21 -0
- package/dist/components/form/Form.stories.tsx +320 -0
- package/dist/components/form/index.tsx +183 -0
- package/dist/components/form/meta.ts +11 -0
- package/dist/components/helper-text/HelperText.stories.tsx +254 -0
- package/dist/components/helper-text/index.tsx +102 -0
- package/dist/components/helper-text/meta.ts +18 -0
- package/dist/components/hover-card/HoverCard.stories.tsx +1328 -0
- package/dist/components/hover-card/index.tsx +42 -0
- package/dist/components/hover-card/meta.ts +12 -0
- package/dist/components/icon-button/IconButton.stories.tsx +252 -0
- package/dist/components/icon-button/index.tsx +130 -0
- package/dist/components/icon-button/meta.ts +20 -0
- package/dist/components/if-else/if-else.stories.tsx +100 -0
- package/dist/components/if-else/index.tsx +56 -0
- package/dist/components/if-else/meta.ts +6 -0
- package/dist/components/index.ts +70 -0
- package/dist/components/input/Input.stories.tsx +431 -0
- package/dist/components/input/index.tsx +487 -0
- package/dist/components/input/meta.ts +28 -0
- package/dist/components/label/Label.stories.tsx +200 -0
- package/dist/components/label/index.tsx +43 -0
- package/dist/components/label/meta.ts +14 -0
- package/dist/components/list/List.stories.tsx +963 -0
- package/dist/components/list/index.tsx +567 -0
- package/dist/components/list/meta.ts +24 -0
- package/dist/components/marquee/Marquee.stories.tsx +819 -0
- package/dist/components/marquee/index.tsx +107 -0
- package/dist/components/marquee/meta.ts +6 -0
- package/dist/components/overlay/Overlay.stories.tsx +954 -0
- package/dist/components/overlay/index.tsx +58 -0
- package/dist/components/overlay/meta.ts +10 -0
- package/dist/components/pagination/Pagination.stories.tsx +354 -0
- package/dist/components/pagination/index.tsx +455 -0
- package/dist/components/pagination/meta.ts +29 -0
- package/dist/components/popover/Popover.stories.tsx +1037 -0
- package/dist/components/popover/index.tsx +67 -0
- package/dist/components/popover/meta.ts +12 -0
- package/dist/components/radio/Radio.stories.tsx +146 -0
- package/dist/components/radio/index.tsx +41 -0
- package/dist/components/radio/meta.ts +19 -0
- package/dist/components/resizable/Resizable.stories.tsx +866 -0
- package/dist/components/resizable/index.tsx +55 -0
- package/dist/components/resizable/meta.ts +12 -0
- package/dist/components/scroll-area/ScrollArea.stories.tsx +1104 -0
- package/dist/components/scroll-area/index.tsx +55 -0
- package/dist/components/scroll-area/meta.ts +8 -0
- package/dist/components/search/Search.stories.tsx +678 -0
- package/dist/components/search/index.tsx +141 -0
- package/dist/components/search/meta.ts +6 -0
- package/dist/components/select/Select.stories.tsx +962 -0
- package/dist/components/select/index.tsx +512 -0
- package/dist/components/select/meta.ts +40 -0
- package/dist/components/sheet/Sheet.stories.tsx +1060 -0
- package/dist/components/sheet/index.tsx +440 -0
- package/dist/components/sheet/meta.ts +38 -0
- package/dist/components/skelton/Skelton.stories.tsx +859 -0
- package/dist/components/skelton/index.tsx +17 -0
- package/dist/components/skelton/meta.ts +6 -0
- package/dist/components/slider/Slider.stories.tsx +876 -0
- package/dist/components/slider/index.tsx +156 -0
- package/dist/components/slider/meta.ts +29 -0
- package/dist/components/stepper/Stepper.stories.tsx +639 -0
- package/dist/components/stepper/index.tsx +650 -0
- package/dist/components/stepper/meta.ts +19 -0
- package/dist/components/switch/Switch.stories.tsx +85 -0
- package/dist/components/switch/index.tsx +37 -0
- package/dist/components/switch/meta.ts +24 -0
- package/dist/components/switch-case/SwitchCase.stories.tsx +209 -0
- package/dist/components/switch-case/index.tsx +89 -0
- package/dist/components/switch-case/meta.ts +6 -0
- package/dist/components/table/Table.stories.tsx +1095 -0
- package/dist/components/table/index.tsx +113 -0
- package/dist/components/table/meta.ts +20 -0
- package/dist/components/tabs/Tabs.stories.tsx +1379 -0
- package/dist/components/tabs/index.tsx +186 -0
- package/dist/components/tabs/meta.ts +25 -0
- package/dist/components/tag/Tag.stories.tsx +625 -0
- package/dist/components/tag/index.tsx +320 -0
- package/dist/components/tag/meta.ts +52 -0
- package/dist/components/textarea/TextArea.stories.tsx +723 -0
- package/dist/components/textarea/index.tsx +480 -0
- package/dist/components/textarea/meta.ts +23 -0
- package/dist/components/toast/Toast.stories.tsx +1427 -0
- package/dist/components/toast/index.tsx +26 -0
- package/dist/components/toast/meta.ts +19 -0
- package/dist/components/toggle/Toggle.stories.tsx +1093 -0
- package/dist/components/toggle/index.tsx +44 -0
- package/dist/components/toggle/meta.ts +19 -0
- package/dist/components/tooltip/Tooltip.stories.tsx +1548 -0
- package/dist/components/tooltip/index.tsx +304 -0
- package/dist/components/tooltip/meta.ts +21 -0
- package/dist/components/typography/Typography.stories.tsx +197 -0
- package/dist/components/typography/index.tsx +184 -0
- package/dist/components/typography/meta.ts +38 -0
- package/dist/fonts/LabGrotesque-Regular.ttf +0 -0
- package/dist/fonts/LabGrotesqueTRIAL-Bold.otf +0 -0
- package/dist/fonts/LabGrotesqueTRIAL-Light.otf +0 -0
- package/dist/fonts/LabGrotesqueTRIAL-Medium.otf +0 -0
- package/dist/fonts/LabGrotesqueTRIAL-Regular.otf +0 -0
- package/dist/fonts/PPSupplySans-Regular (1).otf +0 -0
- package/dist/fonts/PPSupplySans-Regular.otf +0 -0
- package/dist/fonts/PPSupplySans-Ultralight.otf +0 -0
- package/dist/hooks/index.ts +3 -0
- package/dist/hooks/use-previous/UsePrevious.stories.tsx +997 -0
- package/dist/hooks/use-previous/index.ts +15 -0
- package/dist/hooks/use-previous/meta.ts +6 -0
- package/dist/hooks/use-standalone-pagination/UseStandalonePagination.stories.tsx +983 -0
- package/dist/hooks/use-standalone-pagination/index.ts +146 -0
- package/dist/hooks/use-standalone-pagination/meta.ts +6 -0
- package/dist/icons/Icons.stories.tsx +29 -0
- package/dist/icons/alert-icon/AlertIcon.stories.tsx +991 -0
- package/dist/icons/alert-icon/index.tsx +48 -0
- package/dist/icons/alert-icon/meta.ts +8 -0
- package/dist/icons/all-icons.tsx +738 -0
- package/dist/icons/angle-down-icon/AngleDownIcon.stories.tsx +1031 -0
- package/dist/icons/angle-down-icon/index.tsx +25 -0
- package/dist/icons/angle-down-icon/meta.ts +8 -0
- package/dist/icons/arrow-box-left-icon/ArrowBoxLeftIcon.stories.tsx +1080 -0
- package/dist/icons/arrow-box-left-icon/index.tsx +24 -0
- package/dist/icons/arrow-box-left-icon/meta.ts +8 -0
- package/dist/icons/arrow-right-icon/ArrowRightIcon.stories.tsx +1151 -0
- package/dist/icons/arrow-right-icon/index.tsx +26 -0
- package/dist/icons/arrow-right-icon/meta.ts +8 -0
- package/dist/icons/arrow-right-up-icon/ArrowRightUpIcon.stories.tsx +1273 -0
- package/dist/icons/arrow-right-up-icon/index.tsx +24 -0
- package/dist/icons/arrow-right-up-icon/meta.ts +8 -0
- package/dist/icons/art-board-icon/ArtBoardIcon.stories.tsx +670 -0
- package/dist/icons/art-board-icon/index.tsx +24 -0
- package/dist/icons/art-board-icon/meta.ts +7 -0
- package/dist/icons/audio-bar-icon/AudioBarIcon.stories.tsx +1244 -0
- package/dist/icons/audio-bar-icon/index.tsx +19 -0
- package/dist/icons/audio-bar-icon/meta.ts +8 -0
- package/dist/icons/bubble-check-icon/BubbleCheckIcon.stories.tsx +1239 -0
- package/dist/icons/bubble-check-icon/index.tsx +24 -0
- package/dist/icons/bubble-check-icon/meta.ts +8 -0
- package/dist/icons/bubble-crossed-icon/BubbleCrossedIcon.stories.tsx +1228 -0
- package/dist/icons/bubble-crossed-icon/index.tsx +24 -0
- package/dist/icons/bubble-crossed-icon/meta.ts +8 -0
- package/dist/icons/bubble-sparkle-icon/BubbleSparkleIcon.stories.tsx +912 -0
- package/dist/icons/bubble-sparkle-icon/index.tsx +26 -0
- package/dist/icons/bubble-sparkle-icon/meta.ts +8 -0
- package/dist/icons/chevron-double-left-icon/ChevronDoubleLeftIcon.stories.tsx +1021 -0
- package/dist/icons/chevron-double-left-icon/index.tsx +34 -0
- package/dist/icons/chevron-double-left-icon/meta.ts +8 -0
- package/dist/icons/chevron-double-right-icon/ChevronDoubleRightIcon.stories.tsx +1021 -0
- package/dist/icons/chevron-double-right-icon/index.tsx +34 -0
- package/dist/icons/chevron-double-right-icon/meta.ts +8 -0
- package/dist/icons/chevron-down-icon/ChevronDownIcon.stories.tsx +1001 -0
- package/dist/icons/chevron-down-icon/index.tsx +27 -0
- package/dist/icons/chevron-down-icon/meta.ts +8 -0
- package/dist/icons/chevron-left-icon/ChevronLeftIcon.stories.tsx +1029 -0
- package/dist/icons/chevron-left-icon/index.tsx +27 -0
- package/dist/icons/chevron-left-icon/meta.ts +8 -0
- package/dist/icons/chevron-right-icon/ChevronRightIcon.stories.tsx +1021 -0
- package/dist/icons/chevron-right-icon/index.tsx +27 -0
- package/dist/icons/chevron-right-icon/meta.ts +8 -0
- package/dist/icons/chevron-up-icon/ChevronUpIcon.stories.tsx +1036 -0
- package/dist/icons/chevron-up-icon/index.tsx +27 -0
- package/dist/icons/chevron-up-icon/meta.ts +8 -0
- package/dist/icons/command-icon/CommandIcon.stories.tsx +1098 -0
- package/dist/icons/command-icon/index.tsx +24 -0
- package/dist/icons/command-icon/meta.ts +8 -0
- package/dist/icons/cross-circle-icon/CrossCircleIcon.stories.tsx +1061 -0
- package/dist/icons/cross-circle-icon/index.tsx +23 -0
- package/dist/icons/cross-circle-icon/meta.ts +8 -0
- package/dist/icons/cross-icon/CrossIcon.stories.tsx +1027 -0
- package/dist/icons/cross-icon/index.tsx +24 -0
- package/dist/icons/cross-icon/meta.ts +8 -0
- package/dist/icons/edit-big-icon/EditBigIcon.stories.tsx +1092 -0
- package/dist/icons/edit-big-icon/index.tsx +22 -0
- package/dist/icons/edit-big-icon/meta.ts +8 -0
- package/dist/icons/eye-close-icon/EyeCloseIcon.stories.tsx +1090 -0
- package/dist/icons/eye-close-icon/index.tsx +26 -0
- package/dist/icons/eye-close-icon/meta.ts +8 -0
- package/dist/icons/eye-open-icon/EyeOpenIcon.stories.tsx +1098 -0
- package/dist/icons/eye-open-icon/index.tsx +24 -0
- package/dist/icons/eye-open-icon/meta.ts +8 -0
- package/dist/icons/feature-shine-icon/FeatureShineIcon.stories.tsx +1071 -0
- package/dist/icons/feature-shine-icon/index.tsx +29 -0
- package/dist/icons/feature-shine-icon/meta.ts +8 -0
- package/dist/icons/file-chart-icon/FileChartIcon.stories.tsx +1115 -0
- package/dist/icons/file-chart-icon/index.tsx +24 -0
- package/dist/icons/file-chart-icon/meta.ts +8 -0
- package/dist/icons/file-text-icon/FileTextIcon.stories.tsx +668 -0
- package/dist/icons/file-text-icon/index.tsx +24 -0
- package/dist/icons/file-text-icon/meta.ts +8 -0
- package/dist/icons/grip-vertical-icon/GripVerticalIcon.stories.tsx +1239 -0
- package/dist/icons/grip-vertical-icon/index.tsx +28 -0
- package/dist/icons/grip-vertical-icon/meta.ts +8 -0
- package/dist/icons/image-icon/ImageIcon.stories.tsx +1181 -0
- package/dist/icons/image-icon/index.tsx +24 -0
- package/dist/icons/image-icon/meta.ts +8 -0
- package/dist/icons/import-folder-icon/ImportFolderIcon.stories.tsx +1248 -0
- package/dist/icons/import-folder-icon/index.tsx +22 -0
- package/dist/icons/import-folder-icon/meta.ts +8 -0
- package/dist/icons/index.ts +46 -0
- package/dist/icons/light-bulb-simple-icon/LightBulbSimpleIcon.stories.tsx +1272 -0
- package/dist/icons/light-bulb-simple-icon/index.tsx +24 -0
- package/dist/icons/light-bulb-simple-icon/meta.ts +8 -0
- package/dist/icons/magic-book-icon/MagicBookIcon.stories.tsx +1245 -0
- package/dist/icons/magic-book-icon/index.tsx +32 -0
- package/dist/icons/magic-book-icon/meta.ts +8 -0
- package/dist/icons/maintenance-icon/MaintenanceIcon.stories.tsx +1251 -0
- package/dist/icons/maintenance-icon/index.tsx +23 -0
- package/dist/icons/maintenance-icon/meta.ts +8 -0
- package/dist/icons/message-icon/MessageIcon.stories.tsx +595 -0
- package/dist/icons/message-icon/index.tsx +30 -0
- package/dist/icons/message-icon/meta.ts +8 -0
- package/dist/icons/move-horizontal-icon/MoveHorizontalIcon.stories.tsx +1245 -0
- package/dist/icons/move-horizontal-icon/index.tsx +23 -0
- package/dist/icons/move-horizontal-icon/meta.ts +8 -0
- package/dist/icons/move-vertical-icon/MoveVerticalIcon.stories.tsx +1196 -0
- package/dist/icons/move-vertical-icon/index.tsx +23 -0
- package/dist/icons/move-vertical-icon/meta.ts +8 -0
- package/dist/icons/page-search-icon/PageSearchIcon.stories.tsx +1167 -0
- package/dist/icons/page-search-icon/index.tsx +21 -0
- package/dist/icons/page-search-icon/meta.ts +8 -0
- package/dist/icons/pencil-icon/PencilIcon.stories.tsx +1131 -0
- package/dist/icons/pencil-icon/index.tsx +21 -0
- package/dist/icons/pencil-icon/meta.ts +8 -0
- package/dist/icons/plus-icon/PlusIcon.stories.tsx +1151 -0
- package/dist/icons/plus-icon/index.tsx +24 -0
- package/dist/icons/plus-icon/meta.ts +8 -0
- package/dist/icons/search-icon/SearchIcon.stories.tsx +1181 -0
- package/dist/icons/search-icon/index.tsx +24 -0
- package/dist/icons/search-icon/meta.ts +8 -0
- package/dist/icons/site-logo-icon/SiteLogoIcon.stories.tsx +1167 -0
- package/dist/icons/site-logo-icon/index.tsx +79 -0
- package/dist/icons/site-logo-icon/meta.ts +8 -0
- package/dist/icons/spinner-gradient-icon/SpinnerGradientIcon.stories.tsx +637 -0
- package/dist/icons/spinner-gradient-icon/index.tsx +53 -0
- package/dist/icons/spinner-gradient-icon/meta.ts +8 -0
- package/dist/icons/spinner-solid-icon/SpinnerSolidIcon.stories.tsx +644 -0
- package/dist/icons/spinner-solid-icon/index.tsx +59 -0
- package/dist/icons/spinner-solid-icon/meta.ts +8 -0
- package/dist/icons/spinner-solid-neutral-icon/SpinnerSolidINeutralcon.stories.tsx +736 -0
- package/dist/icons/spinner-solid-neutral-icon/index.tsx +53 -0
- package/dist/icons/spinner-solid-neutral-icon/meta.ts +8 -0
- package/dist/icons/tick-circle-icon/TickCircleIcon.stories.tsx +1204 -0
- package/dist/icons/tick-circle-icon/index.tsx +23 -0
- package/dist/icons/tick-circle-icon/meta.ts +8 -0
- package/dist/icons/tick-icon/TickIcon.stories.tsx +1340 -0
- package/dist/icons/tick-icon/index.tsx +24 -0
- package/dist/icons/tick-icon/meta.ts +8 -0
- package/dist/icons/trash-icon/TrashIcon.stories.tsx +996 -0
- package/dist/icons/trash-icon/index.tsx +24 -0
- package/dist/icons/trash-icon/meta.ts +8 -0
- package/dist/icons/upload-icon/UploadIcon.stories.tsx +947 -0
- package/dist/icons/upload-icon/index.tsx +24 -0
- package/dist/icons/upload-icon/meta.ts +8 -0
- package/dist/icons/vertical-menu-icon/VerticalMenuIcon.stories.tsx +1045 -0
- package/dist/icons/vertical-menu-icon/index.tsx +27 -0
- package/dist/icons/vertical-menu-icon/meta.ts +8 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +206 -0
- package/dist/lib/utils.ts +6 -0
- package/dist/styles/aural-theme.css +1008 -0
- package/package.json +142 -0
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
import * as React from "react"
|
|
2
|
+
import { cn } from "@lib/utils"
|
|
3
|
+
import * as TooltipPrimitive from "@radix-ui/react-tooltip"
|
|
4
|
+
import { cva } from "class-variance-authority"
|
|
5
|
+
|
|
6
|
+
const tooltipVariants = cva(
|
|
7
|
+
"z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-fm-s text-balance popover-content min-h-11 p-3 [font-size:var(--text-fm-sm)] leading-fm-sm font-fm-text flex items-center gap-2",
|
|
8
|
+
{
|
|
9
|
+
variants: {
|
|
10
|
+
variant: {
|
|
11
|
+
dark: "bg-fm-surface-secondary text-fm-primary",
|
|
12
|
+
light: "bg-fm-primary text-fm-contrast",
|
|
13
|
+
},
|
|
14
|
+
side: {
|
|
15
|
+
top: "",
|
|
16
|
+
right: "",
|
|
17
|
+
bottom: "",
|
|
18
|
+
left: "",
|
|
19
|
+
},
|
|
20
|
+
align: {
|
|
21
|
+
start: "",
|
|
22
|
+
center: "",
|
|
23
|
+
end: "",
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
compoundVariants: [
|
|
27
|
+
{
|
|
28
|
+
variant: "dark",
|
|
29
|
+
side: "top",
|
|
30
|
+
align: "center",
|
|
31
|
+
className:
|
|
32
|
+
"bg-[radial-gradient(70.39%_86.36%_at_50%_97.73%,var(--color-fm-secondary-200)_0%,rgba(29,29,29,0.02)_100%)]",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
variant: "dark",
|
|
36
|
+
side: "top",
|
|
37
|
+
align: "start",
|
|
38
|
+
className:
|
|
39
|
+
"bg-[radial-gradient(139.94%_91.41%_at_24.52%_100%,var(--color-fm-secondary-200)_0%,rgba(29,29,29,0.02)_100%)]",
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
variant: "dark",
|
|
43
|
+
side: "top",
|
|
44
|
+
align: "end",
|
|
45
|
+
className:
|
|
46
|
+
"bg-[radial-gradient(144.29%_88.59%_at_76.44%_98.86%,var(--color-fm-secondary-200)_0%,rgba(29,29,29,0.02)_100%)]",
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
variant: "dark",
|
|
50
|
+
side: "right",
|
|
51
|
+
className:
|
|
52
|
+
"bg-[radial-gradient(227.67%_50%_at_0%_50%,var(--color-fm-secondary-200)_0%,rgba(29,29,29,0.02)_100%)]",
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
variant: "dark",
|
|
56
|
+
side: "left",
|
|
57
|
+
className:
|
|
58
|
+
"bg-[radial-gradient(214.53%_47.12%_at_97.12%_50%,var(--color-fm-secondary-200)_0%,rgba(29,29,29,0.02)_100%)]",
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
variant: "dark",
|
|
62
|
+
side: "bottom",
|
|
63
|
+
align: "center",
|
|
64
|
+
className:
|
|
65
|
+
"bg-[radial-gradient(65.76%_80.68%_at_50.21%_3.41%,var(--color-fm-secondary-200)_0%,rgba(29,29,29,0.02)_100%)]",
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
variant: "dark",
|
|
69
|
+
side: "bottom",
|
|
70
|
+
align: "start",
|
|
71
|
+
className:
|
|
72
|
+
"bg-[radial-gradient(133.68%_87.79%_at_25%_0%,var(--color-fm-secondary-200)_0%,rgba(29,29,29,0.02)_100%)]",
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
variant: "dark",
|
|
76
|
+
side: "bottom",
|
|
77
|
+
align: "end",
|
|
78
|
+
className:
|
|
79
|
+
"bg-[radial-gradient(130.2%_87.53%_at_74.52%_0%,var(--color-fm-secondary-200)_0%,rgba(29,29,29,0.02)_100%)]",
|
|
80
|
+
},
|
|
81
|
+
// Light variants
|
|
82
|
+
{
|
|
83
|
+
variant: "light",
|
|
84
|
+
side: "top",
|
|
85
|
+
align: "center",
|
|
86
|
+
className:
|
|
87
|
+
"bg-[radial-gradient(81.99%_100%_at_50%_100%,var(--color-fm-secondary-800)_0%,rgba(255,255,255,0.02)_100%)]",
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
variant: "light",
|
|
91
|
+
side: "top",
|
|
92
|
+
align: "start",
|
|
93
|
+
className:
|
|
94
|
+
"bg-[linear-gradient(253deg,rgba(255,255,255,0.00)_35.74%,rgba(197,138,255,0.40)_76.76%),radial-gradient(153.27%_103.56%_at_23.08%_100%,var(--color-fm-secondary-800)_0%,rgba(255,255,255,0.02)_100%)]",
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
variant: "light",
|
|
98
|
+
side: "top",
|
|
99
|
+
align: "end",
|
|
100
|
+
className:
|
|
101
|
+
"bg-[linear-gradient(105deg,rgba(255,255,255,0.00)_30.68%,rgba(197,138,255,0.40)_75.77%),radial-gradient(141.12%_102.46%_at_76.44%_100%,var(--color-fm-secondary-800)_0%,rgba(255,255,255,0.02)_100%)]",
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
variant: "light",
|
|
105
|
+
side: "right",
|
|
106
|
+
className:
|
|
107
|
+
"bg-[radial-gradient(339.53%_74.52%_at_2.88%_50%,var(--color-fm-secondary-800)_0%,rgba(255,255,255,0.02)_100%)]",
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
variant: "light",
|
|
111
|
+
side: "left",
|
|
112
|
+
className:
|
|
113
|
+
"bg-[radial-gradient(330.77%_72.6%_at_95.19%_50%,var(--color-fm-secondary-800)_0%,rgba(255,255,255,0.02)_100%)]",
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
variant: "light",
|
|
117
|
+
side: "bottom",
|
|
118
|
+
align: "center",
|
|
119
|
+
className:
|
|
120
|
+
"bg-[radial-gradient(79.28%_96.59%_at_50.21%_3.41%,var(--color-fm-secondary-800)_0%,rgba(255,255,255,0.02)_100%)]",
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
variant: "light",
|
|
124
|
+
side: "bottom",
|
|
125
|
+
align: "start",
|
|
126
|
+
className:
|
|
127
|
+
"bg-[linear-gradient(285deg,rgba(255,255,255,0.00)_32.13%,rgba(197,138,255,0.40)_74.24%),radial-gradient(133.78%_103.03%_at_25%_0%,var(--color-fm-secondary-800)_0%,rgba(255,255,255,0.02)_100%)]",
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
variant: "light",
|
|
131
|
+
side: "bottom",
|
|
132
|
+
align: "end",
|
|
133
|
+
className:
|
|
134
|
+
"bg-[linear-gradient(75deg,rgba(255,255,255,0.00)_29.62%,rgba(197,138,255,0.40)_75.3%),radial-gradient(150.37%_103.37%_at_75.96%_0%,var(--color-fm-secondary-800)_0%,rgba(255,255,255,0.02)_100%)]",
|
|
135
|
+
},
|
|
136
|
+
],
|
|
137
|
+
defaultVariants: {
|
|
138
|
+
variant: "dark",
|
|
139
|
+
side: "top",
|
|
140
|
+
align: "center",
|
|
141
|
+
},
|
|
142
|
+
}
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
function DarkArrow(props: React.ComponentProps<typeof TooltipPrimitive.Arrow>) {
|
|
146
|
+
return (
|
|
147
|
+
<svg
|
|
148
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
149
|
+
width="18"
|
|
150
|
+
height="9"
|
|
151
|
+
viewBox="0 0 18 9"
|
|
152
|
+
fill="none"
|
|
153
|
+
{...props}
|
|
154
|
+
>
|
|
155
|
+
<path d="M9 9L18 0H9H0L9 9Z" fill="var(--color-fm-neutral-100)" />
|
|
156
|
+
<path d="M9 9L18 0H9H0L9 9Z" fill="var(--color-fm-secondary-200)" />
|
|
157
|
+
<path
|
|
158
|
+
d="M1.20703 0.5H16.793L9 8.29297L1.20703 0.5Z"
|
|
159
|
+
stroke="var(--color-fm-neutral-1100)"
|
|
160
|
+
strokeOpacity="0.04"
|
|
161
|
+
/>
|
|
162
|
+
<path
|
|
163
|
+
d="M9.00117 7.5L16.6172 0H1.3668L9.00117 7.5Z"
|
|
164
|
+
fill="url(#paint0_linear_2648_50933)"
|
|
165
|
+
/>
|
|
166
|
+
<defs>
|
|
167
|
+
<linearGradient
|
|
168
|
+
id="paint0_linear_2648_50933"
|
|
169
|
+
x1="1.5"
|
|
170
|
+
y1="0.5"
|
|
171
|
+
x2="16.5"
|
|
172
|
+
y2="0.5"
|
|
173
|
+
gradientUnits="userSpaceOnUse"
|
|
174
|
+
>
|
|
175
|
+
<stop stop-color="#350565" />
|
|
176
|
+
<stop offset="0.502442" stopColor="var(--color-fm-secondary-200)" />
|
|
177
|
+
<stop offset="1" stopColor="#350663" />
|
|
178
|
+
</linearGradient>
|
|
179
|
+
</defs>
|
|
180
|
+
</svg>
|
|
181
|
+
)
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
function LightArrow(
|
|
185
|
+
props: React.ComponentProps<typeof TooltipPrimitive.Arrow>
|
|
186
|
+
) {
|
|
187
|
+
return (
|
|
188
|
+
<svg
|
|
189
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
190
|
+
width="18"
|
|
191
|
+
height="9"
|
|
192
|
+
viewBox="0 0 18 9"
|
|
193
|
+
fill="none"
|
|
194
|
+
{...props}
|
|
195
|
+
>
|
|
196
|
+
<path d="M9 9L18 0H9H0L9 9Z" fill="var(--color-fm-secondary-800)" />
|
|
197
|
+
<path
|
|
198
|
+
d="M1.20703 0.5H16.793L9 8.29297L1.20703 0.5Z"
|
|
199
|
+
stroke="var(--color-fm-neutral-50)"
|
|
200
|
+
strokeOpacity="0.02"
|
|
201
|
+
/>
|
|
202
|
+
<path
|
|
203
|
+
d="M9.00117 7.5L16.6172 0H1.3668L9.00117 7.5Z"
|
|
204
|
+
fill="url(#paint0_linear_2648_52230)"
|
|
205
|
+
/>
|
|
206
|
+
<defs>
|
|
207
|
+
<linearGradient
|
|
208
|
+
id="paint0_linear_2648_52230"
|
|
209
|
+
x1="2"
|
|
210
|
+
y1="0.5"
|
|
211
|
+
x2="16"
|
|
212
|
+
y2="0.5"
|
|
213
|
+
gradientUnits="userSpaceOnUse"
|
|
214
|
+
>
|
|
215
|
+
<stop stopColor="#C992FF" />
|
|
216
|
+
<stop offset="0.499825" stopColor="var(--color-fm-secondary-800)" />
|
|
217
|
+
<stop offset="1" stopColor="#CE9CFF" />
|
|
218
|
+
</linearGradient>
|
|
219
|
+
</defs>
|
|
220
|
+
</svg>
|
|
221
|
+
)
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
function TooltipProvider({
|
|
225
|
+
delayDuration = 0,
|
|
226
|
+
...props
|
|
227
|
+
}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {
|
|
228
|
+
return (
|
|
229
|
+
<TooltipPrimitive.Provider
|
|
230
|
+
data-slot="tooltip-provider"
|
|
231
|
+
delayDuration={delayDuration}
|
|
232
|
+
{...props}
|
|
233
|
+
/>
|
|
234
|
+
)
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
const TooltipContext = React.createContext<{
|
|
238
|
+
variant: "dark" | "light"
|
|
239
|
+
}>({
|
|
240
|
+
variant: "dark",
|
|
241
|
+
})
|
|
242
|
+
|
|
243
|
+
interface ToolTipProps
|
|
244
|
+
extends React.ComponentProps<typeof TooltipPrimitive.Root> {
|
|
245
|
+
variant?: "dark" | "light"
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
const useTooltipContext = () => {
|
|
249
|
+
const context = React.useContext(TooltipContext)
|
|
250
|
+
if (!context) {
|
|
251
|
+
throw new Error("Tooltip components must be used within a TooltipProvider")
|
|
252
|
+
}
|
|
253
|
+
return context
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
function Tooltip({ variant = "dark", ...props }: ToolTipProps) {
|
|
257
|
+
return (
|
|
258
|
+
<TooltipContext.Provider value={{ variant }}>
|
|
259
|
+
<TooltipProvider>
|
|
260
|
+
<TooltipPrimitive.Root data-slot="tooltip" {...props} />
|
|
261
|
+
</TooltipProvider>
|
|
262
|
+
</TooltipContext.Provider>
|
|
263
|
+
)
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
function TooltipTrigger({
|
|
267
|
+
...props
|
|
268
|
+
}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {
|
|
269
|
+
return <TooltipPrimitive.Trigger data-slot="tooltip-trigger" {...props} />
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
function TooltipContent({
|
|
273
|
+
className,
|
|
274
|
+
sideOffset = 0,
|
|
275
|
+
side,
|
|
276
|
+
align,
|
|
277
|
+
children,
|
|
278
|
+
...props
|
|
279
|
+
}: React.ComponentProps<typeof TooltipPrimitive.Content>) {
|
|
280
|
+
const { variant } = useTooltipContext()
|
|
281
|
+
return (
|
|
282
|
+
<TooltipPrimitive.Portal>
|
|
283
|
+
<TooltipPrimitive.Content
|
|
284
|
+
data-slot="tooltip-content"
|
|
285
|
+
sideOffset={sideOffset}
|
|
286
|
+
side={side}
|
|
287
|
+
align={align}
|
|
288
|
+
className={cn(tooltipVariants({ variant, side, align }), className)}
|
|
289
|
+
{...props}
|
|
290
|
+
>
|
|
291
|
+
{children}
|
|
292
|
+
<TooltipPrimitive.Arrow asChild>
|
|
293
|
+
{variant === "dark" ? (
|
|
294
|
+
<DarkArrow className="h-2 w-6" />
|
|
295
|
+
) : (
|
|
296
|
+
<LightArrow className="h-2 w-6" />
|
|
297
|
+
)}
|
|
298
|
+
</TooltipPrimitive.Arrow>
|
|
299
|
+
</TooltipPrimitive.Content>
|
|
300
|
+
</TooltipPrimitive.Portal>
|
|
301
|
+
)
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export const meta = {
|
|
2
|
+
dependencies: {
|
|
3
|
+
"@radix-ui/react-tooltip": "^1.2.7",
|
|
4
|
+
},
|
|
5
|
+
devDependencies: {},
|
|
6
|
+
internalDependencies: [],
|
|
7
|
+
tokens: [
|
|
8
|
+
"--color-fm-contrast",
|
|
9
|
+
"--color-fm-neutral-50",
|
|
10
|
+
"--color-fm-neutral-100",
|
|
11
|
+
"--color-fm-primary",
|
|
12
|
+
"--color-fm-secondary-200",
|
|
13
|
+
"--color-fm-secondary-800",
|
|
14
|
+
"--color-fm-surface-secondary",
|
|
15
|
+
"--font-fm-text",
|
|
16
|
+
"--leading-fm-sm",
|
|
17
|
+
"--radius-fm-s",
|
|
18
|
+
"--text-fm-sm",
|
|
19
|
+
".popover-content",
|
|
20
|
+
],
|
|
21
|
+
}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import React from "react"
|
|
2
|
+
import type { Meta, StoryObj } from "@storybook/react"
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
BodyLarge,
|
|
6
|
+
BodyMedium,
|
|
7
|
+
BodySmall,
|
|
8
|
+
CaptionLarge,
|
|
9
|
+
CaptionMedium,
|
|
10
|
+
CaptionSmall,
|
|
11
|
+
DisplayLarge,
|
|
12
|
+
DisplayMedium,
|
|
13
|
+
DisplaySmall,
|
|
14
|
+
LabelLarge,
|
|
15
|
+
LabelMedium,
|
|
16
|
+
LabelSmall,
|
|
17
|
+
TitleLarge,
|
|
18
|
+
TitleMedium,
|
|
19
|
+
TitleSmall,
|
|
20
|
+
Typography,
|
|
21
|
+
} from "./index"
|
|
22
|
+
|
|
23
|
+
const meta: Meta<typeof Typography> = {
|
|
24
|
+
title: "Components/UI/Typography",
|
|
25
|
+
component: Typography,
|
|
26
|
+
parameters: {
|
|
27
|
+
layout: "centered",
|
|
28
|
+
},
|
|
29
|
+
tags: ["autodocs"],
|
|
30
|
+
argTypes: {
|
|
31
|
+
variant: {
|
|
32
|
+
control: "select",
|
|
33
|
+
options: [
|
|
34
|
+
"display-large",
|
|
35
|
+
"display-medium",
|
|
36
|
+
"display-small",
|
|
37
|
+
"title-large",
|
|
38
|
+
"title-medium",
|
|
39
|
+
"title-small",
|
|
40
|
+
"label-large",
|
|
41
|
+
"label-medium",
|
|
42
|
+
"label-small",
|
|
43
|
+
"body-large",
|
|
44
|
+
"body-medium",
|
|
45
|
+
"body-small",
|
|
46
|
+
"caption-large",
|
|
47
|
+
"caption-medium",
|
|
48
|
+
"caption-small",
|
|
49
|
+
],
|
|
50
|
+
},
|
|
51
|
+
weight: {
|
|
52
|
+
control: "select",
|
|
53
|
+
options: ["regular", "medium", "semibold", "bold"],
|
|
54
|
+
},
|
|
55
|
+
align: {
|
|
56
|
+
control: "radio",
|
|
57
|
+
options: ["left", "center", "right"],
|
|
58
|
+
},
|
|
59
|
+
color: {
|
|
60
|
+
control: "select",
|
|
61
|
+
options: ["primary", "secondary", "tertiary", "contrast", "inactive"],
|
|
62
|
+
},
|
|
63
|
+
transform: {
|
|
64
|
+
control: "select",
|
|
65
|
+
options: ["uppercase", "lowercase", "capitalize", "normal"],
|
|
66
|
+
},
|
|
67
|
+
lineHeight: {
|
|
68
|
+
control: "select",
|
|
69
|
+
options: ["tight", "normal", "loose"],
|
|
70
|
+
},
|
|
71
|
+
wrap: {
|
|
72
|
+
control: "select",
|
|
73
|
+
options: ["normal", "nowrap", "wrap", "pretty", "balance"],
|
|
74
|
+
},
|
|
75
|
+
as: {
|
|
76
|
+
control: "select",
|
|
77
|
+
options: ["p", "span", "div", "h1", "h2", "h3", "h4", "h5", "h6"],
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export default meta
|
|
83
|
+
type Story = StoryObj<typeof Typography>
|
|
84
|
+
|
|
85
|
+
export const Default: Story = {
|
|
86
|
+
args: {
|
|
87
|
+
children: "The quick brown fox jumps over the lazy dog",
|
|
88
|
+
variant: "body-medium",
|
|
89
|
+
weight: "regular",
|
|
90
|
+
color: "primary",
|
|
91
|
+
align: "left",
|
|
92
|
+
},
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export const AllVariants = () => {
|
|
96
|
+
return (
|
|
97
|
+
<div className="bg-fm-surface-primary flex flex-col gap-6 p-4">
|
|
98
|
+
<div className="space-y-4">
|
|
99
|
+
<DisplayLarge className="mb-2">Display Large</DisplayLarge>
|
|
100
|
+
<DisplayMedium className="mb-2">Display Medium</DisplayMedium>
|
|
101
|
+
<DisplaySmall className="mb-2">Display Small</DisplaySmall>
|
|
102
|
+
</div>
|
|
103
|
+
|
|
104
|
+
<div className="space-y-4">
|
|
105
|
+
<TitleLarge className="mb-2">Title Large</TitleLarge>
|
|
106
|
+
<TitleMedium className="mb-2">Title Medium</TitleMedium>
|
|
107
|
+
<TitleSmall className="mb-2">Title Small</TitleSmall>
|
|
108
|
+
</div>
|
|
109
|
+
|
|
110
|
+
<div className="space-y-4">
|
|
111
|
+
<LabelLarge className="mb-2 block">Label Large</LabelLarge>
|
|
112
|
+
<LabelMedium className="mb-2 block">Label Medium</LabelMedium>
|
|
113
|
+
<LabelSmall className="mb-2 block">Label Small</LabelSmall>
|
|
114
|
+
</div>
|
|
115
|
+
|
|
116
|
+
<div className="space-y-4">
|
|
117
|
+
<BodyLarge className="mb-2">Body Large</BodyLarge>
|
|
118
|
+
<BodyMedium className="mb-2">Body Medium</BodyMedium>
|
|
119
|
+
<BodySmall className="mb-2">Body Small</BodySmall>
|
|
120
|
+
</div>
|
|
121
|
+
|
|
122
|
+
<div className="space-y-4">
|
|
123
|
+
<CaptionLarge className="mb-2 block">Caption Large</CaptionLarge>
|
|
124
|
+
<CaptionMedium className="mb-2 block">Caption Medium</CaptionMedium>
|
|
125
|
+
<CaptionSmall className="mb-2 block">Caption Small</CaptionSmall>
|
|
126
|
+
</div>
|
|
127
|
+
</div>
|
|
128
|
+
)
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export const WeightVariants = () => {
|
|
132
|
+
return (
|
|
133
|
+
<div className="bg-fm-surface-primary flex flex-col gap-4 p-4">
|
|
134
|
+
<Typography weight="regular">Regular weight text</Typography>
|
|
135
|
+
<Typography weight="medium">Medium weight text</Typography>
|
|
136
|
+
<Typography weight="semibold">Semibold weight text</Typography>
|
|
137
|
+
<Typography weight="bold">Bold weight text</Typography>
|
|
138
|
+
</div>
|
|
139
|
+
)
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export const ColorVariants = () => {
|
|
143
|
+
return (
|
|
144
|
+
<div className="bg-fm-surface-primary flex flex-col gap-4 p-4">
|
|
145
|
+
<Typography color="primary">Primary color text</Typography>
|
|
146
|
+
<Typography color="secondary">Secondary color text</Typography>
|
|
147
|
+
<Typography color="tertiary">Tertiary color text</Typography>
|
|
148
|
+
<Typography color="contrast">Contrast color text</Typography>
|
|
149
|
+
<Typography color="inactive">Inactive color text</Typography>
|
|
150
|
+
</div>
|
|
151
|
+
)
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
export const AlignmentVariants = () => {
|
|
155
|
+
return (
|
|
156
|
+
<div className="bg-fm-surface-primary flex flex-col gap-4 p-4">
|
|
157
|
+
<Typography align="left">Left aligned text</Typography>
|
|
158
|
+
<Typography align="center">Center aligned text</Typography>
|
|
159
|
+
<Typography align="right">Right aligned text</Typography>
|
|
160
|
+
</div>
|
|
161
|
+
)
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
export const TransformVariants = () => {
|
|
165
|
+
return (
|
|
166
|
+
<div className="bg-fm-surface-primary flex flex-col gap-4 p-4">
|
|
167
|
+
<Typography transform="uppercase">Uppercase text</Typography>
|
|
168
|
+
<Typography transform="lowercase">
|
|
169
|
+
Lowercase Text Will Appear Here
|
|
170
|
+
</Typography>
|
|
171
|
+
<Typography transform="capitalize">capitalize each word</Typography>
|
|
172
|
+
<Typography transform="normal">Normal text transform</Typography>
|
|
173
|
+
</div>
|
|
174
|
+
)
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
export const LineHeightVariants = () => {
|
|
178
|
+
return (
|
|
179
|
+
<div className="bg-fm-surface-primary flex flex-col gap-8 p-4">
|
|
180
|
+
<Typography lineHeight="tight">
|
|
181
|
+
Tight line height. Lorem ipsum dolor sit amet, consectetur adipiscing
|
|
182
|
+
elit. Nullam in dui mauris. Vivamus hendrerit arcu sed erat molestie
|
|
183
|
+
vehicula.
|
|
184
|
+
</Typography>
|
|
185
|
+
<Typography lineHeight="normal">
|
|
186
|
+
Normal line height. Lorem ipsum dolor sit amet, consectetur adipiscing
|
|
187
|
+
elit. Nullam in dui mauris. Vivamus hendrerit arcu sed erat molestie
|
|
188
|
+
vehicula.
|
|
189
|
+
</Typography>
|
|
190
|
+
<Typography lineHeight="loose">
|
|
191
|
+
Loose line height. Lorem ipsum dolor sit amet, consectetur adipiscing
|
|
192
|
+
elit. Nullam in dui mauris. Vivamus hendrerit arcu sed erat molestie
|
|
193
|
+
vehicula.
|
|
194
|
+
</Typography>
|
|
195
|
+
</div>
|
|
196
|
+
)
|
|
197
|
+
}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import React, { forwardRef } from "react"
|
|
2
|
+
import { cn } from "@lib/utils"
|
|
3
|
+
import { cva, VariantProps } from "class-variance-authority"
|
|
4
|
+
|
|
5
|
+
export const typographyVariants = cva("", {
|
|
6
|
+
variants: {
|
|
7
|
+
variant: {
|
|
8
|
+
"display-large": "text-fm-8xl leading-fm-8xl font-fm-brand",
|
|
9
|
+
"display-medium": "text-fm-7xl leading-fm-7xl font-fm-brand",
|
|
10
|
+
"display-small": "text-fm-6xl leading-fm-6xl font-fm-brand",
|
|
11
|
+
|
|
12
|
+
"title-large": "text-fm-5xl leading-fm-5xl font-fm-brand",
|
|
13
|
+
"title-medium": "text-fm-4xl leading-fm-4xl font-fm-brand",
|
|
14
|
+
"title-small": "text-fm-3xl leading-fm-3xl font-fm-brand",
|
|
15
|
+
|
|
16
|
+
"label-large": "text-fm-2xl leading-fm-2xl font-fm-brand",
|
|
17
|
+
"label-medium": "text-fm-xl leading-fm-xl font-fm-brand",
|
|
18
|
+
"label-small": "text-fm-lg leading-fm-lg font-fm-brand",
|
|
19
|
+
|
|
20
|
+
"body-large": "text-fm-xl leading-fm-xl font-fm-text",
|
|
21
|
+
"body-medium": "text-fm-lg leading-fm-lg font-fm-text",
|
|
22
|
+
"body-small": "text-fm-md leading-fm-md font-fm-text",
|
|
23
|
+
|
|
24
|
+
"caption-large": "text-fm-md leading-fm-md font-fm-text",
|
|
25
|
+
"caption-medium": "text-fm-sm leading-fm-sm font-fm-text",
|
|
26
|
+
"caption-small": "text-fm-xs leading-fm-xs font-fm-text",
|
|
27
|
+
},
|
|
28
|
+
weight: {
|
|
29
|
+
regular: "font-normal",
|
|
30
|
+
medium: "font-medium",
|
|
31
|
+
semibold: "font-semibold",
|
|
32
|
+
bold: "font-bold",
|
|
33
|
+
},
|
|
34
|
+
align: {
|
|
35
|
+
left: "text-left",
|
|
36
|
+
center: "text-center",
|
|
37
|
+
right: "text-right",
|
|
38
|
+
},
|
|
39
|
+
color: {
|
|
40
|
+
primary: "[color:var(--color-fm-primary)]",
|
|
41
|
+
secondary: "[color:var(--color-fm-secondary)]",
|
|
42
|
+
tertiary: "[color:var(--color-fm-tertiary)]",
|
|
43
|
+
contrast: "[color:var(--color-fm-contrast)]",
|
|
44
|
+
inactive: "[color:var(--color-fm-inactive)]",
|
|
45
|
+
},
|
|
46
|
+
transform: {
|
|
47
|
+
uppercase: "uppercase",
|
|
48
|
+
lowercase: "lowercase",
|
|
49
|
+
capitalize: "capitalize",
|
|
50
|
+
normal: "",
|
|
51
|
+
},
|
|
52
|
+
lineHeight: {
|
|
53
|
+
tight: "leading-tight",
|
|
54
|
+
normal: "leading-normal",
|
|
55
|
+
loose: "leading-loose",
|
|
56
|
+
auto: "",
|
|
57
|
+
},
|
|
58
|
+
wrap: {
|
|
59
|
+
normal: "",
|
|
60
|
+
nowrap: "[text-wrap:nowrap]",
|
|
61
|
+
wrap: "[text-wrap:wrap]",
|
|
62
|
+
pretty: "[text-wrap:pretty]",
|
|
63
|
+
balance: "[text-wrap:balance]",
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
defaultVariants: {
|
|
67
|
+
variant: "body-medium",
|
|
68
|
+
weight: "regular",
|
|
69
|
+
align: "left",
|
|
70
|
+
color: "primary",
|
|
71
|
+
transform: "normal",
|
|
72
|
+
lineHeight: "auto",
|
|
73
|
+
wrap: "normal",
|
|
74
|
+
},
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
export interface TypographyProps
|
|
78
|
+
extends Omit<React.HTMLAttributes<HTMLElement>, "color">,
|
|
79
|
+
VariantProps<typeof typographyVariants> {
|
|
80
|
+
as?: React.ElementType
|
|
81
|
+
children: React.ReactNode
|
|
82
|
+
className?: string
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export const Typography = forwardRef<HTMLElement, TypographyProps>(
|
|
86
|
+
(
|
|
87
|
+
{
|
|
88
|
+
as: Element = "p",
|
|
89
|
+
children,
|
|
90
|
+
className,
|
|
91
|
+
variant,
|
|
92
|
+
weight,
|
|
93
|
+
align,
|
|
94
|
+
color,
|
|
95
|
+
transform,
|
|
96
|
+
lineHeight,
|
|
97
|
+
wrap,
|
|
98
|
+
...props
|
|
99
|
+
},
|
|
100
|
+
ref
|
|
101
|
+
) => {
|
|
102
|
+
return (
|
|
103
|
+
<Element
|
|
104
|
+
ref={ref}
|
|
105
|
+
className={cn(
|
|
106
|
+
typographyVariants({
|
|
107
|
+
variant,
|
|
108
|
+
weight,
|
|
109
|
+
align,
|
|
110
|
+
color,
|
|
111
|
+
transform,
|
|
112
|
+
lineHeight,
|
|
113
|
+
wrap,
|
|
114
|
+
}),
|
|
115
|
+
className
|
|
116
|
+
)}
|
|
117
|
+
{...props}
|
|
118
|
+
>
|
|
119
|
+
{children}
|
|
120
|
+
</Element>
|
|
121
|
+
)
|
|
122
|
+
}
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
// Export specific variants for easier use
|
|
126
|
+
export const DisplayLarge = (props: Omit<TypographyProps, "variant">) => (
|
|
127
|
+
<Typography variant="display-large" as="h1" {...props} />
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
export const DisplayMedium = (props: Omit<TypographyProps, "variant">) => (
|
|
131
|
+
<Typography variant="display-medium" as="h1" {...props} />
|
|
132
|
+
)
|
|
133
|
+
|
|
134
|
+
export const DisplaySmall = (props: Omit<TypographyProps, "variant">) => (
|
|
135
|
+
<Typography variant="display-small" as="h1" {...props} />
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
export const TitleLarge = (props: Omit<TypographyProps, "variant">) => (
|
|
139
|
+
<Typography variant="title-large" as="h2" {...props} />
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
export const TitleMedium = (props: Omit<TypographyProps, "variant">) => (
|
|
143
|
+
<Typography variant="title-medium" as="h3" {...props} />
|
|
144
|
+
)
|
|
145
|
+
|
|
146
|
+
export const TitleSmall = (props: Omit<TypographyProps, "variant">) => (
|
|
147
|
+
<Typography variant="title-small" as="h4" {...props} />
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
export const LabelLarge = (props: Omit<TypographyProps, "variant">) => (
|
|
151
|
+
<Typography variant="label-large" as="span" {...props} />
|
|
152
|
+
)
|
|
153
|
+
|
|
154
|
+
export const LabelMedium = (props: Omit<TypographyProps, "variant">) => (
|
|
155
|
+
<Typography variant="label-medium" as="span" {...props} />
|
|
156
|
+
)
|
|
157
|
+
|
|
158
|
+
export const LabelSmall = (props: Omit<TypographyProps, "variant">) => (
|
|
159
|
+
<Typography variant="label-small" as="span" {...props} />
|
|
160
|
+
)
|
|
161
|
+
|
|
162
|
+
export const BodyLarge = (props: Omit<TypographyProps, "variant">) => (
|
|
163
|
+
<Typography variant="body-large" {...props} />
|
|
164
|
+
)
|
|
165
|
+
|
|
166
|
+
export const BodyMedium = (props: Omit<TypographyProps, "variant">) => (
|
|
167
|
+
<Typography variant="body-medium" {...props} />
|
|
168
|
+
)
|
|
169
|
+
|
|
170
|
+
export const BodySmall = (props: Omit<TypographyProps, "variant">) => (
|
|
171
|
+
<Typography variant="body-small" {...props} />
|
|
172
|
+
)
|
|
173
|
+
|
|
174
|
+
export const CaptionLarge = (props: Omit<TypographyProps, "variant">) => (
|
|
175
|
+
<Typography variant="caption-large" as="span" {...props} />
|
|
176
|
+
)
|
|
177
|
+
|
|
178
|
+
export const CaptionMedium = (props: Omit<TypographyProps, "variant">) => (
|
|
179
|
+
<Typography variant="caption-medium" as="span" {...props} />
|
|
180
|
+
)
|
|
181
|
+
|
|
182
|
+
export const CaptionSmall = (props: Omit<TypographyProps, "variant">) => (
|
|
183
|
+
<Typography variant="caption-small" as="span" {...props} />
|
|
184
|
+
)
|