@jrapps/my_tickets_dashboard_ui 0.0.8 → 0.0.10

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 (26) hide show
  1. package/dist/cjs/index.js +66 -355
  2. package/dist/cjs/index.js.map +4 -4
  3. package/dist/esm/index.js +0 -4
  4. package/dist/types/components/index.d.ts +0 -1
  5. package/dist/types/components/index.d.ts.map +1 -1
  6. package/package.json +1 -1
  7. package/dist/cjs/components/ManageTicketModal/index.js +0 -314
  8. package/dist/cjs/components/ManageTicketModal/index.js.map +0 -7
  9. package/dist/esm/chunks/chunk-YIO4EY76.js +0 -288
  10. package/dist/esm/chunks/chunk-YIO4EY76.js.map +0 -7
  11. package/dist/esm/components/ManageTicketModal/index.js +0 -7
  12. package/dist/esm/components/ManageTicketModal/index.js.map +0 -7
  13. package/dist/types/components/ManageTicketModal/ManageTicketModal.d.ts +0 -6
  14. package/dist/types/components/ManageTicketModal/ManageTicketModal.d.ts.map +0 -1
  15. package/dist/types/components/ManageTicketModal/ManageTicketModal.types.d.ts +0 -37
  16. package/dist/types/components/ManageTicketModal/ManageTicketModal.types.d.ts.map +0 -1
  17. package/dist/types/components/ManageTicketModal/index.d.ts +0 -3
  18. package/dist/types/components/ManageTicketModal/index.d.ts.map +0 -1
  19. package/dist/types/components/ManageTicketModal/priority-change-content.d.ts +0 -5
  20. package/dist/types/components/ManageTicketModal/priority-change-content.d.ts.map +0 -1
  21. package/dist/types/components/ManageTicketModal/status-change-content.d.ts +0 -5
  22. package/dist/types/components/ManageTicketModal/status-change-content.d.ts.map +0 -1
  23. package/dist/types/components/ManageTicketModal/transfer-ticket-content.d.ts +0 -5
  24. package/dist/types/components/ManageTicketModal/transfer-ticket-content.d.ts.map +0 -1
  25. package/dist/types/components/ManageTicketModal/useManageTicketModal.d.ts +0 -30
  26. package/dist/types/components/ManageTicketModal/useManageTicketModal.d.ts.map +0 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/index.ts", "../../src/components/ManageTicketModal/ManageTicketModal.tsx", "../../src/components/ManageTicketModal/useManageTicketModal.ts", "../../src/components/ManageTicketModal/status-change-content.tsx", "../../src/components/ManageTicketModal/priority-change-content.tsx", "../../src/components/ManageTicketModal/transfer-ticket-content.tsx", "../../src/components/ManageTicketModal/ManageTicketModal.css", "../../src/components/Sidebar/Sidebar.tsx", "../../src/components/Sidebar/sidebar-menu-item.tsx", "../../src/components/Sidebar/footer/avatar-dropdown.wrapper.tsx", "../../src/components/Sidebar/footer/status-dots.wrapper.tsx", "../../src/components/Sidebar/Sidebar.css"],
4
- "sourcesContent": ["export * from './components';", "import React from 'react';\nimport type { ManageTicketModalProps } from './ManageTicketModal.types';\nimport { useManageTicketModal } from './useManageTicketModal';\nimport {\n CustomModalLayout,\n Box,\n Text,\n Loader,\n Modal,\n} from '@wix/design-system';\nimport '@wix/design-system/styles-studio.global.css';\n\nimport StatusChangeContent from './status-change-content';\nimport PriorityChangeContent from './priority-change-content';\nimport TransferTicketContent from './transfer-ticket-content';\nimport './ManageTicketModal.css';\n\nexport const ManageTicketModal = React.forwardRef<HTMLDivElement, ManageTicketModalProps>(\n (\n {\n className,\n isOpen,\n id,\n state,\n onClose,\n currentStatus,\n currentPriority,\n ticketNumber,\n currentTeamName,\n },\n ref,\n ) => {\n const {\n isSaving,\n isLoading,\n isError,\n teams,\n newStatus,\n newPriority,\n selectedTeam,\n modalTitle,\n setNewStatus,\n setNewPriority,\n setSelectedTeam,\n handleSave,\n handleCancel,\n } = useManageTicketModal({ id, state, onClose });\n\n const renderContent = () => {\n if (isLoading) {\n return (\n <Box direction=\"vertical\" width=\"stretch\" gap=\"10px\">\n <Loader size=\"medium\" status=\"loading\" text=\"Loading...\" />\n </Box>\n );\n }\n\n if (isError) {\n return (\n <Box direction=\"vertical\" width=\"stretch\" gap=\"10px\">\n <Loader size=\"medium\" status=\"error\" text=\"Error loading data\" />\n </Box>\n );\n }\n\n if (state === 'STATUS_CHANGE') {\n return (\n <StatusChangeContent\n currentStatus={currentStatus ?? ''}\n newStatus={newStatus}\n onStatusChange={setNewStatus}\n />\n );\n }\n\n if (state === 'PRIORITY_CHANGE') {\n return (\n <PriorityChangeContent\n currentPriority={currentPriority ?? ''}\n newPriority={newPriority}\n onPriorityChange={setNewPriority}\n />\n );\n }\n\n if (state === 'TRANSFER_TICKET') {\n return (\n <TransferTicketContent\n currentTeam={currentTeamName}\n teams={teams}\n selectedTeam={selectedTeam}\n onTeamChange={setSelectedTeam}\n />\n );\n }\n\n return null;\n };\n\n return (\n <Modal isOpen={isOpen} ref={ref} className={className}>\n <CustomModalLayout\n width=\"500px\"\n primaryButtonText={isSaving ? <Loader size=\"tiny\" /> : 'Save'}\n secondaryButtonText=\"Cancel\"\n primaryButtonOnClick={handleSave}\n secondaryButtonOnClick={handleCancel}\n showHeaderDivider\n showFooterDivider\n title={modalTitle}\n subtitle={!isLoading ? ticketNumber : ''}\n footnote={\n <Box alignContent=\"center\">\n <Text size=\"small\">\n Powered by <Text size=\"small\" weight=\"bold\">My Tickets</Text>\n </Text>\n </Box>\n }\n content={renderContent()}\n />\n </Modal>\n );\n },\n);\n\nManageTicketModal.displayName = 'ManageTicketModal';\n", "import { useState, useEffect } from 'react';\nimport { httpClient } from '@wix/essentials';\n\nconst BASE_URL = new URL(import.meta.url).origin;\n\nconst STATE_CONFIG = {\n STATUS_CHANGE: {\n title: 'Change Status',\n getUrl: (id: string, value: string | number) =>\n `${BASE_URL}/api/tickets/update-ticket-status?id=${id}&status=${value}`,\n getPayload: (value: string | number) => ({ newStatus: value }),\n },\n PRIORITY_CHANGE: {\n title: 'Change Priority',\n getUrl: (id: string, value: string | number) =>\n `${BASE_URL}/api/tickets/update-ticket-priority?id=${id}&priority=${value}`,\n getPayload: (value: string | number) => ({ newPriority: value }),\n },\n TRANSFER_TICKET: {\n title: 'Transfer Ticket',\n getUrl: (id: string, value: string | number) =>\n `${BASE_URL}/api/tickets/transfer-ticket?id=${id}&teamId=${value}`,\n getPayload: (value: string | number) => ({ newTeamId: value }),\n },\n} as const;\n\ninterface UseManageTicketModalParams {\n id: string;\n state: string;\n onClose: (params: {\n newStatus?: string | number;\n newPriority?: string | number;\n newTeamId?: string | number;\n cancelled?: boolean;\n }) => void;\n}\n\nexport function useManageTicketModal({ id, state, onClose }: UseManageTicketModalParams) {\n const [isSaving, setIsSaving] = useState(false);\n const [newStatus, setNewStatus] = useState<string | number>('');\n const [newPriority, setNewPriority] = useState<string | number>('');\n const [selectedTeam, setSelectedTeam] = useState<string | number>('');\n const [teams, setTeams] = useState<{ _id: string; name: string }[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [isError, setIsError] = useState(false);\n\n const modalTitle = STATE_CONFIG[state as keyof typeof STATE_CONFIG]?.title ?? 'Manage Ticket';\n\n useEffect(() => {\n if (state !== 'TRANSFER_TICKET') {\n setIsLoading(false);\n setIsError(false);\n return;\n }\n\n setIsLoading(true);\n setIsError(false);\n\n const fetchTeams = async () => {\n try {\n const response = await httpClient.fetchWithAuth(`${BASE_URL}/api/teams/teams`);\n const data = await response.json();\n setTeams(data.teams);\n } catch (error) {\n console.error('Error fetching teams:', error);\n setIsError(true);\n } finally {\n setIsLoading(false);\n }\n };\n\n fetchTeams();\n }, [id, state]);\n\n const handleSave = async () => {\n const config = STATE_CONFIG[state as keyof typeof STATE_CONFIG];\n if (!config) return;\n\n const valueMap: Record<string, string | number> = {\n STATUS_CHANGE: newStatus,\n PRIORITY_CHANGE: newPriority,\n TRANSFER_TICKET: selectedTeam,\n };\n const value = valueMap[state];\n if (!value) return;\n\n setIsSaving(true);\n try {\n await httpClient.fetchWithAuth(config.getUrl(id, value), { method: 'PUT' });\n onClose(config.getPayload(value));\n } catch (error) {\n console.error('Error saving:', error);\n } finally {\n setIsSaving(false);\n }\n };\n\n const handleCancel = () => onClose({ cancelled: true });\n\n return {\n // State\n isSaving,\n isLoading,\n isError,\n teams,\n newStatus,\n newPriority,\n selectedTeam,\n modalTitle,\n // Setters\n setNewStatus,\n setNewPriority,\n setSelectedTeam,\n // Handlers\n handleSave,\n handleCancel,\n };\n}\n", "import type { FC } from 'react';\nimport { Box, FormField, Input, Dropdown } from '@wix/design-system';\nimport type { StatusChangeContentProps } from './ManageTicketModal.types';\n\nconst STATUS_LABELS: Record<string, string> = {\n closed: 'Closed',\n in_progress: 'In Progress',\n open: 'Open',\n};\n\nconst StatusChangeContent: FC<StatusChangeContentProps> = ({ currentStatus, newStatus, onStatusChange }) => {\n return (\n <Box direction=\"vertical\" width=\"stretch\" gap=\"10px\">\n <FormField label=\"Current Status\">\n <Input value={STATUS_LABELS[currentStatus] ?? currentStatus} disabled />\n </FormField>\n <FormField label=\"New Status\">\n <Dropdown\n options={[\n { id: 'open', value: 'Open' },\n { id: 'in_progress', value: 'In Progress' },\n { id: 'closed', value: 'Closed' },\n ]}\n placeholder=\"Select new status\"\n selectedId={newStatus || ''}\n popoverProps={{ appendTo: 'window', zIndex: 9999 }}\n onSelect={(option: any) => onStatusChange(option?.id ?? '')}\n />\n </FormField>\n </Box>\n );\n};\n\nexport default StatusChangeContent;\n", "import type { FC } from 'react';\nimport { Box, FormField, Input, Dropdown } from '@wix/design-system';\nimport type { PriorityChangeContentProps } from './ManageTicketModal.types';\n\nconst PRIORITY_LABELS: Record<string, string> = {\n high: 'High',\n medium: 'Medium',\n low: 'Low',\n};\n\nconst PriorityChangeContent: FC<PriorityChangeContentProps> = ({ currentPriority, newPriority, onPriorityChange }) => {\n return (\n <Box direction=\"vertical\" width=\"stretch\" gap=\"10px\">\n <FormField label=\"Current Priority\">\n <Input value={PRIORITY_LABELS[currentPriority] ?? currentPriority} disabled />\n </FormField>\n <FormField label=\"New Priority\">\n <Dropdown\n options={[\n { id: 'high', value: 'High' },\n { id: 'medium', value: 'Medium' },\n { id: 'low', value: 'Low' },\n ]}\n placeholder=\"Select new priority\"\n selectedId={newPriority || ''}\n popoverProps={{ appendTo: 'window', zIndex: 9999 }}\n onSelect={(option: any) => onPriorityChange(option?.id ?? '')}\n />\n </FormField>\n </Box>\n );\n};\n\nexport default PriorityChangeContent;\n", "import type { FC } from 'react';\nimport { Box, FormField, Input, Dropdown } from '@wix/design-system';\nimport type { TransferTicketContentProps } from './ManageTicketModal.types';\n\nconst TransferTicketContent: FC<TransferTicketContentProps> = ({ currentTeam, teams, selectedTeam, onTeamChange }) => {\n return (\n <Box direction=\"vertical\" width=\"stretch\" gap=\"10px\">\n <FormField label=\"Current Team\">\n <Input value={currentTeam} disabled />\n </FormField>\n <FormField label=\"New Team\">\n <Dropdown\n options={teams.map((team) => ({ id: team._id, value: team.name }))}\n placeholder=\"Select new team\"\n selectedId={selectedTeam || ''}\n popoverProps={{ appendTo: 'window', zIndex: 9999 }}\n onSelect={(option: any) => onTeamChange(option?.id ?? '')}\n />\n </FormField>\n </Box>\n );\n};\n\nexport default TransferTicketContent;\n", "if (typeof document !== 'undefined' && !document.getElementById(\"jrapps-style-94103778\")) {\n const s = document.createElement('style');\n s.id = \"jrapps-style-94103778\";\n s.textContent = \".manage-ticket-modal {\\n /* ManageTicketModal base styles */\\n}\\n\";\n document.head.appendChild(s);\n}", "import { useRef, useState, forwardRef } from 'react';\nimport type { SidebarProps } from './Sidebar.types';\nimport { Avatar, Box, Text } from '@wix/design-system';\nimport { ChevronLeft, ChevronRight } from '@wix/wix-ui-icons-common';\nimport SidebarMenuItem from './sidebar-menu-item';\nimport AvatarDropdown from './footer/avatar-dropdown.wrapper';\nimport './Sidebar.css';\n\nexport const Sidebar = forwardRef<HTMLDivElement, SidebarProps>(\n ({\n className,\n children,\n items,\n isOpen,\n onItemSelect,\n onModalClosed,\n selectedId = '',\n onCreateTicketClicked,\n agentName,\n agentRole,\n agentProfilePictureUrl,\n status,\n teamId,\n onStatusChange,\n onLogout,\n permissions\n }, ref) => {\n const [expandedSections, setExpandedSections] = useState<Set<string>>(new Set());\n const [expanded, setExpanded] = useState(true);\n const [shouldShowExpandButton, setShouldShowExpandButton] = useState(false);\n const sidebarRef = useRef<HTMLDivElement>(null);\n const SIDEBAR_EXPANDED_WIDTH = '210px';\n\n const toggleSection = (sectionId: string) => {\n const newExpanded = new Set(expandedSections);\n if (newExpanded.has(sectionId)) {\n newExpanded.delete(sectionId);\n } else {\n newExpanded.add(sectionId);\n }\n setExpandedSections(newExpanded);\n };\n\n const handleItemClick = (id: string) => {\n onItemSelect?.(id);\n };\n\n const toggleSidebar = () => {\n const el = sidebarRef.current;\n if (!el) { setExpanded(!expanded); return; }\n\n if (expanded) {\n // Collapsing: instant, no animation\n setExpanded(false);\n } else {\n // Expanding: animate from current to 210px\n const currentWidth = el.offsetWidth;\n\n const clearInlineStyles = () => {\n el.style.width = '';\n el.style.minWidth = '';\n el.style.transition = '';\n el.removeEventListener('transitionend', clearInlineStyles);\n };\n\n el.style.transition = 'none';\n el.style.width = `${currentWidth}px`;\n el.style.minWidth = `${currentWidth}px`;\n void el.offsetHeight; // force reflow\n el.style.transition = '';\n el.style.width = SIDEBAR_EXPANDED_WIDTH;\n el.style.minWidth = SIDEBAR_EXPANDED_WIDTH;\n\n el.addEventListener('transitionend', clearInlineStyles, { once: true });\n setExpanded(true);\n }\n }\n\n const rootItems = items.filter(item => !item.parent || item.parent === 'default');\n const currentUrl = new URL(import.meta.url);\n const expandedClassName = expanded ? 'expanded' : 'closed';\n return (\n <div className=\"sidebar-outer-wrapper\" ref={ref}>\n {shouldShowExpandButton && <div onMouseEnter={() => setShouldShowExpandButton(true)} onMouseLeave={() => setShouldShowExpandButton(false)} className='sidebar-expand-button-container'><div onClick={toggleSidebar}>{expanded ? <ChevronLeft /> : <ChevronRight />}</div></div>}\n <div ref={sidebarRef} className={`sidebar-container ${expanded ? 'expanded' : 'closed'}`}>\n {isOpen && (\n <>\n <div onMouseEnter={() => setShouldShowExpandButton(true)} onMouseLeave={() => setShouldShowExpandButton(false)}>\n <Box className=\"sidebar-header-box\" direction=\"horizontal\" gap={'13px'} WebkitAlignItems={'center'}>\n <img width={'37px'} height={'37px'} src={currentUrl.origin + '/logo.png'} alt=\"My Tickets Logo\" className='sidebar-logo' />\n {expanded && <Text className=\"header-title\">My Tickets</Text>}\n </Box>\n </div>\n <Box className={`sidebar-items-container ${expandedClassName}`} direction=\"vertical\">\n {rootItems.map((item) => (\n <SidebarMenuItem\n key={item.stateId}\n item={item}\n items={items}\n expanded={expanded}\n expandedClassName={expandedClassName}\n selectedId={selectedId}\n expandedSections={expandedSections}\n teamId={teamId}\n onToggleSection={toggleSection}\n onItemClick={handleItemClick}\n onModalClosed={onModalClosed}\n onCreateTicketClicked={onCreateTicketClicked}\n totalCount={item.totalCount || 0}\n />\n ))}\n </Box>\n <Box direction='horizontal' className={`sidebar-footer ${expandedClassName}`}>\n <Box marginTop={'2px'} maxWidth={'100%'} minWidth={0}>\n {expanded && <AvatarDropdown status={status} onStatusChange={onStatusChange} onLogout={onLogout} permissions={permissions} agentProfilePictureUrl={agentProfilePictureUrl} agentName={agentName} agentRole={agentRole} />}\n {!expanded && <Avatar name={agentName && !agentProfilePictureUrl ? agentName : undefined} size=\"size30\" imgProps={(!agentName && agentProfilePictureUrl || agentName && agentProfilePictureUrl) ? { src: agentProfilePictureUrl } : undefined} />}\n </Box>\n </Box>\n </>\n )}\n </div>\n </div>\n );\n }\n);\n\nSidebar.displayName = 'Sidebar';\n", "import type { FC } from 'react';\nimport { useEffect, useState } from 'react';\nimport { Box, Text, CounterBadge } from '@wix/design-system';\nimport { dashboard } from '@wix/dashboard';\n\nimport type { SidebarMenuItemProps, SideBarItem } from './Sidebar.types';\n\nconst SidebarMenuItem: FC<SidebarMenuItemProps> = ({\n item,\n items,\n expanded,\n expandedClassName,\n selectedId,\n expandedSections,\n teamId,\n totalCount,\n onToggleSection,\n onItemClick,\n onModalClosed,\n onCreateTicketClicked,\n}) => {\n const [itemTotalCount, setItemTotalCount] = useState<number | string>(totalCount);\n const hasChildren = items.some(i => i.parent === item.stateId);\n const isExpanded = expandedSections.has(item.stateId);\n const isSelected = selectedId === item.stateId;\n\n useEffect(() => {\n setItemTotalCount(totalCount);\n }, [totalCount]);\n\n const handleAction = async (actionItem: SideBarItem) => {\n if (actionItem.type === 'page') {\n onItemClick(actionItem.stateId);\n } else if (actionItem.type === 'modal') {\n const { modalClosed } = dashboard.openModal({ modalId: String(actionItem.modalId), params: actionItem.modalParams });\n modalClosed.then((result: any) => {\n if (result && onModalClosed) {\n onModalClosed(result);\n }\n });\n } else if (actionItem.type === 'custom_modal') {\n onCreateTicketClicked?.();\n } else if (actionItem.type === 'link') {\n const generatedLink = await dashboard.getPageUrl({ pageId: \"9f1191cb-46cb-4280-af8d-5c15d89aced8\", relativeUrl: actionItem.link || '' });\n window.open(generatedLink, '_blank')\n }\n };\n\n if (hasChildren) {\n const children = items.filter(i => i.parent === item.stateId);\n return (\n <div key={item.stateId} className=\"sidebar-section\">\n <div\n className={`sidebar-item sidebar-parent-item ${isSelected ? 'sidebar-item-selected' : ''}`}\n onClick={() => onToggleSection(item.stateId)}\n >\n <Box className=\"sidebar-item-icon\">{item.prefixIcon}</Box>\n {expanded && (\n <>\n <Box className=\"sidebar-item-content\" direction=\"vertical\">\n <Text size='small' className=\"sidebar-item-title\">{item.label}</Text>\n {item.subtitle && <Text size='small' className=\"sidebar-item-subtitle\">{item.subtitle}</Text>}\n </Box>\n <Box className={`sidebar-item-chevron ${isExpanded ? 'expanded' : ''}`}>\n \u25BC\n </Box>\n </>\n )}\n </div>\n {isExpanded && (\n <Box className=\"sidebar-submenu-container\" direction=\"vertical\">\n {children.map((child) => (\n <div\n key={child.stateId}\n className={`sidebar-item sidebar-child-item ${expandedClassName} ${selectedId === child.stateId ? 'sidebar-item-selected' : ''}`}\n onClick={() => handleAction(child)}\n >\n <Box className=\"sidebar-item-icon\">{child.prefixIcon}</Box>\n {expanded && (\n <>\n <Box className=\"sidebar-item-content\" direction=\"vertical\">\n <Text size='small' className=\"sidebar-item-title-submenu\">{child.label}</Text>\n {child.subtitle && <Text size='small' className=\"sidebar-item-subtitle\">{child.subtitle}</Text>}\n </Box>\n </>\n )}\n </div>\n ))}\n </Box>\n )}\n </div>\n );\n }\n\n return (\n <div\n key={item.stateId}\n className={`sidebar-item ${expandedClassName} ${isSelected ? 'sidebar-item-selected' : ''}`}\n onClick={() => handleAction(item)}\n >\n <Box className=\"sidebar-item-icon\">{item.prefixIcon}</Box>\n {expanded && (\n <>\n <Box className=\"sidebar-item-content\">\n <Box verticalAlign='middle' gap={2}>\n <Box direction=\"vertical\">\n <Text size='small' className=\"sidebar-item-title\">{item.label}</Text>\n {item.subtitle && <Text size='small' className=\"sidebar-item-subtitle\">{item.subtitle}</Text>}\n </Box>\n {item?.showTotalCount && item?.showTotalCount === true && <CounterBadge size=\"medium\" skin=\"warning\">{String(itemTotalCount)}</CounterBadge>}\n </Box>\n </Box>\n </>\n )}\n </div>\n );\n};\n\nexport default SidebarMenuItem;\n", "import { useState, type FC } from 'react';\nimport {\n Avatar,\n listItemActionBuilder,\n DropdownBase,\n TextButton,\n listItemSectionBuilder,\n listItemSelectBuilder,\n Box,\n Text\n} from '@wix/design-system';\nimport StatusDots from './status-dots.wrapper';\nimport { ChevronDown } from '@wix/wix-ui-icons-common';\n\nimport type { Status, AvatarDropdownWrapperProps } from '../Sidebar.types';\n\nconst AvatarDropdown: FC<AvatarDropdownWrapperProps> = ({ status = 'online', onStatusChange, onLogout, permissions, agentProfilePictureUrl, agentName, agentRole }) => {\n const [selectedStatus, setSelectedStatus] = useState<Status>(status);\n\n const handleStatusChange = (newStatus: Status) => {\n setSelectedStatus(newStatus);\n if (onStatusChange) {\n onStatusChange(newStatus);\n }\n };\n\n const handleLogout = () => {\n if (onLogout) {\n onLogout();\n }\n };\n\n const options = [\n listItemSectionBuilder({\n id: 'status-section',\n title: 'Online Status',\n }),\n listItemSelectBuilder({\n id: 'online',\n checkbox: true,\n prefix: <StatusDots.Online />,\n title: 'Online',\n disabled: permissions?.['my-tickets-change-agent-online-status'] === true ? false : true,\n }),\n listItemSelectBuilder({\n id: 'busy',\n checkbox: true,\n prefix: <StatusDots.Away />,\n title: 'Away',\n disabled: permissions?.['my-tickets-change-agent-online-status'] === true ? false : true,\n }),\n listItemSelectBuilder({\n id: 'offline',\n checkbox: true,\n prefix: <StatusDots.DoNotDisturb />,\n title: 'Offline',\n disabled: permissions?.['my-tickets-change-agent-online-status'] === true ? false : true,\n }),\n { id: 'divider-1', value: '-' },\n listItemActionBuilder({\n id: 0,\n title: 'Logout',\n onClick: handleLogout,\n }),\n ];\n\n return (\n <DropdownBase options={options} selectedId={selectedStatus} onSelect={(option: any) => typeof option.id === 'string' && handleStatusChange(option.id as Status)} className='sidebar-avatar-dropdown' minWidth={0}>\n {({ toggle }: any) => (\n <TextButton className=\"header-account-button\" onClick={toggle}>\n <Box verticalAlign='middle' gap={2} textAlign='start' maxWidth={'100%'} minWidth={0}>\n <Avatar presence={selectedStatus} name={agentName && !agentProfilePictureUrl ? agentName : undefined} size=\"size30\" imgProps={(!agentName && agentProfilePictureUrl || agentName && agentProfilePictureUrl) ? { src: agentProfilePictureUrl } : undefined} />\n <Box direction='vertical' gap={0} verticalAlign='middle' maxWidth={'100%'} minWidth={0}>\n <Text weight='bold' size='small' ellipsis maxWidth={'100%'}>{agentName ? agentName : 'Error getting name'}</Text>\n <Text size=\"tiny\" secondary ellipsis maxWidth={'100%'}>{agentRole ? agentRole : 'Error getting role'}</Text>\n </Box>\n <ChevronDown />\n </Box>\n </TextButton>\n )}\n </DropdownBase>\n )\n}\n\nexport default AvatarDropdown;", "const Online = () => {\n return <div style={{ width: '8px', height: '8px', borderRadius: '50%', background: '#22c55e', boxShadow: '0 0 0 2px #fff' }}></div>\n}\n\nconst Away = () => {\n return <div style={{ width: '8px', height: '8px', borderRadius: '50%', background: '#f59e0b', boxShadow: '0 0 0 2px #fff' }}></div>\n}\n\nconst DoNotDisturb = () => {\n return <div style={{ position: 'relative', width: '8px', height: '8px', borderRadius: '50%', background: '#ef4444', boxShadow: '0 0 0 2px #fff' }}>\n <div style={{ position: 'absolute', top: '50%', left: '10%', right: '10%', height: '2px', background: '#fff', transform: 'translateY(-50%)', borderRadius: '1px' }}></div>\n </div>\n}\n\nconst Offline = () => {\n return <div style={{ width: '8px', height: '8px', borderRadius: '50%', border: '2px solid #71717a', boxShadow: '0 0 0 2px #fff' }}></div>\n}\n\nconst StatusDots = {\n Online,\n Away,\n DoNotDisturb,\n Offline,\n}\n\nexport default StatusDots;", "if (typeof document !== 'undefined' && !document.getElementById(\"jrapps-style-eea3023c\")) {\n const s = document.createElement('style');\n s.id = \"jrapps-style-eea3023c\";\n s.textContent = \".sidebar-outer-wrapper {\\n position: relative;\\n display: flex;\\n flex-shrink: 0;\\n max-height: 100%;\\n}\\n\\n.sidebar-container {\\n background: #f8f7f4;\\n max-height: 100% !important;\\n border-right: 1px solid #e1e4e8;\\n border-left: 1px solid #e1e4e8;\\n border-top: 1px solid #e1e4e8;\\n display: flex;\\n flex-direction: column;\\n box-shadow: 2px 0 8px rgba(0, 0, 0, 0.06);\\n box-sizing: border-box;\\n transition: width 0.3s ease, min-width 0.3s ease;\\n overflow: hidden;\\n}\\n\\n.sidebar-container.expanded {\\n width: 210px;\\n min-width: 210px;\\n}\\n\\n.sidebar-container.closed {\\n width: max-content;\\n min-width: 0;\\n}\\n\\n.sidebar-header {\\n padding: 16px 18px 12px;\\n border-bottom: 1px solid #f0f2f5;\\n}\\n\\n.sidebar-header-title {\\n margin: 0;\\n color: #1a1a1a;\\n font-weight: 600;\\n font-size: 14px;\\n line-height: 1.4;\\n text-align: center;\\n text-overflow: clip;\\n white-space: nowrap;\\n overflow: hidden;\\n}\\n\\n.sidebar-items-container.expanded {\\n flex: 1;\\n width: 100%;\\n min-height: 0;\\n display: flex;\\n column-gap: 15px;\\n row-gap: 12px;\\n overflow-y: auto;\\n padding-top: 8px;\\n}\\n\\n.sidebar-items-container.closed {\\n flex: 1;\\n width: 100%;\\n min-height: 0;\\n display: flex;\\n column-gap: 15px;\\n row-gap: 12px;\\n overflow-y: auto;\\n padding-top: 8px;\\n align-items: center;\\n}\\n\\n.sidebar-items-container::-webkit-scrollbar {\\n width: 6px;\\n}\\n\\n.sidebar-items-container::-webkit-scrollbar-track {\\n background: transparent;\\n}\\n\\n.sidebar-items-container::-webkit-scrollbar-thumb {\\n background: #d0d7de;\\n border-radius: 3px;\\n}\\n\\n.sidebar-items-container::-webkit-scrollbar-thumb:hover {\\n background: #bec3cc;\\n}\\n\\n.sidebar-section {\\n display: flex;\\n flex-direction: column;\\n}\\n\\n.sidebar-item,\\n.sidebar-item-selected {\\n display: flex;\\n flex-direction: row;\\n column-gap: 12px;\\n padding: 8px 8px;\\n margin: 0 8px;\\n border-radius: 8px;\\n cursor: pointer;\\n transition: all 0.2s ease;\\n}\\n\\n.sidebar-item.expanded {\\n background-color: transparent;\\n align-items: center;\\n user-select: none;\\n}\\n\\n.sidebar-item.closed {\\n align-items: center;\\n justify-content: center;\\n background-color: transparent;\\n user-select: none;\\n width: max-content;\\n}\\n\\n.sidebar-item:hover {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n\\n.sidebar-item.sidebar-item-selected {\\n background: white;\\n border: 0.5px solid rgba(0, 0, 0, 0.15);\\n align-items: center;\\n}\\n\\n.sidebar-item-icon {\\n flex-shrink: 0;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.sidebar-item-content {\\n display: flex;\\n flex-direction: column;\\n flex: 1;\\n width: 100%;\\n}\\n\\n.sidebar-item-title-submenu {\\n color: #1a1a1a;\\n font-weight: 600;\\n font-size: 13px;\\n line-height: 1.4;\\n width: 100%;\\n}\\n\\n.sidebar-item-title-submenu {\\n color: #1a1a1a;\\n font-weight: 600;\\n font-size: 13px;\\n line-height: 1.4;\\n width: max-content;\\n text-align: end;\\n}\\n\\n.sidebar-item-subtitle {\\n color: #6d7681;\\n font-size: 12px;\\n line-height: 1.4;\\n margin-top: 2px;\\n}\\n\\n.sidebar-parent-item {\\n justify-content: space-between;\\n border-top: 0.5px solid rgba(0, 0, 0, 0.15);\\n border-top-left-radius: 0px;\\n border-top-right-radius: 0px;\\n}\\n\\n.sidebar-item-chevron {\\n flex-shrink: 0;\\n color: #6d7681;\\n font-size: 10px;\\n transition: transform 0.2s ease;\\n display: flex;\\n align-items: center;\\n}\\n\\n.sidebar-item-chevron.expanded {\\n transform: rotate(-180deg);\\n}\\n\\n.sidebar-submenu-container {\\n display: flex;\\n flex-direction: column;\\n row-gap: 8px;\\n padding: 0;\\n}\\n\\n.sidebar-child-item {\\n padding: 8px 0px 8px 12px;\\n margin: 0 8px;\\n}\\n\\n.sidebar-child-item .sidebar-item-title {\\n font-weight: 500;\\n color: #6d7681;\\n}\\n\\n.sidebar-child-item:hover .sidebar-item-title {\\n color: #1a1a1a;\\n}\\n\\n@media (max-width: 1200px) {\\n .sidebar-container.expanded {\\n width: auto;\\n min-width: 210px;\\n }\\n}\\n\\n@media (max-width: 768px) {\\n .sidebar-container.expanded {\\n position: absolute;\\n left: 0;\\n top: 0;\\n height: 100vh;\\n z-index: 1000;\\n box-shadow: 4px 0 12px rgba(0, 0, 0, 0.15);\\n }\\n}\\n\\n.sidebar-header-box {\\n padding: 16px 18px 12px;\\n border-bottom: 0.5px solid rgba(0, 0, 0, 0.15);\\n}\\n\\n.sidebar-avatar-dropdown {\\n min-width: 0px;\\n max-width: 100%;\\n}\\n\\n.header-account-button {\\n min-width: 0;\\n max-width: 100%;\\n height: max-content;\\n}\\n\\n.header-account-button span {\\n min-width: 0;\\n max-width: 100%;\\n}\\n\\n.sidebar-expand-button-container {\\n position: absolute;\\n top: 3%;\\n background: #f8f7f4;\\n border: 1px solid #e1e4e8;\\n border-radius: 4px;\\n cursor: pointer;\\n z-index: 1001;\\n right: 0;\\n transform: translateX(100%) translateY(-50%);\\n border-top: 2px solid #e1e4e8;\\n border-right: 2px solid #e1e4e8;\\n border-bottom: 2px solid #e1e4e8;\\n border-left: 0px;\\n align-items: center;\\n text-align: center;\\n}\\n\\n.sidebar-expand-button-container div {\\n align-items: center;\\n text-align: center;\\n}\\n\\n.sidebar-footer.expanded {\\n padding: 16px 8px 16px 12px;\\n border-top: 0.5px solid rgba(0, 0, 0, 0.15);\\n gap: 2px;\\n max-width: 100%;\\n min-width: 0;\\n}\\n\\n.sidebar-footer.closed {\\n padding: 16px 16px 16px 16px;\\n border-top: 0.5px solid rgba(0, 0, 0, 0.15);\\n gap: 2px;\\n max-width: 100%;\\n min-width: 0;\\n align-items: center;\\n justify-content: center;\\n}\";\n document.head.appendChild(s);\n}"],
5
- "mappings": "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",
6
- "names": ["import_react", "import_design_system", "import_design_system", "import_jsx_runtime", "import_design_system", "import_jsx_runtime", "import_jsx_runtime", "React", "import_react", "import_design_system", "import_wix_ui_icons_common", "import_react", "import_design_system", "import_jsx_runtime", "import_react", "import_design_system", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime"]
3
+ "sources": ["../../src/index.ts", "../../src/components/Sidebar/Sidebar.tsx", "../../src/components/Sidebar/sidebar-menu-item.tsx", "../../src/components/Sidebar/footer/avatar-dropdown.wrapper.tsx", "../../src/components/Sidebar/footer/status-dots.wrapper.tsx", "../../src/components/Sidebar/Sidebar.css"],
4
+ "sourcesContent": ["export * from './components';", "import { useRef, useState, forwardRef } from 'react';\nimport type { SidebarProps } from './Sidebar.types';\nimport { Avatar, Box, Text } from '@wix/design-system';\nimport { ChevronLeft, ChevronRight } from '@wix/wix-ui-icons-common';\nimport SidebarMenuItem from './sidebar-menu-item';\nimport AvatarDropdown from './footer/avatar-dropdown.wrapper';\nimport './Sidebar.css';\n\nexport const Sidebar = forwardRef<HTMLDivElement, SidebarProps>(\n ({\n className,\n children,\n items,\n isOpen,\n onItemSelect,\n onModalClosed,\n selectedId = '',\n onCreateTicketClicked,\n agentName,\n agentRole,\n agentProfilePictureUrl,\n status,\n teamId,\n onStatusChange,\n onLogout,\n permissions\n }, ref) => {\n const [expandedSections, setExpandedSections] = useState<Set<string>>(new Set());\n const [expanded, setExpanded] = useState(true);\n const [shouldShowExpandButton, setShouldShowExpandButton] = useState(false);\n const sidebarRef = useRef<HTMLDivElement>(null);\n const SIDEBAR_EXPANDED_WIDTH = '210px';\n\n const toggleSection = (sectionId: string) => {\n const newExpanded = new Set(expandedSections);\n if (newExpanded.has(sectionId)) {\n newExpanded.delete(sectionId);\n } else {\n newExpanded.add(sectionId);\n }\n setExpandedSections(newExpanded);\n };\n\n const handleItemClick = (id: string) => {\n onItemSelect?.(id);\n };\n\n const toggleSidebar = () => {\n const el = sidebarRef.current;\n if (!el) { setExpanded(!expanded); return; }\n\n if (expanded) {\n // Collapsing: instant, no animation\n setExpanded(false);\n } else {\n // Expanding: animate from current to 210px\n const currentWidth = el.offsetWidth;\n\n const clearInlineStyles = () => {\n el.style.width = '';\n el.style.minWidth = '';\n el.style.transition = '';\n el.removeEventListener('transitionend', clearInlineStyles);\n };\n\n el.style.transition = 'none';\n el.style.width = `${currentWidth}px`;\n el.style.minWidth = `${currentWidth}px`;\n void el.offsetHeight; // force reflow\n el.style.transition = '';\n el.style.width = SIDEBAR_EXPANDED_WIDTH;\n el.style.minWidth = SIDEBAR_EXPANDED_WIDTH;\n\n el.addEventListener('transitionend', clearInlineStyles, { once: true });\n setExpanded(true);\n }\n }\n\n const rootItems = items.filter(item => !item.parent || item.parent === 'default');\n const currentUrl = new URL(import.meta.url);\n const expandedClassName = expanded ? 'expanded' : 'closed';\n return (\n <div className=\"sidebar-outer-wrapper\" ref={ref}>\n {shouldShowExpandButton && <div onMouseEnter={() => setShouldShowExpandButton(true)} onMouseLeave={() => setShouldShowExpandButton(false)} className='sidebar-expand-button-container'><div onClick={toggleSidebar}>{expanded ? <ChevronLeft /> : <ChevronRight />}</div></div>}\n <div ref={sidebarRef} className={`sidebar-container ${expanded ? 'expanded' : 'closed'}`}>\n {isOpen && (\n <>\n <div onMouseEnter={() => setShouldShowExpandButton(true)} onMouseLeave={() => setShouldShowExpandButton(false)}>\n <Box className=\"sidebar-header-box\" direction=\"horizontal\" gap={'13px'} WebkitAlignItems={'center'}>\n <img width={'37px'} height={'37px'} src={currentUrl.origin + '/logo.png'} alt=\"My Tickets Logo\" className='sidebar-logo' />\n {expanded && <Text className=\"header-title\">My Tickets</Text>}\n </Box>\n </div>\n <Box className={`sidebar-items-container ${expandedClassName}`} direction=\"vertical\">\n {rootItems.map((item) => (\n <SidebarMenuItem\n key={item.stateId}\n item={item}\n items={items}\n expanded={expanded}\n expandedClassName={expandedClassName}\n selectedId={selectedId}\n expandedSections={expandedSections}\n teamId={teamId}\n onToggleSection={toggleSection}\n onItemClick={handleItemClick}\n onModalClosed={onModalClosed}\n onCreateTicketClicked={onCreateTicketClicked}\n totalCount={item.totalCount || 0}\n />\n ))}\n </Box>\n <Box direction='horizontal' className={`sidebar-footer ${expandedClassName}`}>\n <Box marginTop={'2px'} maxWidth={'100%'} minWidth={0}>\n {expanded && <AvatarDropdown status={status} onStatusChange={onStatusChange} onLogout={onLogout} permissions={permissions} agentProfilePictureUrl={agentProfilePictureUrl} agentName={agentName} agentRole={agentRole} />}\n {!expanded && <Avatar name={agentName && !agentProfilePictureUrl ? agentName : undefined} size=\"size30\" imgProps={(!agentName && agentProfilePictureUrl || agentName && agentProfilePictureUrl) ? { src: agentProfilePictureUrl } : undefined} />}\n </Box>\n </Box>\n </>\n )}\n </div>\n </div>\n );\n }\n);\n\nSidebar.displayName = 'Sidebar';\n", "import type { FC } from 'react';\nimport { useEffect, useState } from 'react';\nimport { Box, Text, CounterBadge } from '@wix/design-system';\nimport { dashboard } from '@wix/dashboard';\n\nimport type { SidebarMenuItemProps, SideBarItem } from './Sidebar.types';\n\nconst SidebarMenuItem: FC<SidebarMenuItemProps> = ({\n item,\n items,\n expanded,\n expandedClassName,\n selectedId,\n expandedSections,\n teamId,\n totalCount,\n onToggleSection,\n onItemClick,\n onModalClosed,\n onCreateTicketClicked,\n}) => {\n const [itemTotalCount, setItemTotalCount] = useState<number | string>(totalCount);\n const hasChildren = items.some(i => i.parent === item.stateId);\n const isExpanded = expandedSections.has(item.stateId);\n const isSelected = selectedId === item.stateId;\n\n useEffect(() => {\n setItemTotalCount(totalCount);\n }, [totalCount]);\n\n const handleAction = async (actionItem: SideBarItem) => {\n if (actionItem.type === 'page') {\n onItemClick(actionItem.stateId);\n } else if (actionItem.type === 'modal') {\n const { modalClosed } = dashboard.openModal({ modalId: String(actionItem.modalId), params: actionItem.modalParams });\n modalClosed.then((result: any) => {\n if (result && onModalClosed) {\n onModalClosed(result);\n }\n });\n } else if (actionItem.type === 'custom_modal') {\n onCreateTicketClicked?.();\n } else if (actionItem.type === 'link') {\n const generatedLink = await dashboard.getPageUrl({ pageId: \"9f1191cb-46cb-4280-af8d-5c15d89aced8\", relativeUrl: actionItem.link || '' });\n window.open(generatedLink, '_blank')\n }\n };\n\n if (hasChildren) {\n const children = items.filter(i => i.parent === item.stateId);\n return (\n <div key={item.stateId} className=\"sidebar-section\">\n <div\n className={`sidebar-item sidebar-parent-item ${isSelected ? 'sidebar-item-selected' : ''}`}\n onClick={() => onToggleSection(item.stateId)}\n >\n <Box className=\"sidebar-item-icon\">{item.prefixIcon}</Box>\n {expanded && (\n <>\n <Box className=\"sidebar-item-content\" direction=\"vertical\">\n <Text size='small' className=\"sidebar-item-title\">{item.label}</Text>\n {item.subtitle && <Text size='small' className=\"sidebar-item-subtitle\">{item.subtitle}</Text>}\n </Box>\n <Box className={`sidebar-item-chevron ${isExpanded ? 'expanded' : ''}`}>\n \u25BC\n </Box>\n </>\n )}\n </div>\n {isExpanded && (\n <Box className=\"sidebar-submenu-container\" direction=\"vertical\">\n {children.map((child) => (\n <div\n key={child.stateId}\n className={`sidebar-item sidebar-child-item ${expandedClassName} ${selectedId === child.stateId ? 'sidebar-item-selected' : ''}`}\n onClick={() => handleAction(child)}\n >\n <Box className=\"sidebar-item-icon\">{child.prefixIcon}</Box>\n {expanded && (\n <>\n <Box className=\"sidebar-item-content\" direction=\"vertical\">\n <Text size='small' className=\"sidebar-item-title-submenu\">{child.label}</Text>\n {child.subtitle && <Text size='small' className=\"sidebar-item-subtitle\">{child.subtitle}</Text>}\n </Box>\n </>\n )}\n </div>\n ))}\n </Box>\n )}\n </div>\n );\n }\n\n return (\n <div\n key={item.stateId}\n className={`sidebar-item ${expandedClassName} ${isSelected ? 'sidebar-item-selected' : ''}`}\n onClick={() => handleAction(item)}\n >\n <Box className=\"sidebar-item-icon\">{item.prefixIcon}</Box>\n {expanded && (\n <>\n <Box className=\"sidebar-item-content\">\n <Box verticalAlign='middle' gap={2}>\n <Box direction=\"vertical\">\n <Text size='small' className=\"sidebar-item-title\">{item.label}</Text>\n {item.subtitle && <Text size='small' className=\"sidebar-item-subtitle\">{item.subtitle}</Text>}\n </Box>\n {item?.showTotalCount && item?.showTotalCount === true && <CounterBadge size=\"medium\" skin=\"warning\">{String(itemTotalCount)}</CounterBadge>}\n </Box>\n </Box>\n </>\n )}\n </div>\n );\n};\n\nexport default SidebarMenuItem;\n", "import { useState, type FC } from 'react';\nimport {\n Avatar,\n listItemActionBuilder,\n DropdownBase,\n TextButton,\n listItemSectionBuilder,\n listItemSelectBuilder,\n Box,\n Text\n} from '@wix/design-system';\nimport StatusDots from './status-dots.wrapper';\nimport { ChevronDown } from '@wix/wix-ui-icons-common';\n\nimport type { Status, AvatarDropdownWrapperProps } from '../Sidebar.types';\n\nconst AvatarDropdown: FC<AvatarDropdownWrapperProps> = ({ status = 'online', onStatusChange, onLogout, permissions, agentProfilePictureUrl, agentName, agentRole }) => {\n const [selectedStatus, setSelectedStatus] = useState<Status>(status);\n\n const handleStatusChange = (newStatus: Status) => {\n setSelectedStatus(newStatus);\n if (onStatusChange) {\n onStatusChange(newStatus);\n }\n };\n\n const handleLogout = () => {\n if (onLogout) {\n onLogout();\n }\n };\n\n const options = [\n listItemSectionBuilder({\n id: 'status-section',\n title: 'Online Status',\n }),\n listItemSelectBuilder({\n id: 'online',\n checkbox: true,\n prefix: <StatusDots.Online />,\n title: 'Online',\n disabled: permissions?.['my-tickets-change-agent-online-status'] === true ? false : true,\n }),\n listItemSelectBuilder({\n id: 'busy',\n checkbox: true,\n prefix: <StatusDots.Away />,\n title: 'Away',\n disabled: permissions?.['my-tickets-change-agent-online-status'] === true ? false : true,\n }),\n listItemSelectBuilder({\n id: 'offline',\n checkbox: true,\n prefix: <StatusDots.DoNotDisturb />,\n title: 'Offline',\n disabled: permissions?.['my-tickets-change-agent-online-status'] === true ? false : true,\n }),\n { id: 'divider-1', value: '-' },\n listItemActionBuilder({\n id: 0,\n title: 'Logout',\n onClick: handleLogout,\n }),\n ];\n\n return (\n <DropdownBase options={options} selectedId={selectedStatus} onSelect={(option: any) => typeof option.id === 'string' && handleStatusChange(option.id as Status)} className='sidebar-avatar-dropdown' minWidth={0}>\n {({ toggle }: any) => (\n <TextButton className=\"header-account-button\" onClick={toggle}>\n <Box verticalAlign='middle' gap={2} textAlign='start' maxWidth={'100%'} minWidth={0}>\n <Avatar presence={selectedStatus} name={agentName && !agentProfilePictureUrl ? agentName : undefined} size=\"size30\" imgProps={(!agentName && agentProfilePictureUrl || agentName && agentProfilePictureUrl) ? { src: agentProfilePictureUrl } : undefined} />\n <Box direction='vertical' gap={0} verticalAlign='middle' maxWidth={'100%'} minWidth={0}>\n <Text weight='bold' size='small' ellipsis maxWidth={'100%'}>{agentName ? agentName : 'Error getting name'}</Text>\n <Text size=\"tiny\" secondary ellipsis maxWidth={'100%'}>{agentRole ? agentRole : 'Error getting role'}</Text>\n </Box>\n <ChevronDown />\n </Box>\n </TextButton>\n )}\n </DropdownBase>\n )\n}\n\nexport default AvatarDropdown;", "const Online = () => {\n return <div style={{ width: '8px', height: '8px', borderRadius: '50%', background: '#22c55e', boxShadow: '0 0 0 2px #fff' }}></div>\n}\n\nconst Away = () => {\n return <div style={{ width: '8px', height: '8px', borderRadius: '50%', background: '#f59e0b', boxShadow: '0 0 0 2px #fff' }}></div>\n}\n\nconst DoNotDisturb = () => {\n return <div style={{ position: 'relative', width: '8px', height: '8px', borderRadius: '50%', background: '#ef4444', boxShadow: '0 0 0 2px #fff' }}>\n <div style={{ position: 'absolute', top: '50%', left: '10%', right: '10%', height: '2px', background: '#fff', transform: 'translateY(-50%)', borderRadius: '1px' }}></div>\n </div>\n}\n\nconst Offline = () => {\n return <div style={{ width: '8px', height: '8px', borderRadius: '50%', border: '2px solid #71717a', boxShadow: '0 0 0 2px #fff' }}></div>\n}\n\nconst StatusDots = {\n Online,\n Away,\n DoNotDisturb,\n Offline,\n}\n\nexport default StatusDots;", "if (typeof document !== 'undefined' && !document.getElementById(\"jrapps-style-eea3023c\")) {\n const s = document.createElement('style');\n s.id = \"jrapps-style-eea3023c\";\n s.textContent = \".sidebar-outer-wrapper {\\n position: relative;\\n display: flex;\\n flex-shrink: 0;\\n max-height: 100%;\\n}\\n\\n.sidebar-container {\\n background: #f8f7f4;\\n max-height: 100% !important;\\n border-right: 1px solid #e1e4e8;\\n border-left: 1px solid #e1e4e8;\\n border-top: 1px solid #e1e4e8;\\n display: flex;\\n flex-direction: column;\\n box-shadow: 2px 0 8px rgba(0, 0, 0, 0.06);\\n box-sizing: border-box;\\n transition: width 0.3s ease, min-width 0.3s ease;\\n overflow: hidden;\\n}\\n\\n.sidebar-container.expanded {\\n width: 210px;\\n min-width: 210px;\\n}\\n\\n.sidebar-container.closed {\\n width: max-content;\\n min-width: 0;\\n}\\n\\n.sidebar-header {\\n padding: 16px 18px 12px;\\n border-bottom: 1px solid #f0f2f5;\\n}\\n\\n.sidebar-header-title {\\n margin: 0;\\n color: #1a1a1a;\\n font-weight: 600;\\n font-size: 14px;\\n line-height: 1.4;\\n text-align: center;\\n text-overflow: clip;\\n white-space: nowrap;\\n overflow: hidden;\\n}\\n\\n.sidebar-items-container.expanded {\\n flex: 1;\\n width: 100%;\\n min-height: 0;\\n display: flex;\\n column-gap: 15px;\\n row-gap: 12px;\\n overflow-y: auto;\\n padding-top: 8px;\\n}\\n\\n.sidebar-items-container.closed {\\n flex: 1;\\n width: 100%;\\n min-height: 0;\\n display: flex;\\n column-gap: 15px;\\n row-gap: 12px;\\n overflow-y: auto;\\n padding-top: 8px;\\n align-items: center;\\n}\\n\\n.sidebar-items-container::-webkit-scrollbar {\\n width: 6px;\\n}\\n\\n.sidebar-items-container::-webkit-scrollbar-track {\\n background: transparent;\\n}\\n\\n.sidebar-items-container::-webkit-scrollbar-thumb {\\n background: #d0d7de;\\n border-radius: 3px;\\n}\\n\\n.sidebar-items-container::-webkit-scrollbar-thumb:hover {\\n background: #bec3cc;\\n}\\n\\n.sidebar-section {\\n display: flex;\\n flex-direction: column;\\n}\\n\\n.sidebar-item,\\n.sidebar-item-selected {\\n display: flex;\\n flex-direction: row;\\n column-gap: 12px;\\n padding: 8px 8px;\\n margin: 0 8px;\\n border-radius: 8px;\\n cursor: pointer;\\n transition: all 0.2s ease;\\n}\\n\\n.sidebar-item.expanded {\\n background-color: transparent;\\n align-items: center;\\n user-select: none;\\n}\\n\\n.sidebar-item.closed {\\n align-items: center;\\n justify-content: center;\\n background-color: transparent;\\n user-select: none;\\n width: max-content;\\n}\\n\\n.sidebar-item:hover {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n\\n.sidebar-item.sidebar-item-selected {\\n background: white;\\n border: 0.5px solid rgba(0, 0, 0, 0.15);\\n align-items: center;\\n}\\n\\n.sidebar-item-icon {\\n flex-shrink: 0;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.sidebar-item-content {\\n display: flex;\\n flex-direction: column;\\n flex: 1;\\n width: 100%;\\n}\\n\\n.sidebar-item-title-submenu {\\n color: #1a1a1a;\\n font-weight: 600;\\n font-size: 13px;\\n line-height: 1.4;\\n width: 100%;\\n}\\n\\n.sidebar-item-title-submenu {\\n color: #1a1a1a;\\n font-weight: 600;\\n font-size: 13px;\\n line-height: 1.4;\\n width: max-content;\\n text-align: end;\\n}\\n\\n.sidebar-item-subtitle {\\n color: #6d7681;\\n font-size: 12px;\\n line-height: 1.4;\\n margin-top: 2px;\\n}\\n\\n.sidebar-parent-item {\\n justify-content: space-between;\\n border-top: 0.5px solid rgba(0, 0, 0, 0.15);\\n border-top-left-radius: 0px;\\n border-top-right-radius: 0px;\\n}\\n\\n.sidebar-item-chevron {\\n flex-shrink: 0;\\n color: #6d7681;\\n font-size: 10px;\\n transition: transform 0.2s ease;\\n display: flex;\\n align-items: center;\\n}\\n\\n.sidebar-item-chevron.expanded {\\n transform: rotate(-180deg);\\n}\\n\\n.sidebar-submenu-container {\\n display: flex;\\n flex-direction: column;\\n row-gap: 8px;\\n padding: 0;\\n}\\n\\n.sidebar-child-item {\\n padding: 8px 0px 8px 12px;\\n margin: 0 8px;\\n}\\n\\n.sidebar-child-item .sidebar-item-title {\\n font-weight: 500;\\n color: #6d7681;\\n}\\n\\n.sidebar-child-item:hover .sidebar-item-title {\\n color: #1a1a1a;\\n}\\n\\n@media (max-width: 1200px) {\\n .sidebar-container.expanded {\\n width: auto;\\n min-width: 210px;\\n }\\n}\\n\\n@media (max-width: 768px) {\\n .sidebar-container.expanded {\\n position: absolute;\\n left: 0;\\n top: 0;\\n height: 100vh;\\n z-index: 1000;\\n box-shadow: 4px 0 12px rgba(0, 0, 0, 0.15);\\n }\\n}\\n\\n.sidebar-header-box {\\n padding: 16px 18px 12px;\\n border-bottom: 0.5px solid rgba(0, 0, 0, 0.15);\\n}\\n\\n.sidebar-avatar-dropdown {\\n min-width: 0px;\\n max-width: 100%;\\n}\\n\\n.header-account-button {\\n min-width: 0;\\n max-width: 100%;\\n height: max-content;\\n}\\n\\n.header-account-button span {\\n min-width: 0;\\n max-width: 100%;\\n}\\n\\n.sidebar-expand-button-container {\\n position: absolute;\\n top: 3%;\\n background: #f8f7f4;\\n border: 1px solid #e1e4e8;\\n border-radius: 4px;\\n cursor: pointer;\\n z-index: 1001;\\n right: 0;\\n transform: translateX(100%) translateY(-50%);\\n border-top: 2px solid #e1e4e8;\\n border-right: 2px solid #e1e4e8;\\n border-bottom: 2px solid #e1e4e8;\\n border-left: 0px;\\n align-items: center;\\n text-align: center;\\n}\\n\\n.sidebar-expand-button-container div {\\n align-items: center;\\n text-align: center;\\n}\\n\\n.sidebar-footer.expanded {\\n padding: 16px 8px 16px 12px;\\n border-top: 0.5px solid rgba(0, 0, 0, 0.15);\\n gap: 2px;\\n max-width: 100%;\\n min-width: 0;\\n}\\n\\n.sidebar-footer.closed {\\n padding: 16px 16px 16px 16px;\\n border-top: 0.5px solid rgba(0, 0, 0, 0.15);\\n gap: 2px;\\n max-width: 100%;\\n min-width: 0;\\n align-items: center;\\n justify-content: center;\\n}\";\n document.head.appendChild(s);\n}"],
5
+ "mappings": "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",
6
+ "names": ["import_react", "import_design_system", "import_wix_ui_icons_common", "import_react", "import_design_system", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime"]
7
7
  }
package/dist/esm/index.js CHANGED
@@ -1,11 +1,7 @@
1
- import {
2
- ManageTicketModal
3
- } from "./chunks/chunk-YIO4EY76.js";
4
1
  import {
5
2
  Sidebar
6
3
  } from "./chunks/chunk-J6M35QHA.js";
7
4
  export {
8
- ManageTicketModal,
9
5
  Sidebar
10
6
  };
11
7
  //# sourceMappingURL=index.js.map
@@ -1,3 +1,2 @@
1
- export * from './ManageTicketModal';
2
1
  export * from './Sidebar';
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jrapps/my_tickets_dashboard_ui",
3
- "version": "0.0.8",
3
+ "version": "0.0.10",
4
4
  "description": "My Tickets Dashboard UI",
5
5
  "author": "JRApplications",
6
6
  "license": "UNLICENSED",
@@ -1,314 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
-
30
- // src/components/ManageTicketModal/index.ts
31
- var ManageTicketModal_exports = {};
32
- __export(ManageTicketModal_exports, {
33
- ManageTicketModal: () => ManageTicketModal
34
- });
35
- module.exports = __toCommonJS(ManageTicketModal_exports);
36
-
37
- // src/components/ManageTicketModal/ManageTicketModal.tsx
38
- var import_react2 = __toESM(require("react"));
39
-
40
- // src/components/ManageTicketModal/useManageTicketModal.ts
41
- var import_react = require("react");
42
- var import_essentials = require("@wix/essentials");
43
- var BASE_URL = new URL("").origin;
44
- var STATE_CONFIG = {
45
- STATUS_CHANGE: {
46
- title: "Change Status",
47
- getUrl: (id, value) => `${BASE_URL}/api/tickets/update-ticket-status?id=${id}&status=${value}`,
48
- getPayload: (value) => ({ newStatus: value })
49
- },
50
- PRIORITY_CHANGE: {
51
- title: "Change Priority",
52
- getUrl: (id, value) => `${BASE_URL}/api/tickets/update-ticket-priority?id=${id}&priority=${value}`,
53
- getPayload: (value) => ({ newPriority: value })
54
- },
55
- TRANSFER_TICKET: {
56
- title: "Transfer Ticket",
57
- getUrl: (id, value) => `${BASE_URL}/api/tickets/transfer-ticket?id=${id}&teamId=${value}`,
58
- getPayload: (value) => ({ newTeamId: value })
59
- }
60
- };
61
- function useManageTicketModal({ id, state, onClose }) {
62
- const [isSaving, setIsSaving] = (0, import_react.useState)(false);
63
- const [newStatus, setNewStatus] = (0, import_react.useState)("");
64
- const [newPriority, setNewPriority] = (0, import_react.useState)("");
65
- const [selectedTeam, setSelectedTeam] = (0, import_react.useState)("");
66
- const [teams, setTeams] = (0, import_react.useState)([]);
67
- const [isLoading, setIsLoading] = (0, import_react.useState)(false);
68
- const [isError, setIsError] = (0, import_react.useState)(false);
69
- const modalTitle = STATE_CONFIG[state]?.title ?? "Manage Ticket";
70
- (0, import_react.useEffect)(() => {
71
- if (state !== "TRANSFER_TICKET") {
72
- setIsLoading(false);
73
- setIsError(false);
74
- return;
75
- }
76
- setIsLoading(true);
77
- setIsError(false);
78
- const fetchTeams = async () => {
79
- try {
80
- const response = await import_essentials.httpClient.fetchWithAuth(`${BASE_URL}/api/teams/teams`);
81
- const data = await response.json();
82
- setTeams(data.teams);
83
- } catch (error) {
84
- console.error("Error fetching teams:", error);
85
- setIsError(true);
86
- } finally {
87
- setIsLoading(false);
88
- }
89
- };
90
- fetchTeams();
91
- }, [id, state]);
92
- const handleSave = async () => {
93
- const config = STATE_CONFIG[state];
94
- if (!config) return;
95
- const valueMap = {
96
- STATUS_CHANGE: newStatus,
97
- PRIORITY_CHANGE: newPriority,
98
- TRANSFER_TICKET: selectedTeam
99
- };
100
- const value = valueMap[state];
101
- if (!value) return;
102
- setIsSaving(true);
103
- try {
104
- await import_essentials.httpClient.fetchWithAuth(config.getUrl(id, value), { method: "PUT" });
105
- onClose(config.getPayload(value));
106
- } catch (error) {
107
- console.error("Error saving:", error);
108
- } finally {
109
- setIsSaving(false);
110
- }
111
- };
112
- const handleCancel = () => onClose({ cancelled: true });
113
- return {
114
- // State
115
- isSaving,
116
- isLoading,
117
- isError,
118
- teams,
119
- newStatus,
120
- newPriority,
121
- selectedTeam,
122
- modalTitle,
123
- // Setters
124
- setNewStatus,
125
- setNewPriority,
126
- setSelectedTeam,
127
- // Handlers
128
- handleSave,
129
- handleCancel
130
- };
131
- }
132
-
133
- // src/components/ManageTicketModal/ManageTicketModal.tsx
134
- var import_design_system4 = require("@wix/design-system");
135
- var import_styles_studio_global = require("@wix/design-system/styles-studio.global.css");
136
-
137
- // src/components/ManageTicketModal/status-change-content.tsx
138
- var import_design_system = require("@wix/design-system");
139
- var import_jsx_runtime = require("react/jsx-runtime");
140
- var STATUS_LABELS = {
141
- closed: "Closed",
142
- in_progress: "In Progress",
143
- open: "Open"
144
- };
145
- var StatusChangeContent = ({ currentStatus, newStatus, onStatusChange }) => {
146
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_design_system.Box, { direction: "vertical", width: "stretch", gap: "10px", children: [
147
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_design_system.FormField, { label: "Current Status", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_design_system.Input, { value: STATUS_LABELS[currentStatus] ?? currentStatus, disabled: true }) }),
148
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_design_system.FormField, { label: "New Status", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
149
- import_design_system.Dropdown,
150
- {
151
- options: [
152
- { id: "open", value: "Open" },
153
- { id: "in_progress", value: "In Progress" },
154
- { id: "closed", value: "Closed" }
155
- ],
156
- placeholder: "Select new status",
157
- selectedId: newStatus || "",
158
- popoverProps: { appendTo: "window", zIndex: 9999 },
159
- onSelect: (option) => onStatusChange(option?.id ?? "")
160
- }
161
- ) })
162
- ] });
163
- };
164
- var status_change_content_default = StatusChangeContent;
165
-
166
- // src/components/ManageTicketModal/priority-change-content.tsx
167
- var import_design_system2 = require("@wix/design-system");
168
- var import_jsx_runtime2 = require("react/jsx-runtime");
169
- var PRIORITY_LABELS = {
170
- high: "High",
171
- medium: "Medium",
172
- low: "Low"
173
- };
174
- var PriorityChangeContent = ({ currentPriority, newPriority, onPriorityChange }) => {
175
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_design_system2.Box, { direction: "vertical", width: "stretch", gap: "10px", children: [
176
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_design_system2.FormField, { label: "Current Priority", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_design_system2.Input, { value: PRIORITY_LABELS[currentPriority] ?? currentPriority, disabled: true }) }),
177
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_design_system2.FormField, { label: "New Priority", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
178
- import_design_system2.Dropdown,
179
- {
180
- options: [
181
- { id: "high", value: "High" },
182
- { id: "medium", value: "Medium" },
183
- { id: "low", value: "Low" }
184
- ],
185
- placeholder: "Select new priority",
186
- selectedId: newPriority || "",
187
- popoverProps: { appendTo: "window", zIndex: 9999 },
188
- onSelect: (option) => onPriorityChange(option?.id ?? "")
189
- }
190
- ) })
191
- ] });
192
- };
193
- var priority_change_content_default = PriorityChangeContent;
194
-
195
- // src/components/ManageTicketModal/transfer-ticket-content.tsx
196
- var import_design_system3 = require("@wix/design-system");
197
- var import_jsx_runtime3 = require("react/jsx-runtime");
198
- var TransferTicketContent = ({ currentTeam, teams, selectedTeam, onTeamChange }) => {
199
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_design_system3.Box, { direction: "vertical", width: "stretch", gap: "10px", children: [
200
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_design_system3.FormField, { label: "Current Team", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_design_system3.Input, { value: currentTeam, disabled: true }) }),
201
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_design_system3.FormField, { label: "New Team", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
202
- import_design_system3.Dropdown,
203
- {
204
- options: teams.map((team) => ({ id: team._id, value: team.name })),
205
- placeholder: "Select new team",
206
- selectedId: selectedTeam || "",
207
- popoverProps: { appendTo: "window", zIndex: 9999 },
208
- onSelect: (option) => onTeamChange(option?.id ?? "")
209
- }
210
- ) })
211
- ] });
212
- };
213
- var transfer_ticket_content_default = TransferTicketContent;
214
-
215
- // src/components/ManageTicketModal/ManageTicketModal.css
216
- if (typeof document !== "undefined" && !document.getElementById("jrapps-style-94103778")) {
217
- const s = document.createElement("style");
218
- s.id = "jrapps-style-94103778";
219
- s.textContent = ".manage-ticket-modal {\n /* ManageTicketModal base styles */\n}\n";
220
- document.head.appendChild(s);
221
- }
222
-
223
- // src/components/ManageTicketModal/ManageTicketModal.tsx
224
- var import_jsx_runtime4 = require("react/jsx-runtime");
225
- var ManageTicketModal = import_react2.default.forwardRef(
226
- ({
227
- className,
228
- isOpen,
229
- id,
230
- state,
231
- onClose,
232
- currentStatus,
233
- currentPriority,
234
- ticketNumber,
235
- currentTeamName
236
- }, ref) => {
237
- const {
238
- isSaving,
239
- isLoading,
240
- isError,
241
- teams,
242
- newStatus,
243
- newPriority,
244
- selectedTeam,
245
- modalTitle,
246
- setNewStatus,
247
- setNewPriority,
248
- setSelectedTeam,
249
- handleSave,
250
- handleCancel
251
- } = useManageTicketModal({ id, state, onClose });
252
- const renderContent = () => {
253
- if (isLoading) {
254
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_design_system4.Box, { direction: "vertical", width: "stretch", gap: "10px", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_design_system4.Loader, { size: "medium", status: "loading", text: "Loading..." }) });
255
- }
256
- if (isError) {
257
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_design_system4.Box, { direction: "vertical", width: "stretch", gap: "10px", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_design_system4.Loader, { size: "medium", status: "error", text: "Error loading data" }) });
258
- }
259
- if (state === "STATUS_CHANGE") {
260
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
261
- status_change_content_default,
262
- {
263
- currentStatus: currentStatus ?? "",
264
- newStatus,
265
- onStatusChange: setNewStatus
266
- }
267
- );
268
- }
269
- if (state === "PRIORITY_CHANGE") {
270
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
271
- priority_change_content_default,
272
- {
273
- currentPriority: currentPriority ?? "",
274
- newPriority,
275
- onPriorityChange: setNewPriority
276
- }
277
- );
278
- }
279
- if (state === "TRANSFER_TICKET") {
280
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
281
- transfer_ticket_content_default,
282
- {
283
- currentTeam: currentTeamName,
284
- teams,
285
- selectedTeam,
286
- onTeamChange: setSelectedTeam
287
- }
288
- );
289
- }
290
- return null;
291
- };
292
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_design_system4.Modal, { isOpen, ref, className, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
293
- import_design_system4.CustomModalLayout,
294
- {
295
- width: "500px",
296
- primaryButtonText: isSaving ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_design_system4.Loader, { size: "tiny" }) : "Save",
297
- secondaryButtonText: "Cancel",
298
- primaryButtonOnClick: handleSave,
299
- secondaryButtonOnClick: handleCancel,
300
- showHeaderDivider: true,
301
- showFooterDivider: true,
302
- title: modalTitle,
303
- subtitle: !isLoading ? ticketNumber : "",
304
- footnote: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_design_system4.Box, { alignContent: "center", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_design_system4.Text, { size: "small", children: [
305
- "Powered by ",
306
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_design_system4.Text, { size: "small", weight: "bold", children: "My Tickets" })
307
- ] }) }),
308
- content: renderContent()
309
- }
310
- ) });
311
- }
312
- );
313
- ManageTicketModal.displayName = "ManageTicketModal";
314
- //# sourceMappingURL=index.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/components/ManageTicketModal/index.ts", "../../../../src/components/ManageTicketModal/ManageTicketModal.tsx", "../../../../src/components/ManageTicketModal/useManageTicketModal.ts", "../../../../src/components/ManageTicketModal/status-change-content.tsx", "../../../../src/components/ManageTicketModal/priority-change-content.tsx", "../../../../src/components/ManageTicketModal/transfer-ticket-content.tsx", "../../../../src/components/ManageTicketModal/ManageTicketModal.css"],
4
- "sourcesContent": ["export { ManageTicketModal } from './ManageTicketModal';\nexport type { ManageTicketModalProps } from './ManageTicketModal.types';\n", "import React from 'react';\nimport type { ManageTicketModalProps } from './ManageTicketModal.types';\nimport { useManageTicketModal } from './useManageTicketModal';\nimport {\n CustomModalLayout,\n Box,\n Text,\n Loader,\n Modal,\n} from '@wix/design-system';\nimport '@wix/design-system/styles-studio.global.css';\n\nimport StatusChangeContent from './status-change-content';\nimport PriorityChangeContent from './priority-change-content';\nimport TransferTicketContent from './transfer-ticket-content';\nimport './ManageTicketModal.css';\n\nexport const ManageTicketModal = React.forwardRef<HTMLDivElement, ManageTicketModalProps>(\n (\n {\n className,\n isOpen,\n id,\n state,\n onClose,\n currentStatus,\n currentPriority,\n ticketNumber,\n currentTeamName,\n },\n ref,\n ) => {\n const {\n isSaving,\n isLoading,\n isError,\n teams,\n newStatus,\n newPriority,\n selectedTeam,\n modalTitle,\n setNewStatus,\n setNewPriority,\n setSelectedTeam,\n handleSave,\n handleCancel,\n } = useManageTicketModal({ id, state, onClose });\n\n const renderContent = () => {\n if (isLoading) {\n return (\n <Box direction=\"vertical\" width=\"stretch\" gap=\"10px\">\n <Loader size=\"medium\" status=\"loading\" text=\"Loading...\" />\n </Box>\n );\n }\n\n if (isError) {\n return (\n <Box direction=\"vertical\" width=\"stretch\" gap=\"10px\">\n <Loader size=\"medium\" status=\"error\" text=\"Error loading data\" />\n </Box>\n );\n }\n\n if (state === 'STATUS_CHANGE') {\n return (\n <StatusChangeContent\n currentStatus={currentStatus ?? ''}\n newStatus={newStatus}\n onStatusChange={setNewStatus}\n />\n );\n }\n\n if (state === 'PRIORITY_CHANGE') {\n return (\n <PriorityChangeContent\n currentPriority={currentPriority ?? ''}\n newPriority={newPriority}\n onPriorityChange={setNewPriority}\n />\n );\n }\n\n if (state === 'TRANSFER_TICKET') {\n return (\n <TransferTicketContent\n currentTeam={currentTeamName}\n teams={teams}\n selectedTeam={selectedTeam}\n onTeamChange={setSelectedTeam}\n />\n );\n }\n\n return null;\n };\n\n return (\n <Modal isOpen={isOpen} ref={ref} className={className}>\n <CustomModalLayout\n width=\"500px\"\n primaryButtonText={isSaving ? <Loader size=\"tiny\" /> : 'Save'}\n secondaryButtonText=\"Cancel\"\n primaryButtonOnClick={handleSave}\n secondaryButtonOnClick={handleCancel}\n showHeaderDivider\n showFooterDivider\n title={modalTitle}\n subtitle={!isLoading ? ticketNumber : ''}\n footnote={\n <Box alignContent=\"center\">\n <Text size=\"small\">\n Powered by <Text size=\"small\" weight=\"bold\">My Tickets</Text>\n </Text>\n </Box>\n }\n content={renderContent()}\n />\n </Modal>\n );\n },\n);\n\nManageTicketModal.displayName = 'ManageTicketModal';\n", "import { useState, useEffect } from 'react';\nimport { httpClient } from '@wix/essentials';\n\nconst BASE_URL = new URL(import.meta.url).origin;\n\nconst STATE_CONFIG = {\n STATUS_CHANGE: {\n title: 'Change Status',\n getUrl: (id: string, value: string | number) =>\n `${BASE_URL}/api/tickets/update-ticket-status?id=${id}&status=${value}`,\n getPayload: (value: string | number) => ({ newStatus: value }),\n },\n PRIORITY_CHANGE: {\n title: 'Change Priority',\n getUrl: (id: string, value: string | number) =>\n `${BASE_URL}/api/tickets/update-ticket-priority?id=${id}&priority=${value}`,\n getPayload: (value: string | number) => ({ newPriority: value }),\n },\n TRANSFER_TICKET: {\n title: 'Transfer Ticket',\n getUrl: (id: string, value: string | number) =>\n `${BASE_URL}/api/tickets/transfer-ticket?id=${id}&teamId=${value}`,\n getPayload: (value: string | number) => ({ newTeamId: value }),\n },\n} as const;\n\ninterface UseManageTicketModalParams {\n id: string;\n state: string;\n onClose: (params: {\n newStatus?: string | number;\n newPriority?: string | number;\n newTeamId?: string | number;\n cancelled?: boolean;\n }) => void;\n}\n\nexport function useManageTicketModal({ id, state, onClose }: UseManageTicketModalParams) {\n const [isSaving, setIsSaving] = useState(false);\n const [newStatus, setNewStatus] = useState<string | number>('');\n const [newPriority, setNewPriority] = useState<string | number>('');\n const [selectedTeam, setSelectedTeam] = useState<string | number>('');\n const [teams, setTeams] = useState<{ _id: string; name: string }[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [isError, setIsError] = useState(false);\n\n const modalTitle = STATE_CONFIG[state as keyof typeof STATE_CONFIG]?.title ?? 'Manage Ticket';\n\n useEffect(() => {\n if (state !== 'TRANSFER_TICKET') {\n setIsLoading(false);\n setIsError(false);\n return;\n }\n\n setIsLoading(true);\n setIsError(false);\n\n const fetchTeams = async () => {\n try {\n const response = await httpClient.fetchWithAuth(`${BASE_URL}/api/teams/teams`);\n const data = await response.json();\n setTeams(data.teams);\n } catch (error) {\n console.error('Error fetching teams:', error);\n setIsError(true);\n } finally {\n setIsLoading(false);\n }\n };\n\n fetchTeams();\n }, [id, state]);\n\n const handleSave = async () => {\n const config = STATE_CONFIG[state as keyof typeof STATE_CONFIG];\n if (!config) return;\n\n const valueMap: Record<string, string | number> = {\n STATUS_CHANGE: newStatus,\n PRIORITY_CHANGE: newPriority,\n TRANSFER_TICKET: selectedTeam,\n };\n const value = valueMap[state];\n if (!value) return;\n\n setIsSaving(true);\n try {\n await httpClient.fetchWithAuth(config.getUrl(id, value), { method: 'PUT' });\n onClose(config.getPayload(value));\n } catch (error) {\n console.error('Error saving:', error);\n } finally {\n setIsSaving(false);\n }\n };\n\n const handleCancel = () => onClose({ cancelled: true });\n\n return {\n // State\n isSaving,\n isLoading,\n isError,\n teams,\n newStatus,\n newPriority,\n selectedTeam,\n modalTitle,\n // Setters\n setNewStatus,\n setNewPriority,\n setSelectedTeam,\n // Handlers\n handleSave,\n handleCancel,\n };\n}\n", "import type { FC } from 'react';\nimport { Box, FormField, Input, Dropdown } from '@wix/design-system';\nimport type { StatusChangeContentProps } from './ManageTicketModal.types';\n\nconst STATUS_LABELS: Record<string, string> = {\n closed: 'Closed',\n in_progress: 'In Progress',\n open: 'Open',\n};\n\nconst StatusChangeContent: FC<StatusChangeContentProps> = ({ currentStatus, newStatus, onStatusChange }) => {\n return (\n <Box direction=\"vertical\" width=\"stretch\" gap=\"10px\">\n <FormField label=\"Current Status\">\n <Input value={STATUS_LABELS[currentStatus] ?? currentStatus} disabled />\n </FormField>\n <FormField label=\"New Status\">\n <Dropdown\n options={[\n { id: 'open', value: 'Open' },\n { id: 'in_progress', value: 'In Progress' },\n { id: 'closed', value: 'Closed' },\n ]}\n placeholder=\"Select new status\"\n selectedId={newStatus || ''}\n popoverProps={{ appendTo: 'window', zIndex: 9999 }}\n onSelect={(option: any) => onStatusChange(option?.id ?? '')}\n />\n </FormField>\n </Box>\n );\n};\n\nexport default StatusChangeContent;\n", "import type { FC } from 'react';\nimport { Box, FormField, Input, Dropdown } from '@wix/design-system';\nimport type { PriorityChangeContentProps } from './ManageTicketModal.types';\n\nconst PRIORITY_LABELS: Record<string, string> = {\n high: 'High',\n medium: 'Medium',\n low: 'Low',\n};\n\nconst PriorityChangeContent: FC<PriorityChangeContentProps> = ({ currentPriority, newPriority, onPriorityChange }) => {\n return (\n <Box direction=\"vertical\" width=\"stretch\" gap=\"10px\">\n <FormField label=\"Current Priority\">\n <Input value={PRIORITY_LABELS[currentPriority] ?? currentPriority} disabled />\n </FormField>\n <FormField label=\"New Priority\">\n <Dropdown\n options={[\n { id: 'high', value: 'High' },\n { id: 'medium', value: 'Medium' },\n { id: 'low', value: 'Low' },\n ]}\n placeholder=\"Select new priority\"\n selectedId={newPriority || ''}\n popoverProps={{ appendTo: 'window', zIndex: 9999 }}\n onSelect={(option: any) => onPriorityChange(option?.id ?? '')}\n />\n </FormField>\n </Box>\n );\n};\n\nexport default PriorityChangeContent;\n", "import type { FC } from 'react';\nimport { Box, FormField, Input, Dropdown } from '@wix/design-system';\nimport type { TransferTicketContentProps } from './ManageTicketModal.types';\n\nconst TransferTicketContent: FC<TransferTicketContentProps> = ({ currentTeam, teams, selectedTeam, onTeamChange }) => {\n return (\n <Box direction=\"vertical\" width=\"stretch\" gap=\"10px\">\n <FormField label=\"Current Team\">\n <Input value={currentTeam} disabled />\n </FormField>\n <FormField label=\"New Team\">\n <Dropdown\n options={teams.map((team) => ({ id: team._id, value: team.name }))}\n placeholder=\"Select new team\"\n selectedId={selectedTeam || ''}\n popoverProps={{ appendTo: 'window', zIndex: 9999 }}\n onSelect={(option: any) => onTeamChange(option?.id ?? '')}\n />\n </FormField>\n </Box>\n );\n};\n\nexport default TransferTicketContent;\n", "if (typeof document !== 'undefined' && !document.getElementById(\"jrapps-style-94103778\")) {\n const s = document.createElement('style');\n s.id = \"jrapps-style-94103778\";\n s.textContent = \".manage-ticket-modal {\\n /* ManageTicketModal base styles */\\n}\\n\";\n document.head.appendChild(s);\n}"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAAA,gBAAkB;;;ACAlB,mBAAoC;AACpC,wBAA2B;AAE3B,IAAM,WAAW,IAAI,IAAI,EAAe,EAAE;AAE1C,IAAM,eAAe;AAAA,EACnB,eAAe;AAAA,IACb,OAAO;AAAA,IACP,QAAQ,CAAC,IAAY,UACnB,GAAG,QAAQ,wCAAwC,EAAE,WAAW,KAAK;AAAA,IACvE,YAAY,CAAC,WAA4B,EAAE,WAAW,MAAM;AAAA,EAC9D;AAAA,EACA,iBAAiB;AAAA,IACf,OAAO;AAAA,IACP,QAAQ,CAAC,IAAY,UACnB,GAAG,QAAQ,0CAA0C,EAAE,aAAa,KAAK;AAAA,IAC3E,YAAY,CAAC,WAA4B,EAAE,aAAa,MAAM;AAAA,EAChE;AAAA,EACA,iBAAiB;AAAA,IACf,OAAO;AAAA,IACP,QAAQ,CAAC,IAAY,UACnB,GAAG,QAAQ,mCAAmC,EAAE,WAAW,KAAK;AAAA,IAClE,YAAY,CAAC,WAA4B,EAAE,WAAW,MAAM;AAAA,EAC9D;AACF;AAaO,SAAS,qBAAqB,EAAE,IAAI,OAAO,QAAQ,GAA+B;AACvF,QAAM,CAAC,UAAU,WAAW,QAAI,uBAAS,KAAK;AAC9C,QAAM,CAAC,WAAW,YAAY,QAAI,uBAA0B,EAAE;AAC9D,QAAM,CAAC,aAAa,cAAc,QAAI,uBAA0B,EAAE;AAClE,QAAM,CAAC,cAAc,eAAe,QAAI,uBAA0B,EAAE;AACpE,QAAM,CAAC,OAAO,QAAQ,QAAI,uBAA0C,CAAC,CAAC;AACtE,QAAM,CAAC,WAAW,YAAY,QAAI,uBAAS,KAAK;AAChD,QAAM,CAAC,SAAS,UAAU,QAAI,uBAAS,KAAK;AAE5C,QAAM,aAAa,aAAa,KAAkC,GAAG,SAAS;AAE9E,8BAAU,MAAM;AACd,QAAI,UAAU,mBAAmB;AAC/B,mBAAa,KAAK;AAClB,iBAAW,KAAK;AAChB;AAAA,IACF;AAEA,iBAAa,IAAI;AACjB,eAAW,KAAK;AAEhB,UAAM,aAAa,YAAY;AAC7B,UAAI;AACF,cAAM,WAAW,MAAM,6BAAW,cAAc,GAAG,QAAQ,kBAAkB;AAC7E,cAAM,OAAO,MAAM,SAAS,KAAK;AACjC,iBAAS,KAAK,KAAK;AAAA,MACrB,SAAS,OAAO;AACd,gBAAQ,MAAM,yBAAyB,KAAK;AAC5C,mBAAW,IAAI;AAAA,MACjB,UAAE;AACA,qBAAa,KAAK;AAAA,MACpB;AAAA,IACF;AAEA,eAAW;AAAA,EACb,GAAG,CAAC,IAAI,KAAK,CAAC;AAEd,QAAM,aAAa,YAAY;AAC7B,UAAM,SAAS,aAAa,KAAkC;AAC9D,QAAI,CAAC,OAAQ;AAEb,UAAM,WAA4C;AAAA,MAChD,eAAe;AAAA,MACf,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,IACnB;AACA,UAAM,QAAQ,SAAS,KAAK;AAC5B,QAAI,CAAC,MAAO;AAEZ,gBAAY,IAAI;AAChB,QAAI;AACF,YAAM,6BAAW,cAAc,OAAO,OAAO,IAAI,KAAK,GAAG,EAAE,QAAQ,MAAM,CAAC;AAC1E,cAAQ,OAAO,WAAW,KAAK,CAAC;AAAA,IAClC,SAAS,OAAO;AACd,cAAQ,MAAM,iBAAiB,KAAK;AAAA,IACtC,UAAE;AACA,kBAAY,KAAK;AAAA,IACnB;AAAA,EACF;AAEA,QAAM,eAAe,MAAM,QAAQ,EAAE,WAAW,KAAK,CAAC;AAEtD,SAAO;AAAA;AAAA,IAEL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,EACF;AACF;;;ADlHA,IAAAC,wBAMO;AACP,kCAAO;;;AETP,2BAAgD;AAW5C;AARJ,IAAM,gBAAwC;AAAA,EAC5C,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,MAAM;AACR;AAEA,IAAM,sBAAoD,CAAC,EAAE,eAAe,WAAW,eAAe,MAAM;AAC1G,SACE,6CAAC,4BAAI,WAAU,YAAW,OAAM,WAAU,KAAI,QAC5C;AAAA,gDAAC,kCAAU,OAAM,kBACf,sDAAC,8BAAM,OAAO,cAAc,aAAa,KAAK,eAAe,UAAQ,MAAC,GACxE;AAAA,IACA,4CAAC,kCAAU,OAAM,cACf;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,UACP,EAAE,IAAI,QAAQ,OAAO,OAAO;AAAA,UAC5B,EAAE,IAAI,eAAe,OAAO,cAAc;AAAA,UAC1C,EAAE,IAAI,UAAU,OAAO,SAAS;AAAA,QAClC;AAAA,QACA,aAAY;AAAA,QACZ,YAAY,aAAa;AAAA,QACzB,cAAc,EAAE,UAAU,UAAU,QAAQ,KAAK;AAAA,QACjD,UAAU,CAAC,WAAgB,eAAe,QAAQ,MAAM,EAAE;AAAA;AAAA,IAC5D,GACF;AAAA,KACF;AAEJ;AAEA,IAAO,gCAAQ;;;AChCf,IAAAC,wBAAgD;AAW5C,IAAAC,sBAAA;AARJ,IAAM,kBAA0C;AAAA,EAC9C,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,KAAK;AACP;AAEA,IAAM,wBAAwD,CAAC,EAAE,iBAAiB,aAAa,iBAAiB,MAAM;AACpH,SACE,8CAAC,6BAAI,WAAU,YAAW,OAAM,WAAU,KAAI,QAC5C;AAAA,iDAAC,mCAAU,OAAM,oBACf,uDAAC,+BAAM,OAAO,gBAAgB,eAAe,KAAK,iBAAiB,UAAQ,MAAC,GAC9E;AAAA,IACA,6CAAC,mCAAU,OAAM,gBACf;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,UACP,EAAE,IAAI,QAAQ,OAAO,OAAO;AAAA,UAC5B,EAAE,IAAI,UAAU,OAAO,SAAS;AAAA,UAChC,EAAE,IAAI,OAAO,OAAO,MAAM;AAAA,QAC5B;AAAA,QACA,aAAY;AAAA,QACZ,YAAY,eAAe;AAAA,QAC3B,cAAc,EAAE,UAAU,UAAU,QAAQ,KAAK;AAAA,QACjD,UAAU,CAAC,WAAgB,iBAAiB,QAAQ,MAAM,EAAE;AAAA;AAAA,IAC9D,GACF;AAAA,KACF;AAEJ;AAEA,IAAO,kCAAQ;;;AChCf,IAAAC,wBAAgD;AAK5C,IAAAC,sBAAA;AAFJ,IAAM,wBAAwD,CAAC,EAAE,aAAa,OAAO,cAAc,aAAa,MAAM;AACpH,SACE,8CAAC,6BAAI,WAAU,YAAW,OAAM,WAAU,KAAI,QAC5C;AAAA,iDAAC,mCAAU,OAAM,gBACf,uDAAC,+BAAM,OAAO,aAAa,UAAQ,MAAC,GACtC;AAAA,IACA,6CAAC,mCAAU,OAAM,YACf;AAAA,MAAC;AAAA;AAAA,QACC,SAAS,MAAM,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,KAAK,OAAO,KAAK,KAAK,EAAE;AAAA,QACjE,aAAY;AAAA,QACZ,YAAY,gBAAgB;AAAA,QAC5B,cAAc,EAAE,UAAU,UAAU,QAAQ,KAAK;AAAA,QACjD,UAAU,CAAC,WAAgB,aAAa,QAAQ,MAAM,EAAE;AAAA;AAAA,IAC1D,GACF;AAAA,KACF;AAEJ;AAEA,IAAO,kCAAQ;;;ACvBf,IAAI,OAAO,aAAa,eAAe,CAAC,SAAS,eAAe,uBAAuB,GAAG;AACxF,QAAM,IAAI,SAAS,cAAc,OAAO;AACxC,IAAE,KAAK;AACP,IAAE,cAAc;AAChB,WAAS,KAAK,YAAY,CAAC;AAC7B;;;AL+CY,IAAAC,sBAAA;AAnCL,IAAM,oBAAoB,cAAAC,QAAM;AAAA,EACrC,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GACA,QACG;AACH,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,qBAAqB,EAAE,IAAI,OAAO,QAAQ,CAAC;AAE/C,UAAM,gBAAgB,MAAM;AAC1B,UAAI,WAAW;AACb,eACE,6CAAC,6BAAI,WAAU,YAAW,OAAM,WAAU,KAAI,QAC5C,uDAAC,gCAAO,MAAK,UAAS,QAAO,WAAU,MAAK,cAAa,GAC3D;AAAA,MAEJ;AAEA,UAAI,SAAS;AACX,eACE,6CAAC,6BAAI,WAAU,YAAW,OAAM,WAAU,KAAI,QAC5C,uDAAC,gCAAO,MAAK,UAAS,QAAO,SAAQ,MAAK,sBAAqB,GACjE;AAAA,MAEJ;AAEA,UAAI,UAAU,iBAAiB;AAC7B,eACE;AAAA,UAAC;AAAA;AAAA,YACC,eAAe,iBAAiB;AAAA,YAChC;AAAA,YACA,gBAAgB;AAAA;AAAA,QAClB;AAAA,MAEJ;AAEA,UAAI,UAAU,mBAAmB;AAC/B,eACE;AAAA,UAAC;AAAA;AAAA,YACC,iBAAiB,mBAAmB;AAAA,YACpC;AAAA,YACA,kBAAkB;AAAA;AAAA,QACpB;AAAA,MAEJ;AAEA,UAAI,UAAU,mBAAmB;AAC/B,eACE;AAAA,UAAC;AAAA;AAAA,YACC,aAAa;AAAA,YACb;AAAA,YACA;AAAA,YACA,cAAc;AAAA;AAAA,QAChB;AAAA,MAEJ;AAEA,aAAO;AAAA,IACT;AAEA,WACE,6CAAC,+BAAM,QAAgB,KAAU,WAC/B;AAAA,MAAC;AAAA;AAAA,QACC,OAAM;AAAA,QACN,mBAAmB,WAAW,6CAAC,gCAAO,MAAK,QAAO,IAAK;AAAA,QACvD,qBAAoB;AAAA,QACpB,sBAAsB;AAAA,QACtB,wBAAwB;AAAA,QACxB,mBAAiB;AAAA,QACjB,mBAAiB;AAAA,QACjB,OAAO;AAAA,QACP,UAAU,CAAC,YAAY,eAAe;AAAA,QACtC,UACE,6CAAC,6BAAI,cAAa,UAChB,wDAAC,8BAAK,MAAK,SAAQ;AAAA;AAAA,UACN,6CAAC,8BAAK,MAAK,SAAQ,QAAO,QAAO,wBAAU;AAAA,WACxD,GACF;AAAA,QAEF,SAAS,cAAc;AAAA;AAAA,IACzB,GACF;AAAA,EAEJ;AACF;AAEA,kBAAkB,cAAc;",
6
- "names": ["import_react", "import_design_system", "import_design_system", "import_jsx_runtime", "import_design_system", "import_jsx_runtime", "import_jsx_runtime", "React"]
7
- }