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,181 @@
|
|
|
1
|
+
import * as React from "react"
|
|
2
|
+
import { AudioBarIcon } from "@icons/audio-bar-icon"
|
|
3
|
+
import { cn } from "@lib/utils"
|
|
4
|
+
import * as SeparatorPrimitive from "@radix-ui/react-separator"
|
|
5
|
+
import { cva } from "class-variance-authority"
|
|
6
|
+
|
|
7
|
+
const dividerVariants = cva("flex-auto", {
|
|
8
|
+
variants: {
|
|
9
|
+
variant: {
|
|
10
|
+
primary: "bg-fm-divider-secondary",
|
|
11
|
+
secondary: "bg-fm-divider-tertiary",
|
|
12
|
+
stylised: "bg-fm-divider-primary",
|
|
13
|
+
dashed: "border-fm-divider-primary border-dashed bg-transparent",
|
|
14
|
+
},
|
|
15
|
+
size: {
|
|
16
|
+
half_default: "",
|
|
17
|
+
full_default: "",
|
|
18
|
+
full_medium: "",
|
|
19
|
+
full_large: "",
|
|
20
|
+
},
|
|
21
|
+
orientation: {
|
|
22
|
+
horizontal: "mx-auto",
|
|
23
|
+
vertical: "my-auto",
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
compoundVariants: [
|
|
27
|
+
// Horizontal orientation variants
|
|
28
|
+
{
|
|
29
|
+
orientation: "horizontal",
|
|
30
|
+
size: "half_default",
|
|
31
|
+
className: "h-0.25 w-1/2",
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
orientation: "horizontal",
|
|
35
|
+
size: "full_default",
|
|
36
|
+
className: "h-0.25 w-full",
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
orientation: "horizontal",
|
|
40
|
+
size: "full_medium",
|
|
41
|
+
className: "h-1 w-full",
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
orientation: "horizontal",
|
|
45
|
+
size: "full_large",
|
|
46
|
+
className: "h-2 w-full",
|
|
47
|
+
},
|
|
48
|
+
// Vertical orientation variants
|
|
49
|
+
{
|
|
50
|
+
orientation: "vertical",
|
|
51
|
+
size: "half_default",
|
|
52
|
+
className: "h-1/2 w-0.25",
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
orientation: "vertical",
|
|
56
|
+
size: "full_default",
|
|
57
|
+
className: "h-full w-0.25",
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
orientation: "vertical",
|
|
61
|
+
size: "full_medium",
|
|
62
|
+
className: "h-full w-1",
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
orientation: "vertical",
|
|
66
|
+
size: "full_large",
|
|
67
|
+
className: "h-full w-2",
|
|
68
|
+
},
|
|
69
|
+
// Dashed variant specific styles
|
|
70
|
+
{
|
|
71
|
+
variant: "dashed",
|
|
72
|
+
orientation: "horizontal",
|
|
73
|
+
size: "half_default",
|
|
74
|
+
className: "w-1/2 border-t",
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
variant: "dashed",
|
|
78
|
+
orientation: "horizontal",
|
|
79
|
+
size: "full_default",
|
|
80
|
+
className: "w-full border-t",
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
variant: "dashed",
|
|
84
|
+
orientation: "horizontal",
|
|
85
|
+
size: "full_medium",
|
|
86
|
+
className: "w-full border-t-2",
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
variant: "dashed",
|
|
90
|
+
orientation: "horizontal",
|
|
91
|
+
size: "full_large",
|
|
92
|
+
className: "w-full border-t-4",
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
variant: "dashed",
|
|
96
|
+
orientation: "vertical",
|
|
97
|
+
size: "half_default",
|
|
98
|
+
className: "h-1/2 border-l",
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
variant: "dashed",
|
|
102
|
+
orientation: "vertical",
|
|
103
|
+
size: "full_default",
|
|
104
|
+
className: "h-full border-l",
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
variant: "dashed",
|
|
108
|
+
orientation: "vertical",
|
|
109
|
+
size: "full_medium",
|
|
110
|
+
className: "h-full border-l-2",
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
variant: "dashed",
|
|
114
|
+
orientation: "vertical",
|
|
115
|
+
size: "full_large",
|
|
116
|
+
className: "h-full border-l-4",
|
|
117
|
+
},
|
|
118
|
+
],
|
|
119
|
+
defaultVariants: {
|
|
120
|
+
variant: "primary",
|
|
121
|
+
size: "full_default",
|
|
122
|
+
orientation: "horizontal",
|
|
123
|
+
},
|
|
124
|
+
})
|
|
125
|
+
|
|
126
|
+
export interface DividerProps
|
|
127
|
+
extends React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root> {
|
|
128
|
+
variant?: "primary" | "secondary" | "stylised" | "dashed"
|
|
129
|
+
size?: "half_default" | "full_default" | "full_medium" | "full_large"
|
|
130
|
+
wrapperClassName?: string
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
const Divider = React.forwardRef<
|
|
134
|
+
React.ElementRef<typeof SeparatorPrimitive.Root>,
|
|
135
|
+
DividerProps
|
|
136
|
+
>(
|
|
137
|
+
(
|
|
138
|
+
{
|
|
139
|
+
className,
|
|
140
|
+
orientation = "horizontal",
|
|
141
|
+
decorative = true,
|
|
142
|
+
variant,
|
|
143
|
+
size,
|
|
144
|
+
wrapperClassName,
|
|
145
|
+
...props
|
|
146
|
+
},
|
|
147
|
+
ref
|
|
148
|
+
) => {
|
|
149
|
+
return (
|
|
150
|
+
<div
|
|
151
|
+
className={cn(
|
|
152
|
+
{
|
|
153
|
+
"flex items-center justify-center": variant === "stylised",
|
|
154
|
+
},
|
|
155
|
+
wrapperClassName
|
|
156
|
+
)}
|
|
157
|
+
>
|
|
158
|
+
<SeparatorPrimitive.Root
|
|
159
|
+
ref={ref}
|
|
160
|
+
decorative={decorative}
|
|
161
|
+
orientation={orientation}
|
|
162
|
+
className={cn(
|
|
163
|
+
dividerVariants({
|
|
164
|
+
variant,
|
|
165
|
+
size,
|
|
166
|
+
orientation,
|
|
167
|
+
}),
|
|
168
|
+
className
|
|
169
|
+
)}
|
|
170
|
+
{...props}
|
|
171
|
+
/>
|
|
172
|
+
{variant === "stylised" && (
|
|
173
|
+
<AudioBarIcon width={52} height={12} className="relative top-0.25" />
|
|
174
|
+
)}
|
|
175
|
+
</div>
|
|
176
|
+
)
|
|
177
|
+
}
|
|
178
|
+
)
|
|
179
|
+
Divider.displayName = SeparatorPrimitive.Root.displayName
|
|
180
|
+
|
|
181
|
+
export { Divider }
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const meta = {
|
|
2
|
+
dependencies: {
|
|
3
|
+
"@radix-ui/react-separator": "^1.1.7",
|
|
4
|
+
},
|
|
5
|
+
devDependencies: {},
|
|
6
|
+
internalDependencies: ["audio-bar-icon"],
|
|
7
|
+
tokens: [
|
|
8
|
+
"--color-fm-divider-primary",
|
|
9
|
+
"--color-fm-divider-secondary",
|
|
10
|
+
"--color-fm-divider-tertiary",
|
|
11
|
+
],
|
|
12
|
+
}
|
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
import React from "react"
|
|
2
|
+
import type { Meta, StoryObj } from "@storybook/react"
|
|
3
|
+
|
|
4
|
+
import DotLoader from "."
|
|
5
|
+
|
|
6
|
+
const meta: Meta<typeof DotLoader> = {
|
|
7
|
+
title: "Components/UI/DotLoader",
|
|
8
|
+
component: DotLoader,
|
|
9
|
+
parameters: {
|
|
10
|
+
layout: "centered",
|
|
11
|
+
docs: {
|
|
12
|
+
description: {
|
|
13
|
+
component: `
|
|
14
|
+
# DotLoader
|
|
15
|
+
|
|
16
|
+
A customizable animated dot loader component with three dots that pulse in sequence, built with accessibility in mind.
|
|
17
|
+
|
|
18
|
+
## Features
|
|
19
|
+
- Smooth pulsing animation with CSS custom properties
|
|
20
|
+
- Customizable colors for normal and active states
|
|
21
|
+
- Optional text label with flexible content support
|
|
22
|
+
- Comprehensive accessibility features (ARIA attributes, screen reader support)
|
|
23
|
+
- Flexible styling with custom classes
|
|
24
|
+
- Dark theme optimized
|
|
25
|
+
- Screen reader announcements with configurable messages
|
|
26
|
+
|
|
27
|
+
## Accessibility Features
|
|
28
|
+
- \`role="status"\` for proper semantic meaning
|
|
29
|
+
- \`aria-live="polite"\` for non-intrusive screen reader announcements
|
|
30
|
+
- \`aria-busy="true"\` to indicate loading state
|
|
31
|
+
- Hidden descriptive text for screen readers
|
|
32
|
+
- Configurable ARIA labels and loading messages
|
|
33
|
+
- Decorative elements properly hidden from assistive technology
|
|
34
|
+
|
|
35
|
+
## Usage
|
|
36
|
+
\`\`\`tsx
|
|
37
|
+
import DotLoader from '@/ui/components/dot-loader'
|
|
38
|
+
|
|
39
|
+
// Basic usage
|
|
40
|
+
<DotLoader />
|
|
41
|
+
|
|
42
|
+
// With text
|
|
43
|
+
<DotLoader text="Loading..." />
|
|
44
|
+
|
|
45
|
+
// Custom colors and accessibility
|
|
46
|
+
<DotLoader
|
|
47
|
+
color="var(--color-blue-500)"
|
|
48
|
+
activeDotColor="var(--color-blue-300)"
|
|
49
|
+
text="Processing..."
|
|
50
|
+
ariaLabel="Processing user data"
|
|
51
|
+
loadingMessage="User data is being processed, please wait"
|
|
52
|
+
/>
|
|
53
|
+
|
|
54
|
+
// Silent loading (no screen reader announcements)
|
|
55
|
+
<DotLoader
|
|
56
|
+
text="Background sync"
|
|
57
|
+
announceToScreenReader={false}
|
|
58
|
+
/>
|
|
59
|
+
\`\`\`
|
|
60
|
+
`,
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
backgrounds: {
|
|
64
|
+
default: "dark",
|
|
65
|
+
values: [
|
|
66
|
+
{ name: "dark", value: "#1a1a1a" },
|
|
67
|
+
{ name: "light", value: "#ffffff" },
|
|
68
|
+
],
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
argTypes: {
|
|
72
|
+
text: {
|
|
73
|
+
control: "text",
|
|
74
|
+
description:
|
|
75
|
+
"Optional text to display below the loader (supports React nodes)",
|
|
76
|
+
},
|
|
77
|
+
color: {
|
|
78
|
+
control: "color",
|
|
79
|
+
description: "Color of the inactive dots",
|
|
80
|
+
},
|
|
81
|
+
activeDotColor: {
|
|
82
|
+
control: "color",
|
|
83
|
+
description: "Color of the active/pulsing dot",
|
|
84
|
+
},
|
|
85
|
+
className: {
|
|
86
|
+
control: "text",
|
|
87
|
+
description: "Additional CSS classes for the root element",
|
|
88
|
+
},
|
|
89
|
+
classes: {
|
|
90
|
+
control: "object",
|
|
91
|
+
description:
|
|
92
|
+
"Object containing custom classes for different parts (root, dot, text)",
|
|
93
|
+
},
|
|
94
|
+
ariaLabel: {
|
|
95
|
+
control: "text",
|
|
96
|
+
description: "Accessible label for screen readers",
|
|
97
|
+
},
|
|
98
|
+
announceToScreenReader: {
|
|
99
|
+
control: "boolean",
|
|
100
|
+
description: "Whether to announce loading state to screen readers",
|
|
101
|
+
},
|
|
102
|
+
loadingMessage: {
|
|
103
|
+
control: "text",
|
|
104
|
+
description: "Custom loading message for screen readers",
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
tags: ["autodocs"],
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
export default meta
|
|
111
|
+
type Story = StoryObj<typeof meta>
|
|
112
|
+
|
|
113
|
+
// Default story
|
|
114
|
+
export const Default: Story = {
|
|
115
|
+
args: {},
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// With text
|
|
119
|
+
export const WithText: Story = {
|
|
120
|
+
args: {
|
|
121
|
+
text: "Loading...",
|
|
122
|
+
},
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// Custom colors
|
|
126
|
+
export const CustomColors: Story = {
|
|
127
|
+
args: {
|
|
128
|
+
text: "Processing...",
|
|
129
|
+
color: "#64748b",
|
|
130
|
+
activeDotColor: "#3b82f6",
|
|
131
|
+
},
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// Brand colors
|
|
135
|
+
export const BrandColors: Story = {
|
|
136
|
+
args: {
|
|
137
|
+
text: "Please wait",
|
|
138
|
+
color: "var(--color-fm-secondary-800)",
|
|
139
|
+
activeDotColor: "var(--color-fm-secondary-500)",
|
|
140
|
+
},
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// Accessibility focused story
|
|
144
|
+
export const AccessibilityFeatures: Story = {
|
|
145
|
+
args: {
|
|
146
|
+
text: "Loading user profile",
|
|
147
|
+
ariaLabel: "Loading user profile data",
|
|
148
|
+
loadingMessage: "User profile data is being loaded, please wait",
|
|
149
|
+
announceToScreenReader: true,
|
|
150
|
+
},
|
|
151
|
+
parameters: {
|
|
152
|
+
docs: {
|
|
153
|
+
description: {
|
|
154
|
+
story:
|
|
155
|
+
"Demonstrates accessibility features with custom ARIA labels and screen reader messages.",
|
|
156
|
+
},
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// Silent loading (no screen reader announcements)
|
|
162
|
+
export const SilentLoading: Story = {
|
|
163
|
+
args: {
|
|
164
|
+
text: "Background sync",
|
|
165
|
+
announceToScreenReader: false,
|
|
166
|
+
ariaLabel: "Background synchronization",
|
|
167
|
+
},
|
|
168
|
+
parameters: {
|
|
169
|
+
docs: {
|
|
170
|
+
description: {
|
|
171
|
+
story:
|
|
172
|
+
"Example of a loader that doesn't announce to screen readers, useful for background processes.",
|
|
173
|
+
},
|
|
174
|
+
},
|
|
175
|
+
},
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// Large with custom styling
|
|
179
|
+
export const CustomStyling: Story = {
|
|
180
|
+
args: {
|
|
181
|
+
text: "Loading your content...",
|
|
182
|
+
className: "p-8",
|
|
183
|
+
classes: {
|
|
184
|
+
root: "bg-slate-800 rounded-lg p-6",
|
|
185
|
+
dot: "scale-150",
|
|
186
|
+
text: "text-slate-300 text-lg font-semibold",
|
|
187
|
+
},
|
|
188
|
+
ariaLabel: "Loading content",
|
|
189
|
+
loadingMessage: "Content is being loaded with custom styling",
|
|
190
|
+
},
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// Different color variations
|
|
194
|
+
export const ColorVariations: Story = {
|
|
195
|
+
render: () => (
|
|
196
|
+
<div className="flex flex-col gap-8">
|
|
197
|
+
<div className="text-center">
|
|
198
|
+
<h3 className="mb-4 text-lg text-white">Default Theme</h3>
|
|
199
|
+
<DotLoader text="Loading..." ariaLabel="Loading default content" />
|
|
200
|
+
</div>
|
|
201
|
+
|
|
202
|
+
<div className="text-center">
|
|
203
|
+
<h3 className="mb-4 text-lg text-white">Blue Theme</h3>
|
|
204
|
+
<DotLoader
|
|
205
|
+
text="Processing..."
|
|
206
|
+
color="#1e293b"
|
|
207
|
+
activeDotColor="#3b82f6"
|
|
208
|
+
ariaLabel="Processing data"
|
|
209
|
+
loadingMessage="Data processing in progress"
|
|
210
|
+
/>
|
|
211
|
+
</div>
|
|
212
|
+
|
|
213
|
+
<div className="text-center">
|
|
214
|
+
<h3 className="mb-4 text-lg text-white">Green Theme</h3>
|
|
215
|
+
<DotLoader
|
|
216
|
+
text="Uploading..."
|
|
217
|
+
color="#1f2937"
|
|
218
|
+
activeDotColor="#10b981"
|
|
219
|
+
ariaLabel="Uploading files"
|
|
220
|
+
loadingMessage="Files are being uploaded"
|
|
221
|
+
/>
|
|
222
|
+
</div>
|
|
223
|
+
|
|
224
|
+
<div className="text-center">
|
|
225
|
+
<h3 className="mb-4 text-lg text-white">Red Theme</h3>
|
|
226
|
+
<DotLoader
|
|
227
|
+
text="Deleting..."
|
|
228
|
+
color="#1f2937"
|
|
229
|
+
activeDotColor="#ef4444"
|
|
230
|
+
ariaLabel="Deleting items"
|
|
231
|
+
loadingMessage="Items are being deleted"
|
|
232
|
+
/>
|
|
233
|
+
</div>
|
|
234
|
+
</div>
|
|
235
|
+
),
|
|
236
|
+
parameters: {
|
|
237
|
+
docs: {
|
|
238
|
+
description: {
|
|
239
|
+
story:
|
|
240
|
+
"Examples of different color combinations for various use cases, each with appropriate accessibility labels.",
|
|
241
|
+
},
|
|
242
|
+
},
|
|
243
|
+
},
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
// Loading states simulation
|
|
247
|
+
export const LoadingStates: Story = {
|
|
248
|
+
render: () => (
|
|
249
|
+
<div className="grid grid-cols-2 gap-8">
|
|
250
|
+
<div className="rounded-lg bg-slate-800 p-6 text-center">
|
|
251
|
+
<h4 className="mb-4 text-sm text-white">File Upload</h4>
|
|
252
|
+
<DotLoader
|
|
253
|
+
text="Uploading files..."
|
|
254
|
+
color="#374151"
|
|
255
|
+
activeDotColor="#06b6d4"
|
|
256
|
+
ariaLabel="File upload in progress"
|
|
257
|
+
loadingMessage="Files are being uploaded to the server"
|
|
258
|
+
/>
|
|
259
|
+
</div>
|
|
260
|
+
|
|
261
|
+
<div className="rounded-lg bg-slate-800 p-6 text-center">
|
|
262
|
+
<h4 className="mb-4 text-sm text-white">Data Processing</h4>
|
|
263
|
+
<DotLoader
|
|
264
|
+
text="Processing data..."
|
|
265
|
+
color="#374151"
|
|
266
|
+
activeDotColor="#8b5cf6"
|
|
267
|
+
ariaLabel="Data processing"
|
|
268
|
+
loadingMessage="Your data is being processed"
|
|
269
|
+
/>
|
|
270
|
+
</div>
|
|
271
|
+
|
|
272
|
+
<div className="rounded-lg bg-slate-800 p-6 text-center">
|
|
273
|
+
<h4 className="mb-4 text-sm text-white">Authentication</h4>
|
|
274
|
+
<DotLoader
|
|
275
|
+
text="Signing in..."
|
|
276
|
+
color="#374151"
|
|
277
|
+
activeDotColor="#f59e0b"
|
|
278
|
+
ariaLabel="Authentication in progress"
|
|
279
|
+
loadingMessage="Please wait while we sign you in"
|
|
280
|
+
/>
|
|
281
|
+
</div>
|
|
282
|
+
|
|
283
|
+
<div className="rounded-lg bg-slate-800 p-6 text-center">
|
|
284
|
+
<h4 className="mb-4 text-sm text-white">Content Loading</h4>
|
|
285
|
+
<DotLoader
|
|
286
|
+
text="Loading content..."
|
|
287
|
+
color="#374151"
|
|
288
|
+
activeDotColor="#10b981"
|
|
289
|
+
ariaLabel="Content loading"
|
|
290
|
+
loadingMessage="Page content is being loaded"
|
|
291
|
+
/>
|
|
292
|
+
</div>
|
|
293
|
+
</div>
|
|
294
|
+
),
|
|
295
|
+
parameters: {
|
|
296
|
+
docs: {
|
|
297
|
+
description: {
|
|
298
|
+
story:
|
|
299
|
+
"Real-world examples of how the loader might be used in different contexts with appropriate accessibility descriptions.",
|
|
300
|
+
},
|
|
301
|
+
},
|
|
302
|
+
},
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
// Complex content example
|
|
306
|
+
export const ComplexContent: Story = {
|
|
307
|
+
args: {
|
|
308
|
+
text: (
|
|
309
|
+
<div className="flex items-center gap-2">
|
|
310
|
+
<span>Loading</span>
|
|
311
|
+
<span className="font-bold text-blue-400">premium</span>
|
|
312
|
+
<span>content...</span>
|
|
313
|
+
</div>
|
|
314
|
+
),
|
|
315
|
+
ariaLabel: "Loading premium content",
|
|
316
|
+
loadingMessage: "Premium content is being loaded for your account",
|
|
317
|
+
},
|
|
318
|
+
parameters: {
|
|
319
|
+
docs: {
|
|
320
|
+
description: {
|
|
321
|
+
story:
|
|
322
|
+
"Example with complex React node content while maintaining accessibility.",
|
|
323
|
+
},
|
|
324
|
+
},
|
|
325
|
+
},
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
// Playground story for interactive testing
|
|
329
|
+
export const Playground: Story = {
|
|
330
|
+
args: {
|
|
331
|
+
text: "Loading...",
|
|
332
|
+
color: "#64748b",
|
|
333
|
+
activeDotColor: "#3b82f6",
|
|
334
|
+
className: "",
|
|
335
|
+
classes: {
|
|
336
|
+
root: "",
|
|
337
|
+
dot: "",
|
|
338
|
+
text: "",
|
|
339
|
+
},
|
|
340
|
+
ariaLabel: "Loading",
|
|
341
|
+
announceToScreenReader: true,
|
|
342
|
+
loadingMessage: "Content is loading, please wait",
|
|
343
|
+
},
|
|
344
|
+
parameters: {
|
|
345
|
+
docs: {
|
|
346
|
+
description: {
|
|
347
|
+
story:
|
|
348
|
+
"Interactive playground to test all component props including accessibility features.",
|
|
349
|
+
},
|
|
350
|
+
},
|
|
351
|
+
},
|
|
352
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import React from "react"
|
|
2
|
+
import { cn } from "@lib/utils"
|
|
3
|
+
|
|
4
|
+
interface DotLoaderProps {
|
|
5
|
+
text?: React.ReactNode
|
|
6
|
+
classes?: {
|
|
7
|
+
root?: string
|
|
8
|
+
dot?: string
|
|
9
|
+
text?: string
|
|
10
|
+
}
|
|
11
|
+
className?: string
|
|
12
|
+
color?: string
|
|
13
|
+
activeDotColor?: string
|
|
14
|
+
/** Accessible label for screen readers */
|
|
15
|
+
ariaLabel?: string
|
|
16
|
+
/** Whether to announce loading state to screen readers */
|
|
17
|
+
announceToScreenReader?: boolean
|
|
18
|
+
/** Custom loading message for screen readers */
|
|
19
|
+
loadingMessage?: string
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const DotLoader = ({
|
|
23
|
+
text,
|
|
24
|
+
classes,
|
|
25
|
+
className,
|
|
26
|
+
color = "var(--color-fm-secondary-800)",
|
|
27
|
+
activeDotColor = "var(--color-fm-secondary-500)",
|
|
28
|
+
ariaLabel = "Loading",
|
|
29
|
+
announceToScreenReader = true,
|
|
30
|
+
loadingMessage = "Content is loading, please wait",
|
|
31
|
+
}: DotLoaderProps) => {
|
|
32
|
+
return (
|
|
33
|
+
<div
|
|
34
|
+
className={cn("flex flex-col items-center", classes?.root, className)}
|
|
35
|
+
role="status"
|
|
36
|
+
aria-label={ariaLabel}
|
|
37
|
+
aria-live={announceToScreenReader ? "polite" : undefined}
|
|
38
|
+
aria-busy="true"
|
|
39
|
+
style={{ color: activeDotColor } as React.CSSProperties}
|
|
40
|
+
>
|
|
41
|
+
<span
|
|
42
|
+
className={cn(
|
|
43
|
+
"animate-fm-shadowPulse relative mx-auto my-4 box-border block size-4 rounded-full",
|
|
44
|
+
classes?.dot
|
|
45
|
+
)}
|
|
46
|
+
style={
|
|
47
|
+
{
|
|
48
|
+
backgroundColor: color,
|
|
49
|
+
boxShadow: `-24px 0 ${color}, 24px 0 ${color}`,
|
|
50
|
+
"--dot-color": color,
|
|
51
|
+
"--active-dot-color": activeDotColor,
|
|
52
|
+
} as React.CSSProperties & {
|
|
53
|
+
"--dot-color": string
|
|
54
|
+
"--active-dot-color": string
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
aria-hidden="true"
|
|
58
|
+
/>
|
|
59
|
+
|
|
60
|
+
{/* Screen reader text */}
|
|
61
|
+
<span className="sr-only">{loadingMessage}</span>
|
|
62
|
+
|
|
63
|
+
{text && (
|
|
64
|
+
<span
|
|
65
|
+
className={cn(
|
|
66
|
+
"text-fm-sm font-fm-brand leading-fm-sm mt-2",
|
|
67
|
+
classes?.text
|
|
68
|
+
)}
|
|
69
|
+
aria-hidden={announceToScreenReader ? "true" : undefined}
|
|
70
|
+
>
|
|
71
|
+
{text}
|
|
72
|
+
</span>
|
|
73
|
+
)}
|
|
74
|
+
</div>
|
|
75
|
+
)
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export default DotLoader
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export const meta = {
|
|
2
|
+
dependencies: {},
|
|
3
|
+
devDependencies: {},
|
|
4
|
+
internalDependencies: [],
|
|
5
|
+
tokens: [
|
|
6
|
+
"--color-fm-secondary-800",
|
|
7
|
+
"--color-fm-secondary-500",
|
|
8
|
+
"--color-fm-divider-tertiary",
|
|
9
|
+
"--animate-fm-shadowPulse",
|
|
10
|
+
"--text-fm-sm",
|
|
11
|
+
"--font-fm-brand",
|
|
12
|
+
"--leading-fm-sm",
|
|
13
|
+
],
|
|
14
|
+
}
|