|
1 | 1 | <script lang="ts">
|
2 | 2 | import Container from '$components/Container.svelte';
|
| 3 | + import TabContainer from '$lib/components/Tab/TabContainer.svelte'; |
3 | 4 | import { scrollIntoView } from '$lib/selectable';
|
4 | 5 | import classNames from 'classnames';
|
5 | 6 | import { ArrowRight, Exit, Pencil2, Plus } from 'radix-icons-svelte';
|
|
12 | 13 | import SelectField from '../../components/SelectField.svelte';
|
13 | 14 | import { useTabs } from '../../components/Tab/Tab';
|
14 | 15 | import Tab from '../../components/Tab/Tab.svelte';
|
| 16 | + import TabSelect from '../../components/Tab/TabSelect.svelte'; |
15 | 17 | import Toggle from '../../components/Toggle.svelte';
|
16 | 18 | import { localSettings } from '../../stores/localstorage.store';
|
17 | 19 | import { sessions } from '../../stores/session.store';
|
|
24 | 26 | About
|
25 | 27 | }
|
26 | 28 |
|
27 |
| - const tab = useTabs(Tabs.Interface, { size: 'stretch' }); |
| 29 | + const tab = useTabs(Tabs.Interface, { direction: 'vertical' }); |
28 | 30 |
|
29 | 31 | let lastKeyCode = 0;
|
30 | 32 | let lastKey = '';
|
|
68 | 70 | <h1 class="h1">Settings</h1>
|
69 | 71 | <p class="body">Manage your settings and integrations.</p>
|
70 | 72 | </div>
|
71 |
| - <div class="flex-1 flex mx-auto h-full w-full overflow-y-hidden max-w-7xl items-start space-x-16"> |
| 73 | + <div class="flex-1 flex mx-auto h-full w-full max-w-7xl items-start space-x-16"> |
72 | 74 | <Container direction="vertical" class="space-y-4 h3 w-52 lg:w-72 flex flex-col *:flex-1">
|
73 |
| - <Container |
74 |
| - on:enter={() => tab.set(Tabs.Account)} |
75 |
| - on:clickOrSelect={() => tab.set(Tabs.Account)} |
76 |
| - let:hasFocus |
77 |
| - focusOnClick |
78 |
| - class={classNames('flex items-center cursor-pointer py-3 px-6 w-full rounded-xl', { |
79 |
| - 'bg-secondary-800': $tab === Tabs.Account |
80 |
| - })} |
81 |
| - > |
| 75 | + <TabSelect tabValue={Tabs.Account} openTab={tab.openTab} let:hasFocus let:isActive> |
82 | 76 | <span
|
83 |
| - class={classNames('', { |
84 |
| - 'text-secondary-400': $tab !== Tabs.Account, |
85 |
| - 'text-secondary-200': $tab === Tabs.Account && !hasFocus, |
86 |
| - 'text-primary-500': hasFocus |
87 |
| - })} |
| 77 | + class={classNames( |
| 78 | + 'flex items-center cursor-pointer py-3 px-6 w-full rounded-xl', |
| 79 | + { |
| 80 | + 'bg-secondary-800': isActive, |
| 81 | + 'text-secondary-400': !isActive, |
| 82 | + 'text-secondary-200': isActive && !hasFocus, |
| 83 | + 'text-primary-500': hasFocus |
| 84 | + }, |
| 85 | + $$restProps.class |
| 86 | + )} |
88 | 87 | >
|
89 | 88 | Account
|
90 | 89 | </span>
|
91 |
| - </Container> |
92 |
| - <Container |
93 |
| - on:enter={() => tab.set(Tabs.Interface)} |
94 |
| - on:clickOrSelect={() => tab.set(Tabs.Interface)} |
95 |
| - let:hasFocus |
96 |
| - focusOnClick |
97 |
| - class={classNames('flex items-center cursor-pointer py-3 px-6 w-full rounded-xl', { |
98 |
| - 'bg-secondary-800': $tab === Tabs.Interface |
99 |
| - })} |
100 |
| - > |
| 90 | + </TabSelect> |
| 91 | + <TabSelect tabValue={Tabs.Interface} openTab={tab.openTab} let:hasFocus let:isActive> |
101 | 92 | <span
|
102 |
| - class={classNames('', { |
103 |
| - 'text-secondary-400': $tab !== Tabs.Interface, |
104 |
| - 'text-secondary-200': $tab === Tabs.Interface && !hasFocus, |
105 |
| - 'text-primary-500': hasFocus |
106 |
| - })} |
| 93 | + class={classNames( |
| 94 | + 'flex items-center cursor-pointer py-3 px-6 w-full rounded-xl', |
| 95 | + { |
| 96 | + 'bg-secondary-800': isActive, |
| 97 | + 'text-secondary-400': !isActive, |
| 98 | + 'text-secondary-200': isActive && !hasFocus, |
| 99 | + 'text-primary-500': hasFocus |
| 100 | + }, |
| 101 | + $$restProps.class |
| 102 | + )} |
107 | 103 | >
|
108 | 104 | Options
|
109 | 105 | </span>
|
110 |
| - </Container> |
111 |
| - <Container |
112 |
| - on:enter={() => tab.set(Tabs.About)} |
113 |
| - on:clickOrSelect={() => tab.set(Tabs.About)} |
114 |
| - let:hasFocus |
115 |
| - focusOnClick |
116 |
| - class={classNames('flex items-center cursor-pointer py-3 px-6 w-full rounded-xl', { |
117 |
| - 'bg-secondary-800': $tab === Tabs.About |
118 |
| - })} |
119 |
| - > |
| 106 | + </TabSelect> |
| 107 | + <TabSelect tabValue={Tabs.About} openTab={tab.openTab} let:hasFocus let:isActive> |
120 | 108 | <span
|
121 |
| - class={classNames('', { |
122 |
| - 'text-secondary-400': $tab !== Tabs.About, |
123 |
| - 'text-secondary-200': $tab === Tabs.About && !hasFocus, |
124 |
| - 'text-primary-500': hasFocus |
125 |
| - })} |
| 109 | + class={classNames( |
| 110 | + 'flex items-center cursor-pointer py-3 px-6 w-full rounded-xl', |
| 111 | + { |
| 112 | + 'bg-secondary-800': isActive, |
| 113 | + 'text-secondary-400': !isActive, |
| 114 | + 'text-secondary-200': isActive && !hasFocus, |
| 115 | + 'text-primary-500': hasFocus |
| 116 | + }, |
| 117 | + $$restProps.class |
| 118 | + )} |
126 | 119 | >
|
127 | 120 | About
|
128 | 121 | </span>
|
129 |
| - </Container> |
| 122 | + </TabSelect> |
130 | 123 | </Container>
|
131 | 124 |
|
132 |
| - <Container |
133 |
| - class="flex-1 grid w-full h-full overflow-y-hidden relative *:pb-16 *:overflow-y-auto *:scrollbar-hide -mx-4 px-4 *:-mx-4 *:px-4" |
134 |
| - > |
135 |
| - <Tab {...tab} direction="vertical" tab={Tabs.Account} class="space-y-16"> |
| 125 | + <TabContainer> |
| 126 | + <Tab {...tab} tab={Tabs.Account} class="space-y-16 pb-16"> |
136 | 127 | <div>
|
137 | 128 | <Container class="bg-primary-800 rounded-xl p-8" on:enter={scrollIntoView({ top: 9999 })}>
|
138 | 129 | <h1 class="h4 mb-4">My Profile</h1>
|
|
305 | 296 | </div>
|
306 | 297 | </Tab>
|
307 | 298 |
|
308 |
| - <Tab {...tab} direction="vertical" tab={Tabs.Interface} class="w-full"> |
| 299 | + <Tab {...tab} tab={Tabs.Interface}> |
309 | 300 | <div class="flex items-center justify-between text-lg font-medium text-secondary-100 py-2">
|
310 | 301 | <label class="mr-2">Animate scrolling</label>
|
311 | 302 | <Toggle
|
|
348 | 339 | </div>
|
349 | 340 | </Tab>
|
350 | 341 |
|
351 |
| - <Tab {...tab} direction="vertical" tab={Tabs.About}> |
| 342 | + <Tab {...tab} tab={Tabs.About}> |
352 | 343 | <div>
|
353 | 344 | Version: {REIVERR_VERSION}
|
354 | 345 | </div>
|
|
369 | 360 | <Button on:clickOrSelect={handleLogOut} class="hover:bg-red-500">Log Out</Button>
|
370 | 361 | </div>
|
371 | 362 | </Tab>
|
372 |
| - </Container> |
| 363 | + </TabContainer> |
373 | 364 | </div>
|
374 | 365 | </Container>
|
0 commit comments