@agility/plenum-ui 1.3.50 → 2.0.0-rc1
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/.eslintrc.json +6 -0
- package/.prettierrc +12 -12
- package/.storybook/Layout.jsx +9 -6
- package/.storybook/head.tsx +4 -0
- package/.storybook/main.ts +18 -0
- package/.storybook/manager-head.html +1 -0
- package/.storybook/manager.ts +25 -0
- package/.storybook/plenumTheme.ts +8 -0
- package/.storybook/preview-head.html +4 -0
- package/.storybook/preview.tsx +28 -0
- package/.vscode/settings.json +4 -0
- package/.yarnrc.yml +1 -0
- package/README.md +165 -53
- package/app/globals.css +99 -0
- package/app/head.tsx +59 -0
- package/app/layout.tsx +28 -0
- package/app/page.tsx +7 -0
- package/build.js +33 -0
- package/dist/index.js +5936 -0
- package/dist/index.js.map +7 -0
- package/{lib/components → dist/types/stories/atoms}/Avatar/Avatar.d.ts +28 -27
- package/dist/types/stories/atoms/Avatar/index.d.ts +3 -0
- package/dist/types/stories/atoms/badges/Badge.d.ts +21 -0
- package/dist/types/stories/atoms/badges/index.d.ts +3 -0
- package/dist/types/stories/atoms/buttons/Button/Alternative/Alternative.stories.d.ts +13 -0
- package/dist/types/stories/atoms/buttons/Button/Button.d.ts +33 -0
- package/dist/types/stories/atoms/buttons/Button/Danger/Danger.stories.d.ts +13 -0
- package/dist/types/stories/atoms/buttons/Button/Primary/Primary.stories.d.ts +13 -0
- package/dist/types/stories/atoms/buttons/Button/Secondary/Secondary.stories.d.ts +13 -0
- package/dist/types/stories/atoms/buttons/Button/defaultArgs.d.ts +3 -0
- package/dist/types/stories/atoms/buttons/Button/index.d.ts +3 -0
- package/dist/types/stories/atoms/buttons/Capsule/Alternative/Alternative.stories.d.ts +6 -0
- package/dist/types/stories/atoms/buttons/Capsule/Capsule.d.ts +27 -0
- package/dist/types/stories/atoms/buttons/Capsule/Danger/Danger.stories.d.ts +6 -0
- package/dist/types/stories/atoms/buttons/Capsule/Primary/Primary.stories.d.ts +6 -0
- package/dist/types/stories/atoms/buttons/Capsule/Secondary/Secondary.stories.d.ts +6 -0
- package/dist/types/stories/atoms/buttons/Capsule/index.d.ts +3 -0
- package/dist/types/stories/atoms/buttons/index.d.ts +4 -0
- package/{lib/components/DynamicIcons/DynamicIcons.d.ts → dist/types/stories/atoms/icons/DynamicIcon.d.ts} +20 -18
- package/dist/types/stories/atoms/icons/DynamicIcon.stories.d.ts +10 -0
- package/dist/types/stories/atoms/icons/IconWithShadow.d.ts +6 -0
- package/dist/types/stories/atoms/icons/IconWithShadow.stories.d.ts +10 -0
- package/{lib/components/DynamicIcons → dist/types/stories/atoms/icons}/TablerIcon.d.ts +9 -9
- package/dist/types/stories/atoms/icons/index.d.ts +4 -0
- package/dist/types/stories/atoms/icons/tablerIconNames.d.ts +2 -0
- package/dist/types/stories/atoms/index.d.ts +7 -0
- package/dist/types/stories/atoms/loaders/Loader.d.ts +6 -0
- package/dist/types/stories/atoms/loaders/Loader.stories.d.ts +6 -0
- package/dist/types/stories/atoms/loaders/NProgress/RadialProgress.d.ts +11 -0
- package/dist/types/stories/atoms/loaders/NProgress/index.d.ts +3 -0
- package/dist/types/stories/atoms/loaders/index.d.ts +4 -0
- package/dist/types/stories/index.d.ts +5 -0
- package/dist/types/stories/layouts/index.d.ts +0 -0
- package/dist/types/stories/molecules/index.d.ts +3 -0
- package/dist/types/stories/molecules/inputs/InputField/InputField.d.ts +28 -0
- package/dist/types/stories/molecules/inputs/InputField/index.d.ts +3 -0
- package/{lib/components/Forms → dist/types/stories/molecules/inputs}/InputLabel/InputLabel.d.ts +15 -14
- package/dist/types/stories/molecules/inputs/InputLabel/index.d.ts +3 -0
- package/dist/types/stories/molecules/inputs/NestedInputButton/NestedInputButton.d.ts +17 -0
- package/dist/types/stories/molecules/inputs/NestedInputButton/index.d.ts +3 -0
- package/{lib/components/Forms/Checkbox → dist/types/stories/molecules/inputs/checkbox}/Checkbox.d.ts +28 -27
- package/dist/types/stories/molecules/inputs/checkbox/Checkbox.stories.d.ts +6 -0
- package/dist/types/stories/molecules/inputs/checkbox/index.d.ts +3 -0
- package/{lib/components/Combobox/Combobox.d.ts → dist/types/stories/molecules/inputs/combobox/ComboBox.d.ts} +34 -34
- package/dist/types/stories/molecules/inputs/combobox/ComboBox.stories.d.ts +6 -0
- package/dist/types/stories/molecules/inputs/combobox/index.d.ts +3 -0
- package/dist/types/stories/molecules/inputs/index.d.ts +11 -0
- package/{lib/components/Forms/Radio → dist/types/stories/molecules/inputs/radio}/Radio.d.ts +27 -27
- package/dist/types/stories/molecules/inputs/radio/Radio.stories.d.ts +6 -0
- package/dist/types/stories/molecules/inputs/radio/index.d.ts +3 -0
- package/{lib/components/Forms/Select → dist/types/stories/molecules/inputs/select}/Select.d.ts +27 -27
- package/dist/types/stories/molecules/inputs/select/Select.stories.d.ts +6 -0
- package/dist/types/stories/molecules/inputs/select/index.d.ts +3 -0
- package/dist/types/stories/molecules/inputs/textArea/TextArea.d.ts +26 -0
- package/dist/types/stories/molecules/inputs/textArea/TextArea.stories.d.ts +6 -0
- package/dist/types/stories/molecules/inputs/textArea/index.d.ts +3 -0
- package/dist/types/stories/molecules/inputs/toggleSwitch/ToggleSwitch.d.ts +18 -0
- package/dist/types/stories/molecules/inputs/toggleSwitch/index.d.ts +3 -0
- package/dist/types/stories/organisms/AnimatedLabelInput/AnimatedLabelInput.d.ts +18 -0
- package/dist/types/stories/organisms/AnimatedLabelInput/index.d.ts +3 -0
- package/dist/types/stories/organisms/ButtonDropdown/ButtonDropdown.d.ts +14 -0
- package/dist/types/stories/organisms/ButtonDropdown/index.d.ts +3 -0
- package/{lib/components/Dropdown/Dropdown.d.ts → dist/types/stories/organisms/DropdownComponent/DropdownComponent.d.ts} +40 -39
- package/dist/types/stories/organisms/DropdownComponent/dropdownItems.d.ts +3 -0
- package/dist/types/stories/organisms/DropdownComponent/index.d.ts +4 -0
- package/dist/types/stories/organisms/EmptySectionPlaceholder/EmptySectionPlaceholder.d.ts +19 -0
- package/dist/types/stories/organisms/EmptySectionPlaceholder/index.d.ts +3 -0
- package/dist/types/stories/organisms/FormInputWithAddons/FormInputWithAddons.d.ts +21 -0
- package/dist/types/stories/organisms/FormInputWithAddons/index.d.ts +3 -0
- package/dist/types/stories/organisms/index.d.ts +7 -0
- package/dist/types/utils/types.d.ts +2 -0
- package/dist/types/utils/useId.d.ts +1 -0
- package/next.config.js +8 -0
- package/package.json +53 -77
- package/pages/api/hello.ts +13 -0
- package/postcss.config.js +5 -6
- package/public/next.svg +1 -0
- package/public/thirteen.svg +1 -0
- package/public/vercel.svg +1 -0
- package/scripts/create-component.js +97 -0
- package/stories/Introduction.mdx +314 -0
- package/stories/assets/code-brackets.svg +1 -0
- package/stories/assets/colors.svg +1 -0
- package/stories/assets/comments.svg +1 -0
- package/stories/assets/direction.svg +1 -0
- package/stories/assets/flow.svg +1 -0
- package/stories/assets/plugin.svg +1 -0
- package/stories/assets/repo.svg +1 -0
- package/stories/assets/stackalt.svg +1 -0
- package/stories/atoms/Avatar/Avatar.stories.tsx +96 -0
- package/stories/atoms/Avatar/Avatar.tsx +123 -0
- package/stories/atoms/Avatar/index.ts +3 -0
- package/stories/atoms/badges/Badge.tsx +127 -0
- package/stories/atoms/badges/Pill/Pill.stories.tsx +75 -0
- package/stories/atoms/badges/Rounded/Rounded.stories.tsx +75 -0
- package/stories/atoms/badges/index.ts +3 -0
- package/stories/atoms/buttons/Button/Alternative/Alternative.stories.ts +69 -0
- package/stories/atoms/buttons/Button/Button.tsx +123 -0
- package/stories/atoms/buttons/Button/Danger/Danger.stories.ts +71 -0
- package/stories/atoms/buttons/Button/Primary/Primary.stories.ts +78 -0
- package/stories/atoms/buttons/Button/Secondary/Secondary.stories.ts +74 -0
- package/stories/atoms/buttons/Button/defaultArgs.ts +9 -0
- package/stories/atoms/buttons/Button/index.ts +3 -0
- package/stories/atoms/buttons/Capsule/Alternative/Alternative.stories.ts +27 -0
- package/stories/atoms/buttons/Capsule/Capsule.tsx +87 -0
- package/stories/atoms/buttons/Capsule/Danger/Danger.stories.ts +27 -0
- package/stories/atoms/buttons/Capsule/Primary/Primary.stories.ts +27 -0
- package/stories/atoms/buttons/Capsule/Secondary/Secondary.stories.ts +27 -0
- package/stories/atoms/buttons/Capsule/index.ts +3 -0
- package/stories/atoms/buttons/FloatingActionButton/FloatingActionButton.stories.tsx +15 -0
- package/stories/atoms/buttons/FloatingActionButton/FloatingActionButton.tsx +22 -0
- package/stories/atoms/buttons/FloatingActionButton/index.tsx +3 -0
- package/stories/atoms/buttons/index.ts +4 -0
- package/stories/atoms/crumb/Crumb.stories.tsx +18 -0
- package/stories/atoms/crumb/Crumb.tsx +22 -0
- package/stories/atoms/crumb/index.tsx +3 -0
- package/stories/atoms/icons/DynamicIcon.stories.ts +43 -0
- package/stories/atoms/icons/DynamicIcon.tsx +90 -0
- package/stories/atoms/icons/IconWithShadow.stories.ts +43 -0
- package/stories/atoms/icons/IconWithShadow.tsx +16 -0
- package/stories/atoms/icons/TablerIcon.tsx +22 -0
- package/stories/atoms/icons/index.tsx +14 -0
- package/stories/atoms/icons/tablerIconNames.ts +4336 -0
- package/stories/atoms/index.ts +46 -0
- package/stories/atoms/loaders/Loader.stories.ts +15 -0
- package/stories/atoms/loaders/Loader.tsx +15 -0
- package/stories/atoms/loaders/NProgress/RadialProgress.stories.tsx +19 -0
- package/stories/atoms/loaders/NProgress/RadialProgress.tsx +76 -0
- package/stories/atoms/loaders/NProgress/index.ts +3 -0
- package/stories/atoms/loaders/index.ts +4 -0
- package/stories/index.ts +124 -0
- package/stories/layouts/CardLayout/CardLayout.stories.tsx +18 -0
- package/stories/layouts/CardLayout/CardLayout.tsx +22 -0
- package/stories/layouts/CardLayout/index.tsx +3 -0
- package/stories/layouts/ModalLayout/ModalLayout.stories.tsx +18 -0
- package/stories/layouts/ModalLayout/ModalLayout.tsx +22 -0
- package/stories/layouts/ModalLayout/index.tsx +3 -0
- package/stories/layouts/index.ts +0 -0
- package/stories/molecules/index.ts +35 -0
- package/stories/molecules/inputs/InputField/InputField.stories.tsx +29 -0
- package/stories/molecules/inputs/InputField/InputField.tsx +88 -0
- package/stories/molecules/inputs/InputField/index.tsx +3 -0
- package/stories/molecules/inputs/InputLabel/InputLabel.stories.tsx +19 -0
- package/stories/molecules/inputs/InputLabel/InputLabel.tsx +45 -0
- package/stories/molecules/inputs/InputLabel/index.tsx +3 -0
- package/stories/molecules/inputs/NestedInputButton/NestedInputButton.stories.tsx +52 -0
- package/stories/molecules/inputs/NestedInputButton/NestedInputButton.tsx +64 -0
- package/stories/molecules/inputs/NestedInputButton/index.tsx +3 -0
- package/stories/molecules/inputs/checkbox/Checkbox.stories.ts +23 -0
- package/stories/molecules/inputs/checkbox/Checkbox.tsx +99 -0
- package/stories/molecules/inputs/checkbox/index.ts +3 -0
- package/stories/molecules/inputs/combobox/ComboBox.stories.ts +41 -0
- package/stories/molecules/inputs/combobox/ComboBox.tsx +194 -0
- package/stories/molecules/inputs/combobox/index.ts +3 -0
- package/stories/molecules/inputs/index.ts +24 -0
- package/stories/molecules/inputs/radio/Radio.stories.ts +27 -0
- package/stories/molecules/inputs/radio/Radio.tsx +92 -0
- package/stories/molecules/inputs/radio/index.ts +3 -0
- package/stories/molecules/inputs/select/Select.stories.ts +23 -0
- package/stories/molecules/inputs/select/Select.tsx +100 -0
- package/stories/molecules/inputs/select/index.ts +3 -0
- package/stories/molecules/inputs/textArea/TextArea.stories.ts +20 -0
- package/stories/molecules/inputs/textArea/TextArea.tsx +67 -0
- package/stories/molecules/inputs/textArea/index.ts +3 -0
- package/stories/molecules/inputs/toggleSwitch/ToggleSwitch.stories.tsx +119 -0
- package/stories/molecules/inputs/toggleSwitch/ToggleSwitch.tsx +75 -0
- package/stories/molecules/inputs/toggleSwitch/index.ts +3 -0
- package/stories/molecules/tabs/Tabs.stories.tsx +18 -0
- package/stories/molecules/tabs/Tabs.tsx +22 -0
- package/stories/molecules/tabs/index.tsx +3 -0
- package/stories/organisms/AnimatedLabelInput/AnimatedLabelInput.stories.tsx +21 -0
- package/stories/organisms/AnimatedLabelInput/AnimatedLabelInput.tsx +60 -0
- package/stories/organisms/AnimatedLabelInput/index.tsx +3 -0
- package/stories/organisms/ButtonDropdown/ButtonDropdown.stories.tsx +118 -0
- package/stories/organisms/ButtonDropdown/ButtonDropdown.tsx +81 -0
- package/stories/organisms/ButtonDropdown/index.tsx +3 -0
- package/stories/organisms/DropdownComponent/Dropdown.stories.tsx +49 -0
- package/stories/organisms/DropdownComponent/Dropdown.test.tsx +0 -0
- package/stories/organisms/DropdownComponent/DropdownComponent.tsx +269 -0
- package/stories/organisms/DropdownComponent/dropdownItems.ts +101 -0
- package/stories/organisms/DropdownComponent/index.ts +4 -0
- package/stories/organisms/EmptySectionPlaceholder/EmptySectionPlaceholder.stories.tsx +76 -0
- package/stories/organisms/EmptySectionPlaceholder/EmptySectionPlaceholder.tsx +52 -0
- package/stories/organisms/EmptySectionPlaceholder/index.tsx +3 -0
- package/stories/organisms/FormInputWithAddons/FormInputWithAddons.stories.tsx +29 -0
- package/stories/organisms/FormInputWithAddons/FormInputWithAddons.tsx +140 -0
- package/stories/organisms/FormInputWithAddons/index.tsx +3 -0
- package/stories/organisms/index.ts +16 -0
- package/tailwind.config.js +165 -36
- package/tsconfig.json +27 -21
- package/tsconfig.lib.json +19 -0
- package/utils/types.d.ts +2 -0
- package/utils/types.ts +3 -0
- package/utils/useId.d.ts +1 -0
- package/utils/useId.tsx +16 -0
- package/.babelrc +0 -14
- package/.editorconfig +0 -9
- package/.eslintrc +0 -13
- package/.github/workflows/test.yml +0 -27
- package/.storybook/main.js +0 -17
- package/.storybook/manager.js +0 -6
- package/.storybook/plenumTheme.js +0 -8
- package/.storybook/preview.js +0 -44
- package/_templates/component/new/component.ejs.t +0 -18
- package/_templates/component/new/component.stories.ejs.t +0 -21
- package/_templates/component/new/component.test.ejs.t +0 -15
- package/_templates/component/new/index.ejs.t +0 -6
- package/_templates/component/new/prompt.js +0 -7
- package/jest.config.js +0 -8
- package/lib/common/brandCfg.d.ts +0 -3
- package/lib/common/index.d.ts +0 -3
- package/lib/common/storyCfg.d.ts +0 -5
- package/lib/components/Avatar/Avatar.stories.d.ts +0 -6
- package/lib/components/Avatar/Avatar.test.d.ts +0 -1
- package/lib/components/Avatar/index.d.ts +0 -1
- package/lib/components/Button/Button.d.ts +0 -55
- package/lib/components/Button/Button.stories.d.ts +0 -12
- package/lib/components/Button/Button.test.d.ts +0 -1
- package/lib/components/Button/index.d.ts +0 -1
- package/lib/components/ButtonDropdown/ButtonDropdown.d.ts +0 -12
- package/lib/components/ButtonDropdown/ButtonDropdown.stories.d.ts +0 -9
- package/lib/components/ButtonDropdown/index.d.ts +0 -1
- package/lib/components/Combobox/Combobox.stories.d.ts +0 -14
- package/lib/components/Combobox/Combobox.test.d.ts +0 -1
- package/lib/components/Combobox/index.d.ts +0 -1
- package/lib/components/Dropdown/Dropdown.stories.d.ts +0 -8
- package/lib/components/Dropdown/Dropdown.test.d.ts +0 -1
- package/lib/components/Dropdown/data.d.ts +0 -3
- package/lib/components/Dropdown/index.d.ts +0 -1
- package/lib/components/DynamicIcons/DynamicIcons.stories.d.ts +0 -9
- package/lib/components/DynamicIcons/index.d.ts +0 -3
- package/lib/components/DynamicIcons/tablerIconNames.d.ts +0 -2
- package/lib/components/Forms/BaseField/BaseField.d.ts +0 -34
- package/lib/components/Forms/BaseField/BaseField.stories.d.ts +0 -6
- package/lib/components/Forms/BaseField/BaseField.test.d.ts +0 -1
- package/lib/components/Forms/BaseField/index.d.ts +0 -1
- package/lib/components/Forms/Checkbox/Checkbox.stories.d.ts +0 -14
- package/lib/components/Forms/Checkbox/Checkbox.test.d.ts +0 -1
- package/lib/components/Forms/Checkbox/index.d.ts +0 -1
- package/lib/components/Forms/InputCounter/InputCounter.d.ts +0 -9
- package/lib/components/Forms/InputCounter/InputCounter.stories.d.ts +0 -6
- package/lib/components/Forms/InputCounter/InputCounter.test.d.ts +0 -1
- package/lib/components/Forms/InputCounter/index.d.ts +0 -1
- package/lib/components/Forms/InputLabel/InputLabel.stories.d.ts +0 -6
- package/lib/components/Forms/InputLabel/InputLabel.test.d.ts +0 -1
- package/lib/components/Forms/InputLabel/index.d.ts +0 -1
- package/lib/components/Forms/Radio/Radio.stories.d.ts +0 -12
- package/lib/components/Forms/Radio/Radio.test.d.ts +0 -1
- package/lib/components/Forms/Radio/index.d.ts +0 -1
- package/lib/components/Forms/Select/Select.stories.d.ts +0 -11
- package/lib/components/Forms/Select/Select.test.d.ts +0 -1
- package/lib/components/Forms/Select/index.d.ts +0 -1
- package/lib/components/Forms/TextInput/TextInput.d.ts +0 -39
- package/lib/components/Forms/TextInput/TextInput.stories.d.ts +0 -12
- package/lib/components/Forms/TextInput/index.d.ts +0 -1
- package/lib/components/Forms/TextInputAddon/InputCta/InputCta.d.ts +0 -16
- package/lib/components/Forms/TextInputAddon/InputCta/InputCta.stories.d.ts +0 -6
- package/lib/components/Forms/TextInputAddon/InputCta/InputCta.test.d.ts +0 -1
- package/lib/components/Forms/TextInputAddon/InputCta/index.d.ts +0 -1
- package/lib/components/Forms/TextInputAddon/TextInputAddon.d.ts +0 -54
- package/lib/components/Forms/TextInputAddon/TextInputAddon.stories.d.ts +0 -13
- package/lib/components/Forms/TextInputAddon/index.d.ts +0 -1
- package/lib/components/Forms/TextInputSelect/InputSelect/InputSelect.d.ts +0 -13
- package/lib/components/Forms/TextInputSelect/InputSelect/InputSelect.stories.d.ts +0 -6
- package/lib/components/Forms/TextInputSelect/InputSelect/InputSelect.test.d.ts +0 -1
- package/lib/components/Forms/TextInputSelect/InputSelect/index.d.ts +0 -1
- package/lib/components/Forms/TextInputSelect/TextInputSelect.d.ts +0 -48
- package/lib/components/Forms/TextInputSelect/TextInputSelect.stories.d.ts +0 -8
- package/lib/components/Forms/TextInputSelect/index.d.ts +0 -1
- package/lib/components/Forms/Textarea/Textarea.d.ts +0 -32
- package/lib/components/Forms/Textarea/Textarea.stories.d.ts +0 -12
- package/lib/components/Forms/Textarea/Textarea.test.d.ts +0 -1
- package/lib/components/Forms/Textarea/index.d.ts +0 -1
- package/lib/components/ToggleSwitch/ToggleSwitch.d.ts +0 -28
- package/lib/components/ToggleSwitch/ToggleSwitch.stories.d.ts +0 -21
- package/lib/components/ToggleSwitch/ToggleSwitch.test.d.ts +0 -1
- package/lib/components/ToggleSwitch/index.d.ts +0 -1
- package/lib/components/TreeView/TreeView.d.ts +0 -36
- package/lib/components/TreeView/TreeView.stories.d.ts +0 -6
- package/lib/components/TreeView/TreeView.test.d.ts +0 -1
- package/lib/components/TreeView/index.d.ts +0 -1
- package/lib/components/TreeView V1/TreeItem/TreeItem.d.ts +0 -16
- package/lib/components/TreeView V1/TreeItem/TreeItem.stories.d.ts +0 -9
- package/lib/components/TreeView V1/TreeItem/TreeItem.test.d.ts +0 -1
- package/lib/components/TreeView V1/TreeItem/index.d.ts +0 -1
- package/lib/components/TreeView V1/TreeView.d.ts +0 -6
- package/lib/components/TreeView V1/TreeView.stories.d.ts +0 -6
- package/lib/components/TreeView V1/TreeView.test.d.ts +0 -1
- package/lib/components/TreeView V1/context.d.ts +0 -9
- package/lib/components/TreeView V1/index.d.ts +0 -1
- package/lib/components/TreeView V1/sampleData.d.ts +0 -71
- package/lib/components/TreeView V1/types/tree.types.d.ts +0 -21
- package/lib/index.d.ts +0 -13
- package/lib/index.esm.js +0 -105883
- package/lib/index.esm.js.map +0 -1
- package/lib/index.js +0 -105922
- package/lib/index.js.map +0 -1
- package/lib/page/TreeNavigation/CustomNode/CustomNode.d.ts +0 -3
- package/lib/page/TreeNavigation/CustomNode/CustomNode.test.d.ts +0 -1
- package/lib/page/TreeNavigation/CustomNode/index.d.ts +0 -1
- package/lib/page/TreeNavigation/TreeNavigation.d.ts +0 -8
- package/lib/page/TreeNavigation/TreeNavigation.stories.d.ts +0 -6
- package/lib/page/TreeNavigation/hooks/useFetch.d.ts +0 -14
- package/lib/page/TreeNavigation/index.d.ts +0 -1
- package/lib/tailwind.css +0 -2023
- package/lib/util/DynamicIcons.d.ts +0 -10
- package/lib/util/Loader.d.ts +0 -5
- package/lib/util/types.d.ts +0 -2
- package/lib/util/useID.d.ts +0 -1
- package/rollup.config.js +0 -37
- package/setupTests.js +0 -6
- package/styleMock.js +0 -2
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react"
|
|
2
|
+
import Button from "../Button"
|
|
3
|
+
import { defaultIcon } from "../defaultArgs"
|
|
4
|
+
|
|
5
|
+
// More on how to set up stories at: https://storybook.js.org/docs/7.0/react/writing-stories/introduction
|
|
6
|
+
const meta: Meta<typeof Button> = {
|
|
7
|
+
title: "Design System/atoms/Buttons/Button/Primary",
|
|
8
|
+
component: Button,
|
|
9
|
+
tags: ["autodocs"],
|
|
10
|
+
argTypes: {},
|
|
11
|
+
parameters: {
|
|
12
|
+
design: {
|
|
13
|
+
type: "figma",
|
|
14
|
+
url: "https://www.figma.com/file/Rb5fJ8hD3pwvLnidgCaGgB/Agility-UI?type=design&node-id=12-149&mode=design&t=9hpwa8YStpwXksff-4"
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export default meta
|
|
20
|
+
type Story = StoryObj<typeof Button>
|
|
21
|
+
//#region Primary Button Stories
|
|
22
|
+
export const Primary: Story = {
|
|
23
|
+
args: {
|
|
24
|
+
actionType: "primary",
|
|
25
|
+
label: "Button",
|
|
26
|
+
onClick: () => {
|
|
27
|
+
window.alert("Button clicked!")
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export const PrimaryLeadingIcon: Story = {
|
|
32
|
+
args: {
|
|
33
|
+
...Primary.args,
|
|
34
|
+
icon: {
|
|
35
|
+
...defaultIcon,
|
|
36
|
+
icon: "CheckIcon",
|
|
37
|
+
outline: false
|
|
38
|
+
},
|
|
39
|
+
iconPosition: "leading"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export const PrimaryTrailingIcon: Story = {
|
|
43
|
+
args: {
|
|
44
|
+
...PrimaryLeadingIcon.args,
|
|
45
|
+
iconPosition: "trailing"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export const PrimaryExtraSmall: Story = {
|
|
49
|
+
args: {
|
|
50
|
+
...Primary.args,
|
|
51
|
+
size: "sm"
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export const PrimarySmall: Story = {
|
|
55
|
+
args: {
|
|
56
|
+
...Primary.args,
|
|
57
|
+
size: "sm"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export const PrimaryMedium: Story = {
|
|
61
|
+
args: {
|
|
62
|
+
...Primary.args,
|
|
63
|
+
size: "md"
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
export const PrimaryLarge: Story = {
|
|
67
|
+
args: {
|
|
68
|
+
...Primary.args,
|
|
69
|
+
size: "lg"
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
export const PrimaryExtraLarge: Story = {
|
|
73
|
+
args: {
|
|
74
|
+
...Primary.args,
|
|
75
|
+
size: "xl"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// #endregion
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react"
|
|
2
|
+
import Button from "../Button"
|
|
3
|
+
import { defaultIcon } from "../defaultArgs"
|
|
4
|
+
|
|
5
|
+
// More on how to set up stories at: https://storybook.js.org/docs/7.0/react/writing-stories/introduction
|
|
6
|
+
const meta: Meta<typeof Button> = {
|
|
7
|
+
title: "Design System/atoms/Buttons/Button/Secondary",
|
|
8
|
+
component: Button,
|
|
9
|
+
tags: ["autodocs"],
|
|
10
|
+
argTypes: {},
|
|
11
|
+
parameters: {
|
|
12
|
+
design: {
|
|
13
|
+
type: "figma",
|
|
14
|
+
url: "https://www.figma.com/file/Rb5fJ8hD3pwvLnidgCaGgB/Agility-UI?type=design&node-id=12-213&mode=design&t=9hpwa8YStpwXksff-4"
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export default meta
|
|
20
|
+
type Story = StoryObj<typeof Button>
|
|
21
|
+
// #region Secondary Button Stories
|
|
22
|
+
export const Secondary: Story = {
|
|
23
|
+
args: {
|
|
24
|
+
actionType: "secondary",
|
|
25
|
+
label: "Button",
|
|
26
|
+
onClick: () => {
|
|
27
|
+
window.alert("Button clicked!")
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export const SecondaryTrailingIcon: Story = {
|
|
32
|
+
args: {
|
|
33
|
+
...Secondary.args,
|
|
34
|
+
icon: { ...defaultIcon, icon: "Icon3dCubeSphere" },
|
|
35
|
+
iconPosition: "trailing"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export const SecondaryLeadingIcon: Story = {
|
|
39
|
+
args: {
|
|
40
|
+
...SecondaryTrailingIcon.args,
|
|
41
|
+
iconPosition: "leading"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export const SecondaryExtraSmall: Story = {
|
|
45
|
+
args: {
|
|
46
|
+
...Secondary.args,
|
|
47
|
+
size: "sm"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export const SecondarySmall: Story = {
|
|
51
|
+
args: {
|
|
52
|
+
...Secondary.args,
|
|
53
|
+
size: "sm"
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export const SecondaryMedium: Story = {
|
|
57
|
+
args: {
|
|
58
|
+
...Secondary.args,
|
|
59
|
+
size: "md"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export const SecondaryLarge: Story = {
|
|
63
|
+
args: {
|
|
64
|
+
...Secondary.args,
|
|
65
|
+
size: "lg"
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export const SecondaryExtraLarge: Story = {
|
|
69
|
+
args: {
|
|
70
|
+
...Secondary.args,
|
|
71
|
+
size: "xl"
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// #endregion
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react"
|
|
2
|
+
import { defaultIcon } from "../../Button/defaultArgs"
|
|
3
|
+
import Capsule from "../Capsule"
|
|
4
|
+
// More on how to set up stories at: https://storybook.js.org/docs/7.0/react/writing-stories/introduction
|
|
5
|
+
const meta: Meta<typeof Capsule> = {
|
|
6
|
+
title: "Design System/atoms/Buttons/Capsule/Alternative",
|
|
7
|
+
component: Capsule,
|
|
8
|
+
tags: ["autodocs"],
|
|
9
|
+
parameters: {
|
|
10
|
+
design: {
|
|
11
|
+
type: "figma",
|
|
12
|
+
url: "https://www.figma.com/file/Rb5fJ8hD3pwvLnidgCaGgB/Agility-UI?type=design&node-id=243-12178&mode=design&t=9hpwa8YStpwXksff-4"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export default meta
|
|
18
|
+
type Story = StoryObj<typeof Capsule>
|
|
19
|
+
export const Alternative: Story = {
|
|
20
|
+
args: {
|
|
21
|
+
label: "Alternative",
|
|
22
|
+
onClick: () => {
|
|
23
|
+
window.alert("Button clicked!")
|
|
24
|
+
},
|
|
25
|
+
actionType: "alternative"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { default as cn } from "classnames"
|
|
2
|
+
import { HTMLAttributeAnchorTarget } from "react"
|
|
3
|
+
import { BTNActionType, IButtonProps } from "../Button/Button"
|
|
4
|
+
import { UnifiedIconName } from "../../icons/DynamicIcon"
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Capsule Style Button
|
|
8
|
+
*/
|
|
9
|
+
export interface ICapsuleProps extends React.ComponentPropsWithoutRef<"button"> {
|
|
10
|
+
/** Is the button a Primary CTA, alternative or danger button? */
|
|
11
|
+
actionType: BTNActionType
|
|
12
|
+
/** How lg should the button be? - Defaults to 'base'. */
|
|
13
|
+
size?: "xs" | "sm" | "md" | "lg" | "xl"
|
|
14
|
+
/** The Button's text content. */
|
|
15
|
+
label: string
|
|
16
|
+
/** Does the button width grow to fill it's container? */
|
|
17
|
+
fullWidth?: boolean
|
|
18
|
+
/** Optionally render as anchor tag */
|
|
19
|
+
asLink?: {
|
|
20
|
+
href: string
|
|
21
|
+
target: HTMLAttributeAnchorTarget
|
|
22
|
+
title?: string
|
|
23
|
+
}
|
|
24
|
+
/** Is the associated content loading? */
|
|
25
|
+
isLoading?: boolean
|
|
26
|
+
/**Optional Classname String*/
|
|
27
|
+
className?: string
|
|
28
|
+
}
|
|
29
|
+
const Capsule = ({
|
|
30
|
+
actionType = "primary",
|
|
31
|
+
size = "sm",
|
|
32
|
+
label,
|
|
33
|
+
fullWidth = false,
|
|
34
|
+
asLink,
|
|
35
|
+
isLoading = false,
|
|
36
|
+
className,
|
|
37
|
+
...props
|
|
38
|
+
}: ICapsuleProps) => {
|
|
39
|
+
const iconStyles = cn(
|
|
40
|
+
{ "text-white": actionType === "primary" || actionType === "danger" },
|
|
41
|
+
{ "text-purple-700": actionType === "secondary" },
|
|
42
|
+
{ "text-gray-700": actionType === "alternative" }
|
|
43
|
+
)
|
|
44
|
+
const loaderColors = cn(
|
|
45
|
+
{ "border-r-white": actionType === "primary" },
|
|
46
|
+
{ "border-purple-200 border-r-purple-700": actionType === "secondary" },
|
|
47
|
+
{ "border-gray-200 border-r-gray-700": actionType === "alternative" },
|
|
48
|
+
{ "border-red-800 border-r-white": actionType === "danger" }
|
|
49
|
+
)
|
|
50
|
+
const loaderSize = cn({ "h-4 w-4": size === "sm" }, { "h-5 w-5": size === "md" }, { "h-6 w-6 ": size === "lg" })
|
|
51
|
+
|
|
52
|
+
return (
|
|
53
|
+
<button
|
|
54
|
+
type="button"
|
|
55
|
+
className={cn(
|
|
56
|
+
"inline-flex items-center justify-center gap-x-2 text-sm font-medium p-2 !ring-offset-white outline-none focus-visible:ring-2 focus-visible:ring-purple-600 focus-visible:ring-offset-2 focus-within:ring-2 focus-within:ring-purple-600 focus-within:ring-offset-2 focus:ring-2 focus:ring-purple-600 focus:ring-offset-2 active:ring-2 active:ring-purple-600 active:ring-offset-2 transition-all",
|
|
57
|
+
{ "w-full": fullWidth },
|
|
58
|
+
{ "px-[11px] py-[7px] text-xs rounded-[15px]": size === "xs" },
|
|
59
|
+
{ "px-[15px] py-[9px] text-sm rounded-[17px]": size === "sm" },
|
|
60
|
+
{ "px-[17px] py-[9px] text-sm rounded-[19px]": size === "md" },
|
|
61
|
+
{ "px-[17px] py-[9px] text-base rounded-[21px]": size === "lg" },
|
|
62
|
+
{ "px-[25px] py-[13px] text-base rounded-[25px]": size === "xl" },
|
|
63
|
+
{
|
|
64
|
+
"bg-purple-600 text-white hover:border-purple-700 hover:bg-purple-700 ": actionType === "primary"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
" bg-purple-50 text-purple-700 hover:bg-purple-200 focus-within:bg-purple-100 focus-visible:bg-purple-100 focus:bg-purple-100 active:bg-purple-100":
|
|
68
|
+
actionType === "secondary"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"border-gray-300 bg-white border text-gray-700 hover:bg-gray-50 focus-visible:!border-gray-300 focus-within:!border-gray-300 focus:!border-gray-300 active:!border-gray-300":
|
|
72
|
+
actionType === "alternative"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
" bg-red-600 text-white hover:bg-red-700 <focus-visible:!></focus-visible:!>ring-red-500 focus:!ring-red-500 active:!ring-red-500 focus-within:!ring-red-500 ":
|
|
76
|
+
actionType === "danger"
|
|
77
|
+
},
|
|
78
|
+
className ? className : ""
|
|
79
|
+
)}
|
|
80
|
+
{...props}
|
|
81
|
+
>
|
|
82
|
+
{label}
|
|
83
|
+
</button>
|
|
84
|
+
)
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export default Capsule
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react"
|
|
2
|
+
import { defaultIcon } from "../../Button/defaultArgs"
|
|
3
|
+
import Capsule from "../Capsule"
|
|
4
|
+
// More on how to set up stories at: https://storybook.js.org/docs/7.0/react/writing-stories/introduction
|
|
5
|
+
const meta: Meta<typeof Capsule> = {
|
|
6
|
+
title: "Design System/atoms/Buttons/Capsule/Danger",
|
|
7
|
+
component: Capsule,
|
|
8
|
+
tags: ["autodocs"],
|
|
9
|
+
parameters: {
|
|
10
|
+
design: {
|
|
11
|
+
type: "figma",
|
|
12
|
+
url: "https://www.figma.com/file/Rb5fJ8hD3pwvLnidgCaGgB/Agility-UI?type=design&node-id=243-12178&mode=design&t=9hpwa8YStpwXksff-4"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export default meta
|
|
18
|
+
type Story = StoryObj<typeof Capsule>
|
|
19
|
+
export const Danger: Story = {
|
|
20
|
+
args: {
|
|
21
|
+
label: "Danger",
|
|
22
|
+
onClick: () => {
|
|
23
|
+
window.alert("Button clicked!")
|
|
24
|
+
},
|
|
25
|
+
actionType: "danger"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react"
|
|
2
|
+
import { defaultIcon } from "../../Button/defaultArgs"
|
|
3
|
+
import Capsule from "../Capsule"
|
|
4
|
+
// More on how to set up stories at: https://storybook.js.org/docs/7.0/react/writing-stories/introduction
|
|
5
|
+
const meta: Meta<typeof Capsule> = {
|
|
6
|
+
title: "Design System/atoms/Buttons/Capsule/Primary",
|
|
7
|
+
component: Capsule,
|
|
8
|
+
tags: ["autodocs"],
|
|
9
|
+
parameters: {
|
|
10
|
+
design: {
|
|
11
|
+
type: "figma",
|
|
12
|
+
url: "https://www.figma.com/file/Rb5fJ8hD3pwvLnidgCaGgB/Agility-UI?type=design&node-id=243-12178&mode=design&t=9hpwa8YStpwXksff-4"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export default meta
|
|
18
|
+
type Story = StoryObj<typeof Capsule>
|
|
19
|
+
export const Primary: Story = {
|
|
20
|
+
args: {
|
|
21
|
+
label: "Primary",
|
|
22
|
+
onClick: () => {
|
|
23
|
+
window.alert("Button clicked!")
|
|
24
|
+
},
|
|
25
|
+
actionType: "primary"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react"
|
|
2
|
+
import { defaultIcon } from "../../Button/defaultArgs"
|
|
3
|
+
import Capsule from "../Capsule"
|
|
4
|
+
|
|
5
|
+
const meta: Meta<typeof Capsule> = {
|
|
6
|
+
title: "Design System/atoms/Buttons/Capsule/Secondary",
|
|
7
|
+
component: Capsule,
|
|
8
|
+
tags: ["autodocs"],
|
|
9
|
+
parameters: {
|
|
10
|
+
design: {
|
|
11
|
+
type: "figma",
|
|
12
|
+
url: "https://www.figma.com/file/Rb5fJ8hD3pwvLnidgCaGgB/Agility-UI?type=design&node-id=243-12178&mode=design&t=9hpwa8YStpwXksff-4"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export default meta
|
|
18
|
+
type Story = StoryObj<typeof Capsule>
|
|
19
|
+
export const Secondary: Story = {
|
|
20
|
+
args: {
|
|
21
|
+
label: "Secondary",
|
|
22
|
+
onClick: () => {
|
|
23
|
+
window.alert("Button clicked!")
|
|
24
|
+
},
|
|
25
|
+
actionType: "secondary"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react"
|
|
2
|
+
import FloatingActionButton, { IFloatingActionButtonProps } from "./FloatingActionButton"
|
|
3
|
+
|
|
4
|
+
const meta: Meta<typeof FloatingActionButton> = {
|
|
5
|
+
title: "Design System/atoms/buttons/FloatingActionButton/FloatingActionButton",
|
|
6
|
+
component: FloatingActionButton,
|
|
7
|
+
tags: ["autodocs"],
|
|
8
|
+
argTypes: {}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export default meta
|
|
12
|
+
type Story = StoryObj<typeof FloatingActionButton>
|
|
13
|
+
export const DefaultFloatingActionButtonStory: Story = {
|
|
14
|
+
args: {}
|
|
15
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
|
|
2
|
+
import React from "react"
|
|
3
|
+
import EmptySectionPlaceholder from "@/stories/organisms/EmptySectionPlaceholder"
|
|
4
|
+
|
|
5
|
+
export interface IFloatingActionButtonProps {}
|
|
6
|
+
|
|
7
|
+
const FloatingActionButton: React.FC<IFloatingActionButtonProps> = ({}) => {
|
|
8
|
+
return (
|
|
9
|
+
<EmptySectionPlaceholder
|
|
10
|
+
{...{
|
|
11
|
+
icon: {
|
|
12
|
+
icon: "IconCode"
|
|
13
|
+
},
|
|
14
|
+
mutedText: "Coming Soon! 🚧",
|
|
15
|
+
primaryMessage: "We're working on this component. Be sure to check back soon!",
|
|
16
|
+
actions: []
|
|
17
|
+
}}
|
|
18
|
+
/>
|
|
19
|
+
)
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export default FloatingActionButton;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
|
|
2
|
+
import type { Meta, StoryObj } from "@storybook/react"
|
|
3
|
+
import Crumb, { ICrumbProps } from "./Crumb"
|
|
4
|
+
|
|
5
|
+
const meta: Meta<typeof Crumb> = {
|
|
6
|
+
title: "Design System/atoms/Crumb",
|
|
7
|
+
component: Crumb,
|
|
8
|
+
tags: ["autodocs"],
|
|
9
|
+
argTypes: {}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export default meta
|
|
13
|
+
type Story = StoryObj<typeof Crumb>
|
|
14
|
+
export const DefaultCrumbStory: Story = {
|
|
15
|
+
args: {
|
|
16
|
+
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
|
|
2
|
+
import React from "react"
|
|
3
|
+
import EmptySectionPlaceholder from "@/stories/organisms/EmptySectionPlaceholder"
|
|
4
|
+
|
|
5
|
+
export interface ICrumbProps {}
|
|
6
|
+
|
|
7
|
+
const Crumb: React.FC<ICrumbProps> = ({}) => {
|
|
8
|
+
return (
|
|
9
|
+
<EmptySectionPlaceholder
|
|
10
|
+
{...{
|
|
11
|
+
icon: {
|
|
12
|
+
icon: "IconCode"
|
|
13
|
+
},
|
|
14
|
+
mutedText: "Coming Soon! 🚧",
|
|
15
|
+
primaryMessage: "We're working on this component. Be sure to check back soon!",
|
|
16
|
+
actions: []
|
|
17
|
+
}}
|
|
18
|
+
/>
|
|
19
|
+
)
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export default Crumb;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react"
|
|
2
|
+
import { DynamicIcon } from "./DynamicIcon"
|
|
3
|
+
|
|
4
|
+
const meta: Meta<typeof DynamicIcon> = {
|
|
5
|
+
title: "Design System/atoms/Icons/DynamicIcon",
|
|
6
|
+
component: DynamicIcon,
|
|
7
|
+
tags: ["autodocs"]
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
type Story = StoryObj<typeof DynamicIcon>
|
|
11
|
+
|
|
12
|
+
export const HeroIconSolid: Story = {
|
|
13
|
+
args: {
|
|
14
|
+
icon: "TrashIcon",
|
|
15
|
+
outline: false
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export const HeroIconOutline: Story = {
|
|
19
|
+
args: {
|
|
20
|
+
icon: "TrashIcon",
|
|
21
|
+
outline: true
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export const TablerIconSolid: Story = {
|
|
25
|
+
args: {
|
|
26
|
+
icon: "IconTrashFilled",
|
|
27
|
+
outline: false
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export const TablerIconOutline: Story = {
|
|
31
|
+
args: {
|
|
32
|
+
icon: "TrashIcon",
|
|
33
|
+
outline: true
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export const FAIcon: Story = {
|
|
37
|
+
args: {
|
|
38
|
+
icon: "FaGithub",
|
|
39
|
+
outline: true
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export default meta
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import React from "react"
|
|
2
|
+
// TODO: Fix heroicons support
|
|
3
|
+
import * as SolidIcons from "@heroicons/react/solid"
|
|
4
|
+
import * as OutlineIcons from "@heroicons/react/outline"
|
|
5
|
+
import * as TablerIconComponents from "@tabler/icons-react"
|
|
6
|
+
import * as FA from "react-icons/fa"
|
|
7
|
+
import { tablerIconNames, TablerIconName } from "./tablerIconNames"
|
|
8
|
+
import { default as cn } from "classnames"
|
|
9
|
+
|
|
10
|
+
import TablerIcon from "./TablerIcon"
|
|
11
|
+
import { ClassNameWithAutocomplete } from "@/utils/types"
|
|
12
|
+
|
|
13
|
+
export type IconName = keyof typeof SolidIcons | keyof typeof OutlineIcons
|
|
14
|
+
|
|
15
|
+
export type FAIconName = keyof typeof FA
|
|
16
|
+
|
|
17
|
+
export type UnifiedIconName = IconName | TablerIconName | FAIconName
|
|
18
|
+
|
|
19
|
+
export function isHeroIcon(name: UnifiedIconName): name is keyof typeof SolidIcons | keyof typeof OutlineIcons {
|
|
20
|
+
return name in SolidIcons || name in OutlineIcons
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function isTablerIcon(name: UnifiedIconName): name is TablerIconName {
|
|
24
|
+
return tablerIconNames.includes(name as TablerIconName)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function isFAIcon(name: UnifiedIconName): name is keyof typeof FA {
|
|
28
|
+
return name in FA
|
|
29
|
+
}
|
|
30
|
+
export function isUnifiedIconName(name: UnifiedIconName): name is UnifiedIconName {
|
|
31
|
+
return isTablerIcon(name) || isFAIcon(name)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface IDynamicIconProps extends React.ComponentProps<"i"> {
|
|
35
|
+
icon: UnifiedIconName
|
|
36
|
+
className?: ClassNameWithAutocomplete
|
|
37
|
+
outline?: boolean
|
|
38
|
+
CustomSVG?: React.ReactNode
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export const DynamicIcon = ({
|
|
42
|
+
icon,
|
|
43
|
+
className = "w-5 h-5 text-gray-400",
|
|
44
|
+
outline,
|
|
45
|
+
CustomSVG,
|
|
46
|
+
...props
|
|
47
|
+
}: IDynamicIconProps): JSX.Element => {
|
|
48
|
+
if (CustomSVG) {
|
|
49
|
+
return <i {...{ ...props, className: "flex items-center justify-center" }}>{CustomSVG}</i>
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (isTablerIcon(icon)) {
|
|
53
|
+
return (
|
|
54
|
+
<TablerIcon
|
|
55
|
+
{...{
|
|
56
|
+
icon,
|
|
57
|
+
className: cn(className, {
|
|
58
|
+
"text-gray-600 h-5 w-5": !className
|
|
59
|
+
}),
|
|
60
|
+
outline
|
|
61
|
+
}}
|
|
62
|
+
/>
|
|
63
|
+
)
|
|
64
|
+
}
|
|
65
|
+
if (isFAIcon(icon)) {
|
|
66
|
+
const Icon = FA[icon]
|
|
67
|
+
return (
|
|
68
|
+
<i {...{ ...props, className: "flex items-center justify-center" }}>
|
|
69
|
+
<Icon
|
|
70
|
+
className={cn(className, {
|
|
71
|
+
"h-5 w-5 text-gray-600": !className
|
|
72
|
+
})}
|
|
73
|
+
/>
|
|
74
|
+
</i>
|
|
75
|
+
)
|
|
76
|
+
}
|
|
77
|
+
if (isHeroIcon(icon)) {
|
|
78
|
+
const Icon = outline ? OutlineIcons[icon] : SolidIcons[icon]
|
|
79
|
+
return (
|
|
80
|
+
<i {...{ ...props, className: "flex items-center justify-center" }}>
|
|
81
|
+
<Icon
|
|
82
|
+
className={cn(className, {
|
|
83
|
+
"h-5 w-5 text-gray-600": !className
|
|
84
|
+
})}
|
|
85
|
+
/>
|
|
86
|
+
</i>
|
|
87
|
+
)
|
|
88
|
+
}
|
|
89
|
+
return <></>
|
|
90
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react"
|
|
2
|
+
import IconWithShadow from "./IconWithShadow"
|
|
3
|
+
|
|
4
|
+
const meta: Meta<typeof IconWithShadow> = {
|
|
5
|
+
title: "Design System/atoms/Icons/Icon With Shadow",
|
|
6
|
+
component: IconWithShadow,
|
|
7
|
+
tags: ["autodocs"]
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
type Story = StoryObj<typeof IconWithShadow>
|
|
11
|
+
|
|
12
|
+
export const HeroIconSolid: Story = {
|
|
13
|
+
args: {
|
|
14
|
+
icon: "CubeTransparentIcon",
|
|
15
|
+
outline: false
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export const HeroIconOutline: Story = {
|
|
19
|
+
args: {
|
|
20
|
+
icon: "CubeTransparentIcon",
|
|
21
|
+
outline: true
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export const TablerIconSolid: Story = {
|
|
25
|
+
args: {
|
|
26
|
+
icon: "IconPaperclip",
|
|
27
|
+
outline: false
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export const TablerIconOutline: Story = {
|
|
31
|
+
args: {
|
|
32
|
+
icon: "IconPaperclip",
|
|
33
|
+
outline: true
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export const FAIcon: Story = {
|
|
37
|
+
args: {
|
|
38
|
+
icon: "FaGithub",
|
|
39
|
+
outline: true
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export default meta
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { DynamicIcon } from "./DynamicIcon"
|
|
2
|
+
import { default as cn } from "classnames"
|
|
3
|
+
import { IDynamicIconProps } from "./DynamicIcon"
|
|
4
|
+
|
|
5
|
+
export interface IIconWithShadowProps extends IDynamicIconProps {}
|
|
6
|
+
|
|
7
|
+
const IconWithShadow: React.FC<IIconWithShadowProps> = (props) => {
|
|
8
|
+
return (
|
|
9
|
+
<div className="flex flex-col items-center justify-center ">
|
|
10
|
+
<DynamicIcon {...{ ...props, className: cn("h-12 w-12 text-gray-400") }} outline />
|
|
11
|
+
<div className={cn("mt-2 h-2 w-24 bg-gray-100")} style={{ borderRadius: "40%" }} />
|
|
12
|
+
</div>
|
|
13
|
+
)
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export default IconWithShadow
|