@unoff/ui 1.21.0 → 1.21.1

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.
Files changed (112) hide show
  1. package/dist/assets/Card.css +1 -1
  2. package/dist/assets/Layout.css +1 -1
  3. package/dist/assets/MultipleSlider.css +1 -1
  4. package/dist/assets/Popin.css +1 -1
  5. package/dist/assets/SimpleSlider.css +1 -1
  6. package/dist/assets/styles/icons/icons.css +1 -1
  7. package/dist/assets/styles/icons/styles/figma.css +1 -1
  8. package/dist/components/actions/accordion/Accordion.d.ts.map +1 -1
  9. package/dist/components/actions/accordion/Accordion.js +6 -6
  10. package/dist/components/actions/accordion/Accordion.js.map +1 -1
  11. package/dist/components/actions/button/Button.d.ts.map +1 -1
  12. package/dist/components/actions/button/Button.figma.js +1 -1
  13. package/dist/components/actions/button/Button.js +87 -88
  14. package/dist/components/actions/button/Button.js.map +1 -1
  15. package/dist/components/actions/card/Card.d.ts.map +1 -1
  16. package/dist/components/actions/card/Card.js +1 -1
  17. package/dist/components/actions/card/Card.js.map +1 -1
  18. package/dist/components/actions/knob/Knob.js +1 -1
  19. package/dist/components/actions/knob/Knob.js.map +1 -1
  20. package/dist/components/actions/menu/Menu.js +4 -4
  21. package/dist/components/actions/menu/Menu.js.map +1 -1
  22. package/dist/components/assets/avatar/Avatar.js +6 -6
  23. package/dist/components/assets/avatar/Avatar.js.map +1 -1
  24. package/dist/components/assets/icon/Icon.figma.js +1 -1
  25. package/dist/components/assets/icon/Icon.js +6 -6
  26. package/dist/components/assets/icon/Icon.js.map +1 -1
  27. package/dist/components/assets/section-title/SectionTitle.js +1 -1
  28. package/dist/components/assets/section-title/SectionTitle.js.map +1 -1
  29. package/dist/components/assets/text/Text.js +1 -1
  30. package/dist/components/assets/text/Text.js.map +1 -1
  31. package/dist/components/dialogs/consent/Consent.js +1 -1
  32. package/dist/components/dialogs/consent/Consent.js.map +1 -1
  33. package/dist/components/dialogs/dialog/Dialog.d.ts.map +1 -1
  34. package/dist/components/dialogs/dialog/Dialog.js +4 -4
  35. package/dist/components/dialogs/dialog/Dialog.js.map +1 -1
  36. package/dist/components/dialogs/message/Message.js +1 -1
  37. package/dist/components/dialogs/message/Message.js.map +1 -1
  38. package/dist/components/dialogs/notification/Notification.js +4 -4
  39. package/dist/components/dialogs/notification/Notification.js.map +1 -1
  40. package/dist/components/dialogs/semantic-message/SemanticMessage.d.ts.map +1 -1
  41. package/dist/components/dialogs/semantic-message/SemanticMessage.js +1 -1
  42. package/dist/components/dialogs/semantic-message/SemanticMessage.js.map +1 -1
  43. package/dist/components/inputs/dropdown/Dropdown.figma.js +1 -1
  44. package/dist/components/inputs/dropdown/Dropdown.js +1 -1
  45. package/dist/components/inputs/dropdown/Dropdown.js.map +1 -1
  46. package/dist/components/inputs/dropzone/Dropzone.js +4 -4
  47. package/dist/components/inputs/dropzone/Dropzone.js.map +1 -1
  48. package/dist/components/inputs/input/Input.figma.js +1 -1
  49. package/dist/components/inputs/input/Input.js +1 -1
  50. package/dist/components/inputs/input/Input.js.map +1 -1
  51. package/dist/components/inputs/inputs-bar/InputsBar.js +4 -4
  52. package/dist/components/inputs/inputs-bar/InputsBar.js.map +1 -1
  53. package/dist/components/inputs/multiple-slider/MultipleSlider.d.ts +4 -4
  54. package/dist/components/inputs/multiple-slider/MultipleSlider.d.ts.map +1 -1
  55. package/dist/components/inputs/multiple-slider/MultipleSlider.js +174 -155
  56. package/dist/components/inputs/multiple-slider/MultipleSlider.js.map +1 -1
  57. package/dist/components/inputs/multiple-slider/actions/shiftLeftStop.d.ts +1 -1
  58. package/dist/components/inputs/multiple-slider/actions/shiftLeftStop.d.ts.map +1 -1
  59. package/dist/components/inputs/multiple-slider/actions/shiftRightStop.d.ts +1 -1
  60. package/dist/components/inputs/multiple-slider/actions/shiftRightStop.d.ts.map +1 -1
  61. package/dist/components/inputs/select/Select.js +1 -1
  62. package/dist/components/inputs/select/Select.js.map +1 -1
  63. package/dist/components/inputs/simple-slider/SimpleSlider.d.ts +1 -1
  64. package/dist/components/inputs/simple-slider/SimpleSlider.d.ts.map +1 -1
  65. package/dist/components/inputs/simple-slider/SimpleSlider.js +78 -69
  66. package/dist/components/inputs/simple-slider/SimpleSlider.js.map +1 -1
  67. package/dist/components/lists/actions-item/ActionsItem.js +1 -1
  68. package/dist/components/lists/actions-item/ActionsItem.js.map +1 -1
  69. package/dist/components/lists/actions-list/ActionsList.d.ts.map +1 -1
  70. package/dist/components/lists/actions-list/ActionsList.js +1 -1
  71. package/dist/components/lists/actions-list/ActionsList.js.map +1 -1
  72. package/dist/components/lists/color-item/ColorItem.js +1 -1
  73. package/dist/components/lists/color-item/ColorItem.js.map +1 -1
  74. package/dist/components/lists/draggable-item/DraggableItem.js +6 -6
  75. package/dist/components/lists/draggable-item/DraggableItem.js.map +1 -1
  76. package/dist/components/lists/keyboard-shortcut-item/KeyboardShortcutItem.js +1 -1
  77. package/dist/components/lists/keyboard-shortcut-item/KeyboardShortcutItem.js.map +1 -1
  78. package/dist/components/lists/sortable-list/SortableList.js.map +1 -1
  79. package/dist/components/lists/tabs/Tabs.d.ts.map +1 -1
  80. package/dist/components/lists/tabs/Tabs.figma.js +1 -1
  81. package/dist/components/lists/tabs/Tabs.js +1 -1
  82. package/dist/components/lists/tabs/Tabs.js.map +1 -1
  83. package/dist/components/slots/bar/Bar.js.map +1 -1
  84. package/dist/components/slots/draggable-window/DraggableWindow.d.ts.map +1 -1
  85. package/dist/components/slots/draggable-window/DraggableWindow.js +6 -6
  86. package/dist/components/slots/draggable-window/DraggableWindow.js.map +1 -1
  87. package/dist/components/slots/drawer/Drawer.js.map +1 -1
  88. package/dist/components/slots/form-item/FormItem.js +1 -1
  89. package/dist/components/slots/form-item/FormItem.js.map +1 -1
  90. package/dist/components/slots/layout/Layout.js.map +1 -1
  91. package/dist/components/slots/list/List.js +4 -4
  92. package/dist/components/slots/list/List.js.map +1 -1
  93. package/dist/components/slots/popin/Popin.js +1 -1
  94. package/dist/components/slots/popin/Popin.js.map +1 -1
  95. package/dist/components/slots/section/Section.js.map +1 -1
  96. package/dist/components/slots/simple-item/SimpleItem.js.map +1 -1
  97. package/dist/components/tags/chip/Chip.figma.js +1 -1
  98. package/dist/components/tags/chip/Chip.js +6 -6
  99. package/dist/components/tags/chip/Chip.js.map +1 -1
  100. package/dist/components/tags/color-chip/ColorChip.js.map +1 -1
  101. package/dist/components/tags/icon-chip/IconChip.d.ts.map +1 -1
  102. package/dist/components/tags/icon-chip/IconChip.js +4 -4
  103. package/dist/components/tags/icon-chip/IconChip.js.map +1 -1
  104. package/dist/components/tags/tooltip/Tooltip.js +1 -1
  105. package/dist/components/tags/tooltip/Tooltip.js.map +1 -1
  106. package/dist/do-classnames-DSDFCvzy.js.map +1 -1
  107. package/dist/do-map-2nhWP1KI.js.map +1 -1
  108. package/dist/index_react-BkjUklDQ.js +18392 -0
  109. package/dist/index_react-BkjUklDQ.js.map +1 -0
  110. package/package.json +3 -3
  111. package/dist/index_react-CmuCVQet.js +0 -13799
  112. package/dist/index_react-CmuCVQet.js.map +0 -1
@@ -1 +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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"}
1
+ {"version":3,"file":"Menu.js","sources":["../../../../src/components/actions/menu/Menu.tsx"],"sourcesContent":["import React from 'react'\nimport { doClassnames } from '@unoff/utils'\nimport ActionsList from '@components/lists/actions-list/ActionsList'\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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"}
@@ -1,7 +1,7 @@
1
1
  import '../../../assets/Avatar.css';
2
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";
3
+ import { t } from "../../../do-classnames-DSDFCvzy.js";
4
+ import s from "../../../styles/texts/texts.module.js";
5
5
  const v = (r) => {
6
6
  const {
7
7
  avatar: l = "https://www.gravatar.com/avatar",
@@ -13,7 +13,7 @@ const v = (r) => {
13
13
  return /* @__PURE__ */ n(
14
14
  "div",
15
15
  {
16
- className: s(["user", c && "user--inverted"]),
16
+ className: t(["user", c && "user--inverted"]),
17
17
  role: "group",
18
18
  children: [
19
19
  /* @__PURE__ */ e("div", { className: "user__avatar", children: /* @__PURE__ */ e(
@@ -27,10 +27,10 @@ const v = (r) => {
27
27
  /* @__PURE__ */ e(
28
28
  "span",
29
29
  {
30
- className: s([
30
+ className: t([
31
31
  "user__name",
32
- t.type,
33
- !m && t["type--secondary"]
32
+ s.type,
33
+ !m && s["type--secondary"]
34
34
  ]),
35
35
  role: "text",
36
36
  children: a
@@ -1 +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;"}
1
+ {"version":3,"file":"Avatar.js","sources":["../../../../src/components/assets/avatar/Avatar.tsx"],"sourcesContent":["import { doClassnames } from '@unoff/utils'\nimport texts from '@styles/texts/texts.module.scss'\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;"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as e } from "react/jsx-runtime";
2
- import { i as o } from "../../../index_react-CmuCVQet.js";
2
+ import { i as o } from "../../../index_react-BkjUklDQ.js";
3
3
  import { Icon as i } from "./Icon.js";
4
4
  o.figma.connect(
5
5
  i,
@@ -1,8 +1,8 @@
1
1
  import '../../../assets/Icon.css';
2
2
  import { jsx as o } from "react/jsx-runtime";
3
+ import { t as i } from "../../../do-classnames-DSDFCvzy.js";
3
4
  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";
5
+ import c from "../../../styles/icons/icons.module.js";
6
6
  const u = (n) => {
7
7
  const { type: a = "PICTO", iconName: e, iconLetter: t, customClassName: r } = n, s = () => /* @__PURE__ */ o(
8
8
  "div",
@@ -10,16 +10,16 @@ const u = (n) => {
10
10
  className: "icon-box icon-box--letter",
11
11
  role: "img",
12
12
  "aria-label": t,
13
- children: /* @__PURE__ */ o("span", { className: c([l.type, r]), children: t })
13
+ children: /* @__PURE__ */ o("span", { className: i([l.type, r]), children: t })
14
14
  }
15
15
  ), m = () => /* @__PURE__ */ o(
16
16
  "div",
17
17
  {
18
- className: c([
18
+ className: i([
19
19
  "icon-box",
20
20
  "icon-box--picto",
21
- i.icon,
22
- i[`icon--${e}`],
21
+ c.icon,
22
+ c[`icon--${e}`],
23
23
  r
24
24
  ]),
25
25
  role: "img",
@@ -1 +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;"}
1
+ {"version":3,"file":"Icon.js","sources":["../../../../src/components/assets/icon/Icon.tsx"],"sourcesContent":["import { doClassnames } from '@unoff/utils'\nimport texts from '@styles/texts/texts.module.scss'\nimport icons from '@styles/icons/icons.module.scss'\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;"}
@@ -1,8 +1,8 @@
1
1
  import '../../../assets/SectionTitle.css';
2
2
  import { jsxs as l, jsx as t } from "react/jsx-runtime";
3
+ import { t as c } from "../../../do-classnames-DSDFCvzy.js";
3
4
  import i from "../../../styles/texts/texts.module.js";
4
5
  import a from "../../tags/icon-chip/IconChip.js";
5
- import { t as c } from "../../../do-classnames-DSDFCvzy.js";
6
6
  const h = (n) => {
7
7
  const { label: r, indicator: e, helper: o, id: s } = n;
8
8
  return /* @__PURE__ */ l("div", { className: "section-title", children: [
@@ -1 +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;"}
1
+ {"version":3,"file":"SectionTitle.js","sources":["../../../../src/components/assets/section-title/SectionTitle.tsx"],"sourcesContent":["import { doClassnames } from '@unoff/utils'\nimport texts from '@styles/texts/texts.module.scss'\nimport IconChip from '@components/tags/icon-chip/IconChip'\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;"}
@@ -1,7 +1,7 @@
1
1
  import '../../../assets/Text.css';
2
2
  import { jsx as i } from "react/jsx-runtime";
3
- import t from "../../../styles/texts/texts.module.js";
4
3
  import { t as d } from "../../../do-classnames-DSDFCvzy.js";
4
+ import t from "../../../styles/texts/texts.module.js";
5
5
  const y = (s) => {
6
6
  const {
7
7
  children: o,
@@ -1 +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;"}
1
+ {"version":3,"file":"Text.js","sources":["../../../../src/components/assets/text/Text.tsx"],"sourcesContent":["import { doClassnames } from '@unoff/utils'\nimport texts from '@styles/texts/texts.module.scss'\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;"}
@@ -1,13 +1,13 @@
1
1
  import '../../../assets/Consent.css';
2
2
  import { jsxs as a, jsx as e } from "react/jsx-runtime";
3
3
  import u from "react";
4
+ import { t as r } from "../../../do-classnames-DSDFCvzy.js";
4
5
  import l from "../../../styles/texts/texts.module.js";
5
6
  import b from "../../../styles/layouts.module.js";
6
7
  import v from "../../slots/bar/Bar.js";
7
8
  import C from "../../inputs/select/Select.js";
8
9
  import N from "../../assets/thumbnail/Thumbnail.js";
9
10
  import i from "../../actions/button/Button.js";
10
- import { t as r } from "../../../do-classnames-DSDFCvzy.js";
11
11
  class B extends u.Component {
12
12
  constructor(n) {
13
13
  super(n), this.state = {
@@ -1 +1 @@
1
- {"version":3,"file":"Consent.js","sources":["../../../../src/components/dialogs/consent/Consent.tsx"],"sourcesContent":["import React from 'react'\nimport texts from '@styles/texts/texts.module.scss'\nimport layouts from '@styles/layouts.module.scss'\nimport Bar from '@components/slots/bar/Bar'\nimport Select from '@components/inputs/select/Select'\nimport Thumbnail from '@components/assets/thumbnail/Thumbnail'\nimport Button from '@components/actions/button/Button'\nimport { doClassnames } from '@a_ng_d/figmug-utils'\nimport type { ConsentConfiguration } from '@tps/consent.types'\nimport './consent.scss'\n\nexport interface ConsentProps {\n /**\n * Welcome message displayed at the top\n */\n welcomeMessage: string\n /**\n * Message describing the vendors\n */\n vendorsMessage: string\n /**\n * Privacy policy link configuration\n */\n privacyPolicy: {\n /** Label for the privacy policy link */\n label: string\n /** Click handler for the privacy policy */\n action: React.MouseEventHandler & React.KeyboardEventHandler\n }\n /**\n * Label for the \"more details\" toggle\n */\n moreDetailsLabel: string\n /**\n * Label for the \"less details\" toggle\n */\n lessDetailsLabel: string\n /**\n * Configuration for consent action buttons\n */\n consentActions: {\n /** Consent to all action */\n consent: {\n label: string\n action: (vendorsConsent: Array<ConsentConfiguration>) => void\n }\n /** Deny all action */\n deny: {\n label: string\n action: (vendorsConsent: Array<ConsentConfiguration>) => void\n }\n /** Save preferences action */\n save: {\n label: string\n action: (vendorsConsent: Array<ConsentConfiguration>) => void\n }\n }\n /**\n * Configuration for a valid vendor\n */\n validVendor: ConsentConfiguration\n /**\n * List of all vendors\n */\n vendorsList: Array<ConsentConfiguration>\n /**\n * Whether the consent dialog can be closed\n */\n canBeClosed?: boolean\n /**\n * Label for the close button\n */\n closeLabel?: string\n /**\n * Close button handler\n */\n onClose?: React.MouseEventHandler & React.KeyboardEventHandler\n}\n\nexport interface ConsentStates {\n isVendorsOpen: boolean\n vendorsConsent: Array<ConsentConfiguration>\n}\n\nexport default class Consent extends React.Component<\n ConsentProps,\n ConsentStates\n> {\n constructor(props: ConsentProps) {\n super(props)\n this.state = {\n isVendorsOpen: false,\n vendorsConsent: props.vendorsList,\n }\n }\n\n // Direct Actions\n onConsentAll = () => {\n const { vendorsList, consentActions } = this.props\n\n consentActions.consent.action(\n vendorsList.map((vendor) => ({\n ...vendor,\n isConsented: true,\n }))\n )\n }\n\n onDenyAll = () => {\n const { vendorsList, consentActions } = this.props\n\n consentActions.deny.action(\n vendorsList.map((vendor) => ({\n ...vendor,\n isConsented: false,\n }))\n )\n }\n\n onPartialConsent = () => {\n const { consentActions } = this.props\n const { vendorsConsent } = this.state\n\n consentActions.save.action(vendorsConsent)\n }\n\n // Handlers\n consentVendorsHandler = (index: number) => {\n const { vendorsConsent } = this.state\n\n this.setState({\n vendorsConsent: vendorsConsent.map((consent, i) => {\n if (i === index)\n return {\n ...consent,\n isConsented: !consent.isConsented,\n }\n return {\n ...consent,\n }\n }),\n })\n }\n\n // Templates\n WelcomeScreen = () => {\n const {\n welcomeMessage,\n privacyPolicy,\n moreDetailsLabel,\n consentActions,\n canBeClosed,\n closeLabel,\n onClose,\n } = this.props\n\n const { isVendorsOpen } = this.state\n\n return (\n <div\n className=\"consent__banner\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Cookie consent\"\n >\n <div\n className=\"consent__banner__message\"\n role=\"region\"\n >\n <div className={texts.type}>{welcomeMessage}</div>\n <Button\n type=\"tertiary\"\n label={privacyPolicy.label}\n action={privacyPolicy.action}\n aria-label={privacyPolicy.label}\n />\n </div>\n <Bar\n leftPartSlot={\n <Button\n type=\"tertiary\"\n label={moreDetailsLabel}\n action={() =>\n this.setState({\n isVendorsOpen: !isVendorsOpen,\n })\n }\n aria-label={moreDetailsLabel}\n aria-expanded={isVendorsOpen}\n />\n }\n rightPartSlot={\n <div\n className={doClassnames([\n 'consent__banner__actions',\n layouts['snackbar--medium'],\n ])}\n role=\"group\"\n >\n <Button\n type=\"secondary\"\n label={consentActions.deny.label}\n action={this.onDenyAll}\n aria-label={consentActions.deny.label}\n />\n <Button\n type=\"primary\"\n label={consentActions.consent.label}\n action={this.onConsentAll}\n aria-label={consentActions.consent.label}\n />\n {canBeClosed && (\n <Button\n type=\"icon\"\n icon=\"close\"\n helper={\n closeLabel !== undefined\n ? { label: closeLabel, pin: 'TOP' }\n : undefined\n }\n action={onClose}\n />\n )}\n </div>\n }\n padding=\"0\"\n />\n </div>\n )\n }\n\n DetailedVendorsList = () => {\n const {\n vendorsMessage,\n lessDetailsLabel,\n validVendor,\n vendorsList,\n consentActions,\n canBeClosed,\n closeLabel,\n onClose,\n } = this.props\n\n const { isVendorsOpen, vendorsConsent } = this.state\n\n return (\n <div\n className=\"consent__banner\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Cookie vendors consent preferences\"\n >\n <div\n className=\"consent__banner__content\"\n role=\"region\"\n >\n <div\n className={doClassnames(['consent__banner__message', texts.type])}\n role=\"status\"\n aria-live=\"polite\"\n >\n {vendorsMessage}\n </div>\n <ul\n className=\"consent__banner__list\"\n role=\"list\"\n >\n <li\n className=\"consent__banner__item\"\n role=\"listitem\"\n >\n <Bar\n leftPartSlot={\n <div className={layouts['snackbar--large']}>\n <div>\n <div\n className={doClassnames([\n 'consent__banner__item__title',\n texts['type--large'],\n texts.type,\n ])}\n role=\"heading\"\n aria-level={2}\n >\n {validVendor.name}\n </div>\n <div\n className={doClassnames([\n 'consent__banner__item__description',\n texts.type,\n ])}\n role=\"note\"\n >\n {validVendor.description}\n </div>\n </div>\n </div>\n }\n rightPartSlot={\n <div\n className=\"consent__banner__item__action\"\n role=\"switch\"\n aria-checked={validVendor.isConsented}\n aria-readonly=\"true\"\n >\n <Select\n id={`legit-user-consent`}\n type=\"SWITCH_BUTTON\"\n isChecked={validVendor.isConsented}\n isDisabled={true}\n />\n </div>\n }\n border={['BOTTOM']}\n padding=\"var(--size-pos-xxxsmall) 0 var(--size-pos-xxsmall) 0\"\n />\n </li>\n {vendorsList.map((vendor, index) => (\n <li\n key={index}\n className=\"consent__banner__item\"\n role=\"listitem\"\n >\n <Bar\n leftPartSlot={\n <div className={layouts['snackbar--large']}>\n <div\n className=\"consent__banner__item__icon\"\n role=\"img\"\n >\n <Thumbnail\n src={vendor.icon}\n width=\"32px\"\n height=\"32px\"\n />\n </div>\n <div>\n <div\n className={doClassnames([\n 'consent__banner__item__title',\n texts['type--large'],\n texts.type,\n ])}\n role=\"heading\"\n aria-level={2}\n >\n {vendor.name}\n </div>\n <div\n className={doClassnames([\n 'consent__banner__item__description',\n texts.type,\n ])}\n role=\"note\"\n >\n {vendor.description}\n </div>\n </div>\n </div>\n }\n rightPartSlot={\n <div\n className=\"consent__banner__item__action\"\n role=\"switch\"\n aria-checked={vendorsConsent[index].isConsented}\n >\n <Select\n id={`change-${vendor.id}-user-consent`}\n type=\"SWITCH_BUTTON\"\n isChecked={vendorsConsent[index].isConsented}\n action={() => this.consentVendorsHandler(index)}\n />\n </div>\n }\n border={\n index === vendorsConsent.length - 1 ? undefined : ['BOTTOM']\n }\n padding=\"var(--size-pos-xxxsmall) 0 var(--size-pos-xxsmall) 0\"\n />\n </li>\n ))}\n </ul>\n </div>\n <Bar\n leftPartSlot={\n <Button\n type=\"tertiary\"\n label={lessDetailsLabel}\n action={() =>\n this.setState({\n isVendorsOpen: !isVendorsOpen,\n })\n }\n aria-label={lessDetailsLabel}\n aria-expanded={!isVendorsOpen}\n />\n }\n rightPartSlot={\n <div\n className={doClassnames([\n 'consent__banner__actions',\n layouts['snackbar--medium'],\n ])}\n role=\"group\"\n >\n <Button\n type=\"secondary\"\n label={consentActions.deny.label}\n action={this.onDenyAll}\n aria-label={consentActions.deny.label}\n />\n <Button\n type=\"primary\"\n label={consentActions.save.label}\n action={this.onPartialConsent}\n aria-label={consentActions.save.label}\n isAutofocus\n />\n {canBeClosed && (\n <Button\n type=\"icon\"\n icon=\"close\"\n helper={\n closeLabel !== undefined\n ? { label: closeLabel, pin: 'TOP' }\n : undefined\n }\n action={onClose}\n />\n )}\n </div>\n }\n padding=\"0\"\n />\n </div>\n )\n }\n\n // Render\n render() {\n const { isVendorsOpen } = this.state\n\n if (isVendorsOpen)\n return (\n <dialog className=\"consent\">\n <this.DetailedVendorsList />\n </dialog>\n )\n return (\n <dialog className=\"consent\">\n <this.WelcomeScreen />\n </dialog>\n )\n }\n}\n"],"names":["Consent","React","props","vendorsList","consentActions","vendor","vendorsConsent","index","consent","i","welcomeMessage","privacyPolicy","moreDetailsLabel","canBeClosed","closeLabel","onClose","isVendorsOpen","jsxs","jsx","texts","Button","Bar","doClassnames","layouts","vendorsMessage","lessDetailsLabel","validVendor","Select","Thumbnail"],"mappings":"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"}
1
+ {"version":3,"file":"Consent.js","sources":["../../../../src/components/dialogs/consent/Consent.tsx"],"sourcesContent":["import React from 'react'\nimport { doClassnames } from '@unoff/utils'\nimport texts from '@styles/texts/texts.module.scss'\nimport layouts from '@styles/layouts.module.scss'\nimport Bar from '@components/slots/bar/Bar'\nimport Select from '@components/inputs/select/Select'\nimport Thumbnail from '@components/assets/thumbnail/Thumbnail'\nimport Button from '@components/actions/button/Button'\nimport type { ConsentConfiguration } from '@tps/consent.types'\nimport './consent.scss'\n\nexport interface ConsentProps {\n /**\n * Welcome message displayed at the top\n */\n welcomeMessage: string\n /**\n * Message describing the vendors\n */\n vendorsMessage: string\n /**\n * Privacy policy link configuration\n */\n privacyPolicy: {\n /** Label for the privacy policy link */\n label: string\n /** Click handler for the privacy policy */\n action: React.MouseEventHandler & React.KeyboardEventHandler\n }\n /**\n * Label for the \"more details\" toggle\n */\n moreDetailsLabel: string\n /**\n * Label for the \"less details\" toggle\n */\n lessDetailsLabel: string\n /**\n * Configuration for consent action buttons\n */\n consentActions: {\n /** Consent to all action */\n consent: {\n label: string\n action: (vendorsConsent: Array<ConsentConfiguration>) => void\n }\n /** Deny all action */\n deny: {\n label: string\n action: (vendorsConsent: Array<ConsentConfiguration>) => void\n }\n /** Save preferences action */\n save: {\n label: string\n action: (vendorsConsent: Array<ConsentConfiguration>) => void\n }\n }\n /**\n * Configuration for a valid vendor\n */\n validVendor: ConsentConfiguration\n /**\n * List of all vendors\n */\n vendorsList: Array<ConsentConfiguration>\n /**\n * Whether the consent dialog can be closed\n */\n canBeClosed?: boolean\n /**\n * Label for the close button\n */\n closeLabel?: string\n /**\n * Close button handler\n */\n onClose?: React.MouseEventHandler & React.KeyboardEventHandler\n}\n\nexport interface ConsentStates {\n isVendorsOpen: boolean\n vendorsConsent: Array<ConsentConfiguration>\n}\n\nexport default class Consent extends React.Component<\n ConsentProps,\n ConsentStates\n> {\n constructor(props: ConsentProps) {\n super(props)\n this.state = {\n isVendorsOpen: false,\n vendorsConsent: props.vendorsList,\n }\n }\n\n // Direct Actions\n onConsentAll = () => {\n const { vendorsList, consentActions } = this.props\n\n consentActions.consent.action(\n vendorsList.map((vendor) => ({\n ...vendor,\n isConsented: true,\n }))\n )\n }\n\n onDenyAll = () => {\n const { vendorsList, consentActions } = this.props\n\n consentActions.deny.action(\n vendorsList.map((vendor) => ({\n ...vendor,\n isConsented: false,\n }))\n )\n }\n\n onPartialConsent = () => {\n const { consentActions } = this.props\n const { vendorsConsent } = this.state\n\n consentActions.save.action(vendorsConsent)\n }\n\n // Handlers\n consentVendorsHandler = (index: number) => {\n const { vendorsConsent } = this.state\n\n this.setState({\n vendorsConsent: vendorsConsent.map((consent, i) => {\n if (i === index)\n return {\n ...consent,\n isConsented: !consent.isConsented,\n }\n return {\n ...consent,\n }\n }),\n })\n }\n\n // Templates\n WelcomeScreen = () => {\n const {\n welcomeMessage,\n privacyPolicy,\n moreDetailsLabel,\n consentActions,\n canBeClosed,\n closeLabel,\n onClose,\n } = this.props\n\n const { isVendorsOpen } = this.state\n\n return (\n <div\n className=\"consent__banner\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Cookie consent\"\n >\n <div\n className=\"consent__banner__message\"\n role=\"region\"\n >\n <div className={texts.type}>{welcomeMessage}</div>\n <Button\n type=\"tertiary\"\n label={privacyPolicy.label}\n action={privacyPolicy.action}\n aria-label={privacyPolicy.label}\n />\n </div>\n <Bar\n leftPartSlot={\n <Button\n type=\"tertiary\"\n label={moreDetailsLabel}\n action={() =>\n this.setState({\n isVendorsOpen: !isVendorsOpen,\n })\n }\n aria-label={moreDetailsLabel}\n aria-expanded={isVendorsOpen}\n />\n }\n rightPartSlot={\n <div\n className={doClassnames([\n 'consent__banner__actions',\n layouts['snackbar--medium'],\n ])}\n role=\"group\"\n >\n <Button\n type=\"secondary\"\n label={consentActions.deny.label}\n action={this.onDenyAll}\n aria-label={consentActions.deny.label}\n />\n <Button\n type=\"primary\"\n label={consentActions.consent.label}\n action={this.onConsentAll}\n aria-label={consentActions.consent.label}\n />\n {canBeClosed && (\n <Button\n type=\"icon\"\n icon=\"close\"\n helper={\n closeLabel !== undefined\n ? { label: closeLabel, pin: 'TOP' }\n : undefined\n }\n action={onClose}\n />\n )}\n </div>\n }\n padding=\"0\"\n />\n </div>\n )\n }\n\n DetailedVendorsList = () => {\n const {\n vendorsMessage,\n lessDetailsLabel,\n validVendor,\n vendorsList,\n consentActions,\n canBeClosed,\n closeLabel,\n onClose,\n } = this.props\n\n const { isVendorsOpen, vendorsConsent } = this.state\n\n return (\n <div\n className=\"consent__banner\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Cookie vendors consent preferences\"\n >\n <div\n className=\"consent__banner__content\"\n role=\"region\"\n >\n <div\n className={doClassnames(['consent__banner__message', texts.type])}\n role=\"status\"\n aria-live=\"polite\"\n >\n {vendorsMessage}\n </div>\n <ul\n className=\"consent__banner__list\"\n role=\"list\"\n >\n <li\n className=\"consent__banner__item\"\n role=\"listitem\"\n >\n <Bar\n leftPartSlot={\n <div className={layouts['snackbar--large']}>\n <div>\n <div\n className={doClassnames([\n 'consent__banner__item__title',\n texts['type--large'],\n texts.type,\n ])}\n role=\"heading\"\n aria-level={2}\n >\n {validVendor.name}\n </div>\n <div\n className={doClassnames([\n 'consent__banner__item__description',\n texts.type,\n ])}\n role=\"note\"\n >\n {validVendor.description}\n </div>\n </div>\n </div>\n }\n rightPartSlot={\n <div\n className=\"consent__banner__item__action\"\n role=\"switch\"\n aria-checked={validVendor.isConsented}\n aria-readonly=\"true\"\n >\n <Select\n id={`legit-user-consent`}\n type=\"SWITCH_BUTTON\"\n isChecked={validVendor.isConsented}\n isDisabled={true}\n />\n </div>\n }\n border={['BOTTOM']}\n padding=\"var(--size-pos-xxxsmall) 0 var(--size-pos-xxsmall) 0\"\n />\n </li>\n {vendorsList.map((vendor, index) => (\n <li\n key={index}\n className=\"consent__banner__item\"\n role=\"listitem\"\n >\n <Bar\n leftPartSlot={\n <div className={layouts['snackbar--large']}>\n <div\n className=\"consent__banner__item__icon\"\n role=\"img\"\n >\n <Thumbnail\n src={vendor.icon}\n width=\"32px\"\n height=\"32px\"\n />\n </div>\n <div>\n <div\n className={doClassnames([\n 'consent__banner__item__title',\n texts['type--large'],\n texts.type,\n ])}\n role=\"heading\"\n aria-level={2}\n >\n {vendor.name}\n </div>\n <div\n className={doClassnames([\n 'consent__banner__item__description',\n texts.type,\n ])}\n role=\"note\"\n >\n {vendor.description}\n </div>\n </div>\n </div>\n }\n rightPartSlot={\n <div\n className=\"consent__banner__item__action\"\n role=\"switch\"\n aria-checked={vendorsConsent[index].isConsented}\n >\n <Select\n id={`change-${vendor.id}-user-consent`}\n type=\"SWITCH_BUTTON\"\n isChecked={vendorsConsent[index].isConsented}\n action={() => this.consentVendorsHandler(index)}\n />\n </div>\n }\n border={\n index === vendorsConsent.length - 1 ? undefined : ['BOTTOM']\n }\n padding=\"var(--size-pos-xxxsmall) 0 var(--size-pos-xxsmall) 0\"\n />\n </li>\n ))}\n </ul>\n </div>\n <Bar\n leftPartSlot={\n <Button\n type=\"tertiary\"\n label={lessDetailsLabel}\n action={() =>\n this.setState({\n isVendorsOpen: !isVendorsOpen,\n })\n }\n aria-label={lessDetailsLabel}\n aria-expanded={!isVendorsOpen}\n />\n }\n rightPartSlot={\n <div\n className={doClassnames([\n 'consent__banner__actions',\n layouts['snackbar--medium'],\n ])}\n role=\"group\"\n >\n <Button\n type=\"secondary\"\n label={consentActions.deny.label}\n action={this.onDenyAll}\n aria-label={consentActions.deny.label}\n />\n <Button\n type=\"primary\"\n label={consentActions.save.label}\n action={this.onPartialConsent}\n aria-label={consentActions.save.label}\n isAutofocus\n />\n {canBeClosed && (\n <Button\n type=\"icon\"\n icon=\"close\"\n helper={\n closeLabel !== undefined\n ? { label: closeLabel, pin: 'TOP' }\n : undefined\n }\n action={onClose}\n />\n )}\n </div>\n }\n padding=\"0\"\n />\n </div>\n )\n }\n\n // Render\n render() {\n const { isVendorsOpen } = this.state\n\n if (isVendorsOpen)\n return (\n <dialog className=\"consent\">\n <this.DetailedVendorsList />\n </dialog>\n )\n return (\n <dialog className=\"consent\">\n <this.WelcomeScreen />\n </dialog>\n )\n }\n}\n"],"names":["Consent","React","props","vendorsList","consentActions","vendor","vendorsConsent","index","consent","i","welcomeMessage","privacyPolicy","moreDetailsLabel","canBeClosed","closeLabel","onClose","isVendorsOpen","jsxs","jsx","texts","Button","Bar","doClassnames","layouts","vendorsMessage","lessDetailsLabel","validVendor","Select","Thumbnail"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../../src/components/dialogs/dialog/Dialog.tsx"],"names":[],"mappings":";AAEA,OAAO,eAAe,CAAA;AAGtB,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,OAAO,CAAC,EAAE;QACR,4BAA4B;QAC5B,OAAO,CAAC,EAAE;YACR,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAA;YAC1C,OAAO,CAAC,EAAE,MAAM,CAAA;YAChB,WAAW,CAAC,EAAE,OAAO,CAAA;YACrB,MAAM,EAAE,KAAK,CAAC,iBAAiB,GAAG,CAAC,MAAM,IAAI,CAAC,CAAA;SAC/C,CAAA;QACD,gCAAgC;QAChC,WAAW,CAAC,EAAE;YACZ,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAA;YAC1C,OAAO,CAAC,EAAE,MAAM,CAAA;YAChB,WAAW,CAAC,EAAE,OAAO,CAAA;YACrB,MAAM,EAAE,KAAK,CAAC,iBAAiB,GAAG,CAAC,MAAM,IAAI,CAAC,CAAA;SAC/C,CAAA;QACD,8BAA8B;QAC9B,SAAS,CAAC,EAAE;YACV,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAA;YAC1C,OAAO,CAAC,EAAE,MAAM,CAAA;YAChB,WAAW,CAAC,EAAE,OAAO,CAAA;YACrB,MAAM,EAAE,KAAK,CAAC,iBAAiB,GAAG,CAAC,MAAM,IAAI,CAAC,CAAA;SAC/C,CAAA;KACF,CAAA;IACD;;OAEG;IACH,MAAM,CAAC,EAAE;QACP,2BAA2B;QAC3B,KAAK,EAAE,MAAM,CAAA;QACb,oBAAoB;QACpB,KAAK,EAAE,OAAO,CAAA;QACd,qBAAqB;QACrB,MAAM,EAAE,KAAK,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAA;KACnD,CAAA;IACD;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;OAGG;IACH,GAAG,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B;;OAEG;IACH,OAAO,EAAE,KAAK,CAAC,iBAAiB,CAAA;CACjC;AAED,QAAA,MAAM,MAAM,UAAW,WAAW,4CAqDjC,CAAA;AAED,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../../src/components/dialogs/dialog/Dialog.tsx"],"names":[],"mappings":";AAGA,OAAO,eAAe,CAAA;AAEtB,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,OAAO,CAAC,EAAE;QACR,4BAA4B;QAC5B,OAAO,CAAC,EAAE;YACR,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAA;YAC1C,OAAO,CAAC,EAAE,MAAM,CAAA;YAChB,WAAW,CAAC,EAAE,OAAO,CAAA;YACrB,MAAM,EAAE,KAAK,CAAC,iBAAiB,GAAG,CAAC,MAAM,IAAI,CAAC,CAAA;SAC/C,CAAA;QACD,gCAAgC;QAChC,WAAW,CAAC,EAAE;YACZ,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAA;YAC1C,OAAO,CAAC,EAAE,MAAM,CAAA;YAChB,WAAW,CAAC,EAAE,OAAO,CAAA;YACrB,MAAM,EAAE,KAAK,CAAC,iBAAiB,GAAG,CAAC,MAAM,IAAI,CAAC,CAAA;SAC/C,CAAA;QACD,8BAA8B;QAC9B,SAAS,CAAC,EAAE;YACV,KAAK,EAAE,MAAM,CAAA;YACb,KAAK,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAA;YAC1C,OAAO,CAAC,EAAE,MAAM,CAAA;YAChB,WAAW,CAAC,EAAE,OAAO,CAAA;YACrB,MAAM,EAAE,KAAK,CAAC,iBAAiB,GAAG,CAAC,MAAM,IAAI,CAAC,CAAA;SAC/C,CAAA;KACF,CAAA;IACD;;OAEG;IACH,MAAM,CAAC,EAAE;QACP,2BAA2B;QAC3B,KAAK,EAAE,MAAM,CAAA;QACb,oBAAoB;QACpB,KAAK,EAAE,OAAO,CAAA;QACd,qBAAqB;QACrB,MAAM,EAAE,KAAK,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAA;KACnD,CAAA;IACD;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;OAGG;IACH,GAAG,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B;;OAEG;IACH,OAAO,EAAE,KAAK,CAAC,iBAAiB,CAAA;CACjC;AAED,QAAA,MAAM,MAAM,UAAW,WAAW,4CAqDjC,CAAA;AAED,eAAe,MAAM,CAAA"}
@@ -1,8 +1,8 @@
1
1
  import '../../../assets/Dialog.css';
2
2
  import { jsx as n } from "react/jsx-runtime";
3
3
  import { useEffect as u } from "react";
4
- import E from "../../slots/popin/Popin.js";
5
- import { t as y } from "../../../do-classnames-DSDFCvzy.js";
4
+ import { t as E } from "../../../do-classnames-DSDFCvzy.js";
5
+ import y from "../../slots/popin/Popin.js";
6
6
  const P = (i) => {
7
7
  const {
8
8
  title: t,
@@ -28,14 +28,14 @@ const P = (i) => {
28
28
  return /* @__PURE__ */ n(
29
29
  "dialog",
30
30
  {
31
- className: y(["dialog", a === "RIGHT" && "dialog--right"]),
31
+ className: E(["dialog", a === "RIGHT" && "dialog--right"]),
32
32
  role: "dialog",
33
33
  "aria-modal": "true",
34
34
  "aria-label": t,
35
35
  tabIndex: -1,
36
36
  onMouseDown: p,
37
37
  children: /* @__PURE__ */ n(
38
- E,
38
+ y,
39
39
  {
40
40
  type: a === "RIGHT" ? "PANEL" : "POPIN",
41
41
  title: t,
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.js","sources":["../../../../src/components/dialogs/dialog/Dialog.tsx"],"sourcesContent":["import { SyntheticEvent, useEffect } from 'react'\nimport PopIn from '@components/slots/popin/Popin'\nimport './dialog.scss'\nimport { doClassnames } from '@a_ng_d/figmug-utils'\n\nexport interface DialogProps {\n /**\n * Title of the dialog\n */\n title: string\n /**\n * Optional tag displayed next to the title\n */\n tag?: string\n /**\n * Configuration for action buttons\n */\n actions?: {\n /** Primary action button */\n primary?: {\n label: string\n state?: 'DEFAULT' | 'DISABLED' | 'LOADING'\n feature?: string\n isAutofocus?: boolean\n action: React.ReactEventHandler | (() => void)\n }\n /** Destructive action button */\n destructive?: {\n label: string\n state?: 'DEFAULT' | 'DISABLED' | 'LOADING'\n feature?: string\n isAutofocus?: boolean\n action: React.ReactEventHandler | (() => void)\n }\n /** Secondary action button */\n secondary?: {\n label: string\n state?: 'DEFAULT' | 'DISABLED' | 'LOADING'\n feature?: string\n isAutofocus?: boolean\n action: React.ReactEventHandler | (() => void)\n }\n }\n /**\n * Select/checkbox configuration\n */\n select?: {\n /** Label for the select */\n label: string\n /** Current state */\n state: boolean\n /** Change handler */\n action: React.ChangeEventHandler<HTMLInputElement>\n }\n /**\n * Optional indicator text\n */\n indicator?: string\n /**\n * Position of the dialog\n * @default 'CENTER'\n */\n pin?: 'CENTER' | 'RIGHT'\n /**\n * Whether the dialog is in loading state\n * @default false\n */\n isLoading?: boolean\n /**\n * Whether to use message layout\n * @default false\n */\n isMessage?: boolean\n /**\n * Dialog content\n */\n children?: React.ReactNode\n /**\n * Close handler\n */\n onClose: React.ReactEventHandler\n}\n\nconst Dialog = (props: DialogProps) => {\n const {\n title,\n actions,\n select,\n indicator,\n tag,\n pin = 'CENTER',\n isLoading = false,\n isMessage = false,\n children,\n onClose,\n } = props\n\n useEffect(() => {\n const handleEscapeKey = (event: KeyboardEvent) =>\n event.key === 'Escape' && onClose(event as unknown as SyntheticEvent)\n\n document.addEventListener('keydown', handleEscapeKey)\n\n return () => {\n document.removeEventListener('keydown', handleEscapeKey)\n }\n }, [onClose])\n\n const closeHandler = (e: SyntheticEvent) => {\n if (e.currentTarget === e.target) onClose(e)\n }\n\n return (\n <dialog\n className={doClassnames(['dialog', pin === 'RIGHT' && 'dialog--right'])}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={title}\n tabIndex={-1}\n onMouseDown={closeHandler}\n >\n <PopIn\n type={pin === 'RIGHT' ? 'PANEL' : 'POPIN'}\n title={title}\n actions={actions}\n select={select}\n indicator={indicator}\n tag={tag}\n isLoading={isLoading}\n isMessage={isMessage}\n onClose={onClose}\n >\n {children}\n </PopIn>\n </dialog>\n )\n}\n\nexport default Dialog\n"],"names":["Dialog","props","title","actions","select","indicator","tag","pin","isLoading","isMessage","children","onClose","useEffect","handleEscapeKey","event","closeHandler","jsx","doClassnames","PopIn"],"mappings":";;;;AAmFA,MAAMA,IAAS,CAACC,MAAuB;AACrC,QAAM;AAAA,IACJ,OAAAC;AAAA,IACA,SAAAC;AAAA,IACA,QAAAC;AAAA,IACA,WAAAC;AAAA,IACA,KAAAC;AAAA,IACA,KAAAC,IAAM;AAAA,IACN,WAAAC,IAAY;AAAA,IACZ,WAAAC,IAAY;AAAA,IACZ,UAAAC;AAAA,IACA,SAAAC;AAAA,EAAA,IACEV;AAEJ,EAAAW,EAAU,MAAM;AACd,UAAMC,IAAkB,CAACC,MACvBA,EAAM,QAAQ,YAAYH,EAAQG,CAAkC;AAEtE,oBAAS,iBAAiB,WAAWD,CAAe,GAE7C,MAAM;AACX,eAAS,oBAAoB,WAAWA,CAAe;AAAA,IACzD;AAAA,EACF,GAAG,CAACF,CAAO,CAAC;AAEZ,QAAMI,IAAe,CAAC,MAAsB;AAC1C,IAAI,EAAE,kBAAkB,EAAE,YAAgB,CAAC;AAAA,EAC7C;AAEA,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAa,CAAC,UAAUV,MAAQ,WAAW,eAAe,CAAC;AAAA,MACtE,MAAK;AAAA,MACL,cAAW;AAAA,MACX,cAAYL;AAAA,MACZ,UAAU;AAAA,MACV,aAAaa;AAAA,MAEb,UAAA,gBAAAC;AAAA,QAACE;AAAA,QAAA;AAAA,UACC,MAAMX,MAAQ,UAAU,UAAU;AAAA,UAClC,OAAAL;AAAA,UACA,SAAAC;AAAA,UACA,QAAAC;AAAA,UACA,WAAAC;AAAA,UACA,KAAAC;AAAA,UACA,WAAAE;AAAA,UACA,WAAAC;AAAA,UACA,SAAAE;AAAA,UAEC,UAAAD;AAAA,QAAA;AAAA,MAAA;AAAA,IACH;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"Dialog.js","sources":["../../../../src/components/dialogs/dialog/Dialog.tsx"],"sourcesContent":["import { SyntheticEvent, useEffect } from 'react'\nimport { doClassnames } from '@unoff/utils'\nimport PopIn from '@components/slots/popin/Popin'\nimport './dialog.scss'\n\nexport interface DialogProps {\n /**\n * Title of the dialog\n */\n title: string\n /**\n * Optional tag displayed next to the title\n */\n tag?: string\n /**\n * Configuration for action buttons\n */\n actions?: {\n /** Primary action button */\n primary?: {\n label: string\n state?: 'DEFAULT' | 'DISABLED' | 'LOADING'\n feature?: string\n isAutofocus?: boolean\n action: React.ReactEventHandler | (() => void)\n }\n /** Destructive action button */\n destructive?: {\n label: string\n state?: 'DEFAULT' | 'DISABLED' | 'LOADING'\n feature?: string\n isAutofocus?: boolean\n action: React.ReactEventHandler | (() => void)\n }\n /** Secondary action button */\n secondary?: {\n label: string\n state?: 'DEFAULT' | 'DISABLED' | 'LOADING'\n feature?: string\n isAutofocus?: boolean\n action: React.ReactEventHandler | (() => void)\n }\n }\n /**\n * Select/checkbox configuration\n */\n select?: {\n /** Label for the select */\n label: string\n /** Current state */\n state: boolean\n /** Change handler */\n action: React.ChangeEventHandler<HTMLInputElement>\n }\n /**\n * Optional indicator text\n */\n indicator?: string\n /**\n * Position of the dialog\n * @default 'CENTER'\n */\n pin?: 'CENTER' | 'RIGHT'\n /**\n * Whether the dialog is in loading state\n * @default false\n */\n isLoading?: boolean\n /**\n * Whether to use message layout\n * @default false\n */\n isMessage?: boolean\n /**\n * Dialog content\n */\n children?: React.ReactNode\n /**\n * Close handler\n */\n onClose: React.ReactEventHandler\n}\n\nconst Dialog = (props: DialogProps) => {\n const {\n title,\n actions,\n select,\n indicator,\n tag,\n pin = 'CENTER',\n isLoading = false,\n isMessage = false,\n children,\n onClose,\n } = props\n\n useEffect(() => {\n const handleEscapeKey = (event: KeyboardEvent) =>\n event.key === 'Escape' && onClose(event as unknown as SyntheticEvent)\n\n document.addEventListener('keydown', handleEscapeKey)\n\n return () => {\n document.removeEventListener('keydown', handleEscapeKey)\n }\n }, [onClose])\n\n const closeHandler = (e: SyntheticEvent) => {\n if (e.currentTarget === e.target) onClose(e)\n }\n\n return (\n <dialog\n className={doClassnames(['dialog', pin === 'RIGHT' && 'dialog--right'])}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={title}\n tabIndex={-1}\n onMouseDown={closeHandler}\n >\n <PopIn\n type={pin === 'RIGHT' ? 'PANEL' : 'POPIN'}\n title={title}\n actions={actions}\n select={select}\n indicator={indicator}\n tag={tag}\n isLoading={isLoading}\n isMessage={isMessage}\n onClose={onClose}\n >\n {children}\n </PopIn>\n </dialog>\n )\n}\n\nexport default Dialog\n"],"names":["Dialog","props","title","actions","select","indicator","tag","pin","isLoading","isMessage","children","onClose","useEffect","handleEscapeKey","event","closeHandler","jsx","doClassnames","PopIn"],"mappings":";;;;AAmFA,MAAMA,IAAS,CAACC,MAAuB;AACrC,QAAM;AAAA,IACJ,OAAAC;AAAA,IACA,SAAAC;AAAA,IACA,QAAAC;AAAA,IACA,WAAAC;AAAA,IACA,KAAAC;AAAA,IACA,KAAAC,IAAM;AAAA,IACN,WAAAC,IAAY;AAAA,IACZ,WAAAC,IAAY;AAAA,IACZ,UAAAC;AAAA,IACA,SAAAC;AAAA,EAAA,IACEV;AAEJ,EAAAW,EAAU,MAAM;AACd,UAAMC,IAAkB,CAACC,MACvBA,EAAM,QAAQ,YAAYH,EAAQG,CAAkC;AAEtE,oBAAS,iBAAiB,WAAWD,CAAe,GAE7C,MAAM;AACX,eAAS,oBAAoB,WAAWA,CAAe;AAAA,IACzD;AAAA,EACF,GAAG,CAACF,CAAO,CAAC;AAEZ,QAAMI,IAAe,CAAC,MAAsB;AAC1C,IAAI,EAAE,kBAAkB,EAAE,YAAgB,CAAC;AAAA,EAC7C;AAEA,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAa,CAAC,UAAUV,MAAQ,WAAW,eAAe,CAAC;AAAA,MACtE,MAAK;AAAA,MACL,cAAW;AAAA,MACX,cAAYL;AAAA,MACZ,UAAU;AAAA,MACV,aAAaa;AAAA,MAEb,UAAA,gBAAAC;AAAA,QAACE;AAAA,QAAA;AAAA,UACC,MAAMX,MAAQ,UAAU,UAAU;AAAA,UAClC,OAAAL;AAAA,UACA,SAAAC;AAAA,UACA,QAAAC;AAAA,UACA,WAAAC;AAAA,UACA,KAAAC;AAAA,UACA,WAAAE;AAAA,UACA,WAAAC;AAAA,UACA,SAAAE;AAAA,UAEC,UAAAD;AAAA,QAAA;AAAA,MAAA;AAAA,IACH;AAAA,EAAA;AAGN;"}
@@ -1,9 +1,9 @@
1
1
  import '../../../assets/Message.css';
2
2
  import { jsxs as r, jsx as e } from "react/jsx-runtime";
3
3
  import l from "react";
4
+ import { t as a } from "../../../do-classnames-DSDFCvzy.js";
4
5
  import n from "../../../styles/texts/texts.module.js";
5
6
  import { Icon as o } from "../../assets/icon/Icon.js";
6
- import { t as a } from "../../../do-classnames-DSDFCvzy.js";
7
7
  class _ extends l.Component {
8
8
  static defaultProps = {
9
9
  isBlocked: !1
@@ -1 +1 @@
1
- {"version":3,"file":"Message.js","sources":["../../../../src/components/dialogs/message/Message.tsx"],"sourcesContent":["import React from 'react'\nimport texts from '@styles/texts/texts.module.scss'\nimport Icon from '@components/assets/icon/Icon'\nimport { doClassnames } from '@a_ng_d/figmug-utils'\nimport type { IconList } from '@tps/icon.types'\nimport './message.scss'\n\nexport interface MessageProps {\n /**\n * Icon to display with the message\n */\n icon: IconList\n /**\n * Array of message strings to display\n */\n messages: Array<string>\n /**\n * Whether the message is blocked\n * @default false\n */\n isBlocked?: boolean\n}\n\nexport default class Message extends React.Component<MessageProps> {\n static defaultProps: Partial<MessageProps> = {\n isBlocked: false,\n }\n\n // Templates\n SingleMessage = () => {\n const { icon, messages, isBlocked } = this.props\n\n return (\n <div\n className={doClassnames(['message', isBlocked && 'message--blocked'])}\n role=\"status\"\n aria-live=\"polite\"\n >\n <Icon\n type=\"PICTO\"\n iconName={icon}\n customClassName=\"icon\"\n aria-hidden=\"true\"\n />\n <div\n className={doClassnames([texts.type, 'message__msg'])}\n role=\"presentation\"\n >\n {messages[0]}\n </div>\n </div>\n )\n }\n\n MultipleMessages = () => {\n const { icon, messages } = this.props\n\n return (\n <div\n className=\"message message--multiple\"\n role=\"status\"\n aria-live=\"polite\"\n >\n <Icon\n type=\"PICTO\"\n iconName={icon}\n customClassName=\"icon\"\n aria-hidden=\"true\"\n />\n <div\n className=\"message__ticker\"\n role=\"marquee\"\n >\n <div\n className=\"message__tips\"\n style={{\n animation: `ticker ${\n messages.length * 5000\n }ms 0ms linear infinite`,\n }}\n role=\"presentation\"\n >\n {messages.map((message, index) => {\n return (\n <React.Fragment key={`message-${index}`}>\n <div\n className={doClassnames([texts.type, 'message__msg'])}\n role=\"presentation\"\n >\n {message}\n </div>\n <div\n className={doClassnames([texts.type, 'message__msg'])}\n role=\"presentation\"\n aria-hidden=\"true\"\n >\n ﹒\n </div>\n </React.Fragment>\n )\n })}\n </div>\n <div\n className=\"message__tips\"\n style={{\n animation: `ticker ${\n messages.length * 5000\n }ms 0ms linear infinite`,\n }}\n role=\"presentation\"\n aria-hidden=\"true\"\n >\n {messages.map((message, index) => {\n return (\n <React.Fragment key={`message-${index}`}>\n <div\n className={doClassnames([texts.type, 'message__msg'])}\n role=\"presentation\"\n >\n {message}\n </div>\n <div\n className={doClassnames([texts.type, 'message__msg'])}\n role=\"presentation\"\n aria-hidden=\"true\"\n >\n ﹒\n </div>\n </React.Fragment>\n )\n })}\n </div>\n </div>\n </div>\n )\n }\n\n // Render\n render() {\n const { messages } = this.props\n\n if (messages.length > 1) return this.MultipleMessages()\n return this.SingleMessage()\n }\n}\n"],"names":["Message","React","icon","messages","isBlocked","jsxs","doClassnames","jsx","Icon","texts","message","index"],"mappings":"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"}
1
+ {"version":3,"file":"Message.js","sources":["../../../../src/components/dialogs/message/Message.tsx"],"sourcesContent":["import React from 'react'\nimport { doClassnames } from '@unoff/utils'\nimport texts from '@styles/texts/texts.module.scss'\nimport Icon from '@components/assets/icon/Icon'\nimport type { IconList } from '@tps/icon.types'\nimport './message.scss'\n\nexport interface MessageProps {\n /**\n * Icon to display with the message\n */\n icon: IconList\n /**\n * Array of message strings to display\n */\n messages: Array<string>\n /**\n * Whether the message is blocked\n * @default false\n */\n isBlocked?: boolean\n}\n\nexport default class Message extends React.Component<MessageProps> {\n static defaultProps: Partial<MessageProps> = {\n isBlocked: false,\n }\n\n // Templates\n SingleMessage = () => {\n const { icon, messages, isBlocked } = this.props\n\n return (\n <div\n className={doClassnames(['message', isBlocked && 'message--blocked'])}\n role=\"status\"\n aria-live=\"polite\"\n >\n <Icon\n type=\"PICTO\"\n iconName={icon}\n customClassName=\"icon\"\n aria-hidden=\"true\"\n />\n <div\n className={doClassnames([texts.type, 'message__msg'])}\n role=\"presentation\"\n >\n {messages[0]}\n </div>\n </div>\n )\n }\n\n MultipleMessages = () => {\n const { icon, messages } = this.props\n\n return (\n <div\n className=\"message message--multiple\"\n role=\"status\"\n aria-live=\"polite\"\n >\n <Icon\n type=\"PICTO\"\n iconName={icon}\n customClassName=\"icon\"\n aria-hidden=\"true\"\n />\n <div\n className=\"message__ticker\"\n role=\"marquee\"\n >\n <div\n className=\"message__tips\"\n style={{\n animation: `ticker ${\n messages.length * 5000\n }ms 0ms linear infinite`,\n }}\n role=\"presentation\"\n >\n {messages.map((message, index) => {\n return (\n <React.Fragment key={`message-${index}`}>\n <div\n className={doClassnames([texts.type, 'message__msg'])}\n role=\"presentation\"\n >\n {message}\n </div>\n <div\n className={doClassnames([texts.type, 'message__msg'])}\n role=\"presentation\"\n aria-hidden=\"true\"\n >\n ﹒\n </div>\n </React.Fragment>\n )\n })}\n </div>\n <div\n className=\"message__tips\"\n style={{\n animation: `ticker ${\n messages.length * 5000\n }ms 0ms linear infinite`,\n }}\n role=\"presentation\"\n aria-hidden=\"true\"\n >\n {messages.map((message, index) => {\n return (\n <React.Fragment key={`message-${index}`}>\n <div\n className={doClassnames([texts.type, 'message__msg'])}\n role=\"presentation\"\n >\n {message}\n </div>\n <div\n className={doClassnames([texts.type, 'message__msg'])}\n role=\"presentation\"\n aria-hidden=\"true\"\n >\n ﹒\n </div>\n </React.Fragment>\n )\n })}\n </div>\n </div>\n </div>\n )\n }\n\n // Render\n render() {\n const { messages } = this.props\n\n if (messages.length > 1) return this.MultipleMessages()\n return this.SingleMessage()\n }\n}\n"],"names":["Message","React","icon","messages","isBlocked","jsxs","doClassnames","jsx","Icon","texts","message","index"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import '../../../assets/Notification.css';
2
2
  import { jsx as t } from "react/jsx-runtime";
3
- import n from "../../actions/button/Button.js";
4
- import { t as s } from "../../../do-classnames-DSDFCvzy.js";
3
+ import { t as n } from "../../../do-classnames-DSDFCvzy.js";
4
+ import s from "../../actions/button/Button.js";
5
5
  import m from "../semantic-message/SemanticMessage.js";
6
6
  const d = (e) => {
7
7
  const { type: r, message: a, timer: o, onClose: i } = e;
@@ -10,7 +10,7 @@ const d = (e) => {
10
10
  }, o), /* @__PURE__ */ t(
11
11
  "div",
12
12
  {
13
- className: s(["notification"]),
13
+ className: n(["notification"]),
14
14
  role: "alert",
15
15
  "aria-live": "polite",
16
16
  tabIndex: -1,
@@ -20,7 +20,7 @@ const d = (e) => {
20
20
  type: r,
21
21
  message: a,
22
22
  actionsSlot: /* @__PURE__ */ t(
23
- n,
23
+ s,
24
24
  {
25
25
  type: "icon",
26
26
  icon: "close",
@@ -1 +1 @@
1
- {"version":3,"file":"Notification.js","sources":["../../../../src/components/dialogs/notification/Notification.tsx"],"sourcesContent":["import Button from '@components/actions/button/Button'\nimport { doClassnames } from '@a_ng_d/figmug-utils'\nimport SemanticMessage from '../semantic-message/SemanticMessage'\nimport './notification.scss'\n\nexport interface NotificationProps {\n /**\n * Type of notification determining its visual style\n */\n type: 'NEUTRAL' | 'INFO' | 'SUCCESS' | 'WARNING' | 'ERROR'\n /**\n * Message content to display\n */\n message: string\n /**\n * Auto-close timer in milliseconds (0 or undefined for no auto-close)\n */\n timer?: number\n /**\n * Close handler\n */\n onClose: React.ReactEventHandler\n}\n\nconst Notification = (props: NotificationProps) => {\n const { type, message, timer, onClose } = props\n\n if (timer !== undefined && timer > 0)\n setTimeout(() => {\n onClose({} as React.SyntheticEvent)\n }, timer)\n\n return (\n <div\n className={doClassnames(['notification'])}\n role=\"alert\"\n aria-live=\"polite\"\n tabIndex={-1}\n >\n <SemanticMessage\n type={type}\n message={message}\n actionsSlot={\n <Button\n type=\"icon\"\n icon=\"close\"\n action={onClose}\n />\n }\n />\n </div>\n )\n}\n\nexport default Notification\n"],"names":["Notification","props","type","message","timer","onClose","jsx","doClassnames","SemanticMessage","Button"],"mappings":";;;;AAwBA,MAAMA,IAAe,CAACC,MAA6B;AACjD,QAAM,EAAE,MAAAC,GAAM,SAAAC,GAAS,OAAAC,GAAO,SAAAC,MAAYJ;AAE1C,SAAIG,MAAU,UAAaA,IAAQ,KACjC,WAAW,MAAM;AACf,IAAAC,EAAQ,CAAA,CAA0B;AAAA,EACpC,GAAGD,CAAK,GAGR,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAa,CAAC,cAAc,CAAC;AAAA,MACxC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,UAAU;AAAA,MAEV,UAAA,gBAAAD;AAAA,QAACE;AAAA,QAAA;AAAA,UACC,MAAAN;AAAA,UACA,SAAAC;AAAA,UACA,aACE,gBAAAG;AAAA,YAACG;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,MAAK;AAAA,cACL,QAAQJ;AAAA,YAAA;AAAA,UAAA;AAAA,QACV;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"Notification.js","sources":["../../../../src/components/dialogs/notification/Notification.tsx"],"sourcesContent":["import { doClassnames } from '@unoff/utils'\nimport Button from '@components/actions/button/Button'\nimport SemanticMessage from '../semantic-message/SemanticMessage'\nimport './notification.scss'\n\nexport interface NotificationProps {\n /**\n * Type of notification determining its visual style\n */\n type: 'NEUTRAL' | 'INFO' | 'SUCCESS' | 'WARNING' | 'ERROR'\n /**\n * Message content to display\n */\n message: string\n /**\n * Auto-close timer in milliseconds (0 or undefined for no auto-close)\n */\n timer?: number\n /**\n * Close handler\n */\n onClose: React.ReactEventHandler\n}\n\nconst Notification = (props: NotificationProps) => {\n const { type, message, timer, onClose } = props\n\n if (timer !== undefined && timer > 0)\n setTimeout(() => {\n onClose({} as React.SyntheticEvent)\n }, timer)\n\n return (\n <div\n className={doClassnames(['notification'])}\n role=\"alert\"\n aria-live=\"polite\"\n tabIndex={-1}\n >\n <SemanticMessage\n type={type}\n message={message}\n actionsSlot={\n <Button\n type=\"icon\"\n icon=\"close\"\n action={onClose}\n />\n }\n />\n </div>\n )\n}\n\nexport default Notification\n"],"names":["Notification","props","type","message","timer","onClose","jsx","doClassnames","SemanticMessage","Button"],"mappings":";;;;AAwBA,MAAMA,IAAe,CAACC,MAA6B;AACjD,QAAM,EAAE,MAAAC,GAAM,SAAAC,GAAS,OAAAC,GAAO,SAAAC,MAAYJ;AAE1C,SAAIG,MAAU,UAAaA,IAAQ,KACjC,WAAW,MAAM;AACf,IAAAC,EAAQ,CAAA,CAA0B;AAAA,EACpC,GAAGD,CAAK,GAGR,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAa,CAAC,cAAc,CAAC;AAAA,MACxC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,UAAU;AAAA,MAEV,UAAA,gBAAAD;AAAA,QAACE;AAAA,QAAA;AAAA,UACC,MAAAN;AAAA,UACA,SAAAC;AAAA,UACA,aACE,gBAAAG;AAAA,YAACG;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,MAAK;AAAA,cACL,QAAQJ;AAAA,YAAA;AAAA,UAAA;AAAA,QACV;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA;AAGN;"}
@@ -1 +1 @@
1
- {"version":3,"file":"SemanticMessage.d.ts","sourceRoot":"","sources":["../../../../src/components/dialogs/semantic-message/SemanticMessage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAI1C,OAAO,yBAAyB,CAAA;AAEhC,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAA;IAC1D;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;OAGG;IACH,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC;;OAEG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,KAAK,CAAC,SAAS,CAC1D,oBAAoB,EACpB,qBAAqB,CACtB;IACC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAGjD;gBAEW,KAAK,EAAE,oBAAoB;IAWvC,iBAAiB,aAEhB;IAED,oBAAoB,aAEnB;IAGD,YAAY,aAEX;IAED,OAAO,SAAU,MAAM,KAAG,QAAQ,CAMjC;IAGD,MAAM;CAuCP"}
1
+ {"version":3,"file":"SemanticMessage.d.ts","sourceRoot":"","sources":["../../../../src/components/dialogs/semantic-message/SemanticMessage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAG1C,OAAO,yBAAyB,CAAA;AAEhC,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAA;IAC1D;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;OAGG;IACH,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC;;OAEG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,KAAK,CAAC,SAAS,CAC1D,oBAAoB,EACpB,qBAAqB,CACtB;IACC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAGjD;gBAEW,KAAK,EAAE,oBAAoB;IAWvC,iBAAiB,aAEhB;IAED,oBAAoB,aAEnB;IAGD,YAAY,aAEX;IAED,OAAO,SAAU,MAAM,KAAG,QAAQ,CAMjC;IAGD,MAAM;CAuCP"}
@@ -1,8 +1,8 @@
1
1
  import '../../../assets/SemanticMessage.css';
2
2
  import { jsxs as d, jsx as t } from "react/jsx-runtime";
3
3
  import l from "react";
4
- import s from "../../../styles/layouts.module.js";
5
4
  import { t as i } from "../../../do-classnames-DSDFCvzy.js";
5
+ import s from "../../../styles/layouts.module.js";
6
6
  import u from "../message/Message.js";
7
7
  class w extends l.Component {
8
8
  static defaultProps = {
@@ -1 +1 @@
1
- {"version":3,"file":"SemanticMessage.js","sources":["../../../../src/components/dialogs/semantic-message/SemanticMessage.tsx"],"sourcesContent":["import React from 'react'\nimport { IconList } from '@tps/icon.types'\nimport layouts from '@styles/layouts.module.scss'\nimport { doClassnames } from '@a_ng_d/figmug-utils'\nimport Message from '../message/Message'\nimport './semantic-message.scss'\n\nexport interface SemanticMessageProps {\n /**\n * Type of message determining its visual style and icon\n */\n type: 'NEUTRAL' | 'INFO' | 'SUCCESS' | 'WARNING' | 'ERROR'\n /**\n * Message content to display\n */\n message: string\n /**\n * Whether the message is anchored to its position\n * @default false\n */\n isAnchored?: boolean\n /**\n * Layout orientation\n * @default 'HORIZONTAL'\n */\n orientation?: 'HORIZONTAL' | 'VERTICAL'\n /**\n * Optional action buttons slot\n */\n actionsSlot?: React.ReactNode\n}\n\nexport interface SemanticMessageStates {\n documentWidth: number\n}\n\nexport default class SemanticMessage extends React.Component<\n SemanticMessageProps,\n SemanticMessageStates\n> {\n static defaultProps: Partial<SemanticMessageProps> = {\n orientation: 'HORIZONTAL',\n isAnchored: false,\n }\n\n constructor(props: SemanticMessageProps) {\n super(props)\n this.state = {\n documentWidth:\n typeof document !== 'undefined'\n ? document.documentElement.clientWidth\n : 1024,\n }\n }\n\n // Lifecycle\n componentDidMount = () => {\n window.addEventListener('resize', this.handleResize)\n }\n\n componentWillUnmount = () => {\n window.removeEventListener('resize', this.handleResize)\n }\n\n // Handlers\n handleResize = () => {\n this.setState({ documentWidth: document.documentElement.clientWidth })\n }\n\n setIcon = (type: string): IconList => {\n if (type === 'SUCCESS') return 'check'\n else if (type === 'WARNING') return 'warning'\n else if (type === 'ERROR') return 'alert'\n\n return 'info'\n }\n\n // Render\n render() {\n const { type, message, isAnchored, orientation, actionsSlot } = this.props\n const { documentWidth } = this.state\n\n const isResponsiveVertical = documentWidth <= 460\n const effectiveOrientation = isResponsiveVertical ? 'VERTICAL' : orientation\n\n return (\n <div\n className={doClassnames([\n 'semantic-message',\n `semantic-message--${type.toLowerCase()}`,\n effectiveOrientation === 'VERTICAL' && 'semantic-message--vertical',\n isAnchored && 'semantic-message--anchored',\n ])}\n role=\"status\"\n >\n <div className=\"semantic-message__body\">\n <Message\n icon={this.setIcon(type)}\n messages={[message]}\n />\n </div>\n {actionsSlot !== undefined && (\n <div\n className={doClassnames([\n layouts['snackbar--medium'],\n layouts['snackbar--wrap'],\n layouts['snackbar--center'],\n 'semantic-message__actions',\n ])}\n role=\"toolbar\"\n >\n {actionsSlot}\n </div>\n )}\n </div>\n )\n }\n}\n"],"names":["SemanticMessage","React","props","type","message","isAnchored","orientation","actionsSlot","documentWidth","effectiveOrientation","jsxs","doClassnames","jsx","Message","layouts"],"mappings":";;;;;AAoCA,MAAqBA,UAAwBC,EAAM,UAGjD;AAAA,EACA,OAAO,eAA8C;AAAA,IACnD,aAAa;AAAA,IACb,YAAY;AAAA,EAAA;AAAA,EAGd,YAAYC,GAA6B;AACvC,UAAMA,CAAK,GACX,KAAK,QAAQ;AAAA,MACX,eACE,OAAO,WAAa,MAChB,SAAS,gBAAgB,cACzB;AAAA,IAAA;AAAA,EAEV;AAAA;AAAA,EAGA,oBAAoB,MAAM;AACxB,WAAO,iBAAiB,UAAU,KAAK,YAAY;AAAA,EACrD;AAAA,EAEA,uBAAuB,MAAM;AAC3B,WAAO,oBAAoB,UAAU,KAAK,YAAY;AAAA,EACxD;AAAA;AAAA,EAGA,eAAe,MAAM;AACnB,SAAK,SAAS,EAAE,eAAe,SAAS,gBAAgB,aAAa;AAAA,EACvE;AAAA,EAEA,UAAU,CAACC,MACLA,MAAS,YAAkB,UACtBA,MAAS,YAAkB,YAC3BA,MAAS,UAAgB,UAE3B;AAAA;AAAA,EAIT,SAAS;AACP,UAAM,EAAE,MAAAA,GAAM,SAAAC,GAAS,YAAAC,GAAY,aAAAC,GAAa,aAAAC,EAAA,IAAgB,KAAK,OAC/D,EAAE,eAAAC,MAAkB,KAAK,OAGzBC,IADuBD,KAAiB,MACM,aAAaF;AAEjE,WACE,gBAAAI;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWC,EAAa;AAAA,UACtB;AAAA,UACA,qBAAqBR,EAAK,YAAA,CAAa;AAAA,UACvCM,MAAyB,cAAc;AAAA,UACvCJ,KAAc;AAAA,QAAA,CACf;AAAA,QACD,MAAK;AAAA,QAEL,UAAA;AAAA,UAAA,gBAAAO,EAAC,OAAA,EAAI,WAAU,0BACb,UAAA,gBAAAA;AAAA,YAACC;AAAA,YAAA;AAAA,cACC,MAAM,KAAK,QAAQV,CAAI;AAAA,cACvB,UAAU,CAACC,CAAO;AAAA,YAAA;AAAA,UAAA,GAEtB;AAAA,UACCG,MAAgB,UACf,gBAAAK;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWD,EAAa;AAAA,gBACtBG,EAAQ,kBAAkB;AAAA,gBAC1BA,EAAQ,gBAAgB;AAAA,gBACxBA,EAAQ,kBAAkB;AAAA,gBAC1B;AAAA,cAAA,CACD;AAAA,cACD,MAAK;AAAA,cAEJ,UAAAP;AAAA,YAAA;AAAA,UAAA;AAAA,QACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACF;"}
1
+ {"version":3,"file":"SemanticMessage.js","sources":["../../../../src/components/dialogs/semantic-message/SemanticMessage.tsx"],"sourcesContent":["import React from 'react'\nimport { doClassnames } from '@unoff/utils'\nimport { IconList } from '@tps/icon.types'\nimport layouts from '@styles/layouts.module.scss'\nimport Message from '../message/Message'\nimport './semantic-message.scss'\n\nexport interface SemanticMessageProps {\n /**\n * Type of message determining its visual style and icon\n */\n type: 'NEUTRAL' | 'INFO' | 'SUCCESS' | 'WARNING' | 'ERROR'\n /**\n * Message content to display\n */\n message: string\n /**\n * Whether the message is anchored to its position\n * @default false\n */\n isAnchored?: boolean\n /**\n * Layout orientation\n * @default 'HORIZONTAL'\n */\n orientation?: 'HORIZONTAL' | 'VERTICAL'\n /**\n * Optional action buttons slot\n */\n actionsSlot?: React.ReactNode\n}\n\nexport interface SemanticMessageStates {\n documentWidth: number\n}\n\nexport default class SemanticMessage extends React.Component<\n SemanticMessageProps,\n SemanticMessageStates\n> {\n static defaultProps: Partial<SemanticMessageProps> = {\n orientation: 'HORIZONTAL',\n isAnchored: false,\n }\n\n constructor(props: SemanticMessageProps) {\n super(props)\n this.state = {\n documentWidth:\n typeof document !== 'undefined'\n ? document.documentElement.clientWidth\n : 1024,\n }\n }\n\n // Lifecycle\n componentDidMount = () => {\n window.addEventListener('resize', this.handleResize)\n }\n\n componentWillUnmount = () => {\n window.removeEventListener('resize', this.handleResize)\n }\n\n // Handlers\n handleResize = () => {\n this.setState({ documentWidth: document.documentElement.clientWidth })\n }\n\n setIcon = (type: string): IconList => {\n if (type === 'SUCCESS') return 'check'\n else if (type === 'WARNING') return 'warning'\n else if (type === 'ERROR') return 'alert'\n\n return 'info'\n }\n\n // Render\n render() {\n const { type, message, isAnchored, orientation, actionsSlot } = this.props\n const { documentWidth } = this.state\n\n const isResponsiveVertical = documentWidth <= 460\n const effectiveOrientation = isResponsiveVertical ? 'VERTICAL' : orientation\n\n return (\n <div\n className={doClassnames([\n 'semantic-message',\n `semantic-message--${type.toLowerCase()}`,\n effectiveOrientation === 'VERTICAL' && 'semantic-message--vertical',\n isAnchored && 'semantic-message--anchored',\n ])}\n role=\"status\"\n >\n <div className=\"semantic-message__body\">\n <Message\n icon={this.setIcon(type)}\n messages={[message]}\n />\n </div>\n {actionsSlot !== undefined && (\n <div\n className={doClassnames([\n layouts['snackbar--medium'],\n layouts['snackbar--wrap'],\n layouts['snackbar--center'],\n 'semantic-message__actions',\n ])}\n role=\"toolbar\"\n >\n {actionsSlot}\n </div>\n )}\n </div>\n )\n }\n}\n"],"names":["SemanticMessage","React","props","type","message","isAnchored","orientation","actionsSlot","documentWidth","effectiveOrientation","jsxs","doClassnames","jsx","Message","layouts"],"mappings":";;;;;AAoCA,MAAqBA,UAAwBC,EAAM,UAGjD;AAAA,EACA,OAAO,eAA8C;AAAA,IACnD,aAAa;AAAA,IACb,YAAY;AAAA,EAAA;AAAA,EAGd,YAAYC,GAA6B;AACvC,UAAMA,CAAK,GACX,KAAK,QAAQ;AAAA,MACX,eACE,OAAO,WAAa,MAChB,SAAS,gBAAgB,cACzB;AAAA,IAAA;AAAA,EAEV;AAAA;AAAA,EAGA,oBAAoB,MAAM;AACxB,WAAO,iBAAiB,UAAU,KAAK,YAAY;AAAA,EACrD;AAAA,EAEA,uBAAuB,MAAM;AAC3B,WAAO,oBAAoB,UAAU,KAAK,YAAY;AAAA,EACxD;AAAA;AAAA,EAGA,eAAe,MAAM;AACnB,SAAK,SAAS,EAAE,eAAe,SAAS,gBAAgB,aAAa;AAAA,EACvE;AAAA,EAEA,UAAU,CAACC,MACLA,MAAS,YAAkB,UACtBA,MAAS,YAAkB,YAC3BA,MAAS,UAAgB,UAE3B;AAAA;AAAA,EAIT,SAAS;AACP,UAAM,EAAE,MAAAA,GAAM,SAAAC,GAAS,YAAAC,GAAY,aAAAC,GAAa,aAAAC,EAAA,IAAgB,KAAK,OAC/D,EAAE,eAAAC,MAAkB,KAAK,OAGzBC,IADuBD,KAAiB,MACM,aAAaF;AAEjE,WACE,gBAAAI;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWC,EAAa;AAAA,UACtB;AAAA,UACA,qBAAqBR,EAAK,YAAA,CAAa;AAAA,UACvCM,MAAyB,cAAc;AAAA,UACvCJ,KAAc;AAAA,QAAA,CACf;AAAA,QACD,MAAK;AAAA,QAEL,UAAA;AAAA,UAAA,gBAAAO,EAAC,OAAA,EAAI,WAAU,0BACb,UAAA,gBAAAA;AAAA,YAACC;AAAA,YAAA;AAAA,cACC,MAAM,KAAK,QAAQV,CAAI;AAAA,cACvB,UAAU,CAACC,CAAO;AAAA,YAAA;AAAA,UAAA,GAEtB;AAAA,UACCG,MAAgB,UACf,gBAAAK;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWD,EAAa;AAAA,gBACtBG,EAAQ,kBAAkB;AAAA,gBAC1BA,EAAQ,gBAAgB;AAAA,gBACxBA,EAAQ,kBAAkB;AAAA,gBAC1B;AAAA,cAAA,CACD;AAAA,cACD,MAAK;AAAA,cAEJ,UAAAP;AAAA,YAAA;AAAA,UAAA;AAAA,QACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACF;"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as t } from "react/jsx-runtime";
2
- import { i as e } from "../../../index_react-CmuCVQet.js";
2
+ import { i as e } from "../../../index_react-BkjUklDQ.js";
3
3
  import o from "./Dropdown.js";
4
4
  e.figma.connect(
5
5
  o,