@triptease/tt-navbar 0.0.7 → 0.0.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.
@@ -1,6 +1,8 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { html, LitElement } from 'lit';
3
3
  import { property } from 'lit/decorators.js';
4
+ import { unsafeSVG } from 'lit/directives/unsafe-svg.js';
5
+ import { campaigns, channels, chevronDown, gear, graph, home, user, wallet } from '@triptease/icons';
4
6
  import { styles } from './styles.js';
5
7
  export class TtNavbar extends LitElement {
6
8
  constructor() {
@@ -22,80 +24,120 @@ export class TtNavbar extends LitElement {
22
24
  render() {
23
25
  return html `
24
26
  <nav id=${this.id}>
25
- <a href=${this.buildUrl('/')} @click=${this.onAnchorClick}>Dashboard</a>
26
- <a href="https://app.campaign-manager.triptease.io">Campaigns</a>
27
- <a href=${this.buildUrl('/channels')} @click=${this.onAnchorClick}
28
- >Channels</a
29
- >
30
- <details>
31
- <summary>Market Insights</summary>
32
- <div>
33
- <a
34
- href=${this.buildUrl('/parity/$CLIENT_KEY')}
35
- @click=${this.onAnchorClick}
27
+ <div class="nav-items">
28
+ <a
29
+ class="nav-item"
30
+ href=${this.buildUrl('/')}
31
+ @click=${this.onAnchorClick}
32
+ >${unsafeSVG(home)}Dashboard</a
33
+ >
34
+ <a class="nav-item" href="https://app.campaign-manager.triptease.io"
35
+ >${unsafeSVG(campaigns)}Campaigns</a
36
+ >
37
+ <a
38
+ class="nav-item"
39
+ href=${this.buildUrl('/channels')}
40
+ @click=${this.onAnchorClick}
41
+ >${unsafeSVG(channels)}Channels</a
42
+ >
43
+ <details>
44
+ <summary>
45
+ ${unsafeSVG(graph)}
46
+ <span>Market Insights</span>
47
+ <span class="icon chevron"> ${unsafeSVG(chevronDown)}</span>
48
+ </summary>
49
+ <div class="dropdown-items">
50
+ <a
51
+ class="sub-nav-item"
52
+ href=${this.buildUrl('/parity/$CLIENT_KEY')}
53
+ @click=${this.onAnchorClick}
36
54
  >Parity</a
37
- >
38
- <a
39
- href=${this.buildUrl('/guest-insights/$CLIENT_KEY')}
40
- @click=${this.onAnchorClick}
55
+ >
56
+ <a
57
+ class="sub-nav-item"
58
+ href=${this.buildUrl('/guest-insights/$CLIENT_KEY')}
59
+ @click=${this.onAnchorClick}
41
60
  >Guest insights</a
42
- >
43
- </div>
44
- </details>
45
- <details>
46
- <summary>Settings</summary>
47
- <div>
48
- <a
49
- href=${this.buildUrl('/$CLIENT_KEY/guest-behavioural-data')}
50
- @click=${this.onAnchorClick}
61
+ >
62
+ </div>
63
+ </details>
64
+ <details>
65
+ <summary>
66
+ ${unsafeSVG(gear)}
67
+ <span>Settings</span>
68
+ <span class="icon chevron"> ${unsafeSVG(chevronDown)}</span>
69
+ </summary>
70
+ <div class="dropdown-items">
71
+ <a
72
+ class="sub-nav-item"
73
+ href=${this.buildUrl('/$CLIENT_KEY/guest-behavioural-data')}
74
+ @click=${this.onAnchorClick}
51
75
  >Email setup</a
52
- >
53
- <a
54
- href=${this.buildUrl('/$CLIENT_KEY/crm-config')}
55
- @click=${this.onAnchorClick}
76
+ >
77
+ <a
78
+ class="sub-nav-item"
79
+ href=${this.buildUrl('/$CLIENT_KEY/crm-config')}
80
+ @click=${this.onAnchorClick}
56
81
  >CRM connectivity</a
57
- >
58
- <a
59
- href=${this.buildUrl('/settings/group')}
60
- @click=${this.onAnchorClick}
82
+ >
83
+ <a
84
+ class="sub-nav-item"
85
+ href=${this.buildUrl('/settings/group')}
86
+ @click=${this.onAnchorClick}
61
87
  >Group settings</a
62
- >
63
- <a
64
- href=${this.buildUrl('/settings/$CLIENT_KEY/hotels/')}
65
- @click=${this.onAnchorClick}
88
+ >
89
+ <a
90
+ class="sub-nav-item"
91
+ href=${this.buildUrl('/settings/$CLIENT_KEY/hotels/')}
92
+ @click=${this.onAnchorClick}
66
93
  >Property settings</a
67
- >
68
- </div>
69
- </details>
70
- <hr />
71
- <details>
72
- <summary>Account</summary>
73
- <div>
74
- <a href=${this.buildUrl('/account')} @click=${this.onAnchorClick}
94
+ >
95
+ </div>
96
+ </details>
97
+ <hr />
98
+ <details>
99
+ <summary>
100
+ ${unsafeSVG(user)}
101
+ <span>Account</span>
102
+ <span class="icon chevron"> ${unsafeSVG(chevronDown)}</span>
103
+ </summary>
104
+ <div class="dropdown-items">
105
+ <a
106
+ class="sub-nav-item"
107
+ href=${this.buildUrl('/account')}
108
+ @click=${this.onAnchorClick}
75
109
  >User settings</a
76
- >
77
- <a
78
- href=${this.buildUrl('/account/team/$CLIENT_KEY')}
79
- @click=${this.onAnchorClick}
110
+ >
111
+ <a
112
+ class="sub-nav-item"
113
+ href=${this.buildUrl('/account/team/$CLIENT_KEY')}
114
+ @click=${this.onAnchorClick}
80
115
  >Team and permissions</a
81
- >
82
- </div>
83
- </details>
84
- <details>
85
- <summary>Billing</summary>
86
- <div>
87
- <a
88
- href=${this.buildUrl('/account/billing-management/$CLIENT_KEY')}
89
- @click=${this.onAnchorClick}
116
+ >
117
+ </div>
118
+ </details>
119
+ <details class="dropdown-items">
120
+ <summary>
121
+ ${unsafeSVG(wallet)}
122
+ <span>Billing</span>
123
+ <span class="icon chevron"> ${unsafeSVG(chevronDown)}</span>
124
+ </summary>
125
+ <div>
126
+ <a
127
+ class="sub-nav-item"
128
+ href=${this.buildUrl('/account/billing-management/$CLIENT_KEY')}
129
+ @click=${this.onAnchorClick}
90
130
  >Booking reconciliation</a
91
- >
92
- <a
93
- href=${this.buildUrl('/subscriptions/$CLIENT_KEY')}
94
- @click=${this.onAnchorClick}
131
+ >
132
+ <a
133
+ class="sub-nav-item"
134
+ href=${this.buildUrl('/subscriptions/$CLIENT_KEY')}
135
+ @click=${this.onAnchorClick}
95
136
  >Subscriptions</a
96
- >
97
- </div>
98
- </details>
137
+ >
138
+ </div>
139
+ </details>
140
+ </div>
99
141
  <slot name="clientSelector"></slot>
100
142
  </nav>
101
143
  `;
@@ -1 +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,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,OAAO,QAAS,SAAQ,UAAU;IAAxC;;QAYU,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,OAAO;gBAAE,OAAO,aAAa,CAAC;YAExC,OAAO,IAAI,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;QACzD,CAAC,CAAC;QAEM,kBAAa,GAAG,CAAC,CAAa,EAAE,EAAE;YACxC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC;QACH,CAAC,CAAC;IAmFJ,CAAC;IAjFC,MAAM;QACJ,OAAO,IAAI,CAAA;gBACC,IAAI,CAAC,EAAE;kBACL,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,aAAa;;kBAE/C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,IAAI,CAAC,aAAa;;;;;;;qBAOpD,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;uBAClC,IAAI,CAAC,aAAa;;;;qBAIpB,IAAI,CAAC,QAAQ,CAAC,6BAA6B,CAAC;uBAC1C,IAAI,CAAC,aAAa;;;;;;;;;qBASpB,IAAI,CAAC,QAAQ,CAAC,qCAAqC,CAAC;uBAClD,IAAI,CAAC,aAAa;;;;qBAIpB,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC;uBACtC,IAAI,CAAC,aAAa;;;;qBAIpB,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;uBAC9B,IAAI,CAAC,aAAa;;;;qBAIpB,IAAI,CAAC,QAAQ,CAAC,+BAA+B,CAAC;uBAC5C,IAAI,CAAC,aAAa;;;;;;;;;sBASnB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,IAAI,CAAC,aAAa;;;;qBAIvD,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC;uBACxC,IAAI,CAAC,aAAa;;;;;;;;;qBASpB,IAAI,CAAC,QAAQ,CAAC,yCAAyC,CAAC;uBACtD,IAAI,CAAC,aAAa;;;;qBAIpB,IAAI,CAAC,QAAQ,CAAC,4BAA4B,CAAC;uBACzC,IAAI,CAAC,aAAa;;;;;;;KAOpC,CAAC;IACJ,CAAC;;AA1GM,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,UAAU,EAAE,CAAC;yCACjC;AAGjB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;2CACjC","sourcesContent":["import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { styles } from './styles.js';\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: 'base-url' })\n baseUrl?: string;\n\n @property({ type: String, attribute: 'client-key' })\n clientKey?: string;\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.baseUrl) return formattedPath;\n\n return new URL(formattedPath, this.baseUrl).toString();\n };\n\n private onAnchorClick = (e: MouseEvent) => {\n if (this.navigate) {\n this.navigate(e);\n }\n };\n\n render() {\n return html`\n <nav id=${this.id}>\n <a href=${this.buildUrl('/')} @click=${this.onAnchorClick}>Dashboard</a>\n <a href=\"https://app.campaign-manager.triptease.io\">Campaigns</a>\n <a href=${this.buildUrl('/channels')} @click=${this.onAnchorClick}\n >Channels</a\n >\n <details>\n <summary>Market Insights</summary>\n <div>\n <a\n href=${this.buildUrl('/parity/$CLIENT_KEY')}\n @click=${this.onAnchorClick}\n >Parity</a\n >\n <a\n href=${this.buildUrl('/guest-insights/$CLIENT_KEY')}\n @click=${this.onAnchorClick}\n >Guest insights</a\n >\n </div>\n </details>\n <details>\n <summary>Settings</summary>\n <div>\n <a\n href=${this.buildUrl('/$CLIENT_KEY/guest-behavioural-data')}\n @click=${this.onAnchorClick}\n >Email setup</a\n >\n <a\n href=${this.buildUrl('/$CLIENT_KEY/crm-config')}\n @click=${this.onAnchorClick}\n >CRM connectivity</a\n >\n <a\n href=${this.buildUrl('/settings/group')}\n @click=${this.onAnchorClick}\n >Group settings</a\n >\n <a\n href=${this.buildUrl('/settings/$CLIENT_KEY/hotels/')}\n @click=${this.onAnchorClick}\n >Property settings</a\n >\n </div>\n </details>\n <hr />\n <details>\n <summary>Account</summary>\n <div>\n <a href=${this.buildUrl('/account')} @click=${this.onAnchorClick}\n >User settings</a\n >\n <a\n href=${this.buildUrl('/account/team/$CLIENT_KEY')}\n @click=${this.onAnchorClick}\n >Team and permissions</a\n >\n </div>\n </details>\n <details>\n <summary>Billing</summary>\n <div>\n <a\n href=${this.buildUrl('/account/billing-management/$CLIENT_KEY')}\n @click=${this.onAnchorClick}\n >Booking reconciliation</a\n >\n <a\n href=${this.buildUrl('/subscriptions/$CLIENT_KEY')}\n @click=${this.onAnchorClick}\n >Subscriptions</a\n >\n </div>\n </details>\n <slot name=\"clientSelector\"></slot>\n </nav>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"TtNavbar.js","sourceRoot":"","sources":["../../src/TtNavbar.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport { campaigns, channels, chevronDown, gear, graph, home, user, wallet } from '@triptease/icons';\nimport { styles } from './styles.js';\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: 'base-url' })\n baseUrl?: string;\n\n @property({ type: String, attribute: 'client-key' })\n clientKey?: string;\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.baseUrl) return formattedPath;\n\n return new URL(formattedPath, this.baseUrl).toString();\n };\n\n private onAnchorClick = (e: MouseEvent) => {\n if (this.navigate) {\n this.navigate(e);\n }\n };\n\n render() {\n return html`\n <nav id=${this.id}>\n <div class=\"nav-items\">\n <a\n class=\"nav-item\"\n href=${this.buildUrl('/')}\n @click=${this.onAnchorClick}\n >${unsafeSVG(home)}Dashboard</a\n >\n <a class=\"nav-item\" href=\"https://app.campaign-manager.triptease.io\"\n >${unsafeSVG(campaigns)}Campaigns</a\n >\n <a\n class=\"nav-item\"\n href=${this.buildUrl('/channels')}\n @click=${this.onAnchorClick}\n >${unsafeSVG(channels)}Channels</a\n >\n <details>\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 >Parity</a\n >\n <a\n class=\"sub-nav-item\"\n href=${this.buildUrl('/guest-insights/$CLIENT_KEY')}\n @click=${this.onAnchorClick}\n >Guest insights</a\n >\n </div>\n </details>\n <details>\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 >Email setup</a\n >\n <a\n class=\"sub-nav-item\"\n href=${this.buildUrl('/$CLIENT_KEY/crm-config')}\n @click=${this.onAnchorClick}\n >CRM connectivity</a\n >\n <a\n class=\"sub-nav-item\"\n href=${this.buildUrl('/settings/group')}\n @click=${this.onAnchorClick}\n >Group settings</a\n >\n <a\n class=\"sub-nav-item\"\n href=${this.buildUrl('/settings/$CLIENT_KEY/hotels/')}\n @click=${this.onAnchorClick}\n >Property settings</a\n >\n </div>\n </details>\n <hr />\n <details>\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 >User settings</a\n >\n <a\n class=\"sub-nav-item\"\n href=${this.buildUrl('/account/team/$CLIENT_KEY')}\n @click=${this.onAnchorClick}\n >Team and permissions</a\n >\n </div>\n </details>\n <details class=\"dropdown-items\">\n <summary>\n ${unsafeSVG(wallet)}\n <span>Billing</span>\n <span class=\"icon chevron\"> ${unsafeSVG(chevronDown)}</span>\n </summary>\n <div>\n <a\n class=\"sub-nav-item\"\n href=${this.buildUrl('/account/billing-management/$CLIENT_KEY')}\n @click=${this.onAnchorClick}\n >Booking reconciliation</a\n >\n <a\n class=\"sub-nav-item\"\n href=${this.buildUrl('/subscriptions/$CLIENT_KEY')}\n @click=${this.onAnchorClick}\n >Subscriptions</a\n >\n </div>\n </details>\n </div>\n <slot name=\"clientSelector\"></slot>\n </nav>\n `;\n }\n}\n"]}
@@ -1,27 +1,274 @@
1
1
  import { css } from 'lit';
2
2
  export const styles = css `
3
3
  :host {
4
+ --nav-bar-width: 260px;
5
+
4
6
  display: block;
5
7
  height: 100vh;
6
- max-width: 260px;
8
+ }
9
+
10
+ * {
11
+ box-sizing: border-box;
7
12
  }
8
13
 
9
14
  nav {
15
+ max-width: var(--nav-bar-width);
16
+ width: var(--nav-bar-width);
17
+ min-height: 100vh;
18
+ height: max-content;
19
+ display: flex;
20
+ align-items: start;
21
+ gap: var(--space-scale-3-5);
22
+ flex-direction: column;
23
+ background-color: var(--color-surface-inverted-100);
24
+ color: var(--color-text-inverted-400);
25
+ padding-top: var(--space-scale-2);
26
+ padding-bottom: var(--space-scale-2);
27
+ z-index: 1;
28
+
29
+ .nav-items {
30
+ display: flex;
31
+ flex-direction: column;
32
+ padding: 0 var(--space-scale-1);
33
+ width: 100%;
34
+ }
35
+
36
+ hr {
37
+ width: 100%;
38
+ height: 1px;
39
+ background-color: var(--color-surface-inverted-200);
40
+ border: none;
41
+ }
42
+
43
+ #tertiary-nav {
44
+ display: flex;
45
+ flex-direction: column;
46
+ margin-top: auto;
47
+ gap: var(--space-scale-2);
48
+ width: 100%;
49
+
50
+ .external-link {
51
+ font-size: var(--font-size-100);
52
+ line-height: var(--font-line-height-100);
53
+
54
+ .icon {
55
+ width: var(--space-scale-2);
56
+ height: var(--space-scale-2);
57
+ }
58
+ }
59
+ }
60
+
61
+ .icon {
62
+ display: flex;
63
+ align-items: center;
64
+ width: var(--space-scale-3);
65
+ height: var(--space-scale-3);
66
+ color: var(--nav-item-color);
67
+ }
68
+
69
+ .nav-item {
70
+ display: flex;
71
+ font-size: var(--font-size-100);
72
+ line-height: var(--font-line-height-100);
73
+ gap: var(--space-scale-1-5);
74
+ border-radius: var(--border-radius-100);
75
+ color: var(--nav-item-color);
76
+ align-items: center;
77
+ padding: var(--space-scale-1);
78
+ width: 100%;
79
+ text-decoration: none;
80
+ }
81
+ }
82
+
83
+ details {
84
+ border-radius: var(--border-radius-100);
85
+
86
+ summary {
87
+ font-size: var(--font-size-100);
88
+ line-height: var(--font-line-height-100);
89
+ position: relative;
90
+ display: flex;
91
+ align-items: baseline;
92
+
93
+ &::marker {
94
+ content: '';
95
+ }
96
+ }
97
+
98
+ .chevron > svg {
99
+ margin-left: auto;
100
+ margin-right: var(--space-scale-1);
101
+ width: var(--space-scale-2);
102
+ }
103
+
104
+ &[open] .chevron > svg {
105
+ transform: rotate(180deg);
106
+ }
107
+
108
+ .dropdown-items {
109
+ display: flex;
110
+ flex-direction: column;
111
+ }
112
+ }
113
+
114
+ details > summary {
115
+ display: flex;
116
+ gap: var(--space-scale-1-5);
117
+ padding: var(--space-scale-1);
118
+ border-radius: var(--border-radius-100);
119
+ color: var(--nav-item-color);
120
+ align-items: center;
121
+
122
+ a {
123
+ color: var(--nav-item-color);
124
+ }
125
+
126
+ &:hover,
127
+ &:focus-visible {
128
+ background-color: var(--color-surface-inverted-200);
129
+ border-radius: var(--border-radius-100);
130
+ text-decoration: none;
131
+ }
132
+ }
133
+
134
+ .sub-nav-item {
135
+ padding-left: 44px;
136
+ padding-top: 10px;
137
+ padding-bottom: 10px;
138
+ color: var(--color-text-inverted-400);
139
+ font-size: var(--font-size-100);
140
+ line-height: var(--font-line-height-100);
141
+ text-decoration: none;
142
+
143
+ button {
144
+ color: var(--color-text-inverted-400);
145
+ padding: 0;
146
+ }
147
+ }
148
+
149
+ .sub-nav-item:hover,
150
+ .sub-nav-item:focus-visible,
151
+ .nav-item:hover,
152
+ .nav-item:focus-visible {
153
+ background-color: var(--color-surface-inverted-200);
154
+ border-radius: var(--border-radius-100);
155
+ text-decoration: none;
156
+ color: var(--color-text-inverted-400);
157
+
158
+ .icon {
159
+ color: var(--color-text-inverted-400);
160
+ }
161
+ }
162
+
163
+ .current-page {
164
+ --nav-item-color: var(--color-primary-400);
165
+ border-radius: var(--border-radius-100);
166
+ background-color: var(--color-primary-100);
167
+ color: var(--nav-item-color);
168
+ }
169
+
170
+ .link-page {
10
171
  display: flex;
172
+ position: absolute;
173
+ overflow: auto;
11
174
  flex-direction: column;
175
+ gap: var(--space-scale-4);
176
+ padding: var(--space-scale-5);
177
+ left: var(--nav-bar-width);
178
+ background-color: var(--color-surface-200);
179
+ width: calc(100% - var(--nav-bar-width));
12
180
  height: 100%;
181
+ transition-property: left, visibility;
182
+ transition-duration: 700ms, 400ms;
183
+ transition-timing-function: ease-out, ease-in;
184
+
185
+ &.hidden {
186
+ left: -100%;
187
+ visibility: hidden;
188
+ }
13
189
  }
14
190
 
15
- nav details div {
191
+ .link-page > .section {
16
192
  display: flex;
17
193
  flex-direction: column;
194
+ gap: var(--space-scale-2);
18
195
  }
19
196
 
20
- hr {
21
- background: black;
22
- width: 100%;
197
+ .section > .links-container {
198
+ display: grid;
199
+ grid-template-columns: repeat(3, 1fr);
200
+ gap: var(--space-scale-3);
201
+ overflow-y: auto;
202
+ height: 100%;
203
+ }
204
+
205
+ .visually-hidden {
206
+ position: absolute;
207
+ width: 1px;
23
208
  height: 1px;
24
- border: none;
209
+ margin: -1px;
210
+ padding: 0;
211
+ border: 0;
212
+ overflow: hidden;
213
+ clip: rect(0 0 0 0);
214
+ clip-path: inset(50%);
215
+ white-space: nowrap;
216
+ }
217
+
218
+ .tooltip {
219
+ position: absolute;
220
+ display: flex;
221
+ white-space: nowrap;
222
+ align-items: center;
223
+ gap: var(--space-scale-1);
224
+ color: black;
225
+ background-color: var(--color-surface-600);
226
+ padding: var(--space-scale-1);
227
+ z-index: 1000;
228
+ border-radius: var(--border-radius-50);
229
+ font-weight: var(--font-weight-medium);
230
+ }
231
+
232
+ .auth-container {
233
+ display: flex;
234
+ align-items: center;
235
+ justify-content: center;
236
+ min-height: 100vh;
237
+ }
238
+
239
+ .error-container {
240
+ padding: 4rem 1rem 1rem;
241
+ max-width: 1280px;
242
+ margin-left: auto;
243
+ margin-right: auto;
244
+ }
245
+
246
+ .error-stack {
247
+ width: 100%;
248
+ padding: 1rem;
249
+ overflow-x: auto;
250
+ }
251
+
252
+ .fullscreen-iframe {
253
+ width: 100%;
254
+ height: 100vh;
255
+ border: 0;
256
+ }
257
+
258
+ .nav-toggle-button {
259
+ position: relative;
260
+ }
261
+
262
+ .nav-toggle-tooltip {
263
+ left: 100%;
264
+ top: 100%;
265
+ visibility: hidden;
266
+ opacity: 0;
267
+ }
268
+
269
+ .nav-toggle-button:hover .nav-toggle-tooltip {
270
+ visibility: visible;
271
+ opacity: 1;
25
272
  }
26
273
  `;
27
274
  //# sourceMappingURL=styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;CAwBxB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`\n :host {\n display: block;\n height: 100vh;\n max-width: 260px;\n }\n\n nav {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n nav details div {\n display: flex;\n flex-direction: column;\n }\n\n hr {\n background: black;\n width: 100%;\n height: 1px;\n border: none;\n }\n`;\n"]}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+QxB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`\n :host {\n --nav-bar-width: 260px;\n\n display: block;\n height: 100vh;\n }\n\n * {\n box-sizing: border-box;\n }\n\n nav {\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 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 gap: var(--space-scale-2);\n width: 100%;\n\n .external-link {\n font-size: var(--font-size-100);\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 .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(--font-size-100);\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 details {\n border-radius: var(--border-radius-100);\n\n summary {\n font-size: var(--font-size-100);\n line-height: var(--font-line-height-100);\n position: relative;\n display: flex;\n align-items: baseline;\n\n &::marker {\n content: '';\n }\n }\n\n .chevron > svg {\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 .sub-nav-item {\n padding-left: 44px;\n padding-top: 10px;\n padding-bottom: 10px;\n color: var(--color-text-inverted-400);\n font-size: var(--font-size-100);\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 transition-property: left, visibility;\n transition-duration: 700ms, 400ms;\n transition-timing-function: ease-out, ease-in;\n\n &.hidden {\n left: -100%;\n visibility: hidden;\n }\n }\n\n .link-page > .section {\n display: flex;\n flex-direction: column;\n gap: var(--space-scale-2);\n }\n\n .section > .links-container {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: var(--space-scale-3);\n overflow-y: auto;\n height: 100%;\n }\n\n .visually-hidden {\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\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 .auth-container {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100vh;\n }\n\n .error-container {\n padding: 4rem 1rem 1rem;\n max-width: 1280px;\n margin-left: auto;\n margin-right: auto;\n }\n\n .error-stack {\n width: 100%;\n padding: 1rem;\n overflow-x: auto;\n }\n\n .fullscreen-iframe {\n width: 100%;\n height: 100vh;\n border: 0;\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"]}