chordia-ui 3.3.8 → 3.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AgentLiftCard.cjs.js.map +1 -1
- package/dist/AgentLiftCard.es.js +5 -3
- package/dist/AgentLiftCard.es.js.map +1 -1
- package/dist/CustomFilterChips.cjs.js.map +1 -1
- package/dist/CustomFilterChips.es.js +2 -1
- package/dist/CustomFilterChips.es.js.map +1 -1
- package/dist/FileUploadingState.cjs.js.map +1 -1
- package/dist/FileUploadingState.es.js +16 -10
- package/dist/FileUploadingState.es.js.map +1 -1
- package/dist/IntegrationCard.cjs.js.map +1 -1
- package/dist/IntegrationCard.es.js +3 -3
- package/dist/IntegrationCard.es.js.map +1 -1
- package/dist/SectionLabel.cjs.js.map +1 -1
- package/dist/SectionLabel.es.js.map +1 -1
- package/dist/SmallButton.cjs.js.map +1 -1
- package/dist/SmallButton.es.js +16 -16
- package/dist/SmallButton.es.js.map +1 -1
- package/dist/SummarySection.cjs.js.map +1 -1
- package/dist/SummarySection.es.js +11 -9
- package/dist/SummarySection.es.js.map +1 -1
- package/dist/TextInput.cjs.js.map +1 -1
- package/dist/TextInput.es.js.map +1 -1
- package/dist/Timeline.cjs.js.map +1 -1
- package/dist/Timeline.es.js +14 -8
- package/dist/Timeline.es.js.map +1 -1
- package/dist/Tooltip.cjs.js +1 -1
- package/dist/Tooltip.cjs.js.map +1 -1
- package/dist/Tooltip.es.js +31 -20
- package/dist/Tooltip.es.js.map +1 -1
- package/dist/TourGuideTooltip.cjs.js.map +1 -1
- package/dist/TourGuideTooltip.es.js +2 -1
- package/dist/TourGuideTooltip.es.js.map +1 -1
- package/dist/UpdatedInteractionRecording.cjs.js +1 -1
- package/dist/UpdatedInteractionRecording.cjs.js.map +1 -1
- package/dist/UpdatedInteractionRecording.es.js +79 -97
- package/dist/UpdatedInteractionRecording.es.js.map +1 -1
- package/dist/UploadInteraction.cjs.js.map +1 -1
- package/dist/UploadInteraction.es.js.map +1 -1
- package/dist/colors.cjs.js +2 -0
- package/dist/colors.cjs.js.map +1 -0
- package/dist/colors.es.js +2 -0
- package/dist/colors.es.js.map +1 -0
- package/dist/components/UpdatedInteractionDetails.cjs.js +10 -1
- package/dist/components/UpdatedInteractionDetails.cjs.js.map +1 -1
- package/dist/components/UpdatedInteractionDetails.es.js +1531 -9
- package/dist/components/UpdatedInteractionDetails.es.js.map +1 -1
- package/dist/components/chat.cjs.js +30 -1
- package/dist/components/chat.cjs.js.map +1 -1
- package/dist/components/chat.es.js +2222 -7
- package/dist/components/chat.es.js.map +1 -1
- package/dist/components/common.cjs.js +1 -1
- package/dist/components/common.es.js +32 -25
- package/dist/components/common.es.js.map +1 -1
- package/dist/components/data.cjs.js +1 -1
- package/dist/components/data.cjs.js.map +1 -1
- package/dist/components/data.es.js +1033 -4
- package/dist/components/data.es.js.map +1 -1
- package/dist/components/layout.cjs.js +3 -1
- package/dist/components/layout.cjs.js.map +1 -1
- package/dist/components/layout.es.js +1533 -8
- package/dist/components/layout.es.js.map +1 -1
- package/dist/components/login.cjs.js +1 -1
- package/dist/components/login.es.js +6 -2
- package/dist/components/login.es.js.map +1 -1
- package/dist/components/media.cjs.js +1 -1
- package/dist/components/media.cjs.js.map +1 -1
- package/dist/components/media.es.js +220 -6
- package/dist/components/media.es.js.map +1 -1
- package/dist/components/models.cjs.js +1 -1
- package/dist/components/models.cjs.js.map +1 -1
- package/dist/components/models.es.js +91 -2
- package/dist/components/models.es.js.map +1 -1
- package/dist/components/navigation.cjs.js +1 -1
- package/dist/components/navigation.cjs.js.map +1 -1
- package/dist/components/navigation.es.js +766 -7
- package/dist/components/navigation.es.js.map +1 -1
- package/dist/components/notifications.cjs.js +1 -1
- package/dist/components/notifications.cjs.js.map +1 -1
- package/dist/components/notifications.es.js +368 -3
- package/dist/components/notifications.es.js.map +1 -1
- package/dist/components/onboarding.cjs.js +1 -1
- package/dist/components/onboarding.cjs.js.map +1 -1
- package/dist/components/onboarding.es.js +985 -7
- package/dist/components/onboarding.es.js.map +1 -1
- package/dist/components/primitives.cjs.js +1 -1
- package/dist/components/primitives.cjs.js.map +1 -1
- package/dist/components/primitives.es.js +635 -25
- package/dist/components/primitives.es.js.map +1 -1
- package/dist/debugger-wc.cjs.js +4 -4
- package/dist/debugger-wc.cjs.js.map +1 -1
- package/dist/debugger-wc.es.js +15 -11
- package/dist/debugger-wc.es.js.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs2.js +2 -49
- package/dist/index.cjs2.js.map +1 -1
- package/dist/index.cjs3.js +50 -0
- package/dist/index.cjs3.js.map +1 -0
- package/dist/index.es.js +104 -99
- package/dist/index.es.js.map +1 -1
- package/dist/index.es2.js +2632 -1776
- package/dist/index.es2.js.map +1 -1
- package/dist/index.es3.js +1944 -0
- package/dist/index.es3.js.map +1 -0
- package/dist/pages/interactionDetails.cjs.js +1 -1
- package/dist/pages/interactionDetails.cjs.js.map +1 -1
- package/dist/pages/interactionDetails.es.js +70 -47
- package/dist/pages/interactionDetails.es.js.map +1 -1
- package/dist/sortable.esm.cjs.js +1 -1
- package/dist/sortable.esm.cjs.js.map +1 -1
- package/dist/sortable.esm.es.js +55 -53
- package/dist/sortable.esm.es.js.map +1 -1
- package/dist/{chordia-ui.css → style.css} +1 -1
- package/package.json +1 -1
- package/src/components/UpdatedInteractionDetails/UpdatedInteractionDetails.jsx +318 -77
- package/src/components/UpdatedInteractionDetails/UpdatedInteractionRecording.jsx +7 -17
- package/dist/ChartRenderer.cjs.js +0 -31
- package/dist/ChartRenderer.cjs.js.map +0 -1
- package/dist/ChartRenderer.es.js +0 -2210
- package/dist/ChartRenderer.es.js.map +0 -1
- package/dist/GettingStarted.cjs.js +0 -2
- package/dist/GettingStarted.cjs.js.map +0 -1
- package/dist/GettingStarted.es.js +0 -983
- package/dist/GettingStarted.es.js.map +0 -1
- package/dist/InlineConfirm.cjs.js +0 -2
- package/dist/InlineConfirm.cjs.js.map +0 -1
- package/dist/InlineConfirm.es.js +0 -618
- package/dist/InlineConfirm.es.js.map +0 -1
- package/dist/InteractionSummaryCard.cjs.js +0 -2
- package/dist/InteractionSummaryCard.cjs.js.map +0 -1
- package/dist/InteractionSummaryCard.es.js +0 -216
- package/dist/InteractionSummaryCard.es.js.map +0 -1
- package/dist/LoginPage.cjs.js +0 -3
- package/dist/LoginPage.cjs.js.map +0 -1
- package/dist/LoginPage.es.js +0 -2618
- package/dist/LoginPage.es.js.map +0 -1
- package/dist/NavigationBar.cjs.js +0 -2
- package/dist/NavigationBar.cjs.js.map +0 -1
- package/dist/NavigationBar.es.js +0 -762
- package/dist/NavigationBar.es.js.map +0 -1
- package/dist/NotificationPanel.cjs.js +0 -2
- package/dist/NotificationPanel.cjs.js.map +0 -1
- package/dist/NotificationPanel.es.js +0 -371
- package/dist/NotificationPanel.es.js.map +0 -1
- package/dist/OverlayPanel.cjs.js +0 -2
- package/dist/OverlayPanel.cjs.js.map +0 -1
- package/dist/OverlayPanel.es.js +0 -93
- package/dist/OverlayPanel.es.js.map +0 -1
- package/dist/SplitPane.cjs.js +0 -4
- package/dist/SplitPane.cjs.js.map +0 -1
- package/dist/SplitPane.es.js +0 -1531
- package/dist/SplitPane.es.js.map +0 -1
- package/dist/SummaryStatsPanel.cjs.js +0 -2
- package/dist/SummaryStatsPanel.cjs.js.map +0 -1
- package/dist/SummaryStatsPanel.es.js +0 -1027
- package/dist/SummaryStatsPanel.es.js.map +0 -1
- package/dist/UpdatedInteractionDetails.cjs.js +0 -11
- package/dist/UpdatedInteractionDetails.cjs.js.map +0 -1
- package/dist/UpdatedInteractionDetails.es.js +0 -1310
- package/dist/UpdatedInteractionDetails.es.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NavigationBar.es.js","sources":["../src/assets/LogoChordia.svg","../src/components/navigation/Sidebar.jsx","../src/components/navigation/NavigationBar.jsx"],"sourcesContent":["export default \"data:image/svg+xml,%3csvg%20width='146'%20height='47'%20viewBox='0%200%20146%2047'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M39.7345%2023.0879C39.7345%2018.3264%2037.9562%2013.9806%2035.0265%2010.6778C31.5984%206.81303%2026.5961%204.37995%2021.0255%204.37991C15.55%204.37991%2010.626%206.73155%207.20325%2010.4815C4.16732%2013.8086%202.31752%2018.2312%202.3175%2023.0889C2.3175%2028.4704%204.58936%2033.3215%208.22864%2036.7354L8.54602%2037.0264C11.8643%2039.9919%2016.3774%2041.7969%2021.0265%2041.7969C25.8285%2041.7969%2030.2069%2039.9892%2033.5197%2037.0147C37.3363%2033.5875%2039.7345%2028.6181%2039.7345%2023.0879ZM41.0978%2023.0879C41.0978%2029.021%2038.522%2034.3537%2034.4298%2038.0284C30.8767%2041.2187%2026.1773%2043.1602%2021.0265%2043.1602C15.8732%2043.1602%2010.8875%2041.0989%207.29602%2037.7295C3.3936%2034.0688%200.954224%2028.8623%200.954224%2023.0889C0.954235%2017.8782%202.94042%2013.1308%206.19641%209.56253C9.86631%205.5418%2015.1511%203.01663%2021.0255%203.01663C27.0021%203.01666%2032.3702%205.63032%2036.046%209.77444C39.1881%2013.3168%2041.0978%2017.9806%2041.0978%2023.0879Z'%20fill='%23E8D4A3'/%3e%3cpath%20d='M37.2872%2023.0891C37.2872%2018.8698%2035.6769%2015.0268%2033.0372%2012.1418L33.0352%2012.1399C30.0667%208.87501%2025.7861%206.82644%2021.0255%206.8264C16.2546%206.8264%2011.9647%208.88061%208.98932%2012.1535C6.36338%2015.0421%204.76276%2018.878%204.76276%2023.0891C4.7628%2027.7174%207.02253%2031.472%2010.2159%2034.4739C13.1704%2037.2518%2016.8607%2039.3508%2021.0255%2039.3508C25.2429%2039.3508%2029.0852%2037.7442%2031.9737%2035.1096L32.2764%2034.8274C35.3652%2031.8686%2037.2871%2027.7034%2037.2872%2023.0891ZM38.4796%2023.0891C38.4795%2028.2015%2036.2794%2032.8019%2032.7764%2035.9914C29.677%2038.8182%2025.5513%2040.5432%2021.0255%2040.5432C16.4464%2040.5432%2012.4784%2038.2379%209.39948%2035.343C6.05168%2032.196%203.5714%2028.1479%203.57135%2023.0891C3.57135%2018.5701%205.28909%2014.4512%208.10651%2011.3518C11.2983%207.84074%2015.9047%205.63499%2021.0255%205.63499C26.135%205.63503%2030.7311%207.834%2033.9161%2011.3362C36.7493%2014.4324%2038.4796%2018.5602%2038.4796%2023.0891Z'%20fill='%23C1D89F'/%3e%3cpath%20d='M34.8411%2023.0891C34.8411%2019.4103%2033.3913%2016.0763%2031.0461%2013.6008C28.5281%2010.9427%2024.9743%209.27276%2021.0256%209.27272C16.9594%209.27272%2013.3036%2011.0285%2010.7756%2013.8245C8.5585%2016.2757%207.20923%2019.5246%207.20923%2023.0891C7.2093%2026.9684%209.4469%2029.6116%2012.2053%2032.2132C14.7815%2034.6424%2017.4826%2036.9046%2021.0256%2036.9046C24.6597%2036.9045%2027.9657%2035.4993%2030.4299%2033.2034C33.1437%2030.6832%2034.841%2027.085%2034.8411%2023.0891ZM35.8635%2023.0891C35.8635%2027.3807%2034.0383%2031.246%2031.1252%2033.9514C28.4794%2036.4165%2024.9284%2037.927%2021.0256%2037.927C17.0315%2037.927%2014.0595%2035.365%2011.5051%2032.9563H11.5042C8.72167%2030.3321%206.18782%2027.427%206.18774%2023.0891C6.18774%2019.2616%207.63735%2015.7707%2010.0178%2013.1389L10.2756%2012.8616C12.9772%2010.0221%2016.795%208.25124%2021.0256%208.25124C25.2694%208.25128%2029.0874%2010.0466%2031.7883%2012.8977C34.304%2015.5531%2035.8635%2019.1356%2035.8635%2023.0891Z'%20fill='%239BDB9C'/%3e%3cpath%20d='M32.3938%2023.088C32.3938%2019.9508%2031.1134%2017.1184%2029.0569%2015.0607C27.0004%2013.0032%2024.1649%2011.719%2021.0256%2011.7189H20.9465C17.6174%2011.7412%2014.6276%2013.1939%2012.5617%2015.4953C10.7546%2017.5092%209.65549%2020.1693%209.65549%2023.088C9.65553%2024.6571%2010.2083%2025.8214%2011.0461%2026.8664C11.9056%2027.9384%2013.0249%2028.8441%2014.1936%2029.9503C14.7288%2030.4574%2015.2521%2031.0081%2015.7639%2031.5275C16.2811%2032.0524%2016.7943%2032.5543%2017.3352%2032.9914C18.4123%2033.8616%2019.5737%2034.4582%2021.0246%2034.4582C24.0754%2034.4581%2026.8439%2033.255%2028.884%2031.298V31.297C31.0464%2029.2308%2032.3937%2026.2248%2032.3938%2023.088ZM33.2453%2023.088C33.2453%2026.3577%2031.8876%2029.4879%2029.6877%2031.7013L29.4729%2031.9123C27.2807%2034.015%2024.3039%2035.3096%2021.0246%2035.3097C19.3103%2035.3097%2017.9649%2034.5946%2016.8%2033.6535C16.22%2033.1848%2015.6792%2032.6547%2015.1574%2032.1251C14.6302%2031.59%2014.1297%2031.0622%2013.6086%2030.5685V30.5695C12.5058%2029.5256%2011.2893%2028.5314%2010.3811%2027.3986C9.45133%2026.2388%208.80397%2024.8924%208.80392%2023.088C8.80392%2019.951%209.986%2017.0899%2011.9279%2014.9259H11.9289C14.1656%2012.4345%2017.4126%2010.8664%2021.0246%2010.8664H21.2004L21.2033%2010.8703C24.5095%2010.9179%2027.4896%2012.2893%2029.6584%2014.4591L30.0627%2014.883C32.0334%2017.0499%2033.2453%2019.9242%2033.2453%2023.088Z'%20fill='%2374DF98'/%3e%3cpath%20d='M29.9485%2023.0892C29.9485%2020.4916%2028.8388%2018.1542%2027.0677%2016.5228C25.488%2015.068%2023.3836%2014.1776%2021.0696%2014.1663H21.0247C18.368%2014.1663%2015.9836%2015.3261%2014.3489%2017.1683C12.9504%2018.7437%2012.1018%2020.8168%2012.1018%2023.0892C12.1019%2024.2725%2012.629%2024.9743%2013.4055%2025.6058C13.8042%2025.93%2014.2541%2026.2238%2014.7395%2026.5579C15.218%2026.8873%2015.7196%2027.2494%2016.1829%2027.6908C16.622%2028.1089%2017.0022%2028.6035%2017.3577%2029.0941C17.7193%2029.593%2018.0503%2030.0792%2018.4124%2030.5218C19.1297%2031.3986%2019.8969%2032.012%2021.0247%2032.012C23.4912%2032.0119%2025.7232%2031.011%2027.3391%2029.3929C28.9518%2027.7781%2029.9485%2025.5503%2029.9485%2023.0892ZM30.6292%2023.0892C30.6291%2025.738%2029.5566%2028.137%2027.8216%2029.8743C26.0831%2031.6152%2023.6794%2032.6926%2021.0247%2032.6927C19.5916%2032.6927%2018.6502%2031.8887%2017.885%2030.9534C17.5061%2030.4902%2017.1516%2029.9714%2016.8059%2029.4945C16.5421%2029.1304%2016.2793%2028.7851%2015.9993%2028.4779L15.7132%2028.1839C15.2908%2027.7816%2014.8264%2027.4448%2014.3538%2027.1195C13.8884%2026.7991%2013.4023%2026.4817%2012.9759%2026.1351C12.1019%2025.4244%2011.4203%2024.5457%2011.4202%2023.0892C11.4202%2020.6439%2012.3343%2018.4115%2013.8391%2016.7161L14.178%2016.3529C15.8861%2014.6167%2018.2509%2013.5307%2020.8704%2013.4896L20.8753%2013.4837H21.0257C23.5346%2013.4838%2025.8181%2014.4465%2027.5286%2016.0218C29.434%2017.7768%2030.6292%2020.2931%2030.6292%2023.0892Z'%20fill='%234DE294'/%3e%3cpath%20d='M136.209%2032.5971C134.942%2032.5971%20133.917%2032.2887%20133.134%2031.6721C132.351%2031.0554%20131.959%2030.1721%20131.959%2029.0221C131.959%2027.8721%20132.359%2026.9637%20133.159%2026.2971C133.976%2025.6304%20135.159%2025.2971%20136.709%2025.2971H138.334C139.467%2025.2971%20140.267%2025.1471%20140.734%2024.8471C141.217%2024.5471%20141.459%2024.0971%20141.459%2023.4971C141.459%2022.9804%20141.242%2022.5304%20140.809%2022.1471C140.376%2021.7637%20139.692%2021.5721%20138.759%2021.5721C137.892%2021.5721%20137.184%2021.7887%20136.634%2022.2221C136.101%2022.6554%20135.776%2023.2804%20135.659%2024.0971H132.109C132.276%2022.4637%20132.942%2021.1887%20134.109%2020.2721C135.276%2019.3554%20136.834%2018.8971%20138.784%2018.8971C140.734%2018.8971%20142.251%2019.3137%20143.334%2020.1471C144.417%2020.9637%20144.959%2022.1137%20144.959%2023.5971V32.1971H141.509L141.459%2029.0721H141.334C141.051%2030.1054%20140.434%2030.9554%20139.484%2031.6221C138.551%2032.2721%20137.459%2032.5971%20136.209%2032.5971ZM135.559%2028.7221C135.559%2029.2221%20135.734%2029.6054%20136.084%2029.8721C136.451%2030.1387%20136.967%2030.2721%20137.634%2030.2721C138.367%2030.2721%20139.026%2030.0971%20139.609%2029.7471C140.192%2029.3971%20140.642%2028.9387%20140.959%2028.3721C141.292%2027.8054%20141.459%2027.1971%20141.459%2026.5471V25.3721H141.334C141.184%2025.9887%20140.859%2026.4471%20140.359%2026.7471C139.859%2027.0304%20139.151%2027.1721%20138.234%2027.1721H137.359C136.776%2027.1721%20136.326%2027.3137%20136.009%2027.5971C135.709%2027.8637%20135.559%2028.2387%20135.559%2028.7221Z'%20fill='%23FAF5E9'/%3e%3cpath%20d='M129.685%2019.2971V32.1971H126.11V19.2971H129.685ZM125.785%2015.5221C125.785%2014.9554%20125.993%2014.4721%20126.41%2014.0721C126.827%2013.6554%20127.318%2013.4471%20127.885%2013.4471C128.468%2013.4471%20128.96%2013.6471%20129.36%2014.0471C129.76%2014.4471%20129.96%2014.9387%20129.96%2015.5221C129.96%2016.0887%20129.76%2016.5721%20129.36%2016.9721C128.96%2017.3721%20128.468%2017.5721%20127.885%2017.5721C127.302%2017.5721%20126.802%2017.3721%20126.385%2016.9721C125.985%2016.5721%20125.785%2016.0887%20125.785%2015.5221Z'%20fill='%23FAF5E9'/%3e%3cpath%20d='M109.232%2025.7471C109.232%2024.3804%20109.457%2023.1804%20109.907%2022.1471C110.373%2021.1137%20111.032%2020.3137%20111.882%2019.7471C112.732%2019.1804%20113.723%2018.8971%20114.857%2018.8971C115.907%2018.8971%20116.84%2019.1971%20117.657%2019.7971C118.473%2020.3971%20119.073%2021.2221%20119.457%2022.2721H119.607V14.6971H123.157V32.1971H119.707L119.607%2029.2471H119.457C119.057%2030.2971%20118.448%2031.1221%20117.632%2031.7221C116.815%2032.3054%20115.89%2032.5971%20114.857%2032.5971C113.723%2032.5971%20112.732%2032.3221%20111.882%2031.7721C111.032%2031.2054%20110.373%2030.4054%20109.907%2029.3721C109.457%2028.3387%20109.232%2027.1304%20109.232%2025.7471ZM112.807%2025.7471C112.807%2027.0804%20113.115%2028.1471%20113.732%2028.9471C114.348%2029.7304%20115.173%2030.1221%20116.207%2030.1221C117.223%2030.1221%20118.04%2029.7887%20118.657%2029.1221C119.29%2028.4387%20119.607%2027.5721%20119.607%2026.5221V24.9971C119.607%2023.9304%20119.298%2023.0637%20118.682%2022.3971C118.065%2021.7137%20117.24%2021.3721%20116.207%2021.3721C115.173%2021.3721%20114.348%2021.7721%20113.732%2022.5721C113.115%2023.3554%20112.807%2024.4137%20112.807%2025.7471Z'%20fill='%23FAF5E9'/%3e%3cpath%20d='M99.5882%2019.2971H103.038L103.138%2023.3471H103.263C103.463%2022.3304%20103.755%2021.5221%20104.138%2020.9221C104.522%2020.3054%20105.063%2019.8471%20105.763%2019.5471C106.48%2019.2304%20107.422%2019.0721%20108.588%2019.0721V22.0721C106.755%2022.1387%20105.43%2022.4887%20104.613%2023.1221C104.097%2023.5054%20103.722%2024.0304%20103.488%2024.6971C103.255%2025.3637%20103.138%2026.2137%20103.138%2027.2471V32.1971H99.5882V19.2971Z'%20fill='%23FAF5E9'/%3e%3cpath%20d='M90.4743%2032.5971C89.1743%2032.5971%2087.9827%2032.3221%2086.8993%2031.7721C85.8327%2031.2054%2084.991%2030.3971%2084.3743%2029.3471C83.7577%2028.2971%2083.4493%2027.0804%2083.4493%2025.6971C83.4493%2024.3471%2083.7577%2023.1554%2084.3743%2022.1221C85.0077%2021.0887%2085.8577%2020.2971%2086.9243%2019.7471C87.991%2019.1804%2089.1743%2018.8971%2090.4743%2018.8971C91.7743%2018.8971%2092.9577%2019.1804%2094.0243%2019.7471C95.1077%2020.2971%2095.9577%2021.0887%2096.5743%2022.1221C97.2077%2023.1554%2097.5243%2024.3471%2097.5243%2025.6971C97.5243%2027.0804%2097.2077%2028.2971%2096.5743%2029.3471C95.9577%2030.3971%2095.1077%2031.2054%2094.0243%2031.7721C92.9577%2032.3221%2091.7743%2032.5971%2090.4743%2032.5971ZM87.0243%2025.6971C87.0243%2027.0637%2087.3243%2028.1054%2087.9243%2028.8221C88.541%2029.5387%2089.391%2029.8971%2090.4743%2029.8971C91.5577%2029.8971%2092.3993%2029.5387%2092.9993%2028.8221C93.616%2028.1054%2093.9243%2027.0637%2093.9243%2025.6971C93.9243%2024.3637%2093.616%2023.3471%2092.9993%2022.6471C92.3993%2021.9471%2091.5577%2021.5971%2090.4743%2021.5971C89.391%2021.5971%2088.541%2021.9471%2087.9243%2022.6471C87.3243%2023.3471%2087.0243%2024.3637%2087.0243%2025.6971Z'%20fill='%23FAF5E9'/%3e%3cpath%20d='M68.1419%2014.6971H71.6919V22.3721H71.8419C72.1919%2021.2554%2072.7752%2020.3971%2073.5919%2019.7971C74.4252%2019.1971%2075.4252%2018.8971%2076.5919%2018.8971C77.4586%2018.8971%2078.2502%2019.0971%2078.9669%2019.4971C79.7002%2019.8804%2080.2752%2020.4471%2080.6919%2021.1971C81.1252%2021.9471%2081.3419%2022.8387%2081.3419%2023.8721V32.1971H77.7919V24.8721C77.7919%2023.8221%2077.5419%2023.0304%2077.0419%2022.4971C76.5586%2021.9637%2075.8336%2021.6971%2074.8669%2021.6971C73.8836%2021.6971%2073.1086%2022.0304%2072.5419%2022.6971C71.9752%2023.3637%2071.6919%2024.2804%2071.6919%2025.4471V32.1971H68.1419V14.6971Z'%20fill='%23FAF5E9'/%3e%3cpath%20d='M57.7978%2032.597C56.0311%2032.597%2054.4894%2032.2304%2053.1728%2031.497C51.8728%2030.7637%2050.8644%2029.7054%2050.1478%2028.3221C49.4478%2026.9387%2049.0978%2025.3054%2049.0978%2023.4221C49.0978%2021.5387%2049.4478%2019.9137%2050.1478%2018.5471C50.8644%2017.1637%2051.8728%2016.1137%2053.1728%2015.397C54.4728%2014.6637%2056.0144%2014.2971%2057.7978%2014.2971C60.0644%2014.2971%2061.9144%2014.8721%2063.3478%2016.0221C64.7978%2017.1554%2065.6811%2018.7054%2065.9978%2020.6721H62.0478C61.7811%2019.6387%2061.2811%2018.8221%2060.5478%2018.2221C59.8144%2017.6221%2058.8978%2017.3221%2057.7978%2017.3221C56.3311%2017.3221%2055.1728%2017.8637%2054.3228%2018.9471C53.4894%2020.0137%2053.0728%2021.5054%2053.0728%2023.4221C53.0728%2025.3387%2053.5061%2026.8471%2054.3728%2027.9471C55.2394%2029.0304%2056.4228%2029.5721%2057.9228%2029.5721C59.1061%2029.5721%2060.0728%2029.1971%2060.8228%2028.4471C61.5894%2027.6971%2062.0478%2026.6971%2062.1978%2025.4471H66.0978C65.9644%2026.8971%2065.5478%2028.1637%2064.8478%2029.2471C64.1644%2030.3137%2063.2228%2031.1387%2062.0228%2031.722C60.8228%2032.3054%2059.4144%2032.597%2057.7978%2032.597Z'%20fill='%23FAF5E9'/%3e%3c/svg%3e\"","\"use client\";\n\nimport React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n Home, FolderClosed, Users, Settings, ChevronDown,\n LayoutDashboard, Clock3, Activity, Lightbulb, Bell, Plug, BarChart3,\n FileText, Headphones, Shield, Sliders, Workflow, SquareDot,\n PanelLeftClose, PanelLeft,\n} from \"lucide-react\";\nimport { Tooltip, TooltipTrigger, TooltipContent } from \"../primitives/Tooltip\";\n\nimport chordiaLogoSvg from \"../../assets/LogoChordia.svg\";\n\n/**\n * Sidebar — collapsible navigation sidebar.\n *\n * Slot-based: pass menuItems as data, component handles rendering + expand/collapse.\n * No framework dependencies (no router, no auth, no API calls).\n *\n * Props:\n * - menuItems Array<MenuItem> Navigation items (see shape below)\n * - activeId string Currently active item id\n * - onNavigate function(href) Navigation callback\n * - collapsed boolean External collapsed state (controlled)\n * - onToggleCollapse function Toggle callback\n * - header ReactNode Optional header slot (logo, brand)\n * - footer ReactNode Optional footer slot (user, settings)\n * - width number Expanded width (default 240)\n * - collapsedWidth number Collapsed width (default 56)\n *\n * MenuItem shape:\n * - id string\n * - label string\n * - icon string (key from ICON_MAP) or ReactNode\n * - href string\n * - active boolean (override)\n * - children Array<MenuItem> (nested group)\n * - section string (section label above this item)\n */\n\nconst ICON_MAP = {\n home: Home,\n projects: FolderClosed,\n folder: FolderClosed,\n organization: Users,\n users: Users,\n dashboard: LayoutDashboard,\n history: Clock3,\n sessions: Clock3,\n monitoring: Activity,\n activity: Activity,\n insights: Lightbulb,\n notifications: Bell,\n integrations: Plug,\n settings: Settings,\n usage: BarChart3,\n docs: FileText,\n documentation: FileText,\n agents: Headphones,\n security: Shield,\n configuration: Sliders,\n workflow: Workflow,\n};\n\nfunction sidebarNavId(id) {\n if (!id) return undefined;\n return `sidebar-nav-${String(id)}`;\n}\n\nfunction resolveIcon(icon) {\n if (!icon) return SquareDot;\n if (typeof icon === \"string\") return ICON_MAP[icon.toLowerCase()] || SquareDot;\n return icon;\n}\n\nexport default function Sidebar({\n menuItems = [],\n activeId,\n onNavigate,\n collapsed: controlledCollapsed,\n onToggleCollapse,\n header,\n footer,\n width = 244,\n collapsedWidth = 56,\n expandedParentId = undefined,\n defaultExpandedParentId = null,\n onExpandedParentChange,\n singleExpand = false,\n}) {\n const [internalCollapsed, setInternalCollapsed] = useState(false);\n const collapsed = controlledCollapsed !== undefined ? controlledCollapsed : internalCollapsed;\n const toggleCollapse = onToggleCollapse || (() => setInternalCollapsed(!internalCollapsed));\n\n const [expandedGroups, setExpandedGroups] = useState(() => {\n const initial = {};\n menuItems.forEach((item) => {\n if (item.children?.length) {\n // Auto-expand groups that contain the active item\n const hasActive = item.children.some((c) => c.id === activeId || c.active);\n initial[item.id] = hasActive;\n }\n });\n return initial;\n });\n\n const parentItemIds = useMemo(\n () => new Set(menuItems.filter((item) => item.children?.length).map((item) => item.id)),\n [menuItems]\n );\n\n const autoExpandedParentId = useMemo(() => {\n const activeParent = menuItems.find(\n (item) =>\n item.children?.length &&\n (item.id === activeId ||\n !!item.active ||\n item.children.some((c) => c.id === activeId || c.active))\n );\n return activeParent?.id ?? null;\n }, [menuItems, activeId]);\n\n const [internalExpandedParentId, setInternalExpandedParentId] = useState(() => {\n const initialParentIds = new Set(\n menuItems.filter((item) => item.children?.length).map((item) => item.id)\n );\n if (defaultExpandedParentId != null && initialParentIds.has(defaultExpandedParentId)) {\n return defaultExpandedParentId;\n }\n const initialActiveParent = menuItems.find(\n (item) =>\n item.children?.length &&\n (item.id === activeId ||\n !!item.active ||\n item.children.some((c) => c.id === activeId || c.active))\n );\n return initialActiveParent?.id ?? null;\n });\n\n const isExpandedParentControlled = expandedParentId !== undefined;\n const currentExpandedParentId = isExpandedParentControlled\n ? (expandedParentId ?? null)\n : (parentItemIds.has(internalExpandedParentId) ? internalExpandedParentId : (autoExpandedParentId ?? null));\n\n useEffect(() => {\n if (isExpandedParentControlled || !singleExpand) return;\n const isMissingOrInvalid =\n internalExpandedParentId == null || !parentItemIds.has(internalExpandedParentId);\n if (isMissingOrInvalid) {\n setInternalExpandedParentId(autoExpandedParentId ?? null);\n }\n }, [\n autoExpandedParentId,\n isExpandedParentControlled,\n singleExpand,\n internalExpandedParentId,\n parentItemIds,\n ]);\n\n const setExpandedParent = (nextId) => {\n if (!isExpandedParentControlled) setInternalExpandedParentId(nextId);\n onExpandedParentChange?.(nextId);\n };\n\n const toggleGroup = (id) => {\n if (singleExpand) {\n const isExpanded = currentExpandedParentId === id;\n setExpandedParent(isExpanded ? null : id);\n return;\n }\n setExpandedGroups((prev) => ({ ...prev, [id]: !prev[id] }));\n };\n\n const isGroupExpanded = (id) => {\n if (singleExpand) return currentExpandedParentId === id;\n return !!expandedGroups[id];\n };\n\n const handleGroupPrimaryClick = (item) => {\n if (singleExpand) {\n if (currentExpandedParentId !== item.id) setExpandedParent(item.id);\n onNavigate?.(item.href || item.id);\n return;\n }\n toggleGroup(item.id);\n };\n\n const currentWidth = collapsed ? collapsedWidth : width;\n\n return (\n <nav\n style={{\n width: currentWidth,\n minWidth: currentWidth,\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"flex-start\",\n padding: collapsed ? \"0\" : \"0 0 24px 24px\",\n gap: 24,\n background: \"var(--Background-Inverse, #0B0B0B)\",\n fontFamily: \"var(--font-sans)\",\n transition: \"width 0.2s ease, min-width 0.2s ease\",\n overflow: \"hidden\",\n flexShrink: 0,\n }}\n >\n {/* Header + Collapse toggle in one row */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: collapsed ? \"center\" : \"space-between\",\n padding: collapsed ? \"12px 0\" : \"12px 0 0\",\n flexShrink: 0,\n width: \"100%\",\n }}\n >\n {!collapsed && (\n <div style={{ flexShrink: 0 }}>\n {header !== undefined ? header : <img src={chordiaLogoSvg} alt=\"Chordia\" style={{ height: 28, objectFit: \"contain\" }} />}\n </div>\n )}\n <button\n onClick={toggleCollapse}\n title={collapsed ? \"Expand sidebar\" : \"Collapse sidebar\"}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: 28,\n height: 28,\n borderRadius: \"var(--radius-sm)\",\n border: \"none\",\n background: \"transparent\",\n color: \"rgba(255, 255, 255, 0.5)\",\n cursor: \"pointer\",\n transition: \"background 0.15s ease, color 0.15s ease\",\n flexShrink: 0,\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = \"rgba(255, 255, 255, 0.08)\";\n e.currentTarget.style.color = \"rgba(255, 255, 255, 0.8)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = \"transparent\";\n e.currentTarget.style.color = \"rgba(255, 255, 255, 0.5)\";\n }}\n >\n {collapsed ? <PanelLeft size={16} /> : <PanelLeftClose size={16} />}\n </button>\n </div>\n\n {/* Menu items */}\n <div\n className=\"custom-thin-scrollbar\"\n style={{\n flex: 1,\n overflowY: \"auto\",\n overflowX: \"hidden\",\n padding: collapsed ? \"0 8px\" : \"0\",\n width: \"100%\",\n }}\n >\n {menuItems.map((item, idx) => (\n <React.Fragment key={item.id || idx}>\n {/* Section label */}\n {item.section && !collapsed && (\n <div\n style={{\n fontSize: \"var(--text-xs)\",\n fontWeight: 650,\n letterSpacing: \"0.08em\",\n textTransform: \"uppercase\",\n color: \"rgba(255, 255, 255, 0.35)\",\n padding: \"16px 8px 6px\",\n lineHeight: 1,\n }}\n >\n {item.section}\n </div>\n )}\n\n {item.children?.length ? (\n <SidebarGroup\n item={item}\n activeId={activeId}\n expanded={isGroupExpanded(item.id)}\n onPrimaryClick={() => handleGroupPrimaryClick(item)}\n onToggleOnly={() => toggleGroup(item.id)}\n onNavigate={onNavigate}\n collapsed={collapsed}\n singleExpand={singleExpand}\n />\n ) : (\n <SidebarItem\n item={item}\n active={item.id === activeId || item.active}\n onNavigate={onNavigate}\n collapsed={collapsed}\n />\n )}\n </React.Fragment>\n ))}\n </div>\n\n {/* Footer slot */}\n {footer && !collapsed && (\n <div\n style={{\n padding: \"12px 16px\",\n borderTop: \"1px solid rgba(255, 255, 255, 0.08)\",\n flexShrink: 0,\n width: \"100%\",\n }}\n >\n {footer}\n </div>\n )}\n </nav>\n );\n}\n\nfunction SidebarItem({ item, active, onNavigate, collapsed }) {\n const Icon = resolveIcon(item.icon);\n const isReactIcon = typeof item.icon !== \"string\" && typeof item.icon !== \"undefined\";\n const labelRef = useRef(null);\n const [isLabelTruncated, setIsLabelTruncated] = useState(false);\n\n useEffect(() => {\n if (collapsed) return;\n\n const checkTruncation = () => {\n if (!labelRef.current) return;\n setIsLabelTruncated(labelRef.current.scrollWidth > labelRef.current.clientWidth);\n };\n\n checkTruncation();\n window.addEventListener(\"resize\", checkTruncation);\n return () => window.removeEventListener(\"resize\", checkTruncation);\n }, [item.label, collapsed]);\n\n return (\n <button\n id={sidebarNavId(item.id)}\n onClick={() => onNavigate?.(item.href || item.id)}\n title={collapsed || isLabelTruncated ? item.label : undefined}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: collapsed ? 0 : 12,\n justifyContent: collapsed ? \"center\" : \"flex-start\",\n width: \"100%\",\n padding: collapsed ? \"10px 0\" : \"12px 24px 12px 12px\",\n borderRadius: active ? \"4px 0 0 4px\" : \"4px\",\n borderRight: active ? \"2px solid #00A66E\" : \"2px solid transparent\",\n borderTop: \"none\",\n borderBottom: \"none\",\n borderLeft: \"none\",\n background: active ? \"var(--Background-MonoPressed, #323232)\" : \"transparent\",\n color: active ? \"var(--Brand-400, #33B88B)\" : \"var(--Content-TertiaryInverse, #B2AEA8)\",\n fontWeight: 500,\n fontSize: \"12px\",\n fontStyle: \"normal\",\n lineHeight: \"120%\",\n textTransform: \"uppercase\",\n fontFamily: \"var(--font-sans)\",\n cursor: \"pointer\",\n textAlign: \"left\",\n transition: \"background 0.15s ease, color 0.1s ease, border-color 0.15s ease\",\n marginBottom: 2,\n }}\n onMouseEnter={(e) => {\n if (!active) {\n e.currentTarget.style.background = \"var(--Background-MonoPressed, #323232)\";\n e.currentTarget.style.color = \"var(--Brand-400, #33B88B)\";\n }\n }}\n onMouseLeave={(e) => {\n if (!active) {\n e.currentTarget.style.background = \"transparent\";\n e.currentTarget.style.color = \"var(--Content-TertiaryInverse, #B2AEA8)\";\n }\n }}\n >\n {isReactIcon ? (\n <span style={{ flexShrink: 0, display: \"flex\" }}>{item.icon}</span>\n ) : (\n <Icon\n size={18}\n style={{\n flexShrink: 0,\n color: \"inherit\",\n cursor: \"pointer\",\n }}\n onClick={(e) => {\n e.stopPropagation();\n onToggleOnly();\n }}\n />\n )}\n {!collapsed && (\n <span\n ref={labelRef}\n style={{\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {item.label}\n </span>\n )}\n </button>\n );\n}\n\nfunction SidebarGroup({\n item,\n activeId,\n expanded,\n onPrimaryClick,\n onToggleOnly,\n onNavigate,\n collapsed,\n singleExpand,\n}) {\n const Icon = resolveIcon(item.icon);\n const hasActiveGroupItem =\n item.id === activeId || !!item.active || item.children?.some((c) => c.id === activeId || c.active);\n const groupLabelRef = useRef(null);\n const [isGroupLabelTruncated, setIsGroupLabelTruncated] = useState(false);\n\n useEffect(() => {\n if (collapsed) return;\n\n const checkTruncation = () => {\n if (!groupLabelRef.current) return;\n setIsGroupLabelTruncated(groupLabelRef.current.scrollWidth > groupLabelRef.current.clientWidth);\n };\n\n checkTruncation();\n window.addEventListener(\"resize\", checkTruncation);\n return () => window.removeEventListener(\"resize\", checkTruncation);\n }, [item.label, collapsed]);\n\n if (collapsed) {\n // In collapsed mode, show just the group icon\n return (\n <button\n id={sidebarNavId(item.id)}\n onClick={onPrimaryClick}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"100%\",\n padding: \"10px 0\",\n borderRadius: \"4px\",\n border: \"none\",\n background: hasActiveGroupItem ? \"var(--Background-MonoPressed, #323232)\" : \"transparent\",\n color: hasActiveGroupItem ? \"var(--Brand-400, #33B88B)\" : \"var(--Content-TertiaryInverse, #B2AEA8)\",\n cursor: \"pointer\",\n marginBottom: 2,\n transition: \"background 0.15s ease\",\n }}\n onMouseEnter={(e) => {\n if (!hasActiveGroupItem) {\n e.currentTarget.style.background = \"var(--Background-MonoPressed, #323232)\";\n e.currentTarget.style.color = \"var(--Brand-400, #33B88B)\";\n }\n }}\n onMouseLeave={(e) => {\n if (!hasActiveGroupItem) {\n e.currentTarget.style.background = \"transparent\";\n e.currentTarget.style.color = \"var(--Content-TertiaryInverse, #B2AEA8)\";\n }\n }}\n >\n <Icon\n size={18}\n style={{ color: \"inherit\" }}\n />\n </button>\n );\n }\n\n return (\n <div style={{ marginBottom: 2 }}>\n {/* Group header */}\n <button\n id={sidebarNavId(item.id)}\n onClick={onPrimaryClick}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 12,\n width: \"100%\",\n padding: \"12px 24px 12px 12px\",\n borderRadius: \"4px\",\n border: \"none\",\n background: \"transparent\",\n color: hasActiveGroupItem ? \"var(--Brand-400, #33B88B)\" : \"var(--Content-TertiaryInverse, #B2AEA8)\",\n fontWeight: 700,\n fontSize: \"12px\",\n fontStyle: \"normal\",\n lineHeight: \"120%\",\n textTransform: \"uppercase\",\n fontFamily: \"var(--font-sans)\",\n cursor: \"pointer\",\n textAlign: \"left\",\n transition: \"background 0.15s ease, color 0.15s ease\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = \"var(--Background-MonoPressed, #323232)\";\n e.currentTarget.style.color = \"var(--Brand-400, #33B88B)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = \"transparent\";\n if (!hasActiveGroupItem) e.currentTarget.style.color = \"var(--Content-TertiaryInverse, #B2AEA8)\";\n else e.currentTarget.style.color = \"var(--Brand-400, #33B88B)\";\n }}\n >\n <Icon\n size={18}\n style={{\n flexShrink: 0,\n color: \"inherit\",\n }}\n />\n {isGroupLabelTruncated ? (\n <Tooltip>\n <TooltipTrigger asChild>\n <span\n ref={groupLabelRef}\n style={{\n flex: 1,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {item.label}\n </span>\n </TooltipTrigger>\n <TooltipContent side=\"top\" className=\"max-w-[28ch] whitespace-normal break-words\">\n {item.label}\n </TooltipContent>\n </Tooltip>\n ) : (\n <span\n ref={groupLabelRef}\n style={{\n flex: 1,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {item.label}\n </span>\n )}\n <ChevronDown\n size={14}\n onClick={(e) => {\n e.stopPropagation();\n onToggleOnly();\n }}\n style={{\n flexShrink: 0,\n color: \"inherit\",\n opacity: 0.7,\n transform: expanded ? \"rotate(0deg)\" : \"rotate(-90deg)\",\n transition: \"transform 0.2s ease\",\n cursor: singleExpand ? \"pointer\" : \"inherit\",\n }}\n />\n </button>\n\n {/* Children */}\n {expanded && (\n <div style={{ paddingLeft: 18, marginTop: 2 }}>\n {item.children.map((child, idx) => (\n <SidebarItem\n key={child.id || idx}\n item={child}\n active={child.id === activeId || child.active}\n onNavigate={onNavigate}\n collapsed={false}\n />\n ))}\n </div>\n )}\n </div>\n );\n}\n","import React from 'react';\nimport { LogOut, ChevronDown } from 'lucide-react';\n\n// Stable avatar colors — warm/neutral palette, no purple\nconst AVATAR_COLORS = [\n '#5a8a6e', // sage green\n '#b07d4f', // warm amber\n '#7a8fa6', // slate blue\n '#c47a5a', // terracotta\n '#6a9a8a', // teal\n '#a0785a', // clay\n '#5a7a9a', // steel blue\n '#9a7a5a', // caramel\n];\n\nfunction avatarColor(name) {\n if (!name) return AVATAR_COLORS[0];\n let hash = 0;\n for (let i = 0; i < name.length; i++) hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0;\n return AVATAR_COLORS[Math.abs(hash) % AVATAR_COLORS.length];\n}\n\n/**\n * NavigationBar — top-level app header bar.\n *\n * Slot-based composition: pass children for center content, trailing for right content,\n * or use the built-in user/switcher/actions props for the standard Chordia layout.\n *\n * Props:\n * - logo ReactNode Left-side branding (defaults to \"Chordia\" wordmark)\n * - title string App title shown after logo\n * - userName string User's display name\n * - userEmail string Fallback if no userName\n * - userRole string Role badge (e.g. \"Admin\")\n * - onSignOut function Sign out callback (renders sign out button)\n * - children ReactNode Center slot — switchers, breadcrumbs, tabs, anything\n * - trailing ReactNode Right slot — status indicators, extra actions\n * - userMenu ReactNode Optional custom user menu (replaces built-in user block)\n * - height number Bar height in px (default 48)\n * - style object Style overrides on the root element\n */\nexport default function NavigationBar({\n logo,\n title,\n userName,\n userEmail,\n userInitials,\n userRole,\n onSignOut,\n children,\n trailing,\n userMenu,\n height = 48,\n style,\n}) {\n const displayName = userName || userEmail || '';\n const initials = userInitials || getInitials(displayName);\n\n return (\n <header\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '0 20px',\n height,\n borderBottom: '1px solid var(--border)',\n background: 'var(--primary-foreground)',\n flexShrink: 0,\n fontFamily: 'var(--font-sans)',\n position: 'sticky',\n top: 0,\n zIndex: 1000,\n ...style,\n }}\n >\n {/* ─── Left: Logo + Title ─── */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 10, flexShrink: 0 }}>\n {logo !== undefined ? logo : (\n <span style={{\n fontSize: 'var(--text-lg)',\n fontWeight: 700,\n fontFamily: 'var(--font-display)',\n color: 'var(--text-ink)',\n letterSpacing: '-0.01em',\n }}>\n Chordia\n </span>\n )}\n {title && (\n <>\n <span style={{\n width: 1,\n height: 18,\n background: 'var(--border)',\n flexShrink: 0,\n }} />\n <span style={{\n fontSize: 'var(--text-md)',\n fontWeight: 500,\n color: 'var(--text-muted)',\n }}>\n {title}\n </span>\n </>\n )}\n </div>\n\n {/* ─── Center: Slot for switchers, breadcrumbs, tabs ─── */}\n {children && (\n <div style={{\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n flex: 1,\n justifyContent: 'center',\n minWidth: 0,\n }}>\n {children}\n </div>\n )}\n\n {/* ─── Right: User + trailing ─── */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 10,\n flexShrink: 0,\n }}\n >\n {trailing}\n\n {userMenu\n ? userMenu\n : displayName && (\n <div style={{ display: 'flex', alignItems: 'center', gap: 8 }}>\n {/* Initials avatar */}\n <div style={{\n width: 30,\n height: 30,\n borderRadius: '50%',\n background: avatarColor(displayName),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n }}>\n <span style={{\n fontSize: 11,\n fontWeight: 600,\n color: '#fff',\n letterSpacing: '0.02em',\n lineHeight: 1,\n }}>\n {initials}\n </span>\n </div>\n\n {/* Name + role */}\n <div style={{ display: 'flex', flexDirection: 'column', gap: 1 }}>\n <span style={{\n fontSize: 'var(--text-sm)',\n fontWeight: 550,\n color: 'var(--text-strong)',\n lineHeight: 1.2,\n }}>\n {displayName}\n </span>\n {userRole && (\n <span style={{\n fontSize: 'var(--text-xs)',\n color: 'var(--text-muted)',\n lineHeight: 1.2,\n }}>\n {userRole}\n </span>\n )}\n </div>\n\n {/* Sign out */}\n {onSignOut && (\n <button\n onClick={onSignOut}\n title=\"Sign out\"\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 28,\n height: 28,\n borderRadius: 'var(--radius-sm)',\n border: 'none',\n background: 'transparent',\n color: 'var(--text-faint)',\n cursor: 'pointer',\n transition: 'background 0.15s ease, color 0.15s ease',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = 'var(--hover-warm)';\n e.currentTarget.style.color = 'var(--text-muted)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = 'transparent';\n e.currentTarget.style.color = 'var(--text-faint)';\n }}\n >\n <LogOut size={14} />\n </button>\n )}\n </div>\n )}\n </div>\n </header>\n );\n}\n\n/**\n * NavPill — compact switcher button for use inside NavigationBar.\n *\n * Props:\n * - label string Display text\n * - color string Rail color token (e.g. \"var(--rail-discovery)\")\n * - active boolean Whether dropdown is open\n * - onClick function Toggle callback\n */\nexport function NavPill({ label, color = 'var(--text-muted)', active, onClick }) {\n return (\n <button\n onClick={onClick}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 4,\n fontSize: 'var(--text-sm)',\n fontWeight: 500,\n fontFamily: 'var(--font-sans)',\n padding: '4px 10px',\n borderRadius: 'var(--radius-sm)',\n border: `1px solid color-mix(in srgb, ${color} 30%, transparent)`,\n background: `color-mix(in srgb, ${color} 10%, transparent)`,\n color: color,\n cursor: 'pointer',\n transition: 'background 0.15s ease, border-color 0.15s ease',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = `color-mix(in srgb, ${color} 18%, transparent)`;\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = `color-mix(in srgb, ${color} 10%, transparent)`;\n }}\n >\n {label}\n <ChevronDown\n size={12}\n style={{\n transform: active ? 'rotate(180deg)' : 'rotate(0deg)',\n transition: 'transform 0.2s ease',\n opacity: 0.7,\n }}\n />\n </button>\n );\n}\n\n/**\n * NavDropdown — dropdown panel that attaches to a NavPill.\n * Wrap around NavPill and the dropdown content.\n *\n * Props:\n * - open boolean Whether dropdown is visible\n * - onClose function Close callback\n * - children ReactNode Dropdown items\n * - align string \"left\" | \"right\" (default \"left\")\n */\nexport function NavDropdown({ open, onClose, children, align = 'left' }) {\n if (!open) return null;\n return (\n <>\n <div\n onClick={onClose}\n style={{ position: 'fixed', inset: 0, zIndex: 99, background: 'rgba(0,0,0,0.03)' }}\n />\n <div style={{\n position: 'absolute',\n top: '100%',\n [align === 'right' ? 'right' : 'left']: 0,\n marginTop: 4,\n zIndex: 100,\n background: '#fff',\n border: '1px solid var(--border)',\n borderRadius: 'var(--radius)',\n padding: 4,\n minWidth: 200,\n maxHeight: 280,\n overflowY: 'auto',\n boxShadow: '0 8px 24px rgba(0,0,0,0.12)',\n }}>\n {children}\n </div>\n </>\n );\n}\n\n/**\n * NavDropdownItem — single item inside NavDropdown.\n *\n * Props:\n * - label string\n * - active boolean\n * - onClick function\n */\nexport function NavDropdownItem({ label, active, onClick }) {\n return (\n <div\n onClick={onClick}\n style={{\n padding: '8px 10px',\n borderRadius: 'var(--radius-sm)',\n cursor: 'pointer',\n fontSize: 'var(--text-sm)',\n color: active ? 'var(--text-ink)' : 'var(--text-base)',\n fontWeight: active ? 600 : 400,\n fontFamily: 'var(--font-sans)',\n background: active ? 'var(--hover-warm)' : 'transparent',\n transition: 'background 0.1s ease',\n }}\n onMouseEnter={(e) => {\n if (!active) e.currentTarget.style.background = 'var(--hover-warm-subtle)';\n }}\n onMouseLeave={(e) => {\n if (!active) e.currentTarget.style.background = 'transparent';\n }}\n >\n {label}\n </div>\n );\n}\n\n/**\n * StatusIndicator — connection/status pill for trailing slot.\n *\n * Props:\n * - connected boolean\n * - label string (optional, defaults to Connected/Disconnected)\n */\nexport function StatusIndicator({ connected, label }) {\n const text = label || (connected ? 'Connected' : 'Disconnected');\n return (\n <span style={{\n fontSize: 'var(--text-xs)',\n fontFamily: 'var(--font-sans)',\n padding: '3px 10px',\n borderRadius: 12,\n border: `1px solid ${connected ? 'var(--state-present)' : 'var(--border)'}`,\n color: connected ? 'var(--state-present)' : 'var(--text-faint)',\n background: connected ? 'rgba(37,163,114,0.08)' : 'transparent',\n transition: 'all 0.2s ease',\n }}>\n {text}\n </span>\n );\n}\n\nfunction getInitials(name) {\n if (!name) return '?';\n const parts = name.trim().split(/\\s+/);\n if (parts.length >= 2) {\n return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase();\n }\n return name.slice(0, 2).toUpperCase();\n}\n"],"names":["chordiaLogoSvg","ICON_MAP","Home","FolderClosed","Users","LayoutDashboard","Clock3","Activity","Lightbulb","Bell","Plug","Settings","BarChart3","FileText","Headphones","Shield","Sliders","Workflow","sidebarNavId","id","resolveIcon","icon","SquareDot","Sidebar","menuItems","activeId","onNavigate","controlledCollapsed","onToggleCollapse","header","footer","width","collapsedWidth","expandedParentId","defaultExpandedParentId","onExpandedParentChange","singleExpand","internalCollapsed","setInternalCollapsed","useState","collapsed","toggleCollapse","expandedGroups","setExpandedGroups","initial","item","_a","hasActive","c","parentItemIds","useMemo","autoExpandedParentId","activeParent","internalExpandedParentId","setInternalExpandedParentId","initialParentIds","initialActiveParent","isExpandedParentControlled","currentExpandedParentId","useEffect","setExpandedParent","nextId","toggleGroup","prev","isGroupExpanded","handleGroupPrimaryClick","currentWidth","jsxs","jsx","e","PanelLeft","PanelLeftClose","idx","React","SidebarGroup","SidebarItem","active","Icon","isReactIcon","labelRef","useRef","isLabelTruncated","setIsLabelTruncated","checkTruncation","expanded","onPrimaryClick","onToggleOnly","hasActiveGroupItem","groupLabelRef","isGroupLabelTruncated","setIsGroupLabelTruncated","Tooltip","TooltipTrigger","TooltipContent","ChevronDown","child","AVATAR_COLORS","avatarColor","name","hash","i","NavigationBar","logo","title","userName","userEmail","userInitials","userRole","onSignOut","children","trailing","userMenu","height","style","displayName","initials","getInitials","Fragment","LogOut","NavPill","label","color","onClick","NavDropdown","open","onClose","align","NavDropdownItem","StatusIndicator","connected","parts"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";const e=require("react/jsx-runtime");require("react");const r=require("lucide-react"),p={feature:{railColor:"#7B68A6",icon:e.jsx(r.Sparkles,{size:16,strokeWidth:2.5}),label:"New Feature"},issue:{railColor:"#C98A5A",icon:e.jsx(r.AlertCircle,{size:16,strokeWidth:2.5}),label:"Known Issue"},maintenance:{railColor:"#8B9D6F",icon:e.jsx(r.Wrench,{size:16,strokeWidth:2.5}),label:"Maintenance"},announcement:{railColor:"#6B7C93",icon:e.jsx(r.Info,{size:16,strokeWidth:2.5}),label:"Announcement"}};function x({type:n,title:l,message:o,timestamp:a,isRead:s=!1,onDismiss:i,onClick:d}){const t=p[n]||p.announcement;return e.jsxs("div",{onClick:d,style:{position:"relative",background:s?"#FFFFFF":"rgba(244, 241, 230, 0.4)",border:"1px solid rgba(30, 33, 37, 0.10)",borderRadius:"6px",padding:"12px 16px",paddingLeft:"20px",display:"flex",flexDirection:"column",gap:"6px",cursor:d?"pointer":"default",transition:"all 0.15s ease",overflow:"hidden"},className:d?"hover:border-[rgba(30,33,37,0.18)]":"",children:[e.jsx("div",{style:{position:"absolute",left:0,top:0,bottom:0,width:"4px",background:t.railColor}}),e.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"12px"},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",flex:1,minWidth:0},children:[e.jsx("h4",{style:{fontSize:"13px",fontWeight:650,color:"rgba(30, 33, 37, 0.92)",letterSpacing:"-0.01em",flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:l,"aria-label":l,children:l}),e.jsxs("div",{style:{display:"inline-flex",alignItems:"center",gap:"4px",padding:"2px 6px",borderRadius:"3px",background:`${t.railColor}10`,border:`1px solid ${t.railColor}25`,fontSize:"10px",fontWeight:600,letterSpacing:"0.01em",color:t.railColor,flexShrink:0},children:[t.icon,e.jsx("span",{style:{whiteSpace:"nowrap"},children:t.label})]})]}),e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexShrink:0},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[!s&&e.jsx("div",{style:{width:"5px",height:"5px",borderRadius:"50%",background:t.railColor,flexShrink:0}}),e.jsx("span",{style:{fontSize:"11px",color:"rgba(30, 33, 37, 0.52)",fontWeight:500,whiteSpace:"nowrap"},children:a})]}),i&&e.jsx("button",{onClick:c=>{c.stopPropagation(),i()},style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"4px",border:"none",background:"transparent",cursor:"pointer",color:"rgba(30, 33, 37, 0.35)",transition:"color 0.15s ease",borderRadius:"3px"},className:"hover:bg-[rgba(30,33,37,0.05)] hover:text-[rgba(30,33,37,0.65)]",children:e.jsx(r.X,{size:14,strokeWidth:2.5})})]})]}),e.jsx("p",{style:{fontSize:"12px",lineHeight:1.45,color:"rgba(30, 33, 37, 0.65)",margin:0},children:o})]})}function g({notifications:n,onDismiss:l,onMarkAllRead:o,onNotificationClick:a}){const s=n.filter(i=>!i.isRead).length;return e.jsxs("div",{style:{background:"#FFFFFF",border:"1px solid rgba(30, 33, 37, 0.12)",borderRadius:"12px",width:"100%",maxWidth:"560px",minWidth:"600px",boxShadow:"0 6px 24px rgba(0, 0, 0, 0.08)",display:"flex",flexDirection:"column",maxHeight:"600px",overflow:"hidden"},children:[e.jsxs("div",{style:{padding:"16px 20px",borderBottom:"1px solid rgba(30, 33, 37, 0.10)",display:"flex",alignItems:"center",justifyContent:"space-between",flexShrink:0,background:"#FFFFFF"},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"10px"},children:[e.jsx(r.Bell,{size:18,strokeWidth:2.5,style:{color:"rgba(30, 33, 37, 0.65)"}}),e.jsx("h3",{style:{fontSize:"15px",fontWeight:650,color:"rgba(30, 33, 37, 0.92)",letterSpacing:"-0.01em"},children:"Notifications"}),s>0&&e.jsx("div",{style:{padding:"2px 8px",borderRadius:"12px",background:"rgba(107, 124, 147, 0.12)",fontSize:"11px",fontWeight:650,color:"#6B7C93"},children:s})]}),s>0&&o&&e.jsxs("button",{onClick:o,style:{display:"flex",alignItems:"center",gap:"8px",padding:"8px 12px",border:"1px solid rgba(30, 33, 37, 0.15)",borderRadius:"6px",background:"transparent",fontSize:"13px",fontWeight:600,color:"rgba(30, 33, 37, 0.65)",cursor:"pointer",transition:"all 0.15s ease"},className:"interactive hover:bg-warm hover:border-hover",children:[e.jsx(r.Check,{size:14,strokeWidth:2.5}),"Mark all read"]})]}),e.jsx("div",{style:{padding:"16px",display:"flex",flexDirection:"column",gap:"12px",overflowY:"auto",flex:1},className:"custom-thin-scrollbar-library",children:n.length===0?e.jsxs("div",{style:{padding:"40px 20px",textAlign:"center",color:"rgba(30, 33, 37, 0.42)"},children:[e.jsx(r.Bell,{size:32,strokeWidth:1.5,style:{margin:"0 auto 12px",opacity:.3}}),e.jsx("p",{style:{fontSize:"13px",fontWeight:500},children:"No notifications"})]}):n.map(i=>e.jsx(x,{type:i.type,title:i.title,message:i.message,timestamp:i.timestamp,isRead:i.isRead,onDismiss:l?()=>l(i.id):void 0,onClick:a?()=>a(i.id):void 0},i.id))})]})}exports.NotificationItem=x;exports.NotificationPanel=g;
|
|
2
|
-
//# sourceMappingURL=NotificationPanel.cjs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NotificationPanel.cjs.js","sources":["../src/components/notifications/NotificationItem.jsx","../src/components/notifications/NotificationPanel.jsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\nimport { X, Sparkles, AlertCircle, Wrench, Info } from \"lucide-react\";\n\n/**\n * NotificationItem Component\n * Displays a single notification item with type, title, message, timestamp, and actions.\n * \n * @param {Object} props - Component props\n * @param {string} props.type - Notification type: 'feature', 'issue', 'maintenance', or 'announcement'\n * @param {string} props.title - Notification title\n * @param {string} props.message - Notification message\n * @param {string} props.timestamp - Timestamp string\n * @param {boolean} props.isRead - Whether the notification is read\n * @param {Function} props.onDismiss - Callback when dismiss button is clicked\n * @param {Function} props.onClick - Callback when notification is clicked\n */\nconst notificationConfig = {\n feature: {\n railColor: \"#7B68A6\",\n icon: <Sparkles size={16} strokeWidth={2.5} />,\n label: \"New Feature\",\n },\n issue: {\n railColor: \"#C98A5A\",\n icon: <AlertCircle size={16} strokeWidth={2.5} />,\n label: \"Known Issue\",\n },\n maintenance: {\n railColor: \"#8B9D6F\",\n icon: <Wrench size={16} strokeWidth={2.5} />,\n label: \"Maintenance\",\n },\n announcement: {\n railColor: \"#6B7C93\",\n icon: <Info size={16} strokeWidth={2.5} />,\n label: \"Announcement\",\n },\n};\n\nexport default function NotificationItem({\n type,\n title,\n message,\n timestamp,\n isRead = false,\n onDismiss,\n onClick,\n}) {\n const config = notificationConfig[type] || notificationConfig.announcement;\n\n return (\n <div\n onClick={onClick}\n style={{\n position: \"relative\",\n background: isRead ? \"#FFFFFF\" : \"rgba(244, 241, 230, 0.4)\",\n border: \"1px solid rgba(30, 33, 37, 0.10)\",\n borderRadius: \"6px\",\n padding: \"12px 16px\",\n paddingLeft: \"20px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"6px\",\n cursor: onClick ? \"pointer\" : \"default\",\n transition: \"all 0.15s ease\",\n overflow: \"hidden\",\n }}\n className={onClick ? \"hover:border-[rgba(30,33,37,0.18)]\" : \"\"}\n >\n {/* Rail */}\n <div\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n bottom: 0,\n width: \"4px\",\n background: config.railColor,\n }}\n />\n\n {/* Line 1: Title + Type badge + Timestamp + Dismiss */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: \"12px\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n flex: 1,\n minWidth: 0,\n }}\n >\n {/* Title */}\n <h4\n style={{\n fontSize: \"13px\",\n fontWeight: 650,\n color: \"rgba(30, 33, 37, 0.92)\",\n letterSpacing: \"-0.01em\",\n flex: 1,\n minWidth: 0,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n title={title}\n aria-label={title}\n >\n {title}\n </h4>\n {/* Type Badge */}\n <div\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"4px\",\n padding: \"2px 6px\",\n borderRadius: \"3px\",\n background: `${config.railColor}10`,\n border: `1px solid ${config.railColor}25`,\n fontSize: \"10px\",\n fontWeight: 600,\n letterSpacing: \"0.01em\",\n color: config.railColor,\n flexShrink: 0,\n }}\n >\n {config.icon}\n <span style={{ whiteSpace: \"nowrap\" }}>{config.label}</span>\n </div>\n </div>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n flexShrink: 0,\n }}\n >\n {/* Timestamp with colored dot (only for unread) */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n }}\n >\n {!isRead && (\n <div\n style={{\n width: \"5px\",\n height: \"5px\",\n borderRadius: \"50%\",\n background: config.railColor,\n flexShrink: 0,\n }}\n />\n )}\n <span\n style={{\n fontSize: \"11px\",\n color: \"rgba(30, 33, 37, 0.52)\",\n fontWeight: 500,\n whiteSpace: \"nowrap\",\n }}\n >\n {timestamp}\n </span>\n </div>\n {/* Dismiss button */}\n {onDismiss && (\n <button\n onClick={(e) => {\n e.stopPropagation();\n onDismiss();\n }}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: \"4px\",\n border: \"none\",\n background: \"transparent\",\n cursor: \"pointer\",\n color: \"rgba(30, 33, 37, 0.35)\",\n transition: \"color 0.15s ease\",\n borderRadius: \"3px\",\n }}\n className=\"hover:bg-[rgba(30,33,37,0.05)] hover:text-[rgba(30,33,37,0.65)]\"\n >\n <X size={14} strokeWidth={2.5} />\n </button>\n )}\n </div>\n </div>\n\n {/* Line 2: Message */}\n <p\n style={{\n fontSize: \"12px\",\n lineHeight: 1.45,\n color: \"rgba(30, 33, 37, 0.65)\",\n margin: 0,\n }}\n >\n {message}\n </p>\n </div>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { Bell, Check } from \"lucide-react\";\nimport NotificationItem from \"./NotificationItem\";\n\n/**\n * NotificationPanel Component\n * Displays a panel of notifications with header, list, and actions.\n * \n * @param {Object} props - Component props\n * @param {Array} props.notifications - Array of notification objects\n * @param {string} props.notifications[].id - Notification ID\n * @param {string} props.notifications[].type - Notification type: 'feature', 'issue', 'maintenance', or 'announcement'\n * @param {string} props.notifications[].title - Notification title\n * @param {string} props.notifications[].message - Notification message\n * @param {string} props.notifications[].timestamp - Timestamp string\n * @param {boolean} props.notifications[].isRead - Whether the notification is read\n * @param {Function} props.onDismiss - Callback when dismiss button is clicked (receives id)\n * @param {Function} props.onMarkAllRead - Callback when mark all read button is clicked\n * @param {Function} props.onNotificationClick - Callback when notification is clicked (receives id)\n */\nexport default function NotificationPanel({\n notifications,\n onDismiss,\n onMarkAllRead,\n onNotificationClick,\n}) {\n const unreadCount = notifications.filter((n) => !n.isRead).length;\n\n return (\n <div\n style={{\n background: \"#FFFFFF\",\n border: \"1px solid rgba(30, 33, 37, 0.12)\",\n borderRadius: \"12px\",\n width: \"100%\",\n maxWidth: \"560px\",\n minWidth: \"600px\",\n boxShadow: \"0 6px 24px rgba(0, 0, 0, 0.08)\",\n display: \"flex\",\n flexDirection: \"column\",\n maxHeight: \"600px\",\n overflow: \"hidden\",\n // position: \"absolute\",\n // top: \"3rem\",\n // right: \"0\",\n // zIndex: 1000,\n }}\n >\n {/* Header */}\n <div\n style={{\n padding: \"16px 20px\",\n borderBottom: \"1px solid rgba(30, 33, 37, 0.10)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n flexShrink: 0,\n background: \"#FFFFFF\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"10px\" }}>\n <Bell size={18} strokeWidth={2.5} style={{ color: \"rgba(30, 33, 37, 0.65)\" }} />\n <h3\n style={{\n fontSize: \"15px\",\n fontWeight: 650,\n color: \"rgba(30, 33, 37, 0.92)\",\n letterSpacing: \"-0.01em\",\n }}\n >\n Notifications\n </h3>\n {unreadCount > 0 && (\n <div\n style={{\n padding: \"2px 8px\",\n borderRadius: \"12px\",\n background: \"rgba(107, 124, 147, 0.12)\",\n fontSize: \"11px\",\n fontWeight: 650,\n color: \"#6B7C93\",\n }}\n >\n {unreadCount}\n </div>\n )}\n </div>\n {unreadCount > 0 && onMarkAllRead && (\n <button\n onClick={onMarkAllRead}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n padding: \"8px 12px\",\n border: \"1px solid rgba(30, 33, 37, 0.15)\",\n borderRadius: \"6px\",\n background: \"transparent\",\n fontSize: \"13px\",\n fontWeight: 600,\n color: \"rgba(30, 33, 37, 0.65)\",\n cursor: \"pointer\",\n transition: \"all 0.15s ease\",\n }}\n className=\"interactive hover:bg-warm hover:border-hover\"\n >\n <Check size={14} strokeWidth={2.5} />\n Mark all read\n </button>\n )}\n </div>\n\n {/* Notifications list */}\n <div\n style={{\n padding: \"16px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"12px\",\n overflowY: \"auto\",\n flex: 1,\n }}\n className=\"custom-thin-scrollbar-library\"\n >\n {notifications.length === 0 ? (\n <div\n style={{\n padding: \"40px 20px\",\n textAlign: \"center\",\n color: \"rgba(30, 33, 37, 0.42)\",\n }}\n >\n <Bell size={32} strokeWidth={1.5} style={{ margin: \"0 auto 12px\", opacity: 0.3 }} />\n <p style={{ fontSize: \"13px\", fontWeight: 500 }}>No notifications</p>\n </div>\n ) : (\n notifications.map((notification) => (\n <NotificationItem\n key={notification.id}\n type={notification.type}\n title={notification.title}\n message={notification.message}\n timestamp={notification.timestamp}\n isRead={notification.isRead}\n onDismiss={onDismiss ? () => onDismiss(notification.id) : undefined}\n onClick={onNotificationClick ? () => onNotificationClick(notification.id) : undefined}\n />\n ))\n )}\n </div>\n </div>\n );\n}\n\n"],"names":["notificationConfig","jsx","Sparkles","AlertCircle","Wrench","Info","NotificationItem","type","title","message","timestamp","isRead","onDismiss","onClick","config","jsxs","e","X","NotificationPanel","notifications","onMarkAllRead","onNotificationClick","unreadCount","n","Bell","Check","notification"],"mappings":"mGAkBMA,EAAqB,CACzB,QAAS,CACP,UAAW,UACX,KAAMC,EAAAA,IAACC,WAAA,CAAS,KAAM,GAAI,YAAa,IAAK,EAC5C,MAAO,aAAA,EAET,MAAO,CACL,UAAW,UACX,KAAMD,EAAAA,IAACE,cAAA,CAAY,KAAM,GAAI,YAAa,IAAK,EAC/C,MAAO,aAAA,EAET,YAAa,CACX,UAAW,UACX,KAAMF,EAAAA,IAACG,SAAA,CAAO,KAAM,GAAI,YAAa,IAAK,EAC1C,MAAO,aAAA,EAET,aAAc,CACZ,UAAW,UACX,KAAMH,EAAAA,IAACI,OAAA,CAAK,KAAM,GAAI,YAAa,IAAK,EACxC,MAAO,cAAA,CAEX,EAEA,SAAwBC,EAAiB,CACvC,KAAAC,EACA,MAAAC,EACA,QAAAC,EACA,UAAAC,EACA,OAAAC,EAAS,GACT,UAAAC,EACA,QAAAC,CACF,EAAG,CACD,MAAMC,EAASd,EAAmBO,CAAI,GAAKP,EAAmB,aAE9D,OACEe,EAAAA,KAAC,MAAA,CACC,QAAAF,EACA,MAAO,CACL,SAAU,WACV,WAAYF,EAAS,UAAY,2BACjC,OAAQ,mCACR,aAAc,MACd,QAAS,YACT,YAAa,OACb,QAAS,OACT,cAAe,SACf,IAAK,MACL,OAAQE,EAAU,UAAY,UAC9B,WAAY,iBACZ,SAAU,QAAA,EAEZ,UAAWA,EAAU,qCAAuC,GAG5D,SAAA,CAAAZ,EAAAA,IAAC,MAAA,CACC,MAAO,CACL,SAAU,WACV,KAAM,EACN,IAAK,EACL,OAAQ,EACR,MAAO,MACP,WAAYa,EAAO,SAAA,CACrB,CAAA,EAIFC,EAAAA,KAAC,MAAA,CACC,MAAO,CACL,QAAS,OACT,WAAY,SACZ,eAAgB,gBAChB,IAAK,MAAA,EAGP,SAAA,CAAAA,EAAAA,KAAC,MAAA,CACC,MAAO,CACL,QAAS,OACT,WAAY,SACZ,IAAK,MACL,KAAM,EACN,SAAU,CAAA,EAIZ,SAAA,CAAAd,EAAAA,IAAC,KAAA,CACC,MAAO,CACL,SAAU,OACV,WAAY,IACZ,MAAO,yBACP,cAAe,UACf,KAAM,EACN,SAAU,EACV,SAAU,SACV,aAAc,WACd,WAAY,QAAA,EAEd,MAAAO,EACA,aAAYA,EAEX,SAAAA,CAAA,CAAA,EAGHO,EAAAA,KAAC,MAAA,CACC,MAAO,CACL,QAAS,cACT,WAAY,SACZ,IAAK,MACL,QAAS,UACT,aAAc,MACd,WAAY,GAAGD,EAAO,SAAS,KAC/B,OAAQ,aAAaA,EAAO,SAAS,KACrC,SAAU,OACV,WAAY,IACZ,cAAe,SACf,MAAOA,EAAO,UACd,WAAY,CAAA,EAGb,SAAA,CAAAA,EAAO,KACRb,MAAC,QAAK,MAAO,CAAE,WAAY,UAAa,WAAO,KAAA,CAAM,CAAA,CAAA,CAAA,CACvD,CAAA,CAAA,EAEFc,EAAAA,KAAC,MAAA,CACC,MAAO,CACL,QAAS,OACT,WAAY,SACZ,IAAK,MACL,WAAY,CAAA,EAId,SAAA,CAAAA,EAAAA,KAAC,MAAA,CACC,MAAO,CACL,QAAS,OACT,WAAY,SACZ,IAAK,KAAA,EAGN,SAAA,CAAA,CAACJ,GACAV,EAAAA,IAAC,MAAA,CACC,MAAO,CACL,MAAO,MACP,OAAQ,MACR,aAAc,MACd,WAAYa,EAAO,UACnB,WAAY,CAAA,CACd,CAAA,EAGJb,EAAAA,IAAC,OAAA,CACC,MAAO,CACL,SAAU,OACV,MAAO,yBACP,WAAY,IACZ,WAAY,QAAA,EAGb,SAAAS,CAAA,CAAA,CACH,CAAA,CAAA,EAGDE,GACCX,EAAAA,IAAC,SAAA,CACC,QAAUe,GAAM,CACdA,EAAE,gBAAA,EACFJ,EAAA,CACF,EACA,MAAO,CACL,QAAS,OACT,WAAY,SACZ,eAAgB,SAChB,QAAS,MACT,OAAQ,OACR,WAAY,cACZ,OAAQ,UACR,MAAO,yBACP,WAAY,mBACZ,aAAc,KAAA,EAEhB,UAAU,kEAEV,SAAAX,EAAAA,IAACgB,IAAA,CAAE,KAAM,GAAI,YAAa,GAAA,CAAK,CAAA,CAAA,CACjC,CAAA,CAAA,CAEJ,CAAA,CAAA,EAIFhB,EAAAA,IAAC,IAAA,CACC,MAAO,CACL,SAAU,OACV,WAAY,KACZ,MAAO,yBACP,OAAQ,CAAA,EAGT,SAAAQ,CAAA,CAAA,CACH,CAAA,CAAA,CAGN,CCpMA,SAAwBS,EAAkB,CACxC,cAAAC,EACA,UAAAP,EACA,cAAAQ,EACA,oBAAAC,CACF,EAAG,CACD,MAAMC,EAAcH,EAAc,OAAQI,GAAM,CAACA,EAAE,MAAM,EAAE,OAE3D,OACER,EAAAA,KAAC,MAAA,CACC,MAAO,CACL,WAAY,UACZ,OAAQ,mCACR,aAAc,OACd,MAAO,OACP,SAAU,QACV,SAAU,QACV,UAAW,iCACX,QAAS,OACT,cAAe,SACf,UAAW,QACX,SAAU,QAAA,EAQZ,SAAA,CAAAA,EAAAA,KAAC,MAAA,CACC,MAAO,CACL,QAAS,YACT,aAAc,mCACd,QAAS,OACT,WAAY,SACZ,eAAgB,gBAChB,WAAY,EACZ,WAAY,SAAA,EAGd,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,IAAK,MAAA,EACxD,SAAA,CAAAd,EAAAA,IAACuB,EAAAA,KAAA,CAAK,KAAM,GAAI,YAAa,IAAK,MAAO,CAAE,MAAO,wBAAA,CAAyB,CAAG,EAC9EvB,EAAAA,IAAC,KAAA,CACC,MAAO,CACL,SAAU,OACV,WAAY,IACZ,MAAO,yBACP,cAAe,SAAA,EAElB,SAAA,eAAA,CAAA,EAGAqB,EAAc,GACbrB,EAAAA,IAAC,MAAA,CACC,MAAO,CACL,QAAS,UACT,aAAc,OACd,WAAY,4BACZ,SAAU,OACV,WAAY,IACZ,MAAO,SAAA,EAGR,SAAAqB,CAAA,CAAA,CACH,EAEJ,EACCA,EAAc,GAAKF,GAClBL,EAAAA,KAAC,SAAA,CACC,QAASK,EACT,MAAO,CACL,QAAS,OACT,WAAY,SACZ,IAAK,MACL,QAAS,WACT,OAAQ,mCACR,aAAc,MACd,WAAY,cACZ,SAAU,OACV,WAAY,IACZ,MAAO,yBACP,OAAQ,UACR,WAAY,gBAAA,EAEhB,UAAU,+CAER,SAAA,CAAAnB,EAAAA,IAACwB,EAAAA,MAAA,CAAM,KAAM,GAAI,YAAa,IAAK,EAAE,eAAA,CAAA,CAAA,CAEvC,CAAA,CAAA,EAKJxB,EAAAA,IAAC,MAAA,CACC,MAAO,CACL,QAAS,OACT,QAAS,OACT,cAAe,SACf,IAAK,OACL,UAAW,OACX,KAAM,CAAA,EAER,UAAU,gCAET,SAAAkB,EAAc,SAAW,EACxBJ,EAAAA,KAAC,MAAA,CACC,MAAO,CACL,QAAS,YACT,UAAW,SACX,MAAO,wBAAA,EAGT,SAAA,CAAAd,EAAAA,IAACuB,EAAAA,KAAA,CAAK,KAAM,GAAI,YAAa,IAAK,MAAO,CAAE,OAAQ,cAAe,QAAS,EAAA,CAAI,CAAG,EAClFvB,EAAAA,IAAC,KAAE,MAAO,CAAE,SAAU,OAAQ,WAAY,GAAA,EAAO,SAAA,kBAAA,CAAgB,CAAA,CAAA,CAAA,EAGnEkB,EAAc,IAAKO,GACjBzB,EAAAA,IAACK,EAAA,CAEC,KAAMoB,EAAa,KACnB,MAAOA,EAAa,MACpB,QAASA,EAAa,QACtB,UAAWA,EAAa,UACxB,OAAQA,EAAa,OACrB,UAAWd,EAAY,IAAMA,EAAUc,EAAa,EAAE,EAAI,OAC1D,QAASL,EAAsB,IAAMA,EAAoBK,EAAa,EAAE,EAAI,MAAA,EAPvEA,EAAa,EAAA,CASrB,CAAA,CAAA,CAEL,CAAA,CAAA,CAGN"}
|
|
@@ -1,371 +0,0 @@
|
|
|
1
|
-
import { jsxs as i, jsx as e } from "react/jsx-runtime";
|
|
2
|
-
import "react";
|
|
3
|
-
import { X as g, Info as h, Wrench as b, AlertCircle as f, Sparkles as m, Bell as p, Check as u } from "lucide-react";
|
|
4
|
-
const c = {
|
|
5
|
-
feature: {
|
|
6
|
-
railColor: "#7B68A6",
|
|
7
|
-
icon: /* @__PURE__ */ e(m, { size: 16, strokeWidth: 2.5 }),
|
|
8
|
-
label: "New Feature"
|
|
9
|
-
},
|
|
10
|
-
issue: {
|
|
11
|
-
railColor: "#C98A5A",
|
|
12
|
-
icon: /* @__PURE__ */ e(f, { size: 16, strokeWidth: 2.5 }),
|
|
13
|
-
label: "Known Issue"
|
|
14
|
-
},
|
|
15
|
-
maintenance: {
|
|
16
|
-
railColor: "#8B9D6F",
|
|
17
|
-
icon: /* @__PURE__ */ e(b, { size: 16, strokeWidth: 2.5 }),
|
|
18
|
-
label: "Maintenance"
|
|
19
|
-
},
|
|
20
|
-
announcement: {
|
|
21
|
-
railColor: "#6B7C93",
|
|
22
|
-
icon: /* @__PURE__ */ e(h, { size: 16, strokeWidth: 2.5 }),
|
|
23
|
-
label: "Announcement"
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
function y({
|
|
27
|
-
type: n,
|
|
28
|
-
title: l,
|
|
29
|
-
message: a,
|
|
30
|
-
timestamp: d,
|
|
31
|
-
isRead: o = !1,
|
|
32
|
-
onDismiss: r,
|
|
33
|
-
onClick: s
|
|
34
|
-
}) {
|
|
35
|
-
const t = c[n] || c.announcement;
|
|
36
|
-
return /* @__PURE__ */ i(
|
|
37
|
-
"div",
|
|
38
|
-
{
|
|
39
|
-
onClick: s,
|
|
40
|
-
style: {
|
|
41
|
-
position: "relative",
|
|
42
|
-
background: o ? "#FFFFFF" : "rgba(244, 241, 230, 0.4)",
|
|
43
|
-
border: "1px solid rgba(30, 33, 37, 0.10)",
|
|
44
|
-
borderRadius: "6px",
|
|
45
|
-
padding: "12px 16px",
|
|
46
|
-
paddingLeft: "20px",
|
|
47
|
-
display: "flex",
|
|
48
|
-
flexDirection: "column",
|
|
49
|
-
gap: "6px",
|
|
50
|
-
cursor: s ? "pointer" : "default",
|
|
51
|
-
transition: "all 0.15s ease",
|
|
52
|
-
overflow: "hidden"
|
|
53
|
-
},
|
|
54
|
-
className: s ? "hover:border-[rgba(30,33,37,0.18)]" : "",
|
|
55
|
-
children: [
|
|
56
|
-
/* @__PURE__ */ e(
|
|
57
|
-
"div",
|
|
58
|
-
{
|
|
59
|
-
style: {
|
|
60
|
-
position: "absolute",
|
|
61
|
-
left: 0,
|
|
62
|
-
top: 0,
|
|
63
|
-
bottom: 0,
|
|
64
|
-
width: "4px",
|
|
65
|
-
background: t.railColor
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
),
|
|
69
|
-
/* @__PURE__ */ i(
|
|
70
|
-
"div",
|
|
71
|
-
{
|
|
72
|
-
style: {
|
|
73
|
-
display: "flex",
|
|
74
|
-
alignItems: "center",
|
|
75
|
-
justifyContent: "space-between",
|
|
76
|
-
gap: "12px"
|
|
77
|
-
},
|
|
78
|
-
children: [
|
|
79
|
-
/* @__PURE__ */ i(
|
|
80
|
-
"div",
|
|
81
|
-
{
|
|
82
|
-
style: {
|
|
83
|
-
display: "flex",
|
|
84
|
-
alignItems: "center",
|
|
85
|
-
gap: "8px",
|
|
86
|
-
flex: 1,
|
|
87
|
-
minWidth: 0
|
|
88
|
-
},
|
|
89
|
-
children: [
|
|
90
|
-
/* @__PURE__ */ e(
|
|
91
|
-
"h4",
|
|
92
|
-
{
|
|
93
|
-
style: {
|
|
94
|
-
fontSize: "13px",
|
|
95
|
-
fontWeight: 650,
|
|
96
|
-
color: "rgba(30, 33, 37, 0.92)",
|
|
97
|
-
letterSpacing: "-0.01em",
|
|
98
|
-
flex: 1,
|
|
99
|
-
minWidth: 0,
|
|
100
|
-
overflow: "hidden",
|
|
101
|
-
textOverflow: "ellipsis",
|
|
102
|
-
whiteSpace: "nowrap"
|
|
103
|
-
},
|
|
104
|
-
title: l,
|
|
105
|
-
"aria-label": l,
|
|
106
|
-
children: l
|
|
107
|
-
}
|
|
108
|
-
),
|
|
109
|
-
/* @__PURE__ */ i(
|
|
110
|
-
"div",
|
|
111
|
-
{
|
|
112
|
-
style: {
|
|
113
|
-
display: "inline-flex",
|
|
114
|
-
alignItems: "center",
|
|
115
|
-
gap: "4px",
|
|
116
|
-
padding: "2px 6px",
|
|
117
|
-
borderRadius: "3px",
|
|
118
|
-
background: `${t.railColor}10`,
|
|
119
|
-
border: `1px solid ${t.railColor}25`,
|
|
120
|
-
fontSize: "10px",
|
|
121
|
-
fontWeight: 600,
|
|
122
|
-
letterSpacing: "0.01em",
|
|
123
|
-
color: t.railColor,
|
|
124
|
-
flexShrink: 0
|
|
125
|
-
},
|
|
126
|
-
children: [
|
|
127
|
-
t.icon,
|
|
128
|
-
/* @__PURE__ */ e("span", { style: { whiteSpace: "nowrap" }, children: t.label })
|
|
129
|
-
]
|
|
130
|
-
}
|
|
131
|
-
)
|
|
132
|
-
]
|
|
133
|
-
}
|
|
134
|
-
),
|
|
135
|
-
/* @__PURE__ */ i(
|
|
136
|
-
"div",
|
|
137
|
-
{
|
|
138
|
-
style: {
|
|
139
|
-
display: "flex",
|
|
140
|
-
alignItems: "center",
|
|
141
|
-
gap: "8px",
|
|
142
|
-
flexShrink: 0
|
|
143
|
-
},
|
|
144
|
-
children: [
|
|
145
|
-
/* @__PURE__ */ i(
|
|
146
|
-
"div",
|
|
147
|
-
{
|
|
148
|
-
style: {
|
|
149
|
-
display: "flex",
|
|
150
|
-
alignItems: "center",
|
|
151
|
-
gap: "6px"
|
|
152
|
-
},
|
|
153
|
-
children: [
|
|
154
|
-
!o && /* @__PURE__ */ e(
|
|
155
|
-
"div",
|
|
156
|
-
{
|
|
157
|
-
style: {
|
|
158
|
-
width: "5px",
|
|
159
|
-
height: "5px",
|
|
160
|
-
borderRadius: "50%",
|
|
161
|
-
background: t.railColor,
|
|
162
|
-
flexShrink: 0
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
),
|
|
166
|
-
/* @__PURE__ */ e(
|
|
167
|
-
"span",
|
|
168
|
-
{
|
|
169
|
-
style: {
|
|
170
|
-
fontSize: "11px",
|
|
171
|
-
color: "rgba(30, 33, 37, 0.52)",
|
|
172
|
-
fontWeight: 500,
|
|
173
|
-
whiteSpace: "nowrap"
|
|
174
|
-
},
|
|
175
|
-
children: d
|
|
176
|
-
}
|
|
177
|
-
)
|
|
178
|
-
]
|
|
179
|
-
}
|
|
180
|
-
),
|
|
181
|
-
r && /* @__PURE__ */ e(
|
|
182
|
-
"button",
|
|
183
|
-
{
|
|
184
|
-
onClick: (x) => {
|
|
185
|
-
x.stopPropagation(), r();
|
|
186
|
-
},
|
|
187
|
-
style: {
|
|
188
|
-
display: "flex",
|
|
189
|
-
alignItems: "center",
|
|
190
|
-
justifyContent: "center",
|
|
191
|
-
padding: "4px",
|
|
192
|
-
border: "none",
|
|
193
|
-
background: "transparent",
|
|
194
|
-
cursor: "pointer",
|
|
195
|
-
color: "rgba(30, 33, 37, 0.35)",
|
|
196
|
-
transition: "color 0.15s ease",
|
|
197
|
-
borderRadius: "3px"
|
|
198
|
-
},
|
|
199
|
-
className: "hover:bg-[rgba(30,33,37,0.05)] hover:text-[rgba(30,33,37,0.65)]",
|
|
200
|
-
children: /* @__PURE__ */ e(g, { size: 14, strokeWidth: 2.5 })
|
|
201
|
-
}
|
|
202
|
-
)
|
|
203
|
-
]
|
|
204
|
-
}
|
|
205
|
-
)
|
|
206
|
-
]
|
|
207
|
-
}
|
|
208
|
-
),
|
|
209
|
-
/* @__PURE__ */ e(
|
|
210
|
-
"p",
|
|
211
|
-
{
|
|
212
|
-
style: {
|
|
213
|
-
fontSize: "12px",
|
|
214
|
-
lineHeight: 1.45,
|
|
215
|
-
color: "rgba(30, 33, 37, 0.65)",
|
|
216
|
-
margin: 0
|
|
217
|
-
},
|
|
218
|
-
children: a
|
|
219
|
-
}
|
|
220
|
-
)
|
|
221
|
-
]
|
|
222
|
-
}
|
|
223
|
-
);
|
|
224
|
-
}
|
|
225
|
-
function F({
|
|
226
|
-
notifications: n,
|
|
227
|
-
onDismiss: l,
|
|
228
|
-
onMarkAllRead: a,
|
|
229
|
-
onNotificationClick: d
|
|
230
|
-
}) {
|
|
231
|
-
const o = n.filter((r) => !r.isRead).length;
|
|
232
|
-
return /* @__PURE__ */ i(
|
|
233
|
-
"div",
|
|
234
|
-
{
|
|
235
|
-
style: {
|
|
236
|
-
background: "#FFFFFF",
|
|
237
|
-
border: "1px solid rgba(30, 33, 37, 0.12)",
|
|
238
|
-
borderRadius: "12px",
|
|
239
|
-
width: "100%",
|
|
240
|
-
maxWidth: "560px",
|
|
241
|
-
minWidth: "600px",
|
|
242
|
-
boxShadow: "0 6px 24px rgba(0, 0, 0, 0.08)",
|
|
243
|
-
display: "flex",
|
|
244
|
-
flexDirection: "column",
|
|
245
|
-
maxHeight: "600px",
|
|
246
|
-
overflow: "hidden"
|
|
247
|
-
// position: "absolute",
|
|
248
|
-
// top: "3rem",
|
|
249
|
-
// right: "0",
|
|
250
|
-
// zIndex: 1000,
|
|
251
|
-
},
|
|
252
|
-
children: [
|
|
253
|
-
/* @__PURE__ */ i(
|
|
254
|
-
"div",
|
|
255
|
-
{
|
|
256
|
-
style: {
|
|
257
|
-
padding: "16px 20px",
|
|
258
|
-
borderBottom: "1px solid rgba(30, 33, 37, 0.10)",
|
|
259
|
-
display: "flex",
|
|
260
|
-
alignItems: "center",
|
|
261
|
-
justifyContent: "space-between",
|
|
262
|
-
flexShrink: 0,
|
|
263
|
-
background: "#FFFFFF"
|
|
264
|
-
},
|
|
265
|
-
children: [
|
|
266
|
-
/* @__PURE__ */ i("div", { style: { display: "flex", alignItems: "center", gap: "10px" }, children: [
|
|
267
|
-
/* @__PURE__ */ e(p, { size: 18, strokeWidth: 2.5, style: { color: "rgba(30, 33, 37, 0.65)" } }),
|
|
268
|
-
/* @__PURE__ */ e(
|
|
269
|
-
"h3",
|
|
270
|
-
{
|
|
271
|
-
style: {
|
|
272
|
-
fontSize: "15px",
|
|
273
|
-
fontWeight: 650,
|
|
274
|
-
color: "rgba(30, 33, 37, 0.92)",
|
|
275
|
-
letterSpacing: "-0.01em"
|
|
276
|
-
},
|
|
277
|
-
children: "Notifications"
|
|
278
|
-
}
|
|
279
|
-
),
|
|
280
|
-
o > 0 && /* @__PURE__ */ e(
|
|
281
|
-
"div",
|
|
282
|
-
{
|
|
283
|
-
style: {
|
|
284
|
-
padding: "2px 8px",
|
|
285
|
-
borderRadius: "12px",
|
|
286
|
-
background: "rgba(107, 124, 147, 0.12)",
|
|
287
|
-
fontSize: "11px",
|
|
288
|
-
fontWeight: 650,
|
|
289
|
-
color: "#6B7C93"
|
|
290
|
-
},
|
|
291
|
-
children: o
|
|
292
|
-
}
|
|
293
|
-
)
|
|
294
|
-
] }),
|
|
295
|
-
o > 0 && a && /* @__PURE__ */ i(
|
|
296
|
-
"button",
|
|
297
|
-
{
|
|
298
|
-
onClick: a,
|
|
299
|
-
style: {
|
|
300
|
-
display: "flex",
|
|
301
|
-
alignItems: "center",
|
|
302
|
-
gap: "8px",
|
|
303
|
-
padding: "8px 12px",
|
|
304
|
-
border: "1px solid rgba(30, 33, 37, 0.15)",
|
|
305
|
-
borderRadius: "6px",
|
|
306
|
-
background: "transparent",
|
|
307
|
-
fontSize: "13px",
|
|
308
|
-
fontWeight: 600,
|
|
309
|
-
color: "rgba(30, 33, 37, 0.65)",
|
|
310
|
-
cursor: "pointer",
|
|
311
|
-
transition: "all 0.15s ease"
|
|
312
|
-
},
|
|
313
|
-
className: "interactive hover:bg-warm hover:border-hover",
|
|
314
|
-
children: [
|
|
315
|
-
/* @__PURE__ */ e(u, { size: 14, strokeWidth: 2.5 }),
|
|
316
|
-
"Mark all read"
|
|
317
|
-
]
|
|
318
|
-
}
|
|
319
|
-
)
|
|
320
|
-
]
|
|
321
|
-
}
|
|
322
|
-
),
|
|
323
|
-
/* @__PURE__ */ e(
|
|
324
|
-
"div",
|
|
325
|
-
{
|
|
326
|
-
style: {
|
|
327
|
-
padding: "16px",
|
|
328
|
-
display: "flex",
|
|
329
|
-
flexDirection: "column",
|
|
330
|
-
gap: "12px",
|
|
331
|
-
overflowY: "auto",
|
|
332
|
-
flex: 1
|
|
333
|
-
},
|
|
334
|
-
className: "custom-thin-scrollbar-library",
|
|
335
|
-
children: n.length === 0 ? /* @__PURE__ */ i(
|
|
336
|
-
"div",
|
|
337
|
-
{
|
|
338
|
-
style: {
|
|
339
|
-
padding: "40px 20px",
|
|
340
|
-
textAlign: "center",
|
|
341
|
-
color: "rgba(30, 33, 37, 0.42)"
|
|
342
|
-
},
|
|
343
|
-
children: [
|
|
344
|
-
/* @__PURE__ */ e(p, { size: 32, strokeWidth: 1.5, style: { margin: "0 auto 12px", opacity: 0.3 } }),
|
|
345
|
-
/* @__PURE__ */ e("p", { style: { fontSize: "13px", fontWeight: 500 }, children: "No notifications" })
|
|
346
|
-
]
|
|
347
|
-
}
|
|
348
|
-
) : n.map((r) => /* @__PURE__ */ e(
|
|
349
|
-
y,
|
|
350
|
-
{
|
|
351
|
-
type: r.type,
|
|
352
|
-
title: r.title,
|
|
353
|
-
message: r.message,
|
|
354
|
-
timestamp: r.timestamp,
|
|
355
|
-
isRead: r.isRead,
|
|
356
|
-
onDismiss: l ? () => l(r.id) : void 0,
|
|
357
|
-
onClick: d ? () => d(r.id) : void 0
|
|
358
|
-
},
|
|
359
|
-
r.id
|
|
360
|
-
))
|
|
361
|
-
}
|
|
362
|
-
)
|
|
363
|
-
]
|
|
364
|
-
}
|
|
365
|
-
);
|
|
366
|
-
}
|
|
367
|
-
export {
|
|
368
|
-
y as N,
|
|
369
|
-
F as a
|
|
370
|
-
};
|
|
371
|
-
//# sourceMappingURL=NotificationPanel.es.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NotificationPanel.es.js","sources":["../src/components/notifications/NotificationItem.jsx","../src/components/notifications/NotificationPanel.jsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\nimport { X, Sparkles, AlertCircle, Wrench, Info } from \"lucide-react\";\n\n/**\n * NotificationItem Component\n * Displays a single notification item with type, title, message, timestamp, and actions.\n * \n * @param {Object} props - Component props\n * @param {string} props.type - Notification type: 'feature', 'issue', 'maintenance', or 'announcement'\n * @param {string} props.title - Notification title\n * @param {string} props.message - Notification message\n * @param {string} props.timestamp - Timestamp string\n * @param {boolean} props.isRead - Whether the notification is read\n * @param {Function} props.onDismiss - Callback when dismiss button is clicked\n * @param {Function} props.onClick - Callback when notification is clicked\n */\nconst notificationConfig = {\n feature: {\n railColor: \"#7B68A6\",\n icon: <Sparkles size={16} strokeWidth={2.5} />,\n label: \"New Feature\",\n },\n issue: {\n railColor: \"#C98A5A\",\n icon: <AlertCircle size={16} strokeWidth={2.5} />,\n label: \"Known Issue\",\n },\n maintenance: {\n railColor: \"#8B9D6F\",\n icon: <Wrench size={16} strokeWidth={2.5} />,\n label: \"Maintenance\",\n },\n announcement: {\n railColor: \"#6B7C93\",\n icon: <Info size={16} strokeWidth={2.5} />,\n label: \"Announcement\",\n },\n};\n\nexport default function NotificationItem({\n type,\n title,\n message,\n timestamp,\n isRead = false,\n onDismiss,\n onClick,\n}) {\n const config = notificationConfig[type] || notificationConfig.announcement;\n\n return (\n <div\n onClick={onClick}\n style={{\n position: \"relative\",\n background: isRead ? \"#FFFFFF\" : \"rgba(244, 241, 230, 0.4)\",\n border: \"1px solid rgba(30, 33, 37, 0.10)\",\n borderRadius: \"6px\",\n padding: \"12px 16px\",\n paddingLeft: \"20px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"6px\",\n cursor: onClick ? \"pointer\" : \"default\",\n transition: \"all 0.15s ease\",\n overflow: \"hidden\",\n }}\n className={onClick ? \"hover:border-[rgba(30,33,37,0.18)]\" : \"\"}\n >\n {/* Rail */}\n <div\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n bottom: 0,\n width: \"4px\",\n background: config.railColor,\n }}\n />\n\n {/* Line 1: Title + Type badge + Timestamp + Dismiss */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: \"12px\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n flex: 1,\n minWidth: 0,\n }}\n >\n {/* Title */}\n <h4\n style={{\n fontSize: \"13px\",\n fontWeight: 650,\n color: \"rgba(30, 33, 37, 0.92)\",\n letterSpacing: \"-0.01em\",\n flex: 1,\n minWidth: 0,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n title={title}\n aria-label={title}\n >\n {title}\n </h4>\n {/* Type Badge */}\n <div\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"4px\",\n padding: \"2px 6px\",\n borderRadius: \"3px\",\n background: `${config.railColor}10`,\n border: `1px solid ${config.railColor}25`,\n fontSize: \"10px\",\n fontWeight: 600,\n letterSpacing: \"0.01em\",\n color: config.railColor,\n flexShrink: 0,\n }}\n >\n {config.icon}\n <span style={{ whiteSpace: \"nowrap\" }}>{config.label}</span>\n </div>\n </div>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n flexShrink: 0,\n }}\n >\n {/* Timestamp with colored dot (only for unread) */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n }}\n >\n {!isRead && (\n <div\n style={{\n width: \"5px\",\n height: \"5px\",\n borderRadius: \"50%\",\n background: config.railColor,\n flexShrink: 0,\n }}\n />\n )}\n <span\n style={{\n fontSize: \"11px\",\n color: \"rgba(30, 33, 37, 0.52)\",\n fontWeight: 500,\n whiteSpace: \"nowrap\",\n }}\n >\n {timestamp}\n </span>\n </div>\n {/* Dismiss button */}\n {onDismiss && (\n <button\n onClick={(e) => {\n e.stopPropagation();\n onDismiss();\n }}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: \"4px\",\n border: \"none\",\n background: \"transparent\",\n cursor: \"pointer\",\n color: \"rgba(30, 33, 37, 0.35)\",\n transition: \"color 0.15s ease\",\n borderRadius: \"3px\",\n }}\n className=\"hover:bg-[rgba(30,33,37,0.05)] hover:text-[rgba(30,33,37,0.65)]\"\n >\n <X size={14} strokeWidth={2.5} />\n </button>\n )}\n </div>\n </div>\n\n {/* Line 2: Message */}\n <p\n style={{\n fontSize: \"12px\",\n lineHeight: 1.45,\n color: \"rgba(30, 33, 37, 0.65)\",\n margin: 0,\n }}\n >\n {message}\n </p>\n </div>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { Bell, Check } from \"lucide-react\";\nimport NotificationItem from \"./NotificationItem\";\n\n/**\n * NotificationPanel Component\n * Displays a panel of notifications with header, list, and actions.\n * \n * @param {Object} props - Component props\n * @param {Array} props.notifications - Array of notification objects\n * @param {string} props.notifications[].id - Notification ID\n * @param {string} props.notifications[].type - Notification type: 'feature', 'issue', 'maintenance', or 'announcement'\n * @param {string} props.notifications[].title - Notification title\n * @param {string} props.notifications[].message - Notification message\n * @param {string} props.notifications[].timestamp - Timestamp string\n * @param {boolean} props.notifications[].isRead - Whether the notification is read\n * @param {Function} props.onDismiss - Callback when dismiss button is clicked (receives id)\n * @param {Function} props.onMarkAllRead - Callback when mark all read button is clicked\n * @param {Function} props.onNotificationClick - Callback when notification is clicked (receives id)\n */\nexport default function NotificationPanel({\n notifications,\n onDismiss,\n onMarkAllRead,\n onNotificationClick,\n}) {\n const unreadCount = notifications.filter((n) => !n.isRead).length;\n\n return (\n <div\n style={{\n background: \"#FFFFFF\",\n border: \"1px solid rgba(30, 33, 37, 0.12)\",\n borderRadius: \"12px\",\n width: \"100%\",\n maxWidth: \"560px\",\n minWidth: \"600px\",\n boxShadow: \"0 6px 24px rgba(0, 0, 0, 0.08)\",\n display: \"flex\",\n flexDirection: \"column\",\n maxHeight: \"600px\",\n overflow: \"hidden\",\n // position: \"absolute\",\n // top: \"3rem\",\n // right: \"0\",\n // zIndex: 1000,\n }}\n >\n {/* Header */}\n <div\n style={{\n padding: \"16px 20px\",\n borderBottom: \"1px solid rgba(30, 33, 37, 0.10)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n flexShrink: 0,\n background: \"#FFFFFF\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"10px\" }}>\n <Bell size={18} strokeWidth={2.5} style={{ color: \"rgba(30, 33, 37, 0.65)\" }} />\n <h3\n style={{\n fontSize: \"15px\",\n fontWeight: 650,\n color: \"rgba(30, 33, 37, 0.92)\",\n letterSpacing: \"-0.01em\",\n }}\n >\n Notifications\n </h3>\n {unreadCount > 0 && (\n <div\n style={{\n padding: \"2px 8px\",\n borderRadius: \"12px\",\n background: \"rgba(107, 124, 147, 0.12)\",\n fontSize: \"11px\",\n fontWeight: 650,\n color: \"#6B7C93\",\n }}\n >\n {unreadCount}\n </div>\n )}\n </div>\n {unreadCount > 0 && onMarkAllRead && (\n <button\n onClick={onMarkAllRead}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n padding: \"8px 12px\",\n border: \"1px solid rgba(30, 33, 37, 0.15)\",\n borderRadius: \"6px\",\n background: \"transparent\",\n fontSize: \"13px\",\n fontWeight: 600,\n color: \"rgba(30, 33, 37, 0.65)\",\n cursor: \"pointer\",\n transition: \"all 0.15s ease\",\n }}\n className=\"interactive hover:bg-warm hover:border-hover\"\n >\n <Check size={14} strokeWidth={2.5} />\n Mark all read\n </button>\n )}\n </div>\n\n {/* Notifications list */}\n <div\n style={{\n padding: \"16px\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"12px\",\n overflowY: \"auto\",\n flex: 1,\n }}\n className=\"custom-thin-scrollbar-library\"\n >\n {notifications.length === 0 ? (\n <div\n style={{\n padding: \"40px 20px\",\n textAlign: \"center\",\n color: \"rgba(30, 33, 37, 0.42)\",\n }}\n >\n <Bell size={32} strokeWidth={1.5} style={{ margin: \"0 auto 12px\", opacity: 0.3 }} />\n <p style={{ fontSize: \"13px\", fontWeight: 500 }}>No notifications</p>\n </div>\n ) : (\n notifications.map((notification) => (\n <NotificationItem\n key={notification.id}\n type={notification.type}\n title={notification.title}\n message={notification.message}\n timestamp={notification.timestamp}\n isRead={notification.isRead}\n onDismiss={onDismiss ? () => onDismiss(notification.id) : undefined}\n onClick={onNotificationClick ? () => onNotificationClick(notification.id) : undefined}\n />\n ))\n )}\n </div>\n </div>\n );\n}\n\n"],"names":["notificationConfig","jsx","Sparkles","AlertCircle","Wrench","Info","NotificationItem","type","title","message","timestamp","isRead","onDismiss","onClick","config","jsxs","e","X","NotificationPanel","notifications","onMarkAllRead","onNotificationClick","unreadCount","n","Bell","Check","notification"],"mappings":"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"}
|
package/dist/OverlayPanel.cjs.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";const e=require("react/jsx-runtime");require("react");const u=require("lucide-react"),x=require("react-dom");function m({open:i,onClose:n,title:r="",children:s,maxWidth:a=700,showCloseButton:l=!0,footer:t=null,className:d="",bodyClassName:o=""}){if(!i||typeof document>"u")return null;const c=e.jsx("div",{className:"fixed inset-0 flex items-center justify-center bg-black/30 p-4",style:{zIndex:1004},children:e.jsxs("div",{className:`bg-white rounded-xl shadow-xl relative w-full ${d}`,style:{maxWidth:a,maxHeight:"90vh",display:"flex",flexDirection:"column",overflow:"hidden"},children:[e.jsxs("div",{style:{position:"relative",flexShrink:0,background:"#fff",borderBottom:"1px solid rgba(0,0,0,0.08)",padding:r||l?"1rem 1.5rem 1rem":0,borderRadius:"12px 12px 0 0"},children:[l&&e.jsx("button",{type:"button",className:"absolute top-3 right-3 text-gray-400 hover:text-black",onClick:n,children:e.jsx(u.X,{size:20})}),r&&e.jsx("div",{className:"pr-8",children:e.jsx("h2",{className:"font-bold text-lg",style:{fontFamily:"var(--font-sans)"},children:r})})]}),e.jsx("div",{className:`custom-thin-scrollbar-library ${o}`,style:{flex:1,minHeight:0,overflowY:"auto",padding:"1rem 1.5rem"},children:s}),t&&e.jsx("div",{style:{flexShrink:0,padding:"1rem 1.5rem",borderTop:"1px solid rgba(0,0,0,0.08)"},children:t})]})});return x.createPortal(c,document.body)}exports.OverlayPanel=m;
|
|
2
|
-
//# sourceMappingURL=OverlayPanel.cjs.js.map
|