@unoff/ui 1.21.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 +880 -0
- package/dist/assets/Accordion.css +1 -0
- package/dist/assets/ActionsItem.css +1 -0
- package/dist/assets/ActionsList.css +1 -0
- package/dist/assets/Avatar.css +1 -0
- package/dist/assets/Bar.css +1 -0
- package/dist/assets/Button.css +1 -0
- package/dist/assets/Card.css +1 -0
- package/dist/assets/Chip.css +1 -0
- package/dist/assets/ColorChip.css +1 -0
- package/dist/assets/ColorItem.css +1 -0
- package/dist/assets/Consent.css +1 -0
- package/dist/assets/Dialog.css +1 -0
- package/dist/assets/DraggableItem.css +1 -0
- package/dist/assets/DraggableWindow.css +1 -0
- package/dist/assets/Drawer.css +1 -0
- package/dist/assets/Dropdown.css +1 -0
- package/dist/assets/Dropzone.css +1 -0
- package/dist/assets/FormItem.css +1 -0
- package/dist/assets/Icon.css +1 -0
- package/dist/assets/IconChip.css +1 -0
- package/dist/assets/Input.css +1 -0
- package/dist/assets/InputsBar.css +1 -0
- package/dist/assets/KeyboardShortcutItem.css +1 -0
- package/dist/assets/Knob.css +1 -0
- package/dist/assets/Layout.css +1 -0
- package/dist/assets/List.css +1 -0
- package/dist/assets/MembersList.css +1 -0
- package/dist/assets/Menu.css +1 -0
- package/dist/assets/Message.css +1 -0
- package/dist/assets/MultipleSlider.css +1 -0
- package/dist/assets/Notification.css +1 -0
- package/dist/assets/Popin.css +1 -0
- package/dist/assets/Section.css +1 -0
- package/dist/assets/SectionTitle.css +1 -0
- package/dist/assets/Select.css +1 -0
- package/dist/assets/SemanticMessage.css +1 -0
- package/dist/assets/SimpleItem.css +1 -0
- package/dist/assets/SimpleSlider.css +1 -0
- package/dist/assets/SortableList.css +1 -0
- package/dist/assets/Tabs.css +1 -0
- package/dist/assets/Text.css +1 -0
- package/dist/assets/Thumbnail.css +1 -0
- package/dist/assets/Tooltip.css +1 -0
- package/dist/assets/styles/icons/icons.css +1 -0
- package/dist/assets/styles/icons/styles/figma.css +1 -0
- package/dist/assets/styles/icons/styles/framer.css +1 -0
- package/dist/assets/styles/icons/styles/penpot.css +1 -0
- package/dist/assets/styles/icons/styles/sketch.css +1 -0
- package/dist/assets/styles/layouts.css +1 -0
- package/dist/assets/styles/texts/styles/figma.css +1 -0
- package/dist/assets/styles/texts/styles/framer.css +1 -0
- package/dist/assets/styles/texts/styles/penpot.css +1 -0
- package/dist/assets/styles/texts/styles/sketch.css +1 -0
- package/dist/assets/styles/texts/texts.css +1 -0
- package/dist/assets/styles/tokens/figma-types.css +1 -0
- package/dist/assets/styles/tokens/framer-types.css +1 -0
- package/dist/assets/styles/tokens/modules/figma-colors.css +1 -0
- package/dist/assets/styles/tokens/modules/figma-types.css +1 -0
- package/dist/assets/styles/tokens/modules/framer-colors.css +1 -0
- package/dist/assets/styles/tokens/modules/framer-types.css +1 -0
- package/dist/assets/styles/tokens/modules/globals.css +1 -0
- package/dist/assets/styles/tokens/modules/penpot-colors.css +1 -0
- package/dist/assets/styles/tokens/modules/penpot-types.css +1 -0
- package/dist/assets/styles/tokens/modules/sketch-colors.css +1 -0
- package/dist/assets/styles/tokens/modules/sketch-types.css +1 -0
- package/dist/assets/styles/tokens/penpot-types.css +1 -0
- package/dist/assets/styles/tokens/sketch-types.css +1 -0
- package/dist/components/actions/accordion/Accordion.d.ts +59 -0
- package/dist/components/actions/accordion/Accordion.d.ts.map +1 -0
- package/dist/components/actions/accordion/Accordion.js +104 -0
- package/dist/components/actions/accordion/Accordion.js.map +1 -0
- package/dist/components/actions/button/Button.d.ts +148 -0
- package/dist/components/actions/button/Button.d.ts.map +1 -0
- package/dist/components/actions/button/Button.figma.d.ts +2 -0
- package/dist/components/actions/button/Button.figma.d.ts.map +1 -0
- package/dist/components/actions/button/Button.figma.js +43 -0
- package/dist/components/actions/button/Button.figma.js.map +1 -0
- package/dist/components/actions/button/Button.js +306 -0
- package/dist/components/actions/button/Button.js.map +1 -0
- package/dist/components/actions/card/Card.d.ts +39 -0
- package/dist/components/actions/card/Card.d.ts.map +1 -0
- package/dist/components/actions/card/Card.js +99 -0
- package/dist/components/actions/card/Card.js.map +1 -0
- package/dist/components/actions/knob/Knob.d.ts +93 -0
- package/dist/components/actions/knob/Knob.d.ts.map +1 -0
- package/dist/components/actions/knob/Knob.js +179 -0
- package/dist/components/actions/knob/Knob.js.map +1 -0
- package/dist/components/actions/menu/Menu.d.ts +104 -0
- package/dist/components/actions/menu/Menu.d.ts.map +1 -0
- package/dist/components/actions/menu/Menu.js +200 -0
- package/dist/components/actions/menu/Menu.js.map +1 -0
- package/dist/components/assets/avatar/Avatar.d.ts +30 -0
- package/dist/components/assets/avatar/Avatar.d.ts.map +1 -0
- package/dist/components/assets/avatar/Avatar.js +54 -0
- package/dist/components/assets/avatar/Avatar.js.map +1 -0
- package/dist/components/assets/icon/Icon.d.ts +28 -0
- package/dist/components/assets/icon/Icon.d.ts.map +1 -0
- package/dist/components/assets/icon/Icon.figma.d.ts +2 -0
- package/dist/components/assets/icon/Icon.figma.d.ts.map +1 -0
- package/dist/components/assets/icon/Icon.figma.js +27 -0
- package/dist/components/assets/icon/Icon.figma.js.map +1 -0
- package/dist/components/assets/icon/Icon.js +35 -0
- package/dist/components/assets/icon/Icon.js.map +1 -0
- package/dist/components/assets/section-title/SectionTitle.d.ts +22 -0
- package/dist/components/assets/section-title/SectionTitle.d.ts.map +1 -0
- package/dist/components/assets/section-title/SectionTitle.js +42 -0
- package/dist/components/assets/section-title/SectionTitle.js.map +1 -0
- package/dist/components/assets/text/Text.d.ts +34 -0
- package/dist/components/assets/text/Text.d.ts.map +1 -0
- package/dist/components/assets/text/Text.js +35 -0
- package/dist/components/assets/text/Text.js.map +1 -0
- package/dist/components/assets/thumbnail/Thumbnail.d.ts +25 -0
- package/dist/components/assets/thumbnail/Thumbnail.d.ts.map +1 -0
- package/dist/components/assets/thumbnail/Thumbnail.js +67 -0
- package/dist/components/assets/thumbnail/Thumbnail.js.map +1 -0
- package/dist/components/dialogs/consent/Consent.d.ts +85 -0
- package/dist/components/dialogs/consent/Consent.d.ts.map +1 -0
- package/dist/components/dialogs/consent/Consent.js +402 -0
- package/dist/components/dialogs/consent/Consent.js.map +1 -0
- package/dist/components/dialogs/dialog/Dialog.d.ts +81 -0
- package/dist/components/dialogs/dialog/Dialog.d.ts.map +1 -0
- package/dist/components/dialogs/dialog/Dialog.js +58 -0
- package/dist/components/dialogs/dialog/Dialog.js.map +1 -0
- package/dist/components/dialogs/message/Message.d.ts +25 -0
- package/dist/components/dialogs/message/Message.d.ts.map +1 -0
- package/dist/components/dialogs/message/Message.js +141 -0
- package/dist/components/dialogs/message/Message.js.map +1 -0
- package/dist/components/dialogs/notification/Notification.d.ts +22 -0
- package/dist/components/dialogs/notification/Notification.d.ts.map +1 -0
- package/dist/components/dialogs/notification/Notification.js +38 -0
- package/dist/components/dialogs/notification/Notification.js.map +1 -0
- package/dist/components/dialogs/semantic-message/SemanticMessage.d.ts +40 -0
- package/dist/components/dialogs/semantic-message/SemanticMessage.d.ts.map +1 -0
- package/dist/components/dialogs/semantic-message/SemanticMessage.js +71 -0
- package/dist/components/dialogs/semantic-message/SemanticMessage.js.map +1 -0
- package/dist/components/inputs/dropdown/Dropdown.d.ts +123 -0
- package/dist/components/inputs/dropdown/Dropdown.d.ts.map +1 -0
- package/dist/components/inputs/dropdown/Dropdown.figma.d.ts +2 -0
- package/dist/components/inputs/dropdown/Dropdown.figma.d.ts.map +1 -0
- package/dist/components/inputs/dropdown/Dropdown.figma.js +28 -0
- package/dist/components/inputs/dropdown/Dropdown.figma.js.map +1 -0
- package/dist/components/inputs/dropdown/Dropdown.js +307 -0
- package/dist/components/inputs/dropdown/Dropdown.js.map +1 -0
- package/dist/components/inputs/dropzone/Dropzone.d.ts +78 -0
- package/dist/components/inputs/dropzone/Dropzone.d.ts.map +1 -0
- package/dist/components/inputs/dropzone/Dropzone.js +222 -0
- package/dist/components/inputs/dropzone/Dropzone.js.map +1 -0
- package/dist/components/inputs/input/Input.d.ts +203 -0
- package/dist/components/inputs/input/Input.d.ts.map +1 -0
- package/dist/components/inputs/input/Input.figma.d.ts +2 -0
- package/dist/components/inputs/input/Input.figma.d.ts.map +1 -0
- package/dist/components/inputs/input/Input.figma.js +35 -0
- package/dist/components/inputs/input/Input.figma.js.map +1 -0
- package/dist/components/inputs/input/Input.js +713 -0
- package/dist/components/inputs/input/Input.js.map +1 -0
- package/dist/components/inputs/inputs-bar/InputsBar.d.ts +18 -0
- package/dist/components/inputs/inputs-bar/InputsBar.d.ts.map +1 -0
- package/dist/components/inputs/inputs-bar/InputsBar.js +15 -0
- package/dist/components/inputs/inputs-bar/InputsBar.js.map +1 -0
- package/dist/components/inputs/multiple-slider/MultipleSlider.d.ts +125 -0
- package/dist/components/inputs/multiple-slider/MultipleSlider.d.ts.map +1 -0
- package/dist/components/inputs/multiple-slider/MultipleSlider.js +417 -0
- package/dist/components/inputs/multiple-slider/MultipleSlider.js.map +1 -0
- package/dist/components/inputs/multiple-slider/actions/addStop.d.ts +8 -0
- package/dist/components/inputs/multiple-slider/actions/addStop.d.ts.map +1 -0
- package/dist/components/inputs/multiple-slider/actions/deleteStop.d.ts +8 -0
- package/dist/components/inputs/multiple-slider/actions/deleteStop.d.ts.map +1 -0
- package/dist/components/inputs/multiple-slider/actions/shiftLeftStop.d.ts +5 -0
- package/dist/components/inputs/multiple-slider/actions/shiftLeftStop.d.ts.map +1 -0
- package/dist/components/inputs/multiple-slider/actions/shiftRightStop.d.ts +5 -0
- package/dist/components/inputs/multiple-slider/actions/shiftRightStop.d.ts.map +1 -0
- package/dist/components/inputs/select/Select.d.ts +112 -0
- package/dist/components/inputs/select/Select.d.ts.map +1 -0
- package/dist/components/inputs/select/Select.js +313 -0
- package/dist/components/inputs/select/Select.js.map +1 -0
- package/dist/components/inputs/simple-slider/SimpleSlider.d.ts +93 -0
- package/dist/components/inputs/simple-slider/SimpleSlider.d.ts.map +1 -0
- package/dist/components/inputs/simple-slider/SimpleSlider.js +166 -0
- package/dist/components/inputs/simple-slider/SimpleSlider.js.map +1 -0
- package/dist/components/lists/actions-item/ActionsItem.d.ts +64 -0
- package/dist/components/lists/actions-item/ActionsItem.d.ts.map +1 -0
- package/dist/components/lists/actions-item/ActionsItem.js +115 -0
- package/dist/components/lists/actions-item/ActionsItem.js.map +1 -0
- package/dist/components/lists/actions-list/ActionsList.d.ts +79 -0
- package/dist/components/lists/actions-list/ActionsList.d.ts.map +1 -0
- package/dist/components/lists/actions-list/ActionsList.js +384 -0
- package/dist/components/lists/actions-list/ActionsList.js.map +1 -0
- package/dist/components/lists/color-item/ColorItem.d.ts +27 -0
- package/dist/components/lists/color-item/ColorItem.d.ts.map +1 -0
- package/dist/components/lists/color-item/ColorItem.js +70 -0
- package/dist/components/lists/color-item/ColorItem.js.map +1 -0
- package/dist/components/lists/draggable-item/DraggableItem.d.ts +110 -0
- package/dist/components/lists/draggable-item/DraggableItem.d.ts.map +1 -0
- package/dist/components/lists/draggable-item/DraggableItem.js +176 -0
- package/dist/components/lists/draggable-item/DraggableItem.js.map +1 -0
- package/dist/components/lists/keyboard-shortcut-item/KeyboardShortcutItem.d.ts +19 -0
- package/dist/components/lists/keyboard-shortcut-item/KeyboardShortcutItem.d.ts.map +1 -0
- package/dist/components/lists/keyboard-shortcut-item/KeyboardShortcutItem.js +75 -0
- package/dist/components/lists/keyboard-shortcut-item/KeyboardShortcutItem.js.map +1 -0
- package/dist/components/lists/members-list/MembersList.d.ts +32 -0
- package/dist/components/lists/members-list/MembersList.d.ts.map +1 -0
- package/dist/components/lists/members-list/MembersList.js +117 -0
- package/dist/components/lists/members-list/MembersList.js.map +1 -0
- package/dist/components/lists/sortable-list/SortableList.d.ts +103 -0
- package/dist/components/lists/sortable-list/SortableList.d.ts.map +1 -0
- package/dist/components/lists/sortable-list/SortableList.js +148 -0
- package/dist/components/lists/sortable-list/SortableList.js.map +1 -0
- package/dist/components/lists/tabs/Tabs.d.ts +48 -0
- package/dist/components/lists/tabs/Tabs.d.ts.map +1 -0
- package/dist/components/lists/tabs/Tabs.figma.d.ts +2 -0
- package/dist/components/lists/tabs/Tabs.figma.d.ts.map +1 -0
- package/dist/components/lists/tabs/Tabs.figma.js +31 -0
- package/dist/components/lists/tabs/Tabs.figma.js.map +1 -0
- package/dist/components/lists/tabs/Tabs.js +165 -0
- package/dist/components/lists/tabs/Tabs.js.map +1 -0
- package/dist/components/slots/bar/Bar.d.ts +65 -0
- package/dist/components/slots/bar/Bar.d.ts.map +1 -0
- package/dist/components/slots/bar/Bar.js +100 -0
- package/dist/components/slots/bar/Bar.js.map +1 -0
- package/dist/components/slots/draggable-window/DraggableWindow.d.ts +25 -0
- package/dist/components/slots/draggable-window/DraggableWindow.d.ts.map +1 -0
- package/dist/components/slots/draggable-window/DraggableWindow.js +100 -0
- package/dist/components/slots/draggable-window/DraggableWindow.js.map +1 -0
- package/dist/components/slots/drawer/Drawer.d.ts +78 -0
- package/dist/components/slots/drawer/Drawer.d.ts.map +1 -0
- package/dist/components/slots/drawer/Drawer.js +148 -0
- package/dist/components/slots/drawer/Drawer.js.map +1 -0
- package/dist/components/slots/form-item/FormItem.d.ts +52 -0
- package/dist/components/slots/form-item/FormItem.d.ts.map +1 -0
- package/dist/components/slots/form-item/FormItem.js +89 -0
- package/dist/components/slots/form-item/FormItem.js.map +1 -0
- package/dist/components/slots/layout/Layout.d.ts +34 -0
- package/dist/components/slots/layout/Layout.d.ts.map +1 -0
- package/dist/components/slots/layout/Layout.js +45 -0
- package/dist/components/slots/layout/Layout.js.map +1 -0
- package/dist/components/slots/list/List.d.ts +49 -0
- package/dist/components/slots/list/List.d.ts.map +1 -0
- package/dist/components/slots/list/List.js +55 -0
- package/dist/components/slots/list/List.js.map +1 -0
- package/dist/components/slots/popin/Popin.d.ts +85 -0
- package/dist/components/slots/popin/Popin.d.ts.map +1 -0
- package/dist/components/slots/popin/Popin.js +182 -0
- package/dist/components/slots/popin/Popin.js.map +1 -0
- package/dist/components/slots/section/Section.d.ts +32 -0
- package/dist/components/slots/section/Section.d.ts.map +1 -0
- package/dist/components/slots/section/Section.js +49 -0
- package/dist/components/slots/section/Section.js.map +1 -0
- package/dist/components/slots/simple-item/SimpleItem.d.ts +45 -0
- package/dist/components/slots/simple-item/SimpleItem.d.ts.map +1 -0
- package/dist/components/slots/simple-item/SimpleItem.js +100 -0
- package/dist/components/slots/simple-item/SimpleItem.js.map +1 -0
- package/dist/components/tags/chip/Chip.d.ts +43 -0
- package/dist/components/tags/chip/Chip.d.ts.map +1 -0
- package/dist/components/tags/chip/Chip.figma.d.ts +2 -0
- package/dist/components/tags/chip/Chip.figma.d.ts.map +1 -0
- package/dist/components/tags/chip/Chip.figma.js +18 -0
- package/dist/components/tags/chip/Chip.figma.js.map +1 -0
- package/dist/components/tags/chip/Chip.js +88 -0
- package/dist/components/tags/chip/Chip.js.map +1 -0
- package/dist/components/tags/color-chip/ColorChip.d.ts +36 -0
- package/dist/components/tags/color-chip/ColorChip.d.ts.map +1 -0
- package/dist/components/tags/color-chip/ColorChip.js +39 -0
- package/dist/components/tags/color-chip/ColorChip.js.map +1 -0
- package/dist/components/tags/icon-chip/IconChip.d.ts +42 -0
- package/dist/components/tags/icon-chip/IconChip.d.ts.map +1 -0
- package/dist/components/tags/icon-chip/IconChip.js +54 -0
- package/dist/components/tags/icon-chip/IconChip.js.map +1 -0
- package/dist/components/tags/tooltip/Tooltip.d.ts +25 -0
- package/dist/components/tags/tooltip/Tooltip.d.ts.map +1 -0
- package/dist/components/tags/tooltip/Tooltip.js +72 -0
- package/dist/components/tags/tooltip/Tooltip.js.map +1 -0
- package/dist/do-classnames-DSDFCvzy.js +5 -0
- package/dist/do-classnames-DSDFCvzy.js.map +1 -0
- package/dist/do-map-2nhWP1KI.js +8 -0
- package/dist/do-map-2nhWP1KI.js.map +1 -0
- package/dist/index.d.ts +61 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +113 -0
- package/dist/index.js.map +1 -0
- package/dist/index_react-CmuCVQet.js +13799 -0
- package/dist/index_react-CmuCVQet.js.map +1 -0
- package/dist/styles/icons/icons.module.js +115 -0
- package/dist/styles/icons/icons.module.js.map +1 -0
- package/dist/styles/layouts.module.js +37 -0
- package/dist/styles/layouts.module.js.map +1 -0
- package/dist/styles/texts/texts.module.js +23 -0
- package/dist/styles/texts/texts.module.js.map +1 -0
- package/dist/styles/tokens/modules/figma-colors.module.js +9 -0
- package/dist/styles/tokens/modules/figma-colors.module.js.map +1 -0
- package/dist/styles/tokens/modules/figma-types.module.js +9 -0
- package/dist/styles/tokens/modules/figma-types.module.js.map +1 -0
- package/dist/styles/tokens/modules/framer-colors.module.js +9 -0
- package/dist/styles/tokens/modules/framer-colors.module.js.map +1 -0
- package/dist/styles/tokens/modules/framer-types.module.js +9 -0
- package/dist/styles/tokens/modules/framer-types.module.js.map +1 -0
- package/dist/styles/tokens/modules/globals.module.js +9 -0
- package/dist/styles/tokens/modules/globals.module.js.map +1 -0
- package/dist/styles/tokens/modules/penpot-colors.module.js +9 -0
- package/dist/styles/tokens/modules/penpot-colors.module.js.map +1 -0
- package/dist/styles/tokens/modules/penpot-types.module.js +9 -0
- package/dist/styles/tokens/modules/penpot-types.module.js.map +1 -0
- package/dist/styles/tokens/modules/sketch-colors.module.js +9 -0
- package/dist/styles/tokens/modules/sketch-colors.module.js.map +1 -0
- package/dist/styles/tokens/modules/sketch-types.module.js +9 -0
- package/dist/styles/tokens/modules/sketch-types.module.js.map +1 -0
- package/dist/tests/setup.d.ts +2 -0
- package/dist/tests/setup.d.ts.map +1 -0
- package/dist/types/consent.types.d.ts +10 -0
- package/dist/types/consent.types.d.ts.map +1 -0
- package/dist/types/consent.types.js +2 -0
- package/dist/types/consent.types.js.map +1 -0
- package/dist/types/icon.types.d.ts +2 -0
- package/dist/types/icon.types.d.ts.map +1 -0
- package/dist/types/icon.types.js +2 -0
- package/dist/types/icon.types.js.map +1 -0
- package/dist/types/list.types.d.ts +14 -0
- package/dist/types/list.types.d.ts.map +1 -0
- package/dist/types/list.types.js +2 -0
- package/dist/types/list.types.js.map +1 -0
- package/package.json +108 -0
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import '../../../assets/Menu.css';
|
|
2
|
+
import { jsx as g, jsxs as T } from "react/jsx-runtime";
|
|
3
|
+
import h from "react";
|
|
4
|
+
import y from "../../lists/actions-list/ActionsList.js";
|
|
5
|
+
import { t as B } from "../../../do-classnames-DSDFCvzy.js";
|
|
6
|
+
import M from "../button/Button.js";
|
|
7
|
+
class x extends h.Component {
|
|
8
|
+
selectMenuRef;
|
|
9
|
+
buttonRef;
|
|
10
|
+
listRef;
|
|
11
|
+
actionsListRef;
|
|
12
|
+
menuRef;
|
|
13
|
+
subMenuRef;
|
|
14
|
+
static defaultProps = {
|
|
15
|
+
type: "ICON",
|
|
16
|
+
options: [],
|
|
17
|
+
state: "DEFAULT",
|
|
18
|
+
alignment: "BOTTOM_LEFT",
|
|
19
|
+
isBlocked: !1,
|
|
20
|
+
isNew: !1
|
|
21
|
+
};
|
|
22
|
+
constructor(s) {
|
|
23
|
+
super(s), this.state = {
|
|
24
|
+
isMenuOpen: !1,
|
|
25
|
+
isMenuVisible: !1,
|
|
26
|
+
alignment: s.alignment ?? "BOTTOM_LEFT"
|
|
27
|
+
}, this.selectMenuRef = h.createRef(), this.buttonRef = h.createRef(), this.listRef = h.createRef(), this.actionsListRef = h.createRef(), this.menuRef = h.createRef(), this.subMenuRef = h.createRef(), this.handleClickOutside = this.handleClickOutside.bind(this);
|
|
28
|
+
}
|
|
29
|
+
componentDidMount = () => document.addEventListener("mousedown", this.handleClickOutside);
|
|
30
|
+
componentWillUnmount = () => {
|
|
31
|
+
document.removeEventListener("mousedown", this.handleClickOutside);
|
|
32
|
+
};
|
|
33
|
+
// Direct Actions
|
|
34
|
+
handleClickOutside = (s) => {
|
|
35
|
+
const t = s.target, { isMenuOpen: l } = this.state;
|
|
36
|
+
this.buttonRef.current?.buttonRef.current?.contains(t) && l || t === this.menuRef.current || t === this.subMenuRef.current || t.tagName === "HR" && this.menuRef.current?.contains(t) || t.dataset.role === "GROUP" && this.menuRef.current?.contains(t) ? this.setState({
|
|
37
|
+
isMenuOpen: !0
|
|
38
|
+
}) : this.setState({
|
|
39
|
+
isMenuOpen: !1,
|
|
40
|
+
isMenuVisible: !1
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
onOpenMenu = (s) => {
|
|
44
|
+
const { containerId: t, alignment: l } = this.props, { isMenuOpen: o } = this.state;
|
|
45
|
+
this.setState({
|
|
46
|
+
isMenuOpen: !o
|
|
47
|
+
}), setTimeout(() => {
|
|
48
|
+
if (this.listRef.current != null) {
|
|
49
|
+
const i = this.listRef.current.getBoundingClientRect(), f = this.buttonRef.current?.buttonRef.current?.getBoundingClientRect();
|
|
50
|
+
let u = 0, c = 0, d = !1, p = !1;
|
|
51
|
+
if (i.bottom > window.innerHeight && (u = window.innerHeight - i.height - 8, d = !0), i.top < 0 && (u = 8, d = !0), i.right > window.innerWidth && (c = window.innerWidth - i.width - 8, p = !0), i.left < 0 && (c = 8, p = !0), d) {
|
|
52
|
+
const r = l?.includes("TOP"), e = r ? "translateY(-100%)" : "none";
|
|
53
|
+
if (f) {
|
|
54
|
+
const a = r ? -i.height : 0, m = u - f.top - a;
|
|
55
|
+
this.listRef.current.style.top = `${m}px`;
|
|
56
|
+
}
|
|
57
|
+
this.listRef.current.style.transform = p ? `${e !== "none" ? e + " " : ""}translateX(${c - i.left}px)` : e;
|
|
58
|
+
}
|
|
59
|
+
if (p && !d) {
|
|
60
|
+
const e = l?.includes("TOP") ? "translateY(-100%)" : "none";
|
|
61
|
+
this.listRef.current.style.transform = e === "none" ? `translateX(${c - i.left}px)` : `${e} translateX(${c - i.left}px)`;
|
|
62
|
+
}
|
|
63
|
+
if (t !== void 0) {
|
|
64
|
+
const r = document.getElementById(t);
|
|
65
|
+
if (r) {
|
|
66
|
+
const e = r.getBoundingClientRect(), a = this.buttonRef.current?.buttonRef.current?.getBoundingClientRect(), m = this.listRef.current.getBoundingClientRect().top - e.top, R = this.listRef.current.getBoundingClientRect().bottom - e.bottom;
|
|
67
|
+
m < -16 && a && (this.listRef.current.style.top = `${e.top - a.top + 16}px`), R > -16 && a && (this.listRef.current.style.bottom = `${a.bottom - e.bottom + 16}px`), this.listRef.current.style.visibility = "visible";
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
this.setState({ isMenuVisible: !0 });
|
|
71
|
+
}
|
|
72
|
+
}, 0), s.type === "keydown" && setTimeout(() => this.actionsListRef.current?.focusFirstMenuItem(), 0);
|
|
73
|
+
};
|
|
74
|
+
render() {
|
|
75
|
+
const {
|
|
76
|
+
id: s,
|
|
77
|
+
type: t,
|
|
78
|
+
label: l,
|
|
79
|
+
state: o,
|
|
80
|
+
icon: i,
|
|
81
|
+
helper: f,
|
|
82
|
+
warning: u,
|
|
83
|
+
customIcon: c,
|
|
84
|
+
options: d,
|
|
85
|
+
selected: p,
|
|
86
|
+
alignment: r,
|
|
87
|
+
isBlocked: e,
|
|
88
|
+
isNew: a,
|
|
89
|
+
containerId: m
|
|
90
|
+
} = this.props, { isMenuOpen: R } = this.state, L = (n) => {
|
|
91
|
+
const b = [];
|
|
92
|
+
return n.forEach((v) => {
|
|
93
|
+
b.push(v), Array.isArray(v.children) && v.children.length > 0 && b.push(...L(v.children));
|
|
94
|
+
}), b;
|
|
95
|
+
}, O = L(d).filter(
|
|
96
|
+
(n) => n.isActive !== !1
|
|
97
|
+
);
|
|
98
|
+
if (O.length === 0) return null;
|
|
99
|
+
if (O.length === 1 && O[0].children === void 0) {
|
|
100
|
+
const n = O[0];
|
|
101
|
+
return /* @__PURE__ */ g(
|
|
102
|
+
M,
|
|
103
|
+
{
|
|
104
|
+
type: t === "ICON" ? "secondary" : "primary",
|
|
105
|
+
label: n.label,
|
|
106
|
+
isLoading: o === "LOADING",
|
|
107
|
+
isDisabled: o === "DISABLED" || e,
|
|
108
|
+
isBlocked: n.isBlocked,
|
|
109
|
+
isNew: n.isNew,
|
|
110
|
+
action: o === "DISABLED" || e ? void 0 : (b) => (
|
|
111
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
112
|
+
n.action?.(b)
|
|
113
|
+
)
|
|
114
|
+
}
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
return /* @__PURE__ */ T(
|
|
118
|
+
"div",
|
|
119
|
+
{
|
|
120
|
+
id: s,
|
|
121
|
+
className: B([
|
|
122
|
+
"menu",
|
|
123
|
+
"recharged",
|
|
124
|
+
`menu--${r?.toLocaleLowerCase().replace("_", "-")}`
|
|
125
|
+
]),
|
|
126
|
+
ref: this.selectMenuRef,
|
|
127
|
+
children: [
|
|
128
|
+
t === "ICON" ? /* @__PURE__ */ g(
|
|
129
|
+
M,
|
|
130
|
+
{
|
|
131
|
+
type: "icon",
|
|
132
|
+
icon: i === void 0 ? void 0 : i,
|
|
133
|
+
customIcon: c === void 0 ? void 0 : c,
|
|
134
|
+
state: R ? "selected" : void 0,
|
|
135
|
+
helper: f === void 0 ? void 0 : f,
|
|
136
|
+
warning: u === void 0 ? void 0 : u,
|
|
137
|
+
isLoading: o === "LOADING",
|
|
138
|
+
isDisabled: o === "DISABLED" || e,
|
|
139
|
+
isNew: a,
|
|
140
|
+
ref: this.buttonRef,
|
|
141
|
+
action: (n) => o === "DISABLED" || e ? void 0 : this.onOpenMenu(n),
|
|
142
|
+
"aria-label": l,
|
|
143
|
+
"aria-haspopup": "true",
|
|
144
|
+
"aria-controls": `menu-${s}`,
|
|
145
|
+
"aria-expanded": R
|
|
146
|
+
}
|
|
147
|
+
) : /* @__PURE__ */ g(
|
|
148
|
+
M,
|
|
149
|
+
{
|
|
150
|
+
type: "primary",
|
|
151
|
+
label: l,
|
|
152
|
+
hasMultipleActions: !0,
|
|
153
|
+
helper: f === void 0 ? void 0 : f,
|
|
154
|
+
warning: u === void 0 ? void 0 : u,
|
|
155
|
+
isLoading: o === "LOADING",
|
|
156
|
+
isDisabled: o === "DISABLED" || e,
|
|
157
|
+
isNew: a,
|
|
158
|
+
ref: this.buttonRef,
|
|
159
|
+
action: (n) => o === "DISABLED" || e ? void 0 : this.onOpenMenu(n),
|
|
160
|
+
"aria-label": l,
|
|
161
|
+
"aria-haspopup": "true",
|
|
162
|
+
"aria-controls": `menu-${s}`,
|
|
163
|
+
"aria-expanded": R
|
|
164
|
+
}
|
|
165
|
+
),
|
|
166
|
+
R ? /* @__PURE__ */ g(
|
|
167
|
+
"div",
|
|
168
|
+
{
|
|
169
|
+
id: `menu-${s}`,
|
|
170
|
+
className: "floating-menu",
|
|
171
|
+
style: {
|
|
172
|
+
position: "absolute",
|
|
173
|
+
zIndex: 99,
|
|
174
|
+
visibility: m === void 0 && this.state.isMenuVisible ? "visible" : "hidden"
|
|
175
|
+
},
|
|
176
|
+
ref: this.listRef,
|
|
177
|
+
children: /* @__PURE__ */ g(
|
|
178
|
+
y,
|
|
179
|
+
{
|
|
180
|
+
options: d,
|
|
181
|
+
selected: p,
|
|
182
|
+
direction: r?.includes("LEFT") ? "RIGHT" : "LEFT",
|
|
183
|
+
containerId: m,
|
|
184
|
+
onCancellation: () => this.setState({ isMenuOpen: !1 }),
|
|
185
|
+
ref: this.actionsListRef,
|
|
186
|
+
menuRef: this.menuRef,
|
|
187
|
+
subMenuRef: this.subMenuRef
|
|
188
|
+
}
|
|
189
|
+
)
|
|
190
|
+
}
|
|
191
|
+
) : null
|
|
192
|
+
]
|
|
193
|
+
}
|
|
194
|
+
);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
export {
|
|
198
|
+
x as default
|
|
199
|
+
};
|
|
200
|
+
//# sourceMappingURL=Menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Menu.js","sources":["../../../../src/components/actions/menu/Menu.tsx"],"sourcesContent":["import React from 'react'\nimport ActionsList from '@components/lists/actions-list/ActionsList'\nimport { doClassnames } from '@a_ng_d/figmug-utils'\nimport type { DropdownOption } from '@tps/list.types'\nimport type { IconList } from '@tps/icon.types'\nimport Button from '../button/Button'\nimport './menu.scss'\n\nexport interface MenuProps {\n /**\n * Unique identifier for the menu\n */\n id: string\n /**\n * Visual type of the menu button\n * @default 'ICON'\n */\n type: 'ICON' | 'PRIMARY'\n /**\n * Text label for the menu button\n */\n label?: string\n /**\n * Icon name to display in the button\n */\n icon?: IconList\n /**\n * Custom icon element\n */\n customIcon?: React.ReactElement\n /**\n * List of menu options\n * @default []\n */\n options: Array<DropdownOption>\n /**\n * ID of the currently selected option\n */\n selected?: string\n /**\n * ID of the container element for portal rendering\n */\n containerId?: string\n /**\n * State of the menu button\n * @default 'DEFAULT'\n */\n state?: 'DEFAULT' | 'DISABLED' | 'LOADING'\n /**\n * Position of the menu relative to the button\n * @default 'BOTTOM_LEFT'\n */\n alignment?: 'TOP_RIGHT' | 'TOP_LEFT' | 'BOTTOM_RIGHT' | 'BOTTOM_LEFT'\n /**\n * Helper tooltip configuration\n */\n helper?: {\n /** Tooltip content */\n label: string | React.ReactNode\n /** Tooltip position */\n pin?: 'TOP' | 'BOTTOM'\n /** Whether to use single line display */\n isSingleLine?: boolean\n }\n /**\n * Warning tooltip configuration\n */\n warning?: {\n /** Warning message */\n label: string | React.ReactNode\n /** Warning position */\n pin?: 'TOP' | 'BOTTOM'\n /** Warning display type */\n type?: 'MULTI_LINE' | 'SINGLE_LINE'\n }\n /**\n * Whether the menu is blocked\n * @default false\n */\n isBlocked?: boolean\n /**\n * Whether to show a \"New\" badge\n * @default false\n */\n isNew?: boolean\n}\n\nexport interface MenuStates {\n isMenuOpen: boolean\n isMenuVisible: boolean\n alignment: 'TOP_RIGHT' | 'TOP_LEFT' | 'BOTTOM_RIGHT' | 'BOTTOM_LEFT'\n}\n\nexport default class Menu extends React.Component<MenuProps, MenuStates> {\n private selectMenuRef: React.RefObject<HTMLDivElement>\n buttonRef: React.RefObject<Button>\n private listRef: React.RefObject<HTMLDivElement>\n private actionsListRef: React.RefObject<ActionsList>\n private menuRef: React.RefObject<HTMLUListElement>\n private subMenuRef: React.RefObject<HTMLUListElement>\n\n static defaultProps: Partial<MenuProps> = {\n type: 'ICON',\n options: [],\n state: 'DEFAULT',\n alignment: 'BOTTOM_LEFT',\n isBlocked: false,\n isNew: false,\n }\n\n constructor(props: MenuProps) {\n super(props)\n this.state = {\n isMenuOpen: false,\n isMenuVisible: false,\n alignment: props.alignment ?? 'BOTTOM_LEFT',\n }\n this.selectMenuRef = React.createRef()\n this.buttonRef = React.createRef()\n this.listRef = React.createRef()\n this.actionsListRef = React.createRef()\n this.menuRef = React.createRef()\n this.subMenuRef = React.createRef()\n this.handleClickOutside = this.handleClickOutside.bind(this)\n }\n\n componentDidMount = () =>\n document.addEventListener('mousedown', this.handleClickOutside)\n\n componentWillUnmount = () => {\n document.removeEventListener('mousedown', this.handleClickOutside)\n }\n\n // Direct Actions\n handleClickOutside = (e: Event) => {\n const target = e.target as HTMLElement\n const { isMenuOpen } = this.state\n\n if (\n (this.buttonRef.current?.buttonRef.current?.contains(target) &&\n isMenuOpen) ||\n target === this.menuRef.current ||\n target === this.subMenuRef.current ||\n (target.tagName === 'HR' && this.menuRef.current?.contains(target)) ||\n (target.dataset.role === 'GROUP' &&\n this.menuRef.current?.contains(target))\n )\n this.setState({\n isMenuOpen: true,\n })\n else\n this.setState({\n isMenuOpen: false,\n isMenuVisible: false,\n })\n }\n\n onOpenMenu = (\n e: React.MouseEvent<Element> | React.KeyboardEvent<Element>\n ) => {\n const { containerId, alignment } = this.props\n const { isMenuOpen } = this.state\n\n this.setState({\n isMenuOpen: !isMenuOpen,\n })\n\n setTimeout(() => {\n if (this.listRef.current != null) {\n const menuRect = this.listRef.current.getBoundingClientRect()\n const buttonRect =\n this.buttonRef.current?.buttonRef.current?.getBoundingClientRect()\n\n let adjustedTop = 0\n let adjustedLeft = 0\n let shouldTransformY = false\n let shouldTransformX = false\n\n if (menuRect.bottom > window.innerHeight) {\n adjustedTop = window.innerHeight - menuRect.height - 8\n shouldTransformY = true\n }\n if (menuRect.top < 0) {\n adjustedTop = 8\n shouldTransformY = true\n }\n\n if (menuRect.right > window.innerWidth) {\n adjustedLeft = window.innerWidth - menuRect.width - 8\n shouldTransformX = true\n }\n if (menuRect.left < 0) {\n adjustedLeft = 8\n shouldTransformX = true\n }\n\n if (shouldTransformY) {\n const isTopAlignment = alignment?.includes('TOP')\n const baseTransform = isTopAlignment ? 'translateY(-100%)' : 'none'\n\n if (buttonRect) {\n const originalTop = isTopAlignment ? -menuRect.height : 0\n const adjustment = adjustedTop - buttonRect.top - originalTop\n this.listRef.current.style.top = `${adjustment}px`\n }\n\n this.listRef.current.style.transform = shouldTransformX\n ? `${baseTransform !== 'none' ? baseTransform + ' ' : ''}translateX(${adjustedLeft - menuRect.left}px)`\n : baseTransform\n }\n\n if (shouldTransformX && !shouldTransformY) {\n const isTopAlignment = alignment?.includes('TOP')\n const baseTransform = isTopAlignment ? 'translateY(-100%)' : 'none'\n\n this.listRef.current.style.transform =\n baseTransform === 'none'\n ? `translateX(${adjustedLeft - menuRect.left}px)`\n : `${baseTransform} translateX(${adjustedLeft - menuRect.left}px)`\n }\n\n if (containerId !== undefined) {\n const containerElement = document.getElementById(containerId)\n if (containerElement) {\n const container = containerElement.getBoundingClientRect()\n const button =\n this.buttonRef.current?.buttonRef.current?.getBoundingClientRect()\n\n const diffTop =\n this.listRef.current.getBoundingClientRect().top - container.top\n const diffBottom =\n this.listRef.current.getBoundingClientRect().bottom -\n container.bottom\n\n if (diffTop < -16 && button)\n this.listRef.current.style.top = `${container.top - button.top + 16}px`\n\n if (diffBottom > -16 && button)\n this.listRef.current.style.bottom = `${\n button.bottom - container.bottom + 16\n }px`\n\n this.listRef.current.style.visibility = 'visible'\n }\n }\n\n // Rendre le menu visible après positionnement\n this.setState({ isMenuVisible: true })\n }\n }, 0)\n\n if (e.type === 'keydown')\n setTimeout(() => this.actionsListRef.current?.focusFirstMenuItem(), 0)\n }\n\n render() {\n const {\n id,\n type,\n label,\n state,\n icon,\n helper,\n warning,\n customIcon,\n options,\n selected,\n alignment,\n isBlocked,\n isNew,\n containerId,\n } = this.props\n const { isMenuOpen } = this.state\n\n const flattenOptions = (options: DropdownOption[]): DropdownOption[] => {\n const flat: DropdownOption[] = []\n options.forEach((option) => {\n flat.push(option)\n if (Array.isArray(option.children) && option.children.length > 0)\n flat.push(...flattenOptions(option.children))\n })\n return flat\n }\n\n const activeOptions = flattenOptions(options).filter(\n (option) => option.isActive !== false\n )\n\n if (activeOptions.length === 0) return null\n if (activeOptions.length === 1 && activeOptions[0].children === undefined) {\n const option = activeOptions[0]\n return (\n <Button\n type={type === 'ICON' ? 'secondary' : 'primary'}\n label={option.label}\n isLoading={state === 'LOADING'}\n isDisabled={state === 'DISABLED' || isBlocked}\n isBlocked={option.isBlocked}\n isNew={option.isNew}\n action={\n !(state === 'DISABLED' || isBlocked)\n ? (e: React.MouseEvent<Element> | React.KeyboardEvent<Element>) =>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n option.action?.(e as any)\n : undefined\n }\n />\n )\n }\n\n return (\n <div\n id={id}\n className={doClassnames([\n 'menu',\n 'recharged',\n `menu--${alignment?.toLocaleLowerCase().replace('_', '-')}`,\n ])}\n ref={this.selectMenuRef}\n >\n {type === 'ICON' ? (\n <Button\n type=\"icon\"\n icon={icon === undefined ? undefined : icon}\n customIcon={customIcon === undefined ? undefined : customIcon}\n state={isMenuOpen ? 'selected' : undefined}\n helper={helper === undefined ? undefined : helper}\n warning={warning === undefined ? undefined : warning}\n isLoading={state === 'LOADING'}\n isDisabled={state === 'DISABLED' || isBlocked}\n isNew={isNew}\n ref={this.buttonRef}\n action={(e) =>\n !(state === 'DISABLED' || isBlocked)\n ? this.onOpenMenu(e)\n : undefined\n }\n aria-label={label}\n aria-haspopup=\"true\"\n aria-controls={`menu-${id}`}\n aria-expanded={isMenuOpen}\n />\n ) : (\n <Button\n type=\"primary\"\n label={label}\n hasMultipleActions\n helper={helper === undefined ? undefined : helper}\n warning={warning === undefined ? undefined : warning}\n isLoading={state === 'LOADING'}\n isDisabled={state === 'DISABLED' || isBlocked}\n isNew={isNew}\n ref={this.buttonRef}\n action={(e) =>\n !(state === 'DISABLED' || isBlocked)\n ? this.onOpenMenu(e)\n : undefined\n }\n aria-label={label}\n aria-haspopup=\"true\"\n aria-controls={`menu-${id}`}\n aria-expanded={isMenuOpen}\n />\n )}\n {(() => {\n if (isMenuOpen)\n return (\n <div\n id={`menu-${id}`}\n className=\"floating-menu\"\n style={{\n position: 'absolute',\n zIndex: 99,\n visibility:\n containerId === undefined && this.state.isMenuVisible\n ? 'visible'\n : 'hidden',\n }}\n ref={this.listRef}\n >\n <ActionsList\n options={options}\n selected={selected}\n direction={alignment?.includes('LEFT') ? 'RIGHT' : 'LEFT'}\n containerId={containerId}\n onCancellation={() => this.setState({ isMenuOpen: false })}\n ref={this.actionsListRef}\n menuRef={this.menuRef}\n subMenuRef={this.subMenuRef}\n />\n </div>\n )\n return null\n })()}\n </div>\n )\n }\n}\n"],"names":["Menu","React","props","e","target","isMenuOpen","containerId","alignment","menuRect","buttonRect","adjustedTop","adjustedLeft","shouldTransformY","shouldTransformX","isTopAlignment","baseTransform","originalTop","adjustment","containerElement","container","button","diffTop","diffBottom","id","type","label","state","icon","helper","warning","customIcon","options","selected","isBlocked","isNew","flattenOptions","flat","option","activeOptions","jsx","Button","jsxs","doClassnames","ActionsList"],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
|
|
2
|
+
export interface AvatarProps {
|
|
3
|
+
/**
|
|
4
|
+
* URL of the avatar image
|
|
5
|
+
* @default 'https://www.gravatar.com/avatar'
|
|
6
|
+
*/
|
|
7
|
+
avatar?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Full name of the user
|
|
10
|
+
* @default 'John Doe'
|
|
11
|
+
*/
|
|
12
|
+
fullName?: string;
|
|
13
|
+
/**
|
|
14
|
+
* Additional content to display alongside the avatar
|
|
15
|
+
*/
|
|
16
|
+
complementarySlot?: React.ReactNode;
|
|
17
|
+
/**
|
|
18
|
+
* Whether to use accented text style
|
|
19
|
+
* @default false
|
|
20
|
+
*/
|
|
21
|
+
isAccented?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Whether to use inverted color scheme
|
|
24
|
+
* @default false
|
|
25
|
+
*/
|
|
26
|
+
isInverted?: boolean;
|
|
27
|
+
}
|
|
28
|
+
declare const Avatar: (props: AvatarProps) => import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
export default Avatar;
|
|
30
|
+
//# sourceMappingURL=Avatar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../../src/components/assets/avatar/Avatar.tsx"],"names":[],"mappings":";AAEA,OAAO,eAAe,CAAA;AAEtB,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACnC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,QAAA,MAAM,MAAM,UAAW,WAAW,4CAyCjC,CAAA;AAED,eAAe,MAAM,CAAA"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import '../../../assets/Avatar.css';
|
|
2
|
+
import { jsxs as n, jsx as e } from "react/jsx-runtime";
|
|
3
|
+
import t from "../../../styles/texts/texts.module.js";
|
|
4
|
+
import { t as s } from "../../../do-classnames-DSDFCvzy.js";
|
|
5
|
+
const v = (r) => {
|
|
6
|
+
const {
|
|
7
|
+
avatar: l = "https://www.gravatar.com/avatar",
|
|
8
|
+
fullName: a = "John Doe",
|
|
9
|
+
complementarySlot: o,
|
|
10
|
+
isAccented: m = !1,
|
|
11
|
+
isInverted: c = !1
|
|
12
|
+
} = r;
|
|
13
|
+
return /* @__PURE__ */ n(
|
|
14
|
+
"div",
|
|
15
|
+
{
|
|
16
|
+
className: s(["user", c && "user--inverted"]),
|
|
17
|
+
role: "group",
|
|
18
|
+
children: [
|
|
19
|
+
/* @__PURE__ */ e("div", { className: "user__avatar", children: /* @__PURE__ */ e(
|
|
20
|
+
"img",
|
|
21
|
+
{
|
|
22
|
+
src: l,
|
|
23
|
+
alt: a,
|
|
24
|
+
role: "img"
|
|
25
|
+
}
|
|
26
|
+
) }),
|
|
27
|
+
/* @__PURE__ */ e(
|
|
28
|
+
"span",
|
|
29
|
+
{
|
|
30
|
+
className: s([
|
|
31
|
+
"user__name",
|
|
32
|
+
t.type,
|
|
33
|
+
!m && t["type--secondary"]
|
|
34
|
+
]),
|
|
35
|
+
role: "text",
|
|
36
|
+
children: a
|
|
37
|
+
}
|
|
38
|
+
),
|
|
39
|
+
o && /* @__PURE__ */ e(
|
|
40
|
+
"div",
|
|
41
|
+
{
|
|
42
|
+
className: "user__complementary-slot",
|
|
43
|
+
role: "complementary",
|
|
44
|
+
children: r.complementarySlot
|
|
45
|
+
}
|
|
46
|
+
)
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
);
|
|
50
|
+
};
|
|
51
|
+
export {
|
|
52
|
+
v as default
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=Avatar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Avatar.js","sources":["../../../../src/components/assets/avatar/Avatar.tsx"],"sourcesContent":["import texts from '@styles/texts/texts.module.scss'\nimport { doClassnames } from '@a_ng_d/figmug-utils'\nimport './avatar.scss'\n\nexport interface AvatarProps {\n /**\n * URL of the avatar image\n * @default 'https://www.gravatar.com/avatar'\n */\n avatar?: string\n /**\n * Full name of the user\n * @default 'John Doe'\n */\n fullName?: string\n /**\n * Additional content to display alongside the avatar\n */\n complementarySlot?: React.ReactNode\n /**\n * Whether to use accented text style\n * @default false\n */\n isAccented?: boolean\n /**\n * Whether to use inverted color scheme\n * @default false\n */\n isInverted?: boolean\n}\n\nconst Avatar = (props: AvatarProps) => {\n const {\n avatar = 'https://www.gravatar.com/avatar',\n fullName = 'John Doe',\n complementarySlot,\n isAccented = false,\n isInverted = false,\n } = props\n\n return (\n <div\n className={doClassnames(['user', isInverted && 'user--inverted'])}\n role=\"group\"\n >\n <div className=\"user__avatar\">\n <img\n src={avatar}\n alt={fullName}\n role=\"img\"\n />\n </div>\n <span\n className={doClassnames([\n 'user__name',\n texts.type,\n !isAccented && texts['type--secondary'],\n ])}\n role=\"text\"\n >\n {fullName}\n </span>\n {complementarySlot && (\n <div\n className=\"user__complementary-slot\"\n role=\"complementary\"\n >\n {props.complementarySlot}\n </div>\n )}\n </div>\n )\n}\n\nexport default Avatar\n"],"names":["Avatar","props","avatar","fullName","complementarySlot","isAccented","isInverted","jsxs","doClassnames","jsx","texts"],"mappings":";;;AA+BA,MAAMA,IAAS,CAACC,MAAuB;AACrC,QAAM;AAAA,IACJ,QAAAC,IAAS;AAAA,IACT,UAAAC,IAAW;AAAA,IACX,mBAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,IACb,YAAAC,IAAa;AAAA,EAAA,IACXL;AAEJ,SACE,gBAAAM;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAa,CAAC,QAAQF,KAAc,gBAAgB,CAAC;AAAA,MAChE,MAAK;AAAA,MAEL,UAAA;AAAA,QAAA,gBAAAG,EAAC,OAAA,EAAI,WAAU,gBACb,UAAA,gBAAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAKP;AAAA,YACL,KAAKC;AAAA,YACL,MAAK;AAAA,UAAA;AAAA,QAAA,GAET;AAAA,QACA,gBAAAM;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWD,EAAa;AAAA,cACtB;AAAA,cACAE,EAAM;AAAA,cACN,CAACL,KAAcK,EAAM,iBAAiB;AAAA,YAAA,CACvC;AAAA,YACD,MAAK;AAAA,YAEJ,UAAAP;AAAA,UAAA;AAAA,QAAA;AAAA,QAEFC,KACC,gBAAAK;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,MAAK;AAAA,YAEJ,UAAAR,EAAM;AAAA,UAAA;AAAA,QAAA;AAAA,MACT;AAAA,IAAA;AAAA,EAAA;AAIR;"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { IconList } from '../../../types/icon.types';
|
|
2
|
+
|
|
3
|
+
export interface IconProps {
|
|
4
|
+
/**
|
|
5
|
+
* Type of icon to display
|
|
6
|
+
* @default 'PICTO'
|
|
7
|
+
*/
|
|
8
|
+
type?: 'PICTO' | 'LETTER';
|
|
9
|
+
/**
|
|
10
|
+
* Name of the pictogram icon (when type is PICTO)
|
|
11
|
+
*/
|
|
12
|
+
iconName?: IconList;
|
|
13
|
+
/**
|
|
14
|
+
* Letter to display (when type is LETTER)
|
|
15
|
+
*/
|
|
16
|
+
iconLetter?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Custom CSS class to apply
|
|
19
|
+
*/
|
|
20
|
+
customClassName?: string;
|
|
21
|
+
/**
|
|
22
|
+
* ARIA role for accessibility
|
|
23
|
+
*/
|
|
24
|
+
role?: string;
|
|
25
|
+
}
|
|
26
|
+
export declare const Icon: (props: IconProps) => import("react/jsx-runtime").JSX.Element;
|
|
27
|
+
export default Icon;
|
|
28
|
+
//# sourceMappingURL=Icon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../../../src/components/assets/icon/Icon.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,aAAa,CAAA;AAEpB,MAAM,WAAW,SAAS;IACxB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;IACzB;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,eAAO,MAAM,IAAI,UAAW,SAAS,4CAmCpC,CAAA;AAED,eAAe,IAAI,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Icon.figma.d.ts","sourceRoot":"","sources":["../../../../src/components/assets/icon/Icon.figma.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { i as o } from "../../../index_react-CmuCVQet.js";
|
|
3
|
+
import { Icon as i } from "./Icon.js";
|
|
4
|
+
o.figma.connect(
|
|
5
|
+
i,
|
|
6
|
+
"https://www.figma.com/design/QlBdsfEcaUsGBzqA20xbNi/Unoff?node-id=378:1109",
|
|
7
|
+
{
|
|
8
|
+
props: {
|
|
9
|
+
iconName: o.figma.enum("name", {
|
|
10
|
+
adjust: "adjust",
|
|
11
|
+
info: "info",
|
|
12
|
+
close: "close",
|
|
13
|
+
check: "check",
|
|
14
|
+
plus: "plus",
|
|
15
|
+
minus: "minus"
|
|
16
|
+
})
|
|
17
|
+
},
|
|
18
|
+
example: (m) => /* @__PURE__ */ e(
|
|
19
|
+
i,
|
|
20
|
+
{
|
|
21
|
+
type: "PICTO",
|
|
22
|
+
iconName: m.iconName
|
|
23
|
+
}
|
|
24
|
+
)
|
|
25
|
+
}
|
|
26
|
+
);
|
|
27
|
+
//# sourceMappingURL=Icon.figma.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Icon.figma.js","sources":["../../../../src/components/assets/icon/Icon.figma.tsx"],"sourcesContent":["import { figma } from '@figma/code-connect'\nimport Icon from './Icon'\n\nfigma.connect(\n Icon,\n 'https://www.figma.com/design/QlBdsfEcaUsGBzqA20xbNi/Unoff?node-id=378:1109',\n {\n props: {\n iconName: figma.enum('name', {\n adjust: 'adjust',\n info: 'info',\n close: 'close',\n check: 'check',\n plus: 'plus',\n minus: 'minus',\n }),\n },\n example: (props) => (\n <Icon\n type=\"PICTO\"\n iconName={props.iconName}\n />\n ),\n }\n)\n"],"names":["figma","Icon","props","jsx"],"mappings":";;;AAGAA,EAAAA,MAAM;AAAA,EACJC;AAAA,EACA;AAAA,EACA;AAAA,IACE,OAAO;AAAA,MACL,UAAUD,EAAAA,MAAM,KAAK,QAAQ;AAAA,QAC3B,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,MAAA,CACR;AAAA,IAAA;AAAA,IAEH,SAAS,CAACE,MACR,gBAAAC;AAAA,MAACF;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,UAAUC,EAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EAClB;AAGN;"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import '../../../assets/Icon.css';
|
|
2
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
3
|
+
import l from "../../../styles/texts/texts.module.js";
|
|
4
|
+
import i from "../../../styles/icons/icons.module.js";
|
|
5
|
+
import { t as c } from "../../../do-classnames-DSDFCvzy.js";
|
|
6
|
+
const u = (n) => {
|
|
7
|
+
const { type: a = "PICTO", iconName: e, iconLetter: t, customClassName: r } = n, s = () => /* @__PURE__ */ o(
|
|
8
|
+
"div",
|
|
9
|
+
{
|
|
10
|
+
className: "icon-box icon-box--letter",
|
|
11
|
+
role: "img",
|
|
12
|
+
"aria-label": t,
|
|
13
|
+
children: /* @__PURE__ */ o("span", { className: c([l.type, r]), children: t })
|
|
14
|
+
}
|
|
15
|
+
), m = () => /* @__PURE__ */ o(
|
|
16
|
+
"div",
|
|
17
|
+
{
|
|
18
|
+
className: c([
|
|
19
|
+
"icon-box",
|
|
20
|
+
"icon-box--picto",
|
|
21
|
+
i.icon,
|
|
22
|
+
i[`icon--${e}`],
|
|
23
|
+
r
|
|
24
|
+
]),
|
|
25
|
+
role: "img",
|
|
26
|
+
"aria-label": e
|
|
27
|
+
}
|
|
28
|
+
);
|
|
29
|
+
return a === "PICTO" ? /* @__PURE__ */ o(m, {}) : /* @__PURE__ */ o(s, {});
|
|
30
|
+
};
|
|
31
|
+
export {
|
|
32
|
+
u as Icon,
|
|
33
|
+
u as default
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=Icon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Icon.js","sources":["../../../../src/components/assets/icon/Icon.tsx"],"sourcesContent":["import texts from '@styles/texts/texts.module.scss'\nimport icons from '@styles/icons/icons.module.scss'\nimport { doClassnames } from '@a_ng_d/figmug-utils'\nimport type { IconList } from '@tps/icon.types'\nimport './icon.scss'\n\nexport interface IconProps {\n /**\n * Type of icon to display\n * @default 'PICTO'\n */\n type?: 'PICTO' | 'LETTER'\n /**\n * Name of the pictogram icon (when type is PICTO)\n */\n iconName?: IconList\n /**\n * Letter to display (when type is LETTER)\n */\n iconLetter?: string\n /**\n * Custom CSS class to apply\n */\n customClassName?: string\n /**\n * ARIA role for accessibility\n */\n role?: string\n}\n\nexport const Icon = (props: IconProps) => {\n const { type = 'PICTO', iconName, iconLetter, customClassName } = props\n\n const Letter = () => {\n return (\n <div\n className=\"icon-box icon-box--letter\"\n role=\"img\"\n aria-label={iconLetter}\n >\n <span className={doClassnames([texts.type, customClassName])}>\n {iconLetter}\n </span>\n </div>\n )\n }\n\n const Pictogram = () => {\n return (\n <div\n className={doClassnames([\n 'icon-box',\n 'icon-box--picto',\n icons.icon,\n icons[`icon--${iconName}`],\n customClassName,\n ])}\n role=\"img\"\n aria-label={iconName}\n />\n )\n }\n\n if (type === 'PICTO') return <Pictogram />\n else return <Letter />\n}\n\nexport default Icon\n"],"names":["Icon","props","type","iconName","iconLetter","customClassName","Letter","jsx","doClassnames","texts","Pictogram","icons"],"mappings":";;;;AA8BO,MAAMA,IAAO,CAACC,MAAqB;AACxC,QAAM,EAAE,MAAAC,IAAO,SAAS,UAAAC,GAAU,YAAAC,GAAY,iBAAAC,MAAoBJ,GAE5DK,IAAS,MAEX,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,MAAK;AAAA,MACL,cAAYH;AAAA,MAEZ,UAAA,gBAAAG,EAAC,QAAA,EAAK,WAAWC,EAAa,CAACC,EAAM,MAAMJ,CAAe,CAAC,GACxD,UAAAD,EAAA,CACH;AAAA,IAAA;AAAA,EAAA,GAKAM,IAAY,MAEd,gBAAAH;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAa;AAAA,QACtB;AAAA,QACA;AAAA,QACAG,EAAM;AAAA,QACNA,EAAM,SAASR,CAAQ,EAAE;AAAA,QACzBE;AAAA,MAAA,CACD;AAAA,MACD,MAAK;AAAA,MACL,cAAYF;AAAA,IAAA;AAAA,EAAA;AAKlB,SAAID,MAAS,UAAgB,gBAAAK,EAACG,GAAA,CAAA,CAAU,sBAC3BJ,GAAA,EAAO;AACtB;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
|
|
2
|
+
export type SectionTitleProps = {
|
|
3
|
+
/**
|
|
4
|
+
* Text label of the section title
|
|
5
|
+
*/
|
|
6
|
+
label: string;
|
|
7
|
+
/**
|
|
8
|
+
* Optional indicator (number or text) displayed in parentheses
|
|
9
|
+
*/
|
|
10
|
+
indicator?: string | number;
|
|
11
|
+
/**
|
|
12
|
+
* Helper content displayed in a tooltip icon
|
|
13
|
+
*/
|
|
14
|
+
helper?: string | React.ReactNode;
|
|
15
|
+
/**
|
|
16
|
+
* HTML id attribute for the title
|
|
17
|
+
*/
|
|
18
|
+
id?: string;
|
|
19
|
+
};
|
|
20
|
+
declare const SectionTitle: (props: SectionTitleProps) => import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export default SectionTitle;
|
|
22
|
+
//# sourceMappingURL=SectionTitle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SectionTitle.d.ts","sourceRoot":"","sources":["../../../../src/components/assets/section-title/SectionTitle.tsx"],"names":[],"mappings":";AAGA,OAAO,sBAAsB,CAAA;AAE7B,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC3B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAA;IACjC;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,QAAA,MAAM,YAAY,UAAW,iBAAiB,4CA8B7C,CAAA;AACD,eAAe,YAAY,CAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import '../../../assets/SectionTitle.css';
|
|
2
|
+
import { jsxs as l, jsx as t } from "react/jsx-runtime";
|
|
3
|
+
import i from "../../../styles/texts/texts.module.js";
|
|
4
|
+
import a from "../../tags/icon-chip/IconChip.js";
|
|
5
|
+
import { t as c } from "../../../do-classnames-DSDFCvzy.js";
|
|
6
|
+
const h = (n) => {
|
|
7
|
+
const { label: r, indicator: e, helper: o, id: s } = n;
|
|
8
|
+
return /* @__PURE__ */ l("div", { className: "section-title", children: [
|
|
9
|
+
/* @__PURE__ */ t(
|
|
10
|
+
"div",
|
|
11
|
+
{
|
|
12
|
+
className: c([
|
|
13
|
+
"section-title__title",
|
|
14
|
+
i["section-title"],
|
|
15
|
+
i["type--truncated"]
|
|
16
|
+
]),
|
|
17
|
+
id: s,
|
|
18
|
+
children: r
|
|
19
|
+
}
|
|
20
|
+
),
|
|
21
|
+
e !== void 0 && /* @__PURE__ */ t(
|
|
22
|
+
"div",
|
|
23
|
+
{
|
|
24
|
+
className: c(["section-title__indicator", i.type]),
|
|
25
|
+
children: `(${e})`
|
|
26
|
+
}
|
|
27
|
+
),
|
|
28
|
+
o !== void 0 && /* @__PURE__ */ t(
|
|
29
|
+
a,
|
|
30
|
+
{
|
|
31
|
+
iconType: "PICTO",
|
|
32
|
+
iconName: "info",
|
|
33
|
+
text: o,
|
|
34
|
+
type: "MULTI_LINE"
|
|
35
|
+
}
|
|
36
|
+
)
|
|
37
|
+
] });
|
|
38
|
+
};
|
|
39
|
+
export {
|
|
40
|
+
h as default
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=SectionTitle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SectionTitle.js","sources":["../../../../src/components/assets/section-title/SectionTitle.tsx"],"sourcesContent":["import texts from '@styles/texts/texts.module.scss'\nimport IconChip from '@components/tags/icon-chip/IconChip'\nimport { doClassnames } from '@a_ng_d/figmug-utils'\nimport './section-title.scss'\n\nexport type SectionTitleProps = {\n /**\n * Text label of the section title\n */\n label: string\n /**\n * Optional indicator (number or text) displayed in parentheses\n */\n indicator?: string | number\n /**\n * Helper content displayed in a tooltip icon\n */\n helper?: string | React.ReactNode\n /**\n * HTML id attribute for the title\n */\n id?: string\n}\n\nconst SectionTitle = (props: SectionTitleProps) => {\n const { label, indicator, helper, id } = props\n\n return (\n <div className=\"section-title\">\n <div\n className={doClassnames([\n 'section-title__title',\n texts['section-title'],\n texts['type--truncated'],\n ])}\n id={id}\n >\n {label}\n </div>\n {indicator !== undefined && (\n <div\n className={doClassnames(['section-title__indicator', texts.type])}\n >{`(${indicator})`}</div>\n )}\n {helper !== undefined && (\n <IconChip\n iconType=\"PICTO\"\n iconName=\"info\"\n text={helper}\n type=\"MULTI_LINE\"\n />\n )}\n </div>\n )\n}\nexport default SectionTitle\n"],"names":["SectionTitle","props","label","indicator","helper","id","jsxs","jsx","doClassnames","texts","IconChip"],"mappings":";;;;AAwBA,MAAMA,IAAe,CAACC,MAA6B;AACjD,QAAM,EAAE,OAAAC,GAAO,WAAAC,GAAW,QAAAC,GAAQ,IAAAC,MAAOJ;AAEzC,SACE,gBAAAK,EAAC,OAAA,EAAI,WAAU,iBACb,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWC,EAAa;AAAA,UACtB;AAAA,UACAC,EAAM,eAAe;AAAA,UACrBA,EAAM,iBAAiB;AAAA,QAAA,CACxB;AAAA,QACD,IAAAJ;AAAA,QAEC,UAAAH;AAAA,MAAA;AAAA,IAAA;AAAA,IAEFC,MAAc,UACb,gBAAAI;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWC,EAAa,CAAC,4BAA4BC,EAAM,IAAI,CAAC;AAAA,QAChE,cAAIN,CAAS;AAAA,MAAA;AAAA,IAAA;AAAA,IAEhBC,MAAW,UACV,gBAAAG;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,UAAS;AAAA,QACT,UAAS;AAAA,QACT,MAAMN;AAAA,QACN,MAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EACP,GAEJ;AAEJ;"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
|
|
2
|
+
export type TextProps = {
|
|
3
|
+
/**
|
|
4
|
+
* Text content
|
|
5
|
+
*/
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
/**
|
|
8
|
+
* Text size
|
|
9
|
+
*/
|
|
10
|
+
size?: 'default' | 'small' | 'large' | 'xlarge';
|
|
11
|
+
/**
|
|
12
|
+
* Text weight
|
|
13
|
+
*/
|
|
14
|
+
weight?: 'default' | 'medium' | 'bold';
|
|
15
|
+
/**
|
|
16
|
+
* Text color
|
|
17
|
+
*/
|
|
18
|
+
color?: 'primary' | 'secondary' | 'tertiary' | 'inverse' | 'success' | 'warning' | 'alert';
|
|
19
|
+
/**
|
|
20
|
+
* Truncate text if too long (adds ...)
|
|
21
|
+
*/
|
|
22
|
+
truncate?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Optional ID for the text
|
|
25
|
+
*/
|
|
26
|
+
id?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Additional CSS class
|
|
29
|
+
*/
|
|
30
|
+
className?: string;
|
|
31
|
+
};
|
|
32
|
+
declare const Text: (props: TextProps) => import("react/jsx-runtime").JSX.Element;
|
|
33
|
+
export default Text;
|
|
34
|
+
//# sourceMappingURL=Text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../../src/components/assets/text/Text.tsx"],"names":[],"mappings":";AAEA,OAAO,aAAa,CAAA;AAEpB,MAAM,MAAM,SAAS,GAAG;IACtB;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAA;IAC/C;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAA;IACtC;;OAEG;IACH,KAAK,CAAC,EACF,SAAS,GACT,WAAW,GACX,UAAU,GACV,SAAS,GACT,SAAS,GACT,SAAS,GACT,OAAO,CAAA;IACX;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAA;IACX;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,QAAA,MAAM,IAAI,UAAW,SAAS,4CA6B7B,CAAA;AAED,eAAe,IAAI,CAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import '../../../assets/Text.css';
|
|
2
|
+
import { jsx as i } from "react/jsx-runtime";
|
|
3
|
+
import t from "../../../styles/texts/texts.module.js";
|
|
4
|
+
import { t as d } from "../../../do-classnames-DSDFCvzy.js";
|
|
5
|
+
const y = (s) => {
|
|
6
|
+
const {
|
|
7
|
+
children: o,
|
|
8
|
+
size: e = "default",
|
|
9
|
+
weight: a = "default",
|
|
10
|
+
color: r = "primary",
|
|
11
|
+
truncate: l = !1,
|
|
12
|
+
id: m,
|
|
13
|
+
className: p
|
|
14
|
+
} = s, c = [
|
|
15
|
+
"text",
|
|
16
|
+
t.type,
|
|
17
|
+
e !== "default" && t[`type--${e}`],
|
|
18
|
+
a !== "default" && t[`type--${a}`],
|
|
19
|
+
r !== "primary" && t[`type--${r}`],
|
|
20
|
+
l && t["type--truncated"],
|
|
21
|
+
p
|
|
22
|
+
];
|
|
23
|
+
return /* @__PURE__ */ i(
|
|
24
|
+
"div",
|
|
25
|
+
{
|
|
26
|
+
className: d(c),
|
|
27
|
+
id: m,
|
|
28
|
+
children: o
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
};
|
|
32
|
+
export {
|
|
33
|
+
y as default
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=Text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Text.js","sources":["../../../../src/components/assets/text/Text.tsx"],"sourcesContent":["import texts from '@styles/texts/texts.module.scss'\nimport { doClassnames } from '@a_ng_d/figmug-utils'\nimport './text.scss'\n\nexport type TextProps = {\n /**\n * Text content\n */\n children: React.ReactNode\n /**\n * Text size\n */\n size?: 'default' | 'small' | 'large' | 'xlarge'\n /**\n * Text weight\n */\n weight?: 'default' | 'medium' | 'bold'\n /**\n * Text color\n */\n color?:\n | 'primary'\n | 'secondary'\n | 'tertiary'\n | 'inverse'\n | 'success'\n | 'warning'\n | 'alert'\n /**\n * Truncate text if too long (adds ...)\n */\n truncate?: boolean\n /**\n * Optional ID for the text\n */\n id?: string\n /**\n * Additional CSS class\n */\n className?: string\n}\n\nconst Text = (props: TextProps) => {\n const {\n children,\n size = 'default',\n weight = 'default',\n color = 'primary',\n truncate = false,\n id,\n className,\n } = props\n\n const classNames = [\n 'text',\n texts.type,\n size !== 'default' && texts[`type--${size}`],\n weight !== 'default' && texts[`type--${weight}`],\n color !== 'primary' && texts[`type--${color}`],\n truncate && texts['type--truncated'],\n className,\n ]\n\n return (\n <div\n className={doClassnames(classNames)}\n id={id}\n >\n {children}\n </div>\n )\n}\n\nexport default Text\n"],"names":["Text","props","children","size","weight","color","truncate","id","className","classNames","texts","jsx","doClassnames"],"mappings":";;;AA0CA,MAAMA,IAAO,CAACC,MAAqB;AACjC,QAAM;AAAA,IACJ,UAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,QAAAC,IAAS;AAAA,IACT,OAAAC,IAAQ;AAAA,IACR,UAAAC,IAAW;AAAA,IACX,IAAAC;AAAA,IACA,WAAAC;AAAA,EAAA,IACEP,GAEEQ,IAAa;AAAA,IACjB;AAAA,IACAC,EAAM;AAAA,IACNP,MAAS,aAAaO,EAAM,SAASP,CAAI,EAAE;AAAA,IAC3CC,MAAW,aAAaM,EAAM,SAASN,CAAM,EAAE;AAAA,IAC/CC,MAAU,aAAaK,EAAM,SAASL,CAAK,EAAE;AAAA,IAC7CC,KAAYI,EAAM,iBAAiB;AAAA,IACnCF;AAAA,EAAA;AAGF,SACE,gBAAAG;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAaH,CAAU;AAAA,MAClC,IAAAF;AAAA,MAEC,UAAAL;AAAA,IAAA;AAAA,EAAA;AAGP;"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
|
|
2
|
+
export interface ThumbnailProps {
|
|
3
|
+
/**
|
|
4
|
+
* Image source URL to display
|
|
5
|
+
*/
|
|
6
|
+
src: string;
|
|
7
|
+
/**
|
|
8
|
+
* Width of the thumbnail
|
|
9
|
+
* @default '100%'
|
|
10
|
+
*/
|
|
11
|
+
width?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Height of the thumbnail
|
|
14
|
+
* @default '100%'
|
|
15
|
+
*/
|
|
16
|
+
height?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Alt text for the image
|
|
19
|
+
* @default 'Image thumbnail'
|
|
20
|
+
*/
|
|
21
|
+
alt?: string;
|
|
22
|
+
}
|
|
23
|
+
declare const Thumbnail: (props: ThumbnailProps) => import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
export default Thumbnail;
|
|
25
|
+
//# sourceMappingURL=Thumbnail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Thumbnail.d.ts","sourceRoot":"","sources":["../../../../src/components/assets/thumbnail/Thumbnail.tsx"],"names":[],"mappings":"AAEA,OAAO,kBAAkB,CAAA;AAEzB,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IACX;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,QAAA,MAAM,SAAS,UAAW,cAAc,4CA+DvC,CAAA;AAED,eAAe,SAAS,CAAA"}
|