@triptease/tt-navbar 0.0.95 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/cjs/package.json +3 -0
  3. package/dist/cjs/src/Config.js +10 -0
  4. package/dist/cjs/src/Config.js.map +1 -0
  5. package/dist/cjs/src/Routes.js +8 -0
  6. package/dist/cjs/src/Routes.js.map +1 -0
  7. package/dist/cjs/src/TtNavbar.js +426 -0
  8. package/dist/cjs/src/TtNavbar.js.map +1 -0
  9. package/dist/cjs/src/getInitialNavbarState.js +21 -0
  10. package/dist/cjs/src/getInitialNavbarState.js.map +1 -0
  11. package/dist/cjs/src/index.js +12 -0
  12. package/dist/cjs/src/index.js.map +1 -0
  13. package/dist/cjs/src/styles.js +331 -0
  14. package/dist/cjs/src/styles.js.map +1 -0
  15. package/dist/cjs/src/triptease-logo.js +13 -0
  16. package/dist/cjs/src/triptease-logo.js.map +1 -0
  17. package/dist/cjs/src/tt-navbar.js +9 -0
  18. package/dist/cjs/src/tt-navbar.js.map +1 -0
  19. package/dist/cjs/src/urlMappings.js +36 -0
  20. package/dist/cjs/src/urlMappings.js.map +1 -0
  21. package/dist/esm/src/Config.js.map +1 -0
  22. package/dist/esm/src/Routes.js.map +1 -0
  23. package/dist/esm/src/TtNavbar.js.map +1 -0
  24. package/dist/esm/src/getInitialNavbarState.js.map +1 -0
  25. package/dist/esm/src/index.js.map +1 -0
  26. package/dist/esm/src/styles.js.map +1 -0
  27. package/dist/esm/src/triptease-logo.js.map +1 -0
  28. package/dist/esm/src/tt-navbar.js.map +1 -0
  29. package/dist/esm/src/urlMappings.js.map +1 -0
  30. package/dist/esm/test/tt-navbar.test.js.map +1 -0
  31. package/dist/web/Config.js +1 -1
  32. package/dist/web/Routes.js +1 -1
  33. package/dist/web/TtNavbar.js +49 -145
  34. package/dist/web/TtNavbar.js.map +2 -2
  35. package/dist/web/getInitialNavbarState.js +1 -1
  36. package/dist/web/global.d.js +1 -1
  37. package/dist/web/index.js +49 -145
  38. package/dist/web/index.js.map +2 -2
  39. package/dist/web/styles.js +15 -27
  40. package/dist/web/styles.js.map +1 -1
  41. package/dist/web/triptease-logo.js +1 -1
  42. package/dist/web/tt-navbar.js +49 -145
  43. package/dist/web/tt-navbar.js.map +2 -2
  44. package/dist/web/urlMappings.js +1 -1
  45. package/package.json +18 -8
  46. package/tsconfig.cjs.json +9 -0
  47. package/tsconfig.json +3 -3
  48. package/web-test-runner.config.js +1 -1
  49. package/dist/src/Config.js.map +0 -1
  50. package/dist/src/Routes.js.map +0 -1
  51. package/dist/src/TtNavbar.js.map +0 -1
  52. package/dist/src/getInitialNavbarState.js.map +0 -1
  53. package/dist/src/index.js.map +0 -1
  54. package/dist/src/styles.js.map +0 -1
  55. package/dist/src/triptease-logo.js.map +0 -1
  56. package/dist/src/tt-navbar.js.map +0 -1
  57. package/dist/src/urlMappings.js.map +0 -1
  58. package/dist/stories/tt-navbar.stories.d.ts +0 -39
  59. package/dist/stories/tt-navbar.stories.js +0 -56
  60. package/dist/stories/tt-navbar.stories.js.map +0 -1
  61. package/dist/test/tt-navbar.test.js.map +0 -1
  62. /package/dist/{src → esm/src}/Config.d.ts +0 -0
  63. /package/dist/{src → esm/src}/Config.js +0 -0
  64. /package/dist/{src → esm/src}/Routes.d.ts +0 -0
  65. /package/dist/{src → esm/src}/Routes.js +0 -0
  66. /package/dist/{src → esm/src}/TtNavbar.d.ts +0 -0
  67. /package/dist/{src → esm/src}/TtNavbar.js +0 -0
  68. /package/dist/{src → esm/src}/getInitialNavbarState.d.ts +0 -0
  69. /package/dist/{src → esm/src}/getInitialNavbarState.js +0 -0
  70. /package/dist/{src → esm/src}/index.d.ts +0 -0
  71. /package/dist/{src → esm/src}/index.js +0 -0
  72. /package/dist/{src → esm/src}/styles.d.ts +0 -0
  73. /package/dist/{src → esm/src}/styles.js +0 -0
  74. /package/dist/{src → esm/src}/triptease-logo.d.ts +0 -0
  75. /package/dist/{src → esm/src}/triptease-logo.js +0 -0
  76. /package/dist/{src → esm/src}/tt-navbar.d.ts +0 -0
  77. /package/dist/{src → esm/src}/tt-navbar.js +0 -0
  78. /package/dist/{src → esm/src}/urlMappings.d.ts +0 -0
  79. /package/dist/{src → esm/src}/urlMappings.js +0 -0
  80. /package/dist/{test → esm/test}/tt-navbar.test.d.ts +0 -0
  81. /package/dist/{test → esm/test}/tt-navbar.test.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TtNavbar.js","sourceRoot":"","sources":["../../../src/TtNavbar.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EACL,SAAS,EACT,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,MAAM,EACN,gBAAgB,EAChB,IAAI,EACJ,MAAM,GACP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,wBAAwB,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,kBAAkB,GAAG,CAAC,KAAoB,EAAE,EAAE;IAClD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,OAAO,QAAS,SAAQ,UAAU;IAAxC;;QAOE,uBAAkB,GAAW,2CAA2C,CAAC;QAYzE,YAAO,GAAiD,EAAE,CAAC;QAG3D,iBAAY,GAAkC,SAAS,CAAC;QAGxD,WAAM,GAAY,IAAI,CAAC;QA6CvB;;;;;;;;;;;;;;;;;;;WAmBG;QACK,mBAAc,GAAG,GAAG,EAAE;YAC5B,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAE7C,IAAI,SAAwC,CAAC;YAC7C,IAAI,eAAe,GAAG,CAAC,CAAC;YAExB,uFAAuF;YACvF,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM,CAAC,eAAe,EAAE,CAAC;gBAChD,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC;YACvC,CAAC;YACD,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjC,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;gBACtE,IAAI,SAAS,GAAuB,WAAW,CAAC,UAAU,CAAC,CAAC;gBAE5D,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAC7D,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAClD,EAAE,QAAQ,CAAC;gBAEZ,IAAI,cAAc,EAAE,CAAC;oBACnB,SAAS,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;gBAC1C,CAAC;gBAED,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,iBAAiB,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC3E,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC9C,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;YAED,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACpC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;oBAE7C,IAAI,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACrC,IAAI,QAAQ,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;4BACtC,SAAS,GAAG,IAAI,CAAC;4BACjB,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC;wBACpC,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACpC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;gBACtC,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC;oBACtC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;YAED,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBACxC,SAAS,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;gBAE/C,gFAAgF;gBAChF,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBACnD,IAAI,aAAa,EAAE,CAAC;oBAClB,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,wCAAwC,WAAW,EAAE,CAAC,CAAC;YACvE,CAAC;QACH,CAAC,CAAC;QAEM,oBAAe,GAAG,CAAC,OAA4B,EAAE,EAAE;YACzD,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBACzC,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBACzC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBACjC,CAAC;qBAAM,IAAI,CAAC,OAAO,EAAE,CAAC;oBACpB,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEM,kBAAa,GAAG,GAAG,EAAE;YAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;YAE3B,MAAM,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,GAAG,MAAM,CAAC;YAEnG,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC;YAEhG,QAAQ,CAAC,MAAM,GAAG,GAAG,qBAAqB,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,4BAA4B,+BAA+B,MAAM,EAAE,CAAC;QAC/J,CAAC,CAAC;QAEM,wBAAmB,GAAG,CAAC,CAAc,EAAE,EAAE;YAC/C,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YACvB,MAAM,MAAM,GAAG,CAAC,CAAC,aAAmC,CAAC;YAErD,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACxB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACjB,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvB,CAAC;gBAED,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC;QAEM,aAAQ,GAAG,CAAC,IAAY,EAAU,EAAE;YAC1C,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAE9D,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAClE,IAAI,CAAC,IAAI,CAAC,WAAW;gBAAE,OAAO,aAAa,CAAC;YAE5C,OAAO,IAAI,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC7D,CAAC,CAAC;QAEM,kBAAa,GAAG,CAAC,CAAa,EAAE,EAAE;YACxC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACjB,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,CAAC;QACH,CAAC,CAAC;QAEM,uBAAkB,GAAG,CAAC,CAAQ,EAAE,EAAE;YACxC,MAAM,QAAQ,GAAG,CAAC,CAAC,MAA4C,CAAC;YAChE,MAAM,iBAAiB,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;YAE9C,IAAI,iBAAiB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC7C,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,CAAC;IAuNJ,CAAC;IAlYW,YAAY;QACpB,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAEM,iBAAiB;QACtB,6CAA6C;QAC7C,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAEzD,4CAA4C;QAC5C,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAEhE,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAE1B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,KAAK,MAAM,CAAC;QAC7C,CAAC;IACH,CAAC;IAEM,oBAAoB;QACzB,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5D,MAAM,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAEnE,KAAK,CAAC,oBAAoB,EAAE,CAAC;IAC/B,CAAC;IAED,IAAY,iBAAiB;QAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CACjC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CACpF,CAAC;IACJ,CAAC;IAgJD,MAAM;QACJ,OAAO,IAAI,CAAA;gBACC,IAAI,CAAC,EAAE,WAAW,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB;qCAChC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB;;cAE1D,SAAS,CAAC,aAAa,CAAC;;qFAE+C,IAAI,CAAC,aAAa;cACzF,SAAS,CAAC,gBAAgB,CAAC;;gBAEzB,SAAS,CAAC,gBAAgB,CAAC;sBACrB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAA,gBAAgB;;;;;gCAKjD,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB;;;mBAGhD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;qBAChB,IAAI,CAAC,aAAa;;aAE1B,SAAS,CAAC,IAAI,CAAC;;mBAET,MAAM,CAAC,eAAe,2BAA2B,IAAI,CAAC,kBAAkB;sBACrE,IAAI,CAAC,aAAa;;aAE3B,SAAS,CAAC,SAAS,CAAC;;;;mBAId,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC;qBACpC,IAAI,CAAC,aAAa;;aAE1B,SAAS,CAAC,QAAQ,CAAC;;kDAEkB,IAAI,CAAC,mBAAmB;;gBAE1D,SAAS,CAAC,KAAK,CAAC;;4CAEY,SAAS,CAAC,WAAW,CAAC;;;;;uBAK3C,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;yBAClC,IAAI,CAAC,aAAa;;;;;;uBAMpB,IAAI,CAAC,QAAQ,CAAC,6BAA6B,CAAC;yBAC1C,IAAI,CAAC,aAAa;;;;;;2CAMA,IAAI,CAAC,mBAAmB;;gBAEnD,SAAS,CAAC,IAAI,CAAC;;4CAEa,SAAS,CAAC,WAAW,CAAC;;;;;uBAK3C,IAAI,CAAC,QAAQ,CAAC,qCAAqC,CAAC;yBAClD,IAAI,CAAC,aAAa;;;;;;uBAMpB,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC;yBACtC,IAAI,CAAC,aAAa;;;;;;uBAMpB,IAAI,CAAC,QAAQ,CAAC,8BAA8B,CAAC;yBAC3C,IAAI,CAAC,aAAa;;;;;;uBAMpB,IAAI,CAAC,QAAQ,CAAC,8BAA8B,CAAC;yBAC3C,IAAI,CAAC,aAAa;;;;;;;0CAOD,IAAI,CAAC,mBAAmB;;gBAElD,SAAS,CAAC,IAAI,CAAC;;4CAEa,SAAS,CAAC,WAAW,CAAC;;;;;uBAK3C,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;yBACvB,IAAI,CAAC,aAAa;;;;;;;uBAOpB,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC;yBACxC,IAAI,CAAC,aAAa;;;;;;iDAMM,IAAI,CAAC,mBAAmB;;gBAEzD,SAAS,CAAC,MAAM,CAAC;;4CAEW,SAAS,CAAC,WAAW,CAAC;;;;;;uBAM3C,IAAI,CAAC,QAAQ,CAAC,yCAAyC,CAAC;yBACtD,IAAI,CAAC,aAAa;;;;;;;uBAOpB,IAAI,CAAC,QAAQ,CAAC,4BAA4B,CAAC;yBACzC,IAAI,CAAC,aAAa;;;;;;;mCAOR,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB;;;;;;;;;gBAStD,SAAS,CAAC,QAAQ,CAAC;;;;;;;;;gBASnB,SAAS,CAAC,QAAQ,CAAC;;;;;;;;;gBASnB,SAAS,CAAC,QAAQ,CAAC;;;;;;gBAOnB,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YACrB,CAAC,CAAC,IAAI,CAAA;;sCAEc,IAAI;iCACT,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;kCACrC,IAAI,CAAC,kBAAkB;;0BAE/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAChB,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAA;0DACgB,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,WAAW;2BACrE,CACF;;qBAEJ;YACH,CAAC,CAAC,IAAI,CAAA;;0BAEE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW;;qBAGjF;;;;;qBAKO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;uBACtB,IAAI,CAAC,aAAa;;eAE1B,SAAS,CAAC,MAAM,CAAC;;;KAG3B,CAAC;IACJ,CAAC;;AAvaM,eAAM,GAAG,MAAM,AAAT,CAAU;AAGvB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;0CACmB;AAGhD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,sBAAsB,EAAE,CAAC;oDACW;AAGzE;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;6CACjC;AAGrB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;2CACjC;AAGnB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;6CACpB;AAGlC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;yCACE;AAG3D;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;8CACC;AAGxD;IADC,KAAK,EAAE;wCACe;AAGvB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gDACuC;AAGxD;IADT,QAAQ,CAAC,SAAS,CAAC;oDACqC;AAG/C;IADT,QAAQ,CAAC,GAAG,CAAC;6CACmC;AAGzC;IADP,KAAK,CAAC,KAAK,MAAM,CAAC,eAAe,EAAE,CAAC;qDACW","sourcesContent":["import { html, LitElement } from 'lit';\nimport { property, query, queryAll, state } from 'lit/decorators.js';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport {\n campaigns,\n channels,\n chevronDown,\n external,\n gear,\n graph,\n home,\n logout,\n sidebarCollapsed,\n user,\n wallet,\n} from '@triptease/icons';\nimport '@triptease/tt-combobox';\nimport { styles } from './styles.js';\nimport { tripteaseLogo } from './triptease-logo.js';\nimport { urlMappings } from './urlMappings.js';\nimport { Routes } from './Routes.js';\nimport { Config } from './Config.js';\n\nconst jsonArrayConverter = (value: string | null) => {\n if (!value) return [];\n try {\n return JSON.parse(value);\n } catch {\n return [];\n }\n};\n\nexport class TtNavbar extends LitElement {\n static styles = styles;\n\n @property({ type: Function })\n navigate: ((e: MouseEvent) => void) | undefined;\n\n @property({ type: String, attribute: 'campaign-manager-url' })\n campaignManagerUrl: string = 'https://app.campaign-manager.triptease.io';\n\n @property({ type: String, attribute: 'platform-url' })\n platformUrl?: string;\n\n @property({ type: String, attribute: 'client-key' })\n clientKey?: string;\n\n @property({ type: String, attribute: 'active-route' })\n activeRoute?: keyof typeof Routes;\n\n @property({ type: Array, converter: jsonArrayConverter })\n clients: { clientKey: string; displayName: string }[] = [];\n\n @property({ type: String, attribute: 'initial-state' })\n initialState: 'open' | 'closed' | undefined = undefined;\n\n @state()\n isOpen: boolean = true;\n\n @property({ type: Object })\n onClientChange: ((clientKeySelected: string) => void) | undefined;\n\n @queryAll('details')\n protected allDetailsElements!: Array<HTMLDetailsElement>;\n\n @queryAll('a')\n protected allNavLinks!: Array<HTMLAnchorElement>;\n\n @query(`a#${Routes.CampaignManager}`)\n private campaignManagerLink!: HTMLAnchorElement;\n\n protected firstUpdated() {\n this.setActiveState();\n }\n\n public connectedCallback() {\n // Listen for browser back/forward navigation\n window.addEventListener('popstate', this.setActiveState);\n\n // Listen for Tetris programmatic navigation\n window.addEventListener('tetris:navigate', this.setActiveState);\n\n super.connectedCallback();\n\n if (this.initialState) {\n this.isOpen = this.initialState === 'open';\n }\n }\n\n public disconnectedCallback() {\n window.removeEventListener('popstate', this.setActiveState);\n window.removeEventListener('tetris:navigate', this.setActiveState);\n\n super.disconnectedCallback();\n }\n\n private get mappedUrlPatterns(): URLPattern[] {\n return Object.keys(urlMappings).map(\n (pattern) => new URLPattern({ pathname: pattern, baseURL: window.location.origin })\n );\n }\n\n /*\n * Set the active state for the current page.\n *\n * This function iterates over all nav links and compares the current URL path with the href of each link.\n * If the current URL path starts with the href of a link, the link is marked as active. If multiple links\n * share the same prefix, the longest prefix is used as it is more specific.\n *\n * Example:\n * - Current URL: /channels/123\n * - Nav links:\n * - /channels\n * - /channels/123\n * - /channels/456\n *\n * Loop 1: currentPath = /channels/123, linkPath = /channels, bestMatch = /channels\n * Loop 2: currentPath = /channels/123, linkPath = /channels/123, bestMatch = /channels/123\n * Loop 3: currentPath = /channels/123, linkPath = /channels/456, bestMatch = /channels/123\n * Result: /channels/123 is marked as active\n *\n */\n private setActiveState = () => {\n const currentPath = window.location.pathname;\n\n let bestMatch: HTMLAnchorElement | undefined;\n let bestMatchLength = 0;\n\n // Check special cases first, as everything will always match on / and return Dashboard\n if (this.activeRoute === Routes.CampaignManager) {\n bestMatch = this.campaignManagerLink;\n }\n if (!bestMatch && this.clientKey) {\n const parsedPath = currentPath.replace(this.clientKey, '$CLIENT_KEY');\n let mappedUrl: string | undefined = urlMappings[parsedPath];\n\n const matchedPattern = this.mappedUrlPatterns.find((pattern) =>\n pattern.test(currentPath, window.location.origin)\n )?.pathname;\n\n if (matchedPattern) {\n mappedUrl = urlMappings[matchedPattern];\n }\n\n if (mappedUrl) {\n const clientSpecificUrl = mappedUrl.replace('$CLIENT_KEY', this.clientKey);\n const links = Object.values(this.allNavLinks);\n bestMatch = links.find((link) => link.href.includes(clientSpecificUrl));\n }\n }\n\n if (!bestMatch) {\n for (const link of this.allNavLinks) {\n const linkPath = new URL(link.href).pathname;\n\n if (currentPath.startsWith(linkPath)) {\n if (linkPath.length > bestMatchLength) {\n bestMatch = link;\n bestMatchLength = linkPath.length;\n }\n }\n }\n }\n\n for (const link of this.allNavLinks) {\n link.classList.remove('current-page');\n if (link.hasAttribute('aria-current')) {\n link.attributes.removeNamedItem('aria-current');\n }\n }\n\n if (bestMatch) {\n bestMatch.classList.add('current-page');\n bestMatch.setAttribute('aria-current', 'page');\n\n // Auto-expand parent details if the active link is within a collapsible section\n const parentDetails = bestMatch.closest('details');\n if (parentDetails) {\n parentDetails.setAttribute('open', '');\n }\n } else {\n console.error(`No matching nav link found for path: ${currentPath}`);\n }\n };\n\n private closeAllDetails = (element?: HTMLDetailsElement) => {\n this.allDetailsElements.forEach((detail) => {\n if (element && !detail.contains(element)) {\n detail.removeAttribute('open');\n } else if (!element) {\n detail.removeAttribute('open');\n }\n });\n };\n\n private toggleSidebar = () => {\n this.closeAllDetails();\n this.isOpen = !this.isOpen;\n\n const { NavbarStateCookieName, NavbarStateCookieOpenValue, NavbarStateCookieClosedValue } = Config;\n\n const domain = window.location.hostname.endsWith('.triptease.io') ? 'domain=.triptease.io' : '';\n\n document.cookie = `${NavbarStateCookieName}=${this.isOpen ? NavbarStateCookieOpenValue : NavbarStateCookieClosedValue}; path=/; max-age=31536000; ${domain}`;\n };\n\n private handleDetailsToggle = (e: ToggleEvent) => {\n const { newState } = e;\n const target = e.currentTarget as HTMLDetailsElement;\n\n if (newState === 'open') {\n if (!this.isOpen) {\n this.toggleSidebar();\n }\n\n this.closeAllDetails(target);\n }\n };\n\n private buildUrl = (path: string): string => {\n if (!this.clientKey) throw new Error('clientKey is required');\n\n const formattedPath = path.replace('$CLIENT_KEY', this.clientKey);\n if (!this.platformUrl) return formattedPath;\n\n return new URL(formattedPath, this.platformUrl).toString();\n };\n\n private onAnchorClick = (e: MouseEvent) => {\n if (this.navigate) {\n this.navigate(e);\n this.setActiveState();\n }\n };\n\n private handleClientChange = (e: Event) => {\n const combobox = e.target as EventTarget & { value?: string[] };\n const selectedClientKey = combobox.value?.[0];\n\n if (selectedClientKey && this.onClientChange) {\n this.onClientChange(selectedClientKey);\n }\n };\n\n render() {\n return html`\n <nav id=${this.id} class=\"${this.isOpen ? '' : 'sidebar-closed'}\">\n <div class=\"sidebar-header ${this.isOpen ? '' : 'sidebar-closed'}\">\n <div class=\"logo\">\n ${unsafeSVG(tripteaseLogo)}\n </div>\n <button id=\"navbar-toggle-btn\" class=\"nav-item nav-toggle-button\" @click=${this.toggleSidebar}>\n ${unsafeSVG(sidebarCollapsed)}\n <span class=\"tooltip nav-toggle-tooltip\">\n ${unsafeSVG(sidebarCollapsed)}\n <span>${this.isOpen ? html`Collapse sidebar` : html`Expand sidebar`}</span>\n </span>\n </button>\n </div>\n\n <div class=\"nav-items ${this.isOpen ? '' : 'sidebar-closed'}\">\n <a\n class=\"nav-item\"\n href=${this.buildUrl('/')}\n @click=${this.onAnchorClick}\n data-intercom-target=\"dashboard\"\n >${unsafeSVG(home)}<span>Dashboard</span></a\n >\n <a id=\"${Routes.CampaignManager}\" class=\"nav-item\" href=${this.campaignManagerUrl}\n @click=${this.onAnchorClick}\n data-intercom-target=\"campaigns\"\n >${unsafeSVG(campaigns)}<span>Campaigns</span></a\n >\n <a\n class=\"nav-item\"\n href=${this.buildUrl('/$CLIENT_KEY/channels')}\n @click=${this.onAnchorClick}\n data-intercom-target=\"channels\"\n >${unsafeSVG(channels)}<span>Channels</span></a\n >\n <details id=\"market-insights\" @toggle=${this.handleDetailsToggle} data-intercom-target=\"market-insights\">\n <summary>\n ${unsafeSVG(graph)}\n <span>Market Insights</span>\n <span class=\"icon chevron\"> ${unsafeSVG(chevronDown)}</span>\n </summary>\n <div class=\"dropdown-items\">\n <a\n class=\"sub-nav-item\"\n href=${this.buildUrl('/parity/$CLIENT_KEY')}\n @click=${this.onAnchorClick}\n data-intercom-target=\"parity-monitoring\"\n >Parity monitoring</a\n >\n <a\n class=\"sub-nav-item\"\n href=${this.buildUrl('/$CLIENT_KEY/guest-insights')}\n @click=${this.onAnchorClick}\n data-intercom-target=\"guest-insights\"\n >Guest insights</a\n >\n </div>\n </details>\n <details id=\"settings\" @toggle=${this.handleDetailsToggle} data-intercom-target=\"settings\">\n <summary>\n ${unsafeSVG(gear)}\n <span>Settings</span>\n <span class=\"icon chevron\"> ${unsafeSVG(chevronDown)}</span>\n </summary>\n <div class=\"dropdown-items\">\n <a\n class=\"sub-nav-item\"\n href=${this.buildUrl('/$CLIENT_KEY/guest-behavioural-data')}\n @click=${this.onAnchorClick}\n data-intercom-target=\"email-setup\"\n >Email setup</a\n >\n <a\n class=\"sub-nav-item\"\n href=${this.buildUrl('/$CLIENT_KEY/crm-config')}\n @click=${this.onAnchorClick}\n data-intercom-target=\"crm-connectivity\"\n >CRM connectivity</a\n >\n <a\n class=\"sub-nav-item\"\n href=${this.buildUrl('/$CLIENT_KEY/settings/guides')}\n @click=${this.onAnchorClick}\n data-intercom-target=\"group-settings\"\n >Group settings</a\n >\n <a\n class=\"sub-nav-item\"\n href=${this.buildUrl('/$CLIENT_KEY/settings/hotels')}\n @click=${this.onAnchorClick}\n data-intercom-target=\"property-settings\"\n >Property settings</a\n >\n </div>\n </details>\n <hr />\n <details id=\"account\" @toggle=${this.handleDetailsToggle} data-intercom-target=\"account\">\n <summary>\n ${unsafeSVG(user)}\n <span>Account</span>\n <span class=\"icon chevron\"> ${unsafeSVG(chevronDown)}</span>\n </summary>\n <div class=\"dropdown-items\">\n <a\n class=\"sub-nav-item\"\n href=${this.buildUrl('/account')}\n @click=${this.onAnchorClick}\n data-intercom-target=\"user-settings\"\n >User settings</a\n >\n <!-- TODO: Change to /$CLIENT_KEY/account/team when the change in Tetris is ready -->\n <a\n class=\"sub-nav-item\"\n href=${this.buildUrl('/account/team/$CLIENT_KEY')}\n @click=${this.onAnchorClick}\n data-intercom-target=\"team-permissions\"\n >Team and permissions</a\n >\n </div>\n </details>\n <details id=\"billing-routes\" @toggle=${this.handleDetailsToggle} data-intercom-target=\"billing\">\n <summary>\n ${unsafeSVG(wallet)}\n <span>Billing</span>\n <span class=\"icon chevron\"> ${unsafeSVG(chevronDown)}</span>\n </summary>\n <div>\n <!-- TODO: Change to /$CLIENT_KEY/account/billing-management when the change in Tetris is ready -->\n <a\n class=\"sub-nav-item\"\n href=${this.buildUrl('/account/billing-management/$CLIENT_KEY')}\n @click=${this.onAnchorClick}\n data-intercom-target=\"booking-reconciliation\"\n >Booking reconciliation</a\n >\n <!-- TODO: Change to /$CLIENT_KEY/subscriptions when the change in Tetris is ready -->\n <a\n class=\"sub-nav-item\"\n href=${this.buildUrl('/subscriptions/$CLIENT_KEY')}\n @click=${this.onAnchorClick}\n data-intercom-target=\"subscriptions\"\n >Subscriptions</a\n >\n </div>\n </details>\n </div>\n <div class=\"tertiary-nav ${this.isOpen ? '' : 'sidebar-closed'}\">\n <div id=\"external-links\" class=\"nav-items\">\n <a\n class=\"nav-item external-link\"\n href='https://triptease.canny.io/feature-requests'\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Feature requests\n ${unsafeSVG(external)}\n </a>\n <a\n class='nav-item external-link'\n href='https://triptease.canny.io/changelog'\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Product updates\n ${unsafeSVG(external)}\n </a>\n <a\n class='nav-item external-link'\n href='https://help.triptease.com/'\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Help center\n ${unsafeSVG(external)}\n </a>\n <hr />\n </div>\n <div class='nav-items'>\n <div id=\"client-selector\">\n ${\n this.clients.length > 1\n ? html`\n <tt-combobox\n .openUpward=${true}\n .value=${this.clientKey ? [this.clientKey] : []}\n @change=${this.handleClientChange}\n >\n ${this.clients.map(\n (client) => html`\n <option slot=\"option\" value=${client.clientKey}>${client.displayName}</option>\n `\n )}\n </tt-combobox>\n `\n : html`\n <div class=\"single-client-name\">\n ${this.clients.find((m) => m.clientKey === this.clientKey)?.displayName}\n </div>\n `\n }\n </div>\n <a\n id=\"logout-link\"\n class=\"nav-item\"\n href=${this.buildUrl('/logout')}\n @click=${this.onAnchorClick}\n data-intercom-target=\"logout\"\n >${unsafeSVG(logout)}<span>Logout</span></a>\n </div>\n </nav>\n `;\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getInitialNavbarState.js","sourceRoot":"","sources":["../../../src/getInitialNavbarState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,qBAAqB,GAAG,CAAC,YAAqB,EAAE,EAAE;IACtD,MAAM,OAAO,GAAG,YAAY,IAAI,QAAQ,CAAC,MAAM,CAAC;IAEhD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;IAE3G,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAExC,IAAI,KAAK,KAAK,MAAM,CAAC,0BAA0B,IAAI,KAAK,KAAK,MAAM,CAAC,4BAA4B,EAAE,CAAC;QACjG,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,CAAC","sourcesContent":["import { Config } from './Config.js';\n\nconst getInitialNavbarState = (cookieString?: string) => {\n const cookies = cookieString || document.cookie;\n\n if (!cookies) {\n return undefined;\n }\n\n const stateCookie = cookies.split(';').find((c) => c.trim().startsWith(`${Config.NavbarStateCookieName}`));\n\n if (!stateCookie) {\n return undefined;\n }\n\n const value = stateCookie.split('=')[1];\n\n if (value !== Config.NavbarStateCookieOpenValue && value !== Config.NavbarStateCookieClosedValue) {\n return undefined;\n }\n\n return value;\n};\n\nexport { getInitialNavbarState };\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC","sourcesContent":["export { TtNavbar } from './TtNavbar.js';\nexport { Routes } from './Routes.js';\nexport { Config } from './Config.js';\nexport { getInitialNavbarState } from './getInitialNavbarState.js';\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,iBAAiB,GAAG,GAAG,CAAA;;;;;;;;;;;CAW5B,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAyCf,iBAAiB;;;;UAIjB,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA4DjB,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgN1B,CAAC","sourcesContent":["import { css } from 'lit';\n\nconst visuallyHiddenCss = css`\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n border: 0;\n overflow: hidden;\n clip: rect(0 0 0 0);\n clip-path: inset(50%);\n white-space: nowrap;\n`;\n\nexport const styles = css`\n :host {\n --nav-bar-width: 260px;\n\n display: block;\n height: 100vh;\n }\n\n :host:has(.sidebar-closed) {\n --nav-bar-width: fit-content;\n }\n\n * {\n box-sizing: border-box;\n }\n\n nav {\n --menu-font-size: var(--font-size-200);\n max-width: var(--nav-bar-width);\n width: var(--nav-bar-width);\n min-height: 100vh;\n height: max-content;\n display: flex;\n align-items: start;\n gap: var(--space-scale-3-5);\n flex-direction: column;\n background-color: var(--color-surface-inverted-100);\n color: var(--color-text-inverted-400);\n padding-top: var(--space-scale-2);\n padding-bottom: var(--space-scale-2);\n z-index: 1;\n\n .nav-items {\n display: flex;\n flex-direction: column;\n padding: 0 var(--space-scale-1);\n width: 100%;\n }\n\n .nav-items.sidebar-closed {\n a span {\n ${visuallyHiddenCss}\n }\n\n details summary span {\n ${visuallyHiddenCss}\n }\n }\n\n .sidebar-header {\n width: 100%;\n display: grid;\n grid-template-columns: 1fr auto;\n align-items: center;\n justify-content: center;\n padding: 0 var(--space-scale-2);\n\n button {\n background-color: transparent;\n color: var(--color-text-inverted-400);\n border: none;\n }\n }\n\n .sidebar-header.sidebar-closed {\n padding: 0 var(--space-scale-1);\n .logo {\n display: none;\n visibility: hidden;\n }\n }\n\n hr {\n width: 100%;\n height: 1px;\n background-color: var(--color-surface-inverted-200);\n border: none;\n }\n\n .tertiary-nav {\n display: flex;\n flex-direction: column;\n margin-top: auto;\n width: 100%;\n\n .external-link {\n font-size: var(--menu-font-size);\n line-height: var(--font-line-height-100);\n\n .icon {\n width: var(--space-scale-2);\n height: var(--space-scale-2);\n }\n }\n }\n\n .tertiary-nav.sidebar-closed {\n .external-link,\n hr,\n #client-selector {\n display: none;\n visibility: hidden;\n }\n\n a span {\n ${visuallyHiddenCss}\n }\n }\n\n .icon {\n display: flex;\n align-items: center;\n width: var(--space-scale-3);\n height: var(--space-scale-3);\n color: var(--nav-item-color);\n }\n\n .nav-item {\n display: flex;\n font-size: var(--menu-font-size);\n line-height: var(--font-line-height-100);\n gap: var(--space-scale-1-5);\n border-radius: var(--border-radius-100);\n color: var(--nav-item-color);\n align-items: center;\n padding: var(--space-scale-1);\n width: 100%;\n text-decoration: none;\n }\n }\n\n nav.sidebar-closed {\n width: fit-content;\n\n :host {\n --nav-bar-width: fit-content;\n }\n }\n\n details {\n border-radius: var(--border-radius-100);\n\n summary {\n font-size: var(--menu-font-size);\n line-height: var(--font-line-height-100);\n position: relative;\n display: flex;\n align-items: baseline;\n\n &::marker {\n display: none;\n }\n\n &::-webkit-details-marker {\n display: none;\n }\n }\n\n .chevron {\n margin-left: auto;\n margin-right: var(--space-scale-1);\n width: var(--space-scale-2);\n }\n\n &[open] .chevron svg {\n transform: rotate(180deg);\n }\n\n .dropdown-items {\n display: flex;\n flex-direction: column;\n }\n }\n\n details > summary {\n display: flex;\n gap: var(--space-scale-1-5);\n padding: var(--space-scale-1);\n border-radius: var(--border-radius-100);\n color: var(--nav-item-color);\n align-items: center;\n\n a {\n color: var(--nav-item-color);\n }\n\n &:hover,\n &:focus-visible {\n background-color: var(--color-surface-inverted-200);\n border-radius: var(--border-radius-100);\n text-decoration: none;\n }\n }\n\n .sidebar-closed details:has(.current-page) > summary {\n --nav-item-color: var(--color-primary-400);\n border-radius: var(--border-radius-100);\n background-color: var(--color-primary-100);\n color: var(--nav-item-color);\n }\n\n .sub-nav-item {\n width: 100%;\n display: flex;\n padding-left: 44px;\n padding-top: 10px;\n padding-bottom: 10px;\n color: var(--color-text-inverted-400);\n font-size: var(--menu-font-size);\n line-height: var(--font-line-height-100);\n text-decoration: none;\n\n button {\n color: var(--color-text-inverted-400);\n padding: 0;\n }\n }\n\n .sub-nav-item:hover,\n .sub-nav-item:focus-visible,\n .nav-item:hover,\n .nav-item:focus-visible {\n background-color: var(--color-surface-inverted-200);\n border-radius: var(--border-radius-100);\n text-decoration: none;\n color: var(--color-text-inverted-400);\n\n .icon {\n color: var(--color-text-inverted-400);\n }\n }\n\n .current-page {\n --nav-item-color: var(--color-primary-400);\n border-radius: var(--border-radius-100);\n background-color: var(--color-primary-100);\n color: var(--nav-item-color);\n }\n\n .link-page {\n display: flex;\n position: absolute;\n overflow: auto;\n flex-direction: column;\n gap: var(--space-scale-4);\n padding: var(--space-scale-5);\n left: var(--nav-bar-width);\n background-color: var(--color-surface-200);\n width: calc(100% - var(--nav-bar-width));\n height: 100%;\n }\n\n .tooltip {\n position: absolute;\n display: flex;\n white-space: nowrap;\n align-items: center;\n gap: var(--space-scale-1);\n color: black;\n background-color: var(--color-surface-600);\n padding: var(--space-scale-1);\n z-index: 1000;\n border-radius: var(--border-radius-50);\n font-weight: var(--font-weight-medium);\n }\n\n .nav-toggle-button {\n position: relative;\n }\n\n .nav-toggle-tooltip {\n left: 100%;\n top: 100%;\n visibility: hidden;\n opacity: 0;\n }\n\n .nav-toggle-button:hover .nav-toggle-tooltip {\n visibility: visible;\n opacity: 1;\n }\n\n #client-selector {\n display: flex;\n align-items: center;\n padding: var(--space-scale-1) 0;\n margin-bottom: var(--space-scale-2);\n }\n\n #client-selector tt-combobox {\n --tt-combobox-color: var(--color-text-inverted-400);\n --tt-combobox-dropdown-color: var(--color-text-inverted-400);\n --tt-combobox-list-background-color: var(--color-surface-inverted-100);\n --tt-combobox-option-background-color-hover: var(--color-surface-inverted-200);\n --tt-combobox-placeholder-color: var(--color-text-inverted-300);\n --tt-combobox-background-color: var(--color-surface-inverted-100);\n --tt-combobox-hover-background-color: var(--color-surface-inverted-200);\n --tt-combobox-list-max-width: 80ch;\n --tt-combobox-min-width: 244px;\n --tt-combobox-max-width: 244px;\n --tt-combobox-option-selected-color: var(--color-text-inverted-500);\n --tt-combobox-border-color: var(--color-surface-inverted-200);\n }\n\n .single-client-name {\n height: 39px;\n padding: var(--space-scale-1); /* match tt-combobox height */\n font-size: var(--font-size-200);\n color: var(--color-text-inverted-200);\n text-wrap: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n`;\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triptease-logo.js","sourceRoot":"","sources":["../../../src/triptease-logo.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;OAQtB,CAAC","sourcesContent":["export const tripteaseLogo = `<svg width=\"112\" height=\"32\" viewBox=\"0 0 112 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" aria-label=\"Triptease Logo\">\n <rect width=\"112\" height=\"32\" fill=\"url(#pattern0_72_1169)\"/>\n <defs>\n <pattern id=\"pattern0_72_1169\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\n <use xlink:href=\"#image0_72_1169\" transform=\"matrix(0.000881057 0 0 0.0030837 0 -0.00110132)\"/>\n </pattern>\n <image id=\"image0_72_1169\" width=\"1135\" height=\"325\" preserveAspectRatio=\"none\" xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABG8AAAFFCAIAAADdPldRAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAEb6ADAAQAAAABAAABRQAAAACmZMhMAABAAElEQVR4Ae2dB4AkRdmwb9OFvQMOUAmSDyQoQbiABBVQ9AgKd0eWrCLZj4zir3yCYCCDKIgS5chJFBBE+QThOHJQkuSspMu36X+6a7e3d3Znb3d2dmd65mmavZruik9VV9Vb9VZVTVtb2zAvCUhAAhKQgAQkIAEJSEACEugngdp+2te6BCQgAQlIQAISkIAEJCABCUQElKYsBxKQgAQkIAEJSEACEpCABAohoDRVCDXdSEACEpCABCQgAQlIQAISUJqyDEhAAhKQgAQkIAEJSEACEiiEgNJUIdR0IwEJSEACEpCABCQgAQlIQGnKMiABCUhAAhKQgAQkIAEJSKAQAkpThVDTjQQkIAEJSEACEpCABCQgAaUpy4AEJCABCUhAAhKQgAQkIIFCCChNFUJNNxKQgAQkIAEJSEACEpCABJSmLAMSkIAEJCABCUhAAhKQgAQKIaA0VQg13UhAAhKQgAQkIAEJSEACElCasgxIQAISkIAEJCABCUhAAhIohIDSVCHUdCMBCUhAAhKQgAQkIAEJSEBpyjIgAQlIQAISkIAEJCABCUigEAJKU4VQ040EJCABCUhAAhKQgAQkIAGlKcuABCQgAQlIQAISkIAEJCCBQggoTRVCTTcSkIAEJCABCUhAAhKQgASUpiwDEpCABCQgAQlIQAISkIAECiGgNFUINd1IQAISkIAEJCABCUhAAhJQmrIMSEACEpCABCQgAQlIQAISKISA0lQh1HQjAQlIQAISkIAEJCABCUhAacoyIAEJSEACEpCABCQgAQlIoBACSlOFUNONBCQgAQlIQAISkIAEJCABpSnLgAQkIAEJSEACEpCABCQggUIIKE0VQk03EpCABCQgAQlIQAISkIAElKYsAxKQgAQkIAEJSEACEpCABAohoDRVCDXdSEACEpCABCQgAQlIQAISUJqyDEhAAhKQgAQkIAEJSEACEiiEgNJUIdR0IwEJSEACEpCABCQgAQlIQGnKMiABCUhAAhKQgAQkIAEJSKAQAkpThVDTjQQkIAEJSEACEpCABCQgAaUpy4AEJCABCUhAAhKQgAQkIIFCCChNFUJNNxKQgAQkIAEJSEACEpCABJSmLAMSkIAEJCABCUhAAhKQgAQKIaA0VQg13UhAAhKQgAQkIAEJSEACElCasgxIQAISkIAEJCABCUhAAhIohIDSVCHUdCMBCUhAAhKQgAQkIAEJSEBpyjIgAQlIQAISkIAEJCABCUigEAJKU4VQ040EJCABCUhAAhKQgAQkIAGlKcuABCQgAQlIQAISkIAEJCCBQggoTRVCTTcSkIAEJCABCUhAAhKQgASUpiwDEpCABCQgAQlIQAISkIAECiGgNFUINd1IQAISkIAEJCABCUhAAhJQmrIMSEACEpCABCQgAQlIQAISKISA0lQh1HQjAQlIQAISkIAEJCABCUhAacoyIAEJSEACEpCABCQgAQlIoBACSlOFUNONBCQgAQlIQAISkIAEJCABpSnLgAQkIAEJSEACEpCABCQggUIIKE0VQk03EpCABCQgAQlIQAISkIAElKYsAxKQgAQkIAEJSEACEpCABAohoDRVCDXdSEACEpCABCQgAQlIQAISUJqyDEhAAhKQgAQkIAEJSEACEiiEgNJUIdR0IwEJSEACEpCABCQgAQlIQGnKMiABCUhAAhKQgAQkIAEJSKAQAkpThVDTjQQkIAEJSEACEpCABCQgAaUpy4AEJCABCUhAAhKQgAQkIIFCCChNFUJNNxKQgAQkIAEJSEACEpCABJSmLAMSkIAEJCABCUhAAhKQgAQKIaA0VQg13UhAAhKQgAQkIAEJSEACElCasgxIQAISkIAEJCABCUhAAhIohIDSVCHUdCMBCUhAAhKQgAQkIAEJSEBpyjIgAQlIQAISkIAEJCABCUigEAJKU4VQ040EJCABCUhAAhKQgAQkIAGlKcuABCQgAQlIQAISkIAEJCCBQggoTRVCTTcSkIAEJCABCUhAAhKQgASUpiwDEpCABCQgAQlIQAISkIAECiGgNFUINd1IQAISkIAEJCABCUhAAhJQmrIMSEACEpCABCQgAQlIQAISKISA0lQh1HQjAQlIQAISkIAEJCABCUhAacoyIAEJSEACEpCABCQgAQlIoBACSlOFUNONBCQgAQlIQAISkIAEJCABpSnLgAQkIAEJSEACEpCABCQggUIIKE0VQk03EpCABCQgAQlIQAISkIAE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21ZeaaVe0sde2Gj6xcuo/L564VQtr9g8nRV3pJbzKPOlmTHysCtxTg8mn32fS0ACfSfAxBRiwK233hqOggxiUlgHxRohPr011lijR9+wed999z388EORXlZ1XPmqIEZ8XnjhBY61RKe9OkiYSgn0g4C9vX7AKjeriVpzuUWswuJD65JcyEjMM3zyk5/srumXpBotCcw4cT+ihElVG2qGseEvAlW83q/noZF4TXy0J2To51U1rkpPPCswk7vS01pG6bv55pvZ6yXaXAE17I5FQUgIHB279FJL33DDDUsvtRRT1tTb3XVATvvFadFS2CoQqCZNmhRm6qiI2DUnXR1xIvkdt9/+5muv929lchkVgdJEJayPTVbJ9hIJuuM5dy+WfVVuBJSmyi1HjE9ZE6hviA6emjtvXvc9/brEm9baw867EKnqH5QZjixjo7DeKSBO9W7BtxKQQAEEUPO76KKLRo8eHeajEh8494Jp4d123x2Vv7332Sc625clUpzinbqo8x+cOfONV19rKd3J2qnoDLpxxRVXamioh0y8eKpz9IcRH8jsvscec2fPJhIL5rWf9jvoETIACWSBgNJUFnIpTxwd4MwDZjAfs165ufmtN9/sPn45mKHqd7YJREO8NcPefvutbCfD2EsgmwTuv//+p556CjW/nOgjISz/yU9+4xvfQJdg3333GbPYYpEU0XWHoTA/89Of/jQ6Urair5Dw7bffjklyEso+8unkNjc3A5DTqI74nyPmzZmLyh+CaJA/09Y05xBgo8jkznnlz0oioDRVSblpWgadABtLcNrgG2++ydrlQQ/MACqCQLSEPT5y6rlnn6uIBJkICWSMwKWXXhqprrW0jBkzJh115IdtJk9uHDWKwQ627MPMBHLOqb7z589jBO2mm2569eVX0m4r1bz9dttzzjjnK+bMpbNpB4eAkOq777579912e/7Z55BF2SyxUjmYLgn0i4DSVL9wldJyUD5IBjkweA09gTB69+QTT9A2py8aYK6gaN65EXbXMc6hj60hlgOBaNF2tOlwzaOPPZovPoyIr7HGp+jtpQsV5nz2fS4BCSySQNBGe/vNt27/020o2rJciifDh0dTLigX8NGxbupb3/42kgNDHky2HHPssWH+KtTzwX+maPgSG0ePPu20X/AkR1dwkXHInIU1116b/XLYS4mpp5zlwYwhQgYt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BCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgyAaWpLOeecZeABCQgAQlIQAISkIAESkdAaap07A1ZAhKQgAQkIAEJSEACEsgygf8P8E5YI8a8mpEAAAAASUVORK5CYII=\"/>\n </defs>\n</svg>`;\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tt-navbar.js","sourceRoot":"","sources":["../../../src/tt-navbar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IAClC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5C,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;AACH,CAAC","sourcesContent":["import { TtNavbar } from './TtNavbar.js';\n\nif (typeof window !== 'undefined') {\n if (!window.customElements.get('tt-navbar')) {\n window.customElements.define('tt-navbar', TtNavbar);\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urlMappings.js","sourceRoot":"","sources":["../../../src/urlMappings.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,GAAe;IAC9B,0BAA0B,EAAE,WAAW;IACvC,oBAAoB,EAAE,WAAW;IACjC,2BAA2B,EAAE,WAAW;IACxC,wBAAwB,EAAE,WAAW;IACrC,mBAAmB,EAAE,WAAW;IAChC,0BAA0B,EAAE,WAAW;IACvC,2BAA2B,EAAE,WAAW;IACxC,oBAAoB,EAAE,WAAW;IACjC,0BAA0B,EAAE,WAAW;IACvC,2BAA2B,EAAE,WAAW;IACxC,wBAAwB,EAAE,WAAW;IACrC,0BAA0B,EAAE,WAAW;IACvC,2BAA2B,EAAE,WAAW;IACxC,oBAAoB,EAAE,qBAAqB;IAC3C,sBAAsB,EAAE,qBAAqB;IAC7C,wDAAwD;IACxD,wBAAwB,EAAE,8BAA8B;IACxD,0FAA0F;IAC1F,+BAA+B,EAAE,8BAA8B;IAC/D,kCAAkC,EAAE,8BAA8B;IAClE,mCAAmC,EAAE,8BAA8B;IACnE,2CAA2C,EAAE,8BAA8B;IAC3E,0CAA0C,EAAE,8BAA8B;IAC1E,0BAA0B,EAAE,2BAA2B;IACvD,4BAA4B,EAAE,2BAA2B;IACzD,wCAAwC,EAAE,yCAAyC;IACnF,0CAA0C,EAAE,yCAAyC;IACrF,2BAA2B,EAAE,4BAA4B;IACzD,6BAA6B,EAAE,4BAA4B;CAC5D,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,CAAC","sourcesContent":["type UrlMapping = Record<string, string>;\n\nconst urlMappings: UrlMapping = {\n '/paidsearch/:clientKey/*': '/channels',\n '/meta/:clientKey/*': '/channels',\n '/retargeting/:clientKey/*': '/channels',\n '/messages/:clientKey/*': '/channels',\n '/:clientKey/email': '/channels',\n '/pricematch/:clientKey/*': '/channels',\n '/chat/insights/:clientKey': '/channels',\n '/:clientKey/meta/*': '/channels',\n '/:clientKey/paidsearch/*': '/channels',\n '/:clientKey/retargeting/*': '/channels',\n '/:clientKey/messages/*': '/channels',\n '/:clientKey/pricematch/*': '/channels',\n '/:clientKey/chat/insights': '/channels',\n '/:clientKey/parity': '/parity/$CLIENT_KEY',\n '/:clientKey/parity/*': '/parity/$CLIENT_KEY',\n // Settings routes - legacy paths map to new navbar link\n '/settings/:clientKey/*': '/$CLIENT_KEY/settings/guides',\n // Settings routes with :clientKey first (excluding guides/hotels which have direct links)\n '/:clientKey/settings/branding': '/$CLIENT_KEY/settings/guides',\n '/:clientKey/settings/price-check': '/$CLIENT_KEY/settings/guides',\n '/:clientKey/settings/price-config': '/$CLIENT_KEY/settings/guides',\n '/:clientKey/settings/hotel-details-finder': '/$CLIENT_KEY/settings/guides',\n '/:clientKey/settings/deactivation-center': '/$CLIENT_KEY/settings/guides',\n '/:clientKey/account/team': '/account/team/$CLIENT_KEY',\n '/:clientKey/account/team/*': '/account/team/$CLIENT_KEY',\n '/:clientKey/account/billing-management': '/account/billing-management/$CLIENT_KEY',\n '/:clientKey/account/billing-management/*': '/account/billing-management/$CLIENT_KEY',\n '/:clientKey/subscriptions': '/subscriptions/$CLIENT_KEY',\n '/:clientKey/subscriptions/*': '/subscriptions/$CLIENT_KEY',\n};\n\nexport { urlMappings };\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tt-navbar.test.js","sourceRoot":"","sources":["../../../test/tt-navbar.test.ts"],"names":[],"mappings":"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","sourcesContent":["import '../src/tt-navbar.js';\nimport { elementUpdated, expect, fixture, nextFrame, waitUntil } from '@open-wc/testing';\nimport { TtOption } from '@triptease/tt-combobox/tt-option.js';\nimport { Config, getInitialNavbarState, TtNavbar } from '../src/index.js';\nimport { Routes } from '../src/Routes.js';\n\nconst getLinkByHref = (links: NodeListOf<HTMLAnchorElement>, href: string) => {\n for (const link of links) {\n if (link.getAttribute('href') === href) {\n return link;\n }\n }\n\n return undefined;\n};\n\nconst selectComboboxOption = async (combobox: Element, value: string) => {\n const input = combobox.shadowRoot!.querySelector('[role=\"combobox\"]') as HTMLInputElement;\n input.click();\n\n await elementUpdated(combobox);\n\n const option = combobox.shadowRoot!.querySelector(`tt-option[value=\"${value}\"]`) as TtOption;\n option.click();\n};\n\nconst isVisuallyHidden = (element: Element) => {\n const style = getComputedStyle(element);\n\n return Boolean(\n style.position === 'absolute' &&\n style.width === '1px' &&\n style.height === '1px' &&\n style.margin === '-1px' &&\n style.padding === '0px' &&\n style.borderWidth === '0px' &&\n style.overflow === 'hidden' &&\n style.clip === 'rect(0px, 0px, 0px, 0px)' &&\n style.clipPath === 'inset(50%)' &&\n style.whiteSpace === 'nowrap'\n );\n};\n\nconst CLIENT_KEY = 'zxd47KQGAP';\n\ndescribe('TtNavbar', () => {\n it('should throw an error if the clientKey is not provided', async () => {\n try {\n await fixture<TtNavbar>(`<tt-navbar></tt-navbar>`);\n } catch (e) {\n expect(e).to.match(/clientKey is required/);\n }\n });\n it('should render with the default links', async () => {\n const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);\n const links = navbar.shadowRoot?.querySelectorAll('a');\n\n if (links) {\n expect(getLinkByHref(links, '/')).to.exist;\n expect(getLinkByHref(links, 'https://app.campaign-manager.triptease.io')).to.exist;\n expect(getLinkByHref(links, `/${CLIENT_KEY}/channels`)).to.exist;\n expect(getLinkByHref(links, `/parity/${CLIENT_KEY}`)).to.exist;\n expect(getLinkByHref(links, `/${CLIENT_KEY}/guest-insights`)).to.exist;\n expect(getLinkByHref(links, `/${CLIENT_KEY}/guest-behavioural-data`)).to.exist;\n expect(getLinkByHref(links, `/${CLIENT_KEY}/crm-config`)).to.exist;\n expect(getLinkByHref(links, `/${CLIENT_KEY}/settings/guides`)).to.exist;\n expect(getLinkByHref(links, `/${CLIENT_KEY}/settings/hotels`)).to.exist;\n expect(getLinkByHref(links, `/account`)).to.exist;\n expect(getLinkByHref(links, `/account/team/${CLIENT_KEY}`)).to.exist;\n expect(getLinkByHref(links, `/account/billing-management/${CLIENT_KEY}`)).to.exist;\n expect(getLinkByHref(links, `/subscriptions/${CLIENT_KEY}`)).to.exist;\n }\n });\n\n it('should render platform URLs against the base URL when it is defined', async () => {\n const platformUrl = 'https://app.triptease.io';\n const navbar = await fixture<TtNavbar>(\n `<tt-navbar client-key=${CLIENT_KEY} platform-url=\"${platformUrl}\"></tt-navbar>`\n );\n const links = navbar.shadowRoot?.querySelectorAll('a');\n\n if (links) {\n expect(getLinkByHref(links, `${platformUrl}/`)).to.exist;\n expect(getLinkByHref(links, 'https://app.campaign-manager.triptease.io')).to.exist; // This shouldn't change\n expect(getLinkByHref(links, `${platformUrl}/${CLIENT_KEY}/channels`)).to.exist;\n }\n });\n\n it.skip('should allow navigation events to be handled externally', async () => {\n let navigateEventCount = 0;\n\n const onNavigate = (e: MouseEvent) => {\n e.preventDefault();\n navigateEventCount += 1;\n };\n\n const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);\n navbar.navigate = onNavigate;\n await navbar.updateComplete;\n\n const links = navbar.shadowRoot?.querySelectorAll('a');\n links?.forEach((l) => l.click());\n\n await waitUntil(() => expect(navigateEventCount).to.equal(13), 'navigate event did not fire');\n });\n\n it('should render a combobox when multiple clients are provided', async () => {\n const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);\n navbar.clients = [\n { clientKey: CLIENT_KEY, displayName: 'Client One' },\n { clientKey: 'abc123', displayName: 'Client Two' },\n ];\n await navbar.updateComplete;\n\n const combobox = navbar.shadowRoot?.querySelector('tt-combobox');\n const singleClientName = navbar.shadowRoot?.querySelector('.single-client-name');\n\n expect(combobox).to.exist;\n expect(singleClientName).to.not.exist;\n expect(combobox?.value).to.deep.equal([CLIENT_KEY]);\n });\n\n it('should render the client name when only one client is provided', async () => {\n const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);\n navbar.clients = [{ clientKey: CLIENT_KEY, displayName: 'Single Client' }];\n await navbar.updateComplete;\n\n const singleClientName = navbar.shadowRoot?.querySelector('.single-client-name');\n const combobox = navbar.shadowRoot?.querySelector('tt-combobox');\n\n expect(singleClientName).to.exist;\n expect(singleClientName?.textContent?.trim()).to.equal('Single Client');\n expect(combobox).to.not.exist;\n });\n\n it('should render the logout link', async () => {\n const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);\n\n const links = navbar.shadowRoot?.querySelectorAll('a');\n const logoutLink = getLinkByHref(links!, '/logout');\n\n expect(logoutLink).to.exist;\n });\n\n it('should close other details when one is being opened', async () => {\n const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);\n\n const allDetails = navbar.shadowRoot!.querySelectorAll('summary');\n const [marketInsights, settings] = allDetails;\n\n marketInsights.click();\n /*\n * Wait for the DOM to update before continuing. This is necessary because helpers like elementUpdated don't wait for\n * the browser to fire the $toggle handler as well as adding the open attribute.\n */\n await nextFrame();\n await nextFrame();\n\n expect(marketInsights.closest('details')?.open).to.be.true;\n\n settings.click();\n await nextFrame();\n await nextFrame();\n\n expect(settings.closest('details')?.open).to.be.true;\n expect(marketInsights.closest('details')?.open).to.be.false;\n });\n\n it('should collapse the navbar when toggle clicked', async () => {\n const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);\n\n const navbarToggleBtn = navbar.shadowRoot!.querySelector('#navbar-toggle-btn') as HTMLButtonElement;\n\n navbarToggleBtn.click();\n await elementUpdated(navbar);\n\n const logo = navbar.shadowRoot!.querySelector('.logo');\n const rootLinksHiddenElements = navbar.shadowRoot!.querySelectorAll('nav a span');\n const summaryHiddenElements = navbar.shadowRoot!.querySelectorAll('nav summary span');\n const externalLinks = navbar.shadowRoot!.querySelectorAll('#external-links a');\n const logoutLink = navbar.shadowRoot!.querySelector('#logout-link span');\n const clientSelector = navbar.shadowRoot!.querySelector('#client-selector');\n\n // Visually and accessibly hidden\n expect(logo?.checkVisibility()).to.be.false;\n expect(clientSelector?.checkVisibility()).to.be.false;\n for (const link of externalLinks) {\n expect(link.checkVisibility()).to.be.false;\n }\n\n // Visually hidden only\n expect(logoutLink).to.exist;\n expect(rootLinksHiddenElements.length).to.be.greaterThan(1);\n expect(summaryHiddenElements.length).to.be.greaterThan(1);\n for (const element of [...rootLinksHiddenElements, ...summaryHiddenElements, logoutLink!]) {\n expect(isVisuallyHidden(element)).to.be.true;\n }\n });\n\n const collapsibleIds: string[] = ['market-insights', 'settings', 'account', 'billing-routes'];\n collapsibleIds.forEach((id) => {\n it(`should open the nav bar when the ${id} collapsible is clicked`, async () => {\n const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);\n\n const navbarToggleBtn = navbar.shadowRoot!.querySelector('#navbar-toggle-btn') as HTMLButtonElement;\n\n navbarToggleBtn.click();\n await elementUpdated(navbar);\n\n const logo = navbar.shadowRoot!.querySelector('.logo');\n expect(logo?.checkVisibility()).to.be.false;\n\n const element: HTMLDetailsElement | null = navbar.shadowRoot!.querySelector(`#${id} summary`);\n\n expect(element).to.exist;\n\n element!.click();\n\n await waitUntil(() => logo?.checkVisibility(), 'navbar should be open', {\n timeout: 500,\n });\n });\n });\n\n const URLs = [\n ['/', 'Dashboard'],\n [`/${CLIENT_KEY}/channels`, 'Channels'],\n [`/parity/${CLIENT_KEY}`, 'Parity'],\n [`/parity/${CLIENT_KEY}/foo`, 'Parity'],\n\n [`/paidsearch/${CLIENT_KEY}/performance`, 'Channels'],\n [`/meta/${CLIENT_KEY}/performance`, 'Channels'],\n [`/retargeting/${CLIENT_KEY}/performance`, 'Channels'],\n [`/retargeting/${CLIENT_KEY}/ad-config`, 'Channels'],\n [`/messages/${CLIENT_KEY}/messages`, 'Channels'],\n [`/messages/${CLIENT_KEY}/messages/wizard`, 'Channels'],\n [`/messages/${CLIENT_KEY}/messages/type`, 'Channels'],\n [`/messages/${CLIENT_KEY}/messages/notifications`, 'Channels'],\n [`/messages/${CLIENT_KEY}/messages/templates/nudge`, 'Channels'],\n [`/${CLIENT_KEY}/email`, 'Channels'],\n [`/pricematch/${CLIENT_KEY}/performance`, 'Channels'],\n [`/chat/insights/${CLIENT_KEY}`, 'Channels'],\n [`/messages/${CLIENT_KEY}/messages/new/save-the-search`, 'Channels'],\n\n [`/${CLIENT_KEY}/meta/performance`, 'Channels'],\n [`/${CLIENT_KEY}/paidsearch/performance`, 'Channels'],\n [`/${CLIENT_KEY}/retargeting/performance`, 'Channels'],\n [`/${CLIENT_KEY}/messages/messages`, 'Channels'],\n [`/${CLIENT_KEY}/pricematch/performance`, 'Channels'],\n\n [`/${CLIENT_KEY}/guest-insights`, 'Guest insights'],\n [`/${CLIENT_KEY}/parity`, 'Parity'],\n\n [`/settings/${CLIENT_KEY}/guides`, 'Group settings'],\n [`/settings/${CLIENT_KEY}/branding`, 'Group settings'],\n [`/settings/${CLIENT_KEY}/price-check`, 'Group settings'],\n [`/settings/${CLIENT_KEY}/price-config`, 'Group settings'],\n [`/settings/${CLIENT_KEY}/hotel-details-finder`, 'Group settings'],\n [`/settings/${CLIENT_KEY}/deactivation-center`, 'Group settings'],\n [`/${CLIENT_KEY}/settings/guides`, 'Group settings'],\n [`/${CLIENT_KEY}/settings/branding`, 'Group settings'],\n [`/${CLIENT_KEY}/settings/price-check`, 'Group settings'],\n [`/${CLIENT_KEY}/settings/price-config`, 'Group settings'],\n [`/${CLIENT_KEY}/settings/hotel-details-finder`, 'Group settings'],\n [`/${CLIENT_KEY}/settings/deactivation-center`, 'Group settings'],\n\n [`/${CLIENT_KEY}/settings/hotels`, 'Property settings'],\n\n [`/account/team/${CLIENT_KEY}`, 'Team and permissions'],\n [`/account/billing-management/${CLIENT_KEY}`, 'Booking reconciliation'],\n [`/subscriptions/${CLIENT_KEY}`, 'Subscriptions'],\n\n [`/${CLIENT_KEY}/account/team`, 'Team and permissions'],\n [`/${CLIENT_KEY}/account/billing-management`, 'Booking reconciliation'],\n [`/${CLIENT_KEY}/subscriptions`, 'Subscriptions'],\n ];\n\n URLs.forEach(([route, text]) => {\n it(`should show the current page as active when link is ${route}`, async () => {\n history.pushState({}, '', route); // 👈 mock URL\n\n const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);\n\n const anchor = navbar.shadowRoot!.querySelector('a[aria-current=\"page\"]');\n\n expect(anchor).to.exist;\n expect(anchor!.textContent).to.include(text);\n });\n });\n\n it('should show the current page as campaign manager when on the given campaign manager url', async () => {\n const platformUrl = 'https://app.triptease.io';\n const campaignManagerUrl = 'http://localhost:8000';\n\n const navbar = await fixture<TtNavbar>(\n `<tt-navbar client-key=${CLIENT_KEY} platform-url=${platformUrl} campaign-manager-url=${campaignManagerUrl} active-route=\"${Routes.CampaignManager}\"></tt-navbar>`\n );\n const anchor = navbar.shadowRoot!.querySelector('a[aria-current=\"page\"]');\n expect(anchor).to.exist;\n expect(anchor!.textContent).to.include('Campaigns');\n });\n\n it('should fire an event when the client is changed', async () => {\n let selectedClientKey: string | undefined;\n const onClientChange = (clientKey: string) => {\n selectedClientKey = clientKey;\n };\n\n const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);\n navbar.clients = [\n { clientKey: CLIENT_KEY, displayName: 'Client One' },\n { clientKey: 'abc123', displayName: 'Client Two' },\n ];\n navbar.onClientChange = onClientChange;\n\n await navbar.updateComplete;\n\n const combobox = navbar.shadowRoot?.querySelector('tt-combobox');\n expect(combobox).to.exist;\n\n await selectComboboxOption(combobox!, 'abc123');\n\n expect(selectedClientKey).to.equal('abc123');\n });\n\n it('should set the --nav-bar-width css variable when collapsed', async () => {\n const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);\n\n await expect(getComputedStyle(navbar).getPropertyValue('--nav-bar-width').trim()).to.equal('260px');\n\n const navbarToggleBtn = navbar.shadowRoot!.querySelector('#navbar-toggle-btn') as HTMLButtonElement;\n\n navbarToggleBtn.click();\n await elementUpdated(navbar);\n\n await expect(getComputedStyle(navbar).getPropertyValue('--nav-bar-width').trim()).to.equal('fit-content');\n });\n\n it('should expand the details when the current page is within that section', async () => {\n history.pushState({}, '', `/parity/${CLIENT_KEY}`);\n\n const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);\n\n const marketInsightsDetails = navbar.shadowRoot!.querySelector('#market-insights') as HTMLDetailsElement;\n\n expect(marketInsightsDetails).to.exist;\n expect(marketInsightsDetails.open).to.be.true;\n });\n\n it('should set the active route when receives `tetris:navigate` event', async () => {\n const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);\n\n history.pushState({}, '', `/account/billing-management/${CLIENT_KEY}`);\n\n // Dispatch the event to change to Channels route\n const navigateEvent = new CustomEvent('tetris:navigate', {});\n window.dispatchEvent(navigateEvent);\n\n await elementUpdated(navbar);\n const anchor = navbar.shadowRoot!.querySelector('a[aria-current=\"page\"]');\n\n expect(anchor).to.exist;\n expect(anchor!.textContent).to.include('Booking reconciliation');\n });\n\n it(\"should default to 'open' when the 'initial-state' attribute is not provided\", async () => {\n const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);\n\n const logo = navbar.shadowRoot!.querySelector('.logo');\n\n expect(logo).to.exist;\n expect(logo!.checkVisibility()).to.be.true;\n });\n\n it(\"should default to 'open' when the 'initial-state' attribute is 'open\", async () => {\n const navbar = await fixture<TtNavbar>(\n `<tt-navbar client-key=${CLIENT_KEY} initial-state=${Config.NavbarStateCookieOpenValue}></tt-navbar>`\n );\n\n const logo = navbar.shadowRoot!.querySelector('.logo');\n\n expect(logo).to.exist;\n expect(logo!.checkVisibility()).to.be.true;\n });\n\n it(\"should default to 'closed' when the 'initial-state' attribute is 'closed\", async () => {\n const navbar = await fixture<TtNavbar>(\n `<tt-navbar client-key=${CLIENT_KEY} initial-state=${Config.NavbarStateCookieClosedValue}></tt-navbar>`\n );\n\n const logo = navbar.shadowRoot!.querySelector('.logo');\n\n expect(logo).to.exist;\n expect(logo!.checkVisibility()).to.be.false;\n });\n\n it('should create cookie containing navbar state onToggle if it is missing', async () => {\n document.cookie = `${Config.NavbarStateCookieName}=; max-age=0; path=/;`;\n const startingCookieValue = getInitialNavbarState();\n\n expect(startingCookieValue).to.be.undefined;\n\n const navbar = await fixture<TtNavbar>(`<tt-navbar client-key=${CLIENT_KEY}></tt-navbar>`);\n const navbarToggleBtn = navbar.shadowRoot!.querySelector('#navbar-toggle-btn') as HTMLButtonElement;\n\n navbarToggleBtn.click();\n await elementUpdated(navbar);\n\n const newState = getInitialNavbarState();\n\n await expect(newState).to.equal(Config.NavbarStateCookieClosedValue);\n });\n\n it('should update the cookie value when navbar is expanded', async () => {\n const navbar = await fixture<TtNavbar>(\n `<tt-navbar client-key=${CLIENT_KEY} initial-state=${Config.NavbarStateCookieClosedValue}></tt-navbar>`\n );\n const navbarToggleBtn = navbar.shadowRoot!.querySelector('#navbar-toggle-btn') as HTMLButtonElement;\n\n navbarToggleBtn.click();\n await elementUpdated(navbar);\n\n const newState = getInitialNavbarState();\n\n await expect(newState).to.equal(Config.NavbarStateCookieOpenValue);\n });\n\n it('should update the cookie value when navbar is collapsed', async () => {\n const navbar = await fixture<TtNavbar>(\n `<tt-navbar client-key=${CLIENT_KEY} initial-state=${Config.NavbarStateCookieOpenValue}></tt-navbar>`\n );\n const navbarToggleBtn = navbar.shadowRoot!.querySelector('#navbar-toggle-btn') as HTMLButtonElement;\n\n navbarToggleBtn.click();\n await elementUpdated(navbar);\n\n const newState = getInitialNavbarState();\n\n await expect(newState).to.equal(Config.NavbarStateCookieClosedValue);\n });\n});\n"]}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @triptease/tt-navbar v0.0.95
2
+ * @triptease/tt-navbar v0.1.0
3
3
  */
4
4
 
5
5
  // src/Config.ts
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @triptease/tt-navbar v0.0.95
2
+ * @triptease/tt-navbar v0.1.0
3
3
  */
4
4
 
5
5
  // src/Routes.ts