studio-engine 0.106.0 → 0.107.0.rc1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7259ed5d43dafb6e374341620d0d52a88f759c35c9ee5084500acc93f7dfa6d1
4
- data.tar.gz: 63e473266fb1e1d95e7db15ac351d6535a62f25c1c5aea0446b81ef5a0168f82
3
+ metadata.gz: dd203cdc5c017f4b75ad4f8a1d1af735e55a0791b33e457db3352bf4c250066c
4
+ data.tar.gz: b6afd7f7ea6cfe36293c5151caa9a4c53ffb31def0c0b3be752551a52e9655e9
5
5
  SHA512:
6
- metadata.gz: 381f6d4550605a78526ac6c6e2496bed35aaa1d8de6cc4470346035c8daa881a7d301192cc152e87dea073956544f1968e181fd6e4264e9f88868708daa8d2e3
7
- data.tar.gz: 3ed8191d7d9807f8df60f6dee74cc787ce0680aedd8dfeacd33c762979713cdbe0cafd35b867bd9c130f090e942164cca095f972bac5d93242098a0780d36adf
6
+ metadata.gz: 8efd7d7240c1498a9bf3ba8486e7dcd46c52e174242aeea6e0560abfcded3a5a40530418316463834d5b02bedb4975dc2d16a3fdea2e1d980c3cf1dafbc2a89e
7
+ data.tar.gz: 11a034ae73a7112c6d2d1a46c639616230794a64ef88ae620552a3cb027c09cc5406812c78821c5658a0287bf9e44c26b5e417212be6b6292e5292fbd419d161
data/CHANGELOG.md CHANGED
@@ -4,6 +4,32 @@ The format is [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). This pro
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ ## 0.107.0 — 2026-10-14
8
+
9
+ ### Changed
10
+
11
+ - **The engine navbar's account row is Studio's, for every app.** From 768px
12
+ the theme toggle leads the gear, both a size down (moon 14px, gear 16px in a
13
+ 24px box), and the moon, gear, name and avatar sit one 0.75rem gap apart,
14
+ measured ink to ink. A user nav with no second row (`data-nav-rows="1"`) gets
15
+ a 40px avatar that shrinks to 32px on the scroll ramp and the name on the rule
16
+ of 3 against it; a two-row nav keeps its 2rem avatar. The account no longer
17
+ dims on hover. Rules: `engine.css`, *THE ACCOUNT ROW*. Turf Monster forks the
18
+ partial and is untouched.
19
+ - **The name and avatar open the link sidebar wherever it renders.**
20
+ `StudioSidebarHelper#studio_account_opens_sidebar?` now answers
21
+ `studio_sidebar?`, so the account is a `<button>` carrying the sidebar's
22
+ toggle attributes, announced as a button that opens a dialog rather than a
23
+ link to `/profile`. An app with no sidebar keeps the link; a host may define
24
+ the helper to decide otherwise. Selectors and tests that pinned
25
+ `a[data-nav-account]` should match `[data-nav-account]`.
26
+
27
+ ### Removed
28
+
29
+ - **`show_logout_link`.** The user nav and `layouts/_navbar` no longer draw a
30
+ Log out link (the link sidebar carries it), and a call that still passes the
31
+ local renders without it and without the second row it held open.
32
+
7
33
  ### Added
8
34
 
9
35
  - **`config.navbar_wordmark`: a brand lockup image in the engine navbar, off by
data/README.md CHANGED
@@ -678,7 +678,7 @@ Apps customize it through partial slots — each an optional local naming a
678
678
  partial (String path, or `{ partial:, locals: }`):
679
679
 
680
680
  - `balance_slot` — balance display at the start of the top row
681
- - `extra_icons_slot` — app icon buttons before the admin gear + theme toggle
681
+ - `extra_icons_slot` — app icon buttons between the theme toggle and the gear
682
682
  - `div2_slot` — replaces the default second row (wallet address + level bar)
683
683
 
684
684
  ```erb
@@ -691,6 +691,24 @@ The legacy string locals (`balance_html`, `extra_icons_html`, `div2_html` —
691
691
  pre-rendered HTML injected via `raw`) are deprecated but still honored when the
692
692
  matching slot is absent, so existing call sites render unchanged.
693
693
 
694
+ ### The account row
695
+
696
+ From 768px the user nav's right end reads theme toggle, gear, name, avatar,
697
+ one gap apart (0.75rem, measured ink to ink), with the moon at 14px and the
698
+ gear's 16px glyph in a 24px box. A nav with no second row (no level, no
699
+ wallet, no `div2_slot`; `data-nav-rows="1"`) takes a 40px avatar that shrinks
700
+ to 32px on the navbar's scroll ramp, and the name on the rule of 3 against it:
701
+ its capitals a third of the avatar's height. A two-row nav keeps the 2rem
702
+ avatar. The rules are `engine.css`, *THE ACCOUNT ROW*, layered like the
703
+ collapse band table, so an app's own `@layer utilities` can override them.
704
+
705
+ Wherever the link sidebar renders (`studio_sidebar?`, which is every signed-in
706
+ app with `/profile`), the name and avatar are one button that opens it, as the
707
+ gear does: the sidebar heads with the profile. A host can define the view
708
+ helper `studio_account_opens_sidebar?` to decide otherwise; with no sidebar
709
+ the account stays a link to the account page. Log out lives in the sidebar,
710
+ never the bar.
711
+
694
712
  ## Transactional emails
695
713
 
696
714
  Every consuming app can render the same admin page — **`/admin/emails`** —
@@ -580,6 +580,61 @@ body.modal-open .studio-app-banner {
580
580
  --nav-title-lead-size: calc(1.3rem - 0.3rem * var(--nav-p, 0)); /* 20.8px -> 16px */
581
581
  }
582
582
  }
583
+
584
+ /* THE ACCOUNT ROW (components/_user_nav), from 768px. Every app whose
585
+ navbar renders the engine's user nav gets this; Turf Monster forks the
586
+ partial, carries none of these hooks, and keeps its own two-row nav.
587
+
588
+ ICONS. The theme toggle leads the rail (the partial renders it first) and
589
+ both icons sit a size down: the moon at 14px, the gear's 16px glyph in a
590
+ 24px box, whether the gear is the sidebar trigger or the admin dropdown.
591
+
592
+ ONE GAP. Moon to gear, gear to name and name to avatar are the same
593
+ --nav-gap, measured ink to ink. Each box gap gives back what its edges
594
+ already hold: the moon's and gear's blank margins inside their 24-unit
595
+ artwork, the gear's 4px inset in its box, and the name's side bearing
596
+ (8.6px between moon and gear, 6.3px between gear and name, measured in
597
+ Chrome). The partial's inline 6px padding on the icon row is zeroed on a
598
+ one-row nav so the row's edge is the gear's; a two-row nav keeps it, as
599
+ its second row lines up under that padding.
600
+
601
+ ONE-ROW NAVS (data-nav-rows="1"): the avatar is 40px at rest and shrinks
602
+ to 32px on the scroll ramp (--nav-p, as the logo and title do), and the
603
+ name sits on the rule of 3 against it: its capitals are a third of the
604
+ avatar's height and centred on it. Montserrat's cap height is 0.7em, so
605
+ the size is a third of the avatar over 0.7. On the partial's
606
+ leading-none, Montserrat's capitals sit 0.01em below the line box's
607
+ middle, so no trim is needed (text-box would cut the ink, since the name
608
+ truncates with overflow hidden). A two-row nav keeps the 2rem avatar its
609
+ second row is laid out against. Below 768px the avatar stays 2rem. */
610
+ @media (min-width: 768px) {
611
+ .nav-shell {
612
+ --nav-avatar: calc(2.5rem - 0.5rem * var(--nav-p, 0)); /* 40px -> 32px */
613
+ --nav-gap: 0.75rem;
614
+ }
615
+ .nav-shell [data-nav-tools] [data-nav-theme-toggle="desktop"] { transform: scale(0.875); }
616
+ .nav-shell [data-nav-tools] [data-link-sidebar-trigger],
617
+ .nav-shell [data-nav-tools] [data-nav-admin-gear] {
618
+ width: 1.5rem;
619
+ height: 1.5rem;
620
+ align-items: center;
621
+ justify-content: center;
622
+ }
623
+ .nav-shell [data-nav-tools] [data-link-sidebar-trigger] svg,
624
+ .nav-shell [data-nav-tools] [data-nav-admin-gear] svg { width: 1rem; height: 1rem; }
625
+ .nav-shell [data-nav-tools] :has(> [data-nav-theme-toggle="desktop"]) { gap: calc(var(--nav-gap) - 8.6px); }
626
+ .nav-shell :has(> [data-nav-tools]) { gap: calc(var(--nav-gap) - 6.3px); }
627
+ .nav-shell [data-nav-account] { gap: var(--nav-gap); }
628
+ .nav-shell [data-nav-tools][data-nav-rows="1"] > div:first-child { padding-inline: 0 !important; }
629
+ .nav-shell [data-nav-rows="1"] + [data-nav-account] > [aria-hidden] > * {
630
+ width: var(--nav-avatar);
631
+ height: var(--nav-avatar);
632
+ font-size: 0.875rem;
633
+ }
634
+ .nav-shell [data-nav-rows="1"] + [data-nav-account] [data-nav-name] {
635
+ font-size: calc(var(--nav-avatar) / 3 / 0.7);
636
+ }
637
+ }
583
638
  }
584
639
 
585
640
  /* A board whose controller failed to load (studio/lazy_controllers marks its
@@ -11,6 +11,15 @@ module StudioSidebarHelper
11
11
  studio_sidebar_sections.any?
12
12
  end
13
13
 
14
+ # The navbar's name and avatar open the sidebar wherever it renders. The
15
+ # sidebar heads with the engine's own "You > Profile" section
16
+ # (Studio::SidebarSections prepends it whenever /profile is drawn), so the
17
+ # account page stays one click away (components/_user_nav). A host may
18
+ # define its own to say otherwise.
19
+ def studio_account_opens_sidebar?
20
+ studio_sidebar?
21
+ end
22
+
14
23
  # The admin dropdown and the sidebar trigger share the cog glyph — showing
15
24
  # both reads as a double gear. When the viewer's resolved sections carry an
16
25
  # admin-flagged entry, the sidebar IS the admin menu (its title says so) and
@@ -7,7 +7,7 @@
7
7
  <% display_class = local_assigns.fetch(:display_class, nil) %>
8
8
  <% if respond_to?(:admin?) && admin? %>
9
9
  <div x-data="{ open: false }" class="<%= ["relative leading-none", display_class].compact.join(" ") %>">
10
- <button @click="open = !open" class="flex text-secondary hover:text-heading transition" title="Admin">
10
+ <button @click="open = !open" class="flex text-secondary hover:text-heading transition" title="Admin" data-nav-admin-gear>
11
11
  <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-4 h-4">
12
12
  <path stroke-linecap="round" stroke-linejoin="round" d="M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.325.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.431l-1.003.827c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.955.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.941-1.11.941h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.431l1.004-.827c.292-.24.437-.613.43-.991a6.932 6.932 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z" />
13
13
  <path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" />
@@ -15,10 +15,6 @@
15
15
  (default display_name) and the signed-out button reads
16
16
  Studio.sign_in_label (default "Log in"); lib/studio/navbar_identity.rb.
17
17
 
18
- Other locals:
19
- show_logout_link — boolean, show explicit "Log out" link in the
20
- second row (Studio uses this)
21
-
22
18
  Legacy string locals (deprecated): balance_html, extra_icons_html,
23
19
  div2_html — pre-rendered HTML injected via raw. Still honored when
24
20
  the matching slot local is absent, so existing call sites render
@@ -30,7 +26,6 @@
30
26
  <% div2_slot ||= nil %>
31
27
  <% balance_html ||= nil %>
32
28
  <% extra_icons_html ||= nil %>
33
- <% show_logout_link ||= false %>
34
29
  <% div2_html ||= nil %>
35
30
  <%# Slot resolution: the slot local wins when both a slot and its legacy
36
31
  string are passed. Returns nil when neither is present. %>
@@ -44,7 +39,9 @@
44
39
  end
45
40
  end %>
46
41
 
47
- <%# Where the account link (the username and the avatar, one link) points.
42
+ <%# Where the account control (the username and the avatar, one control) points
43
+ when it is a link: an app with no link sidebar. Where the sidebar renders,
44
+ the control opens it instead (Div 3 below).
48
45
 
49
46
  A HOST'S OWN account_path WINS: an app that already has an account page keeps
50
47
  it rather than being repointed at a thinner /profile by a routine dependency
@@ -80,34 +77,39 @@
80
77
  reserved column is 147px, and a column that will not give pushed the
81
78
  avatar 17px past the screen edge (e2e/header_phone_width.spec.js).
82
79
  It is a centred flex column, so with no second row the icons sit level
83
- with the name and avatar rather than at the top of the bar. %>
84
- <div class="flex-1 min-w-0 flex flex-col justify-center" data-nav-tools>
80
+ with the name and avatar rather than at the top of the bar.
81
+ data-nav-rows says which navbar this is: "1" when no second row renders,
82
+ and then engine.css sizes the account on the rule of 3 (THE ACCOUNT
83
+ ROW there). A two-row nav keeps the engine's 2rem avatar under its row. %>
84
+ <% div2_content = studio_nav_slot.call(div2_slot, div2_html) %>
85
+ <% server_level = current_user.respond_to?(:level) && current_user.level.present? ? current_user.level : nil %>
86
+ <% wallet_connected = current_user.respond_to?(:truncated_solana) && current_user.try(:solana_connected?) %>
87
+ <% nav_rows = div2_content.present? || server_level || wallet_connected ? 2 : 1 %>
88
+ <div class="flex-1 min-w-0 flex flex-col justify-center" data-nav-tools data-nav-rows="<%= nav_rows %>">
85
89
  <%# Div 1 (Bigger): balance + icons. %>
86
90
  <div class="flex items-center gap-2 leading-none" :style="'padding: 0 6px;' + ($store.devMode ? 'background: cornflowerblue;' : '')">
87
91
  <%= studio_nav_slot.call(balance_slot, balance_html) %>
88
92
  <div class="flex items-center gap-2 ml-auto self-end">
93
+ <%# The theme toggle leads the rail, then the app's icons, then the
94
+ gear. Desktop only: below md the engine navbar's phone row draws
95
+ the theme toggle, so a second one here put two on every phone. The
96
+ signed-out bar has always done it this way (layouts/_navbar). %>
97
+ <span class="hidden md:flex" data-nav-theme-toggle="desktop"><%= render "components/theme_toggle_morph" %></span>
89
98
  <%= studio_nav_slot.call(extra_icons_slot, extra_icons_html) %>
90
99
  <%# Skipped when the link sidebar carries the admin menu — two cog
91
100
  glyphs side by side read as a double gear. Desktop only, like
92
101
  the theme toggle: below md the navbar's phone row draws the cog,
93
102
  so a second one here put two on an admin's phone. %>
94
103
  <%= render "components/admin_dropdown", display_class: "hidden md:block" unless respond_to?(:studio_sidebar_replaces_admin_menu?) && studio_sidebar_replaces_admin_menu? %>
95
- <%# Desktop only. Below md the engine navbar's phone row draws the
96
- theme toggle, so a second one here put two on every phone. The
97
- signed-out bar has always done it this way (layouts/_navbar). %>
98
- <span class="hidden md:flex" data-nav-theme-toggle="desktop"><%= render "components/theme_toggle_morph" %></span>
99
104
  </div>
100
105
  </div>
101
- <% div2_content = studio_nav_slot.call(div2_slot, div2_html) %>
102
- <% server_level = current_user.respond_to?(:level) && current_user.level.present? ? current_user.level : nil %>
103
- <% wallet_connected = current_user.respond_to?(:truncated_solana) && current_user.try(:solana_connected?) %>
104
106
  <% if div2_content.present? %>
105
107
  <%# Div 2 replaced by the consumer's slot (div2_slot or legacy div2_html). %>
106
108
  <%= div2_content %>
107
- <% elsif server_level || wallet_connected || show_logout_link %>
109
+ <% elsif server_level || wallet_connected %>
108
110
  <%# Div 2 (Smaller): wallet address (left) + level (right) with progress
109
111
  bar. Renders only when it has something to show — an off-chain,
110
- level-less user without a logout link gets NO second row, so the
112
+ level-less user gets NO second row, so the
111
113
  nav collapses to one line instead of an empty progress strip. %>
112
114
  <div x-data="{
113
115
  barWidth: 0,
@@ -167,8 +169,6 @@
167
169
  </span>
168
170
  <% if server_level %>
169
171
  <span :class="leveledUp && 'nav-level-pop'" x-text="'Level ' + displayLevel">Level <%= server_level %></span>
170
- <% elsif show_logout_link %>
171
- <%= link_to "Log out", logout_path, class: "font-mono text-muted no-underline nav-bar-text" %>
172
172
  <% end %>
173
173
  </div>
174
174
  <%# Text layer 2: white (clip-path reveals where bar covers) %>
@@ -180,8 +180,6 @@
180
180
  </span>
181
181
  <% if server_level %>
182
182
  <span :class="leveledUp && 'nav-level-pop'" x-text="'Level ' + displayLevel">Level <%= server_level %></span>
183
- <% elsif show_logout_link %>
184
- <%= link_to "Log out", logout_path, class: "font-mono text-white no-underline nav-bar-text" %>
185
183
  <% end %>
186
184
  </div>
187
185
  </div>
@@ -199,40 +197,41 @@
199
197
  </style>
200
198
  <% end %>
201
199
  </div>
202
- <%# Div 3 (Account): the name and the avatar are ONE link to the account
203
- page, one tab stop — they used to be two links to the same place.
200
+ <%# Div 3 (Account): the name and the avatar are ONE control, one tab
201
+ stop — they used to be two links to the same place.
204
202
  Below md the name is screen-reader text and the avatar stands alone,
205
203
  so a phone never shows the name truncated to "Guest 55…"; from md up
206
204
  it shows beside the avatar and truncates when the row is tight.
207
205
 
208
- The link never shrinks (the avatar must stay on screen); the icon
206
+ The control never shrinks (the avatar must stay on screen); the icon
209
207
  column beside it is what gives way. So the name cannot truncate by
210
208
  flex shrinking: from md up its box carries a max width instead, and
211
209
  the name ellipsizes inside it. The avatar is aria-hidden: the name is
212
- the link's accessible name.
210
+ the control's accessible name.
213
211
 
214
- A host whose link sidebar heads with the profile can make the link open
215
- the sidebar instead, by defining studio_account_opens_sidebar? as true
216
- (a view helper; the engine defines none, so every other host keeps the
217
- link). The link then carries the sidebar's toggle attributes and
218
- studio/link_sidebar claims its click; the href stays, so a click before
219
- that script loads still reaches the account page. %>
212
+ WHERE THE LINK SIDEBAR RENDERS, THE ACCOUNT OPENS IT. The sidebar
213
+ heads with the engine's "You > Profile" section, so the name and avatar open it as the gear does
214
+ (studio_account_opens_sidebar?, which StudioSidebarHelper answers with
215
+ studio_sidebar?; a host may define its own). It is then a BUTTON, not a
216
+ link: it does not navigate, and a screen reader announces "Alex, button,
217
+ dialog" rather than a link that goes nowhere it says. studio/link_sidebar
218
+ claims its click from the document, before Alpine binds, as it does the
219
+ gear's. An app with no sidebar keeps the link to the account page. %>
220
+ <% account_opens_sidebar = respond_to?(:studio_account_opens_sidebar?) && studio_account_opens_sidebar? %>
220
221
  <% account_classes = "group flex items-center gap-2 flex-shrink-0" %>
221
- <% account_toggle =
222
- if studio_nav_destination && respond_to?(:studio_account_opens_sidebar?) && studio_account_opens_sidebar?
223
- { "data-profile-image-toggle": "", "aria-controls": "studio-link-sidebar studio-link-sidebar-mobile",
224
- "aria-haspopup": "dialog", ":aria-expanded": "$store.sidebars && $store.sidebars.linkTreeOpen ? 'true' : 'false'" }
225
- else
226
- {}
227
- end %>
228
222
  <% account_inner = capture do %>
229
- <span class="sr-only md:not-sr-only md:max-w-40"><span class="block truncate text-right text-heading font-semibold text-base leading-none transition<%= " group-hover:text-primary" if studio_nav_destination %>" data-nav-name><%= Studio.navbar_user_name_for(current_user, self) %></span></span>
223
+ <span class="sr-only md:not-sr-only md:max-w-40"><span class="block truncate text-right text-heading font-semibold text-base leading-none transition<%= " group-hover:text-primary" if account_opens_sidebar || studio_nav_destination %>" data-nav-name><%= Studio.navbar_user_name_for(current_user, self) %></span></span>
230
224
  <span class="flex-shrink-0 flex items-center" aria-hidden="true">
231
225
  <%= render "components/avatar", user: current_user, size: "nav" %>
232
226
  </span>
233
227
  <% end %>
234
- <% if studio_nav_destination %>
235
- <%= link_to account_inner, studio_nav_destination, class: "#{account_classes} hover:opacity-80 transition", "data-nav-account": "", "x-bind:style": "$store.devMode && 'background: lightgreen'", **account_toggle %>
228
+ <% if account_opens_sidebar %>
229
+ <button type="button" class="<%= account_classes %> cursor-pointer rounded-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40" data-nav-account data-profile-image-toggle
230
+ aria-controls="studio-link-sidebar studio-link-sidebar-mobile" aria-haspopup="dialog"
231
+ :aria-expanded="$store.sidebars && $store.sidebars.linkTreeOpen ? 'true' : 'false'"
232
+ x-bind:style="$store.devMode && 'background: lightgreen'"><%= account_inner %></button>
233
+ <% elsif studio_nav_destination %>
234
+ <%= link_to account_inner, studio_nav_destination, class: account_classes, "data-nav-account": "", "x-bind:style": "$store.devMode && 'background: lightgreen'" %>
236
235
  <% else %>
237
236
  <span class="<%= account_classes %>" data-nav-account x-bind:style="$store.devMode && 'background: lightgreen'"><%= account_inner %></span>
238
237
  <% end %>
@@ -4,7 +4,6 @@
4
4
  preview — if true, disables scroll handler and sticky positioning
5
5
  balance_html — raw HTML for balance display (passed through to _user_nav)
6
6
  extra_icons_html — raw HTML for extra icon buttons (passed through to _user_nav)
7
- show_logout_link — boolean, show "Log out" link in user nav (passed through to _user_nav)
8
7
  brand_heading — boolean, draw the brand title as the page's h1 (default: true).
9
8
  Pass false on a page that carries its own h1: the brand is
10
9
  drawn as a div with the same classes and contents.
@@ -21,7 +20,6 @@
21
20
  <% pin_header = Studio.smooth_load && !is_preview %>
22
21
  <% balance_html = local_assigns.fetch(:balance_html, nil) %>
23
22
  <% extra_icons_html = local_assigns.fetch(:extra_icons_html, nil) %>
24
- <% show_logout_link = local_assigns.fetch(:show_logout_link, false) %>
25
23
  <% brand_tag = local_assigns.fetch(:brand_heading, true) ? "h1" : "div" %>
26
24
  <%# Out-of-the-box navigation (engine 0.30): when the host declares
27
25
  Studio.sidebar_sections, the navbar mounts the link-sidebar trigger in its
@@ -186,7 +184,7 @@
186
184
  to fit. %>
187
185
  <div class="<%= balance_html.present? ? 'user-nav-col' : 'user-nav-fit' %> flex-shrink-0 pl-0 pr-4 md:px-4">
188
186
  <% if show_user %>
189
- <%= render "components/user_nav", balance_html: balance_html, extra_icons_html: extra_icons_html, show_logout_link: show_logout_link %>
187
+ <%= render "components/user_nav", balance_html: balance_html, extra_icons_html: extra_icons_html %>
190
188
  <% else %>
191
189
  <div class="flex items-center justify-end gap-3">
192
190
  <%= sidebar_trigger_desktop if sidebar_active %>
@@ -1,3 +1,3 @@
1
1
  module Studio
2
- VERSION = "0.106.0"
2
+ VERSION = "0.107.0.rc1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: studio-engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.106.0
4
+ version: 0.107.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex McRitchie