railsui 3.4.1 → 3.4.3

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: bdf00da977780c593f58ec180d35c73f1b1a73932fc044981a59ac9655853db7
4
- data.tar.gz: 5b94966fef66bd29254ddd19632d1a76c4043b6fea3bdbc0da1b529e9da29cca
3
+ metadata.gz: b09f7557829679b4405f9d50469ae9fc54410a7574c34ff2c50673168c6a7518
4
+ data.tar.gz: 28d5f7cf80c9602ced3a4b67c2df66268678ba11bea90f9f0438bf69cf0e429f
5
5
  SHA512:
6
- metadata.gz: 4d05cab8f6eb2fed5a5b263c4e4b0a90275c9d4992f6bb7a0fb8944aac9bd378858c2ef61c5a6ab094a0a7d1f00f94062a734bf4901f9c7dc8cc967d146b5345
7
- data.tar.gz: a6fc75702f896fb64f59a4c025cf09f8bf78fbc5fa16e49fec3457c2925982bebeb080a47f3cd6c3bc860a392d8888dfb0ed4713d3e8521270b54789f4977411
6
+ metadata.gz: f431553148ecafd055131a3fa1d29eea3d7f71d8de2bdd252149c31e781891d2255384f6c3c36b24be85b6929b30f5389bd7a6facaf1c3a6dc453a86b2558abb
7
+ data.tar.gz: b9cdbd53ad565a6fe100e4ee7e61b86dc544a00a82ac7595c08fdb7dc9b1a37415f91493b641bb9caf50dde39caf63d1ba051742990c5dec218c3b08b78f8bfe
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- railsui (3.4.1)
4
+ railsui (3.4.3)
5
5
  psych
6
6
  rails (>= 7.0)
7
7
  railsui_icon
@@ -244,6 +244,7 @@ PLATFORMS
244
244
  arm64-darwin-21
245
245
  arm64-darwin-22
246
246
  arm64-darwin-23
247
+ arm64-darwin-25
247
248
  x86_64-darwin-20
248
249
  x86_64-linux
249
250
 
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Rails UI
4
4
 
5
- Professionally designed themes and components for Ruby on Rails. Leverage breath-taking UI to fast-track your next idea.
5
+ The product UI system for Rails SaaS builders. Complete app kits and the Rails-native components behind them, in clean ERB and Tailwind, so you ship a finished product instead of a blank page.
6
6
 
7
7
  ### Links
8
8
 
@@ -201,17 +201,19 @@ After installation, visit `localhost:3000/railsui` to configure:
201
201
 
202
202
  ### Important Notes
203
203
 
204
- Each theme comes with pages in `app/views/rui` that are treated as read-only. Updating your configuration will overwrite these files. To customize pages, copy them to your app:
204
+ Each app kit comes with pages in `app/views/rui` that are treated as read-only. Updating your configuration will overwrite these files. To customize pages, copy them to your app:
205
205
 
206
206
  ```bash
207
207
  cp app/views/rui/pages/dashboard.html.erb app/views/pages/dashboard.html.erb
208
208
  ```
209
209
 
210
- ## Themes
210
+ ## App kits
211
211
 
212
- Themes are the core of Rails UI, combining UI components, pages, assets, JavaScript, and color palettes to help you create a professionally designed, niche application. The UI can adapt based on how you implement it.
212
+ App kits are the core of Rails UI: complete product surfaces for a kind of SaaS, combining real screens, UI components, assets, JavaScript, and color palettes. Pick the app kit closest to what you are building, keep the screens that fit, and customize the rest.
213
213
 
214
- Themes serve as a starting point for your app, with reusable components extracted for flexibility. These components are ready for use inside your application when you install Rails UI.
214
+ > Note: on railsui.com these are called app kits. Inside the gem and its config they are still referred to as themes (for example `Railsui.config.theme` and `app/assets/stylesheets/railsui/theme.css`), so you will see both terms.
215
+
216
+ App kits serve as a starting point for your app, with reusable components extracted for flexibility. These components are ready for use inside your application when you install Rails UI.
215
217
 
216
218
  ### Pages
217
219
 
@@ -223,23 +225,23 @@ More pages will be added over time.
223
225
 
224
226
  ### Included assets
225
227
 
226
- Each theme comes with a collection of assets to help you get started. Much of these are placeholders and are not meant to be used in production. We strive to still create realistic examples for you to use as a starting point.
228
+ Each app kit comes with a collection of assets to help you get started. Much of these are placeholders and are not meant to be used in production. We strive to still create realistic examples for you to use as a starting point.
227
229
 
228
230
  ### UI components
229
231
 
230
- After installing Rails UI and choosing a theme you'll find a collection of components and best practices for real-world applications at your disposal.
232
+ After installing Rails UI and choosing an app kit you'll find a collection of components and best practices for real-world applications at your disposal.
231
233
 
232
234
  ### Color
233
235
 
234
- Each theme comes with a custom color palette built on top of the default Tailwind CSS v4 color palette you can customize in `app/assets/stylesheets/railsui/theme.css`.
236
+ Each app kit comes with a custom color palette built on top of the default Tailwind CSS v4 color palette you can customize in `app/assets/stylesheets/railsui/theme.css`.
235
237
 
236
238
  ### Icons
237
239
 
238
- Bundled with Rails UI is a gem called [railsui_icon](https://github.com/getrailsui/railsui_icon). This gem includes a collection of icons that are used in all themes. Right now it's based soley on [heroicons](https://heroicons.com) and will be expanded to include more icons in the future.
240
+ Bundled with Rails UI is a gem called [railsui_icon](https://github.com/getrailsui/railsui_icon). This gem includes a collection of icons that are used in all app kits. Right now it's based soley on [heroicons](https://heroicons.com) and will be expanded to include more icons in the future.
239
241
 
240
242
  ### JavaScript
241
243
 
242
- All Rails UI components are built on top of Stimulus.js. A theme includes custom Stimulus controllers and our own JavaScript library called [railsui-stimulus](https://github.com/getrailsui/railsui-stimulus) which is just an extraction of components we find ourselves using in our own apps and between themes.
244
+ All Rails UI components are built on top of Stimulus.js. An app kit includes custom Stimulus controllers and our own JavaScript library called [railsui-stimulus](https://github.com/getrailsui/railsui-stimulus) which is just an extraction of components we find ourselves using in our own apps and between app kits.
243
245
 
244
246
  ## Updates
245
247
 
@@ -249,7 +251,7 @@ Run `bundle update railsui` from within your project and it should fetch the mos
249
251
 
250
252
  Version 2 of Rails UI has since been sunset. Unfortunately, there is no upgrade path we can share.
251
253
 
252
- Version 3 was a rewrite of the gem and how Rails UI works to enable better flexibility. Version 3 offers the ability to swap themes, install on new and existing rails apps, and countless other smaller features. We chose this direction to enable more efficient development in the future and allow folks with existing apps the ability to use Rails UI.
254
+ Version 3 was a rewrite of the gem and how Rails UI works to enable better flexibility. Version 3 offers the ability to swap app kits, install on new and existing rails apps, and countless other smaller features. We chose this direction to enable more efficient development in the future and allow folks with existing apps the ability to use Rails UI.
253
255
 
254
256
  You can find version 2 on a dedicated branch on the Github repo. If you're an active user of this version be sure to update your Gemfile with the appropriate branch.
255
257
 
@@ -1,48 +1,21 @@
1
1
  <!-- Stylesheets -->
2
2
  <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/dist/tippy.css" />
3
- <link rel="stylesheet" href="https://unpkg.com/@highlightjs/cdn-assets@11.9.0/styles/atom-one-dark.min.css" />
4
3
  <style>
5
- /* Custom styles for ERB/HAML code blocks using Ruby syntax */
6
- .railsui .language-erb .hljs-comment,
7
- .railsui .language-haml .hljs-comment {
8
- color: #637777 !important;
9
- font-style: italic;
10
- }
11
- /* Style HTML-like tags in ERB when they're not highlighted */
12
- .railsui .language-erb code,
13
- .railsui .language-haml code {
14
- /* Ensure base text is visible */
15
- color: #f5f5f5;
16
- }
17
-
18
- /* Ensure highlight.js styles aren't overridden */
19
- .hljs {
4
+ /* Shiki code block styles */
5
+ .shiki {
20
6
  background: transparent !important;
21
- color: #abb2bf !important;
22
- }
23
-
24
- /* CSS syntax highlighting colors */
25
- .language-css .hljs-attribute {
26
- color: #e06c75 !important;
27
- }
28
- .language-css .hljs-number,
29
- .language-css .hljs-literal {
30
- color: #d19a66 !important;
31
- }
32
- .language-css .hljs-selector-class,
33
- .language-css .hljs-selector-tag {
34
- color: #e5c07b !important;
7
+ padding: 1rem;
8
+ overflow-x: auto;
35
9
  }
36
- .language-css .hljs-built_in,
37
- .language-css .hljs-title {
38
- color: #61afef !important;
10
+ .shiki code {
11
+ display: block;
12
+ font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
13
+ font-size: 1rem;
14
+ line-height: 1.7;
39
15
  }
40
- .language-css .hljs-comment {
41
- color: #5c6370 !important;
42
- font-style: italic;
43
- }
44
- .language-css .hljs-string {
45
- color: #98c379 !important;
16
+ /* Dark theme adjustments */
17
+ pre code {
18
+ background: transparent !important;
46
19
  }
47
20
  </style>
48
21
 
@@ -65,36 +38,94 @@
65
38
  <script src="https://unpkg.com/tippy.js@6.3.7/dist/tippy-bundle.umd.min.js"></script>
66
39
  <%= javascript_include_tag "https://unpkg.com/alpinejs@3.10.3/dist/cdn.min.js", defer: true %>
67
40
 
68
- <!-- Syntax Highlighting -->
69
- <script src="https://unpkg.com/@highlightjs/cdn-assets@11.9.0/highlight.min.js"></script>
70
- <script src="https://unpkg.com/@highlightjs/cdn-assets@11.9.0/languages/ruby.min.js"></script>
71
- <script src="https://unpkg.com/@highlightjs/cdn-assets@11.9.0/languages/javascript.min.js"></script>
72
- <script src="https://unpkg.com/@highlightjs/cdn-assets@11.9.0/languages/bash.min.js"></script>
73
- <script src="https://unpkg.com/@highlightjs/cdn-assets@11.9.0/languages/css.min.js"></script>
74
- <script src="https://unpkg.com/@highlightjs/cdn-assets@11.9.0/languages/xml.min.js"></script>
75
- <script>
76
- // Ensure hljs is available globally
77
- window.hljs = window.hljs || hljs;
78
-
79
- // Register ERB as an alias for Ruby (better syntax highlighting for embedded Ruby)
80
- // Register HAML as an alias for Ruby as well
81
- if (window.hljs) {
82
- hljs.registerAliases(['erb'], {languageName: 'ruby'})
83
- hljs.registerAliases(['haml'], {languageName: 'ruby'})
84
-
85
- // Highlight all code blocks on page load
86
- document.addEventListener('DOMContentLoaded', function() {
87
- hljs.highlightAll();
88
- });
89
-
90
- // Also run immediately in case DOMContentLoaded already fired
91
- if (document.readyState === 'loading') {
92
- // Still loading, wait for DOMContentLoaded
93
- } else {
94
- // DOM already loaded, run now
95
- hljs.highlightAll();
41
+ <!-- Syntax Highlighting with Shiki -->
42
+ <script type="module">
43
+ import { codeToHtml, bundledLanguages } from 'https://esm.sh/shiki@1.22.0';
44
+
45
+ // Language mapping for code blocks
46
+ const languageMap = {
47
+ 'language-ruby': 'ruby',
48
+ 'language-erb': 'erb',
49
+ 'language-html': 'html',
50
+ 'language-javascript': 'javascript',
51
+ 'language-js': 'javascript',
52
+ 'language-bash': 'bash',
53
+ 'language-shell': 'bash',
54
+ 'language-css': 'css',
55
+ 'language-xml': 'xml',
56
+ 'language-haml': 'ruby'
57
+ };
58
+
59
+ // Highlight a single code element
60
+ async function highlightElement(codeEl) {
61
+ if (codeEl.dataset.shikiHighlighted) return;
62
+
63
+ const classNames = Array.from(codeEl.classList);
64
+ const langClass = classNames.find(c => c.startsWith('language-'));
65
+ const lang = languageMap[langClass] || 'text';
66
+
67
+ // Check if language is available
68
+ const availableLang = bundledLanguages[lang] ? lang : 'text';
69
+
70
+ try {
71
+ const code = codeEl.textContent;
72
+ const html = await codeToHtml(code, {
73
+ lang: availableLang,
74
+ theme: 'material-theme-palenight'
75
+ });
76
+
77
+ // Replace pre>code with Shiki output
78
+ const preEl = codeEl.parentElement;
79
+ if (preEl && preEl.tagName === 'PRE') {
80
+ const wrapper = document.createElement('div');
81
+ wrapper.innerHTML = html;
82
+ const shikiPre = wrapper.firstChild;
83
+ const shikiCode = shikiPre.querySelector('code');
84
+
85
+ // Preserve original pre classes
86
+ preEl.classList.forEach(c => shikiPre.classList.add(c));
87
+
88
+ // Transfer data attributes for clipboard functionality
89
+ if (shikiCode) {
90
+ Array.from(codeEl.attributes).forEach(attr => {
91
+ if (attr.name.startsWith('data-')) {
92
+ shikiCode.setAttribute(attr.name, attr.value);
93
+ }
94
+ });
95
+ // Store original text for clipboard
96
+ shikiCode.dataset.clipboardText = code;
97
+ }
98
+
99
+ preEl.replaceWith(shikiPre);
100
+ }
101
+ codeEl.dataset.shikiHighlighted = 'true';
102
+ } catch (e) {
103
+ console.warn('Shiki highlighting failed for', lang, e);
96
104
  }
97
105
  }
106
+
107
+ // Highlight all visible code blocks
108
+ async function highlightAll() {
109
+ const codeElements = document.querySelectorAll('pre code[class*="language-"]');
110
+ for (const el of codeElements) {
111
+ if (el.offsetParent !== null) {
112
+ await highlightElement(el);
113
+ }
114
+ }
115
+ }
116
+
117
+ // Expose for use by Alpine.js tab switching
118
+ window.shikiHighlight = {
119
+ highlightElement,
120
+ highlightAll
121
+ };
122
+
123
+ // Initial highlight on DOM ready
124
+ if (document.readyState === 'loading') {
125
+ document.addEventListener('DOMContentLoaded', highlightAll);
126
+ } else {
127
+ highlightAll();
128
+ }
98
129
  </script>
99
130
 
100
131
  <!-- Initialize Stimulus and register controllers -->
@@ -113,7 +144,6 @@
113
144
  Application: StimulusApplication
114
145
  }
115
146
 
116
- const hljs = window.hljs
117
147
  const { useTransition, useClickOutside } = window.StimulusUse || {}
118
148
 
119
149
  <%= render partial: "railsui/shared/inline_controllers" %>;
@@ -2,10 +2,11 @@
2
2
  (function() {
3
3
  const controller = class extends Stimulus.Controller {
4
4
  connect() {
5
- if (typeof hljs !== 'undefined' && hljs.highlightElement) {
5
+ // Use Shiki for syntax highlighting
6
+ if (window.shikiHighlight) {
6
7
  this.snippetTargets.forEach((el) => {
7
- if (!el.classList.contains('hljs')) {
8
- hljs.highlightElement(el)
8
+ if (!el.dataset.shikiHighlighted) {
9
+ window.shikiHighlight.highlightElement(el)
9
10
  }
10
11
  })
11
12
  }
@@ -185,11 +186,11 @@ Stimulus.application.register("railsui-flash", class extends Stimulus.Controller
185
186
  }
186
187
  }
187
188
  highlightCode() {
188
- if (typeof hljs !== 'undefined' && this.hasCodeTarget) {
189
- const codeElements = this.codeTarget.querySelectorAll('pre code')
189
+ if (window.shikiHighlight && this.hasCodeTarget) {
190
+ const codeElements = this.codeTarget.querySelectorAll('pre code[class*=language-]')
190
191
  codeElements.forEach((el) => {
191
- if (!el.classList.contains('hljs')) {
192
- hljs.highlightElement(el)
192
+ if (!el.dataset.shikiHighlighted) {
193
+ window.shikiHighlight.highlightElement(el)
193
194
  }
194
195
  })
195
196
  }
@@ -1,45 +1,48 @@
1
1
  <%
2
2
  html_content = yield :html
3
3
  erb_content = yield :erb
4
- haml_content = yield :haml
5
4
  js_content = yield :js
6
5
  bash_content = yield :bash
7
6
  ruby_content = yield :ruby
8
7
  css_content = yield :css
9
8
  %>
10
9
 
11
- <div data-controller="railsui-code" class="mt-5 mb-8 first:mt-0 last:mb-0 bg-gradient-to-br from-neutral-700 to-neutral-800 rounded-lg overflow-clip dark:border dark:border-neutral-700 selection:bg-neutral-300/90 selection:text-neutral-800 relative scrollbar border-transparent" x-data="{ active: '<%= local_assigns[:active_tab] %>' }" x-init="
12
- // Highlight visible code on load
10
+ <div data-controller="railsui-code" class="mt-5 mb-8 first:mt-0 last:mb-0 bg-[#292d3e] rounded-lg overflow-clip dark:border dark:border-indigo-400/20 selection:bg-slate-300/90 selection:text-slate-800 relative scrollbar border-transparent" x-data="{ active: '<%= local_assigns[:active_tab] %>' }" x-init="
11
+ // Highlight visible code on load using Shiki
13
12
  setTimeout(() => {
14
- const codeElements = $el.querySelectorAll('pre code');
15
- codeElements.forEach(el => {
16
- if (el.offsetParent !== null && typeof hljs !== 'undefined' && !el.classList.contains('hljs')) {
17
- hljs.highlightElement(el);
18
- }
19
- });
13
+ if (window.shikiHighlight) {
14
+ const codeElements = $el.querySelectorAll('pre code[class*=language-]');
15
+ codeElements.forEach(el => {
16
+ if (el.offsetParent !== null && !el.dataset.shikiHighlighted) {
17
+ window.shikiHighlight.highlightElement(el);
18
+ }
19
+ });
20
+ }
20
21
  }, 100);
21
22
 
22
23
  // Watch for tab changes and highlight new code
23
24
  $watch('active', () => {
24
25
  setTimeout(() => {
25
- const codeElements = $el.querySelectorAll('pre code');
26
- codeElements.forEach(el => {
27
- if (el.offsetParent !== null && typeof hljs !== 'undefined' && !el.classList.contains('hljs')) {
28
- hljs.highlightElement(el);
29
- }
30
- });
26
+ if (window.shikiHighlight) {
27
+ const codeElements = $el.querySelectorAll('pre code[class*=language-]');
28
+ codeElements.forEach(el => {
29
+ if (el.offsetParent !== null && !el.dataset.shikiHighlighted) {
30
+ window.shikiHighlight.highlightElement(el);
31
+ }
32
+ });
33
+ }
31
34
  }, 50);
32
35
  });
33
36
  ">
34
- <div class="bg-neutral-800">
35
- <ul class="flex items-center justify-start space-x-2 border-b border-neutral-700 px-3">
37
+ <div class="bg-[#232738]">
38
+ <ul class="flex items-center justify-start space-x-2 border-b border-[#4e5579] px-3">
36
39
  <% if content_for?(:html) %>
37
40
  <li class="flex items-center">
38
41
  <a href="#html"
39
42
  @click.prevent="active = 'html'"
40
43
  :class="active == 'html' ? 'text-pink-400 border-pink-400' : 'border-transparent text-white/90'"
41
44
  class="-ml-2 pl-5 pr-3 py-3 font-mono text-sm border-b-2 hover:text-pink-400 hover:border-pink-400"><%= local_assigns[:html_filename] %></a>
42
- <span class="w-px h-11 bg-gradient-to-b from-neutral-600 to-neutral-700 transform rotate-[20deg] block ml-2"></span>
45
+ <span class="w-px h-11 bg-gradient-to-b from-indigo-400/30 to-indigo-500/20 transform rotate-[20deg] block ml-2"></span>
43
46
  </li>
44
47
  <% end %>
45
48
  <% if content_for?(:erb) %>
@@ -48,19 +51,10 @@
48
51
  @click.prevent="active = 'erb'"
49
52
  :class="active == 'erb' ? 'text-rose-400 border-rose-400' : 'border-transparent text-white/90'"
50
53
  class="-ml-3 pl-6 pr-4 py-3 font-mono text-sm border-b-2 hover:text-rose-400 hover:border-rose-400"><%= local_assigns[:erb_filename] %></a>
51
- <span class="w-px h-11 bg-gradient-to-b from-neutral-600 to-neutral-700 transform rotate-[20deg] block ml-2"></span>
54
+ <span class="w-px h-11 bg-gradient-to-b from-indigo-400/30 to-indigo-500/20 transform rotate-[20deg] block ml-2"></span>
52
55
  </li>
53
56
  <% end %>
54
57
 
55
- <% if content_for(:haml) %>
56
- <li class="flex items-center">
57
- <a href="#haml"
58
- @click.prevent="active = 'haml'"
59
- :class="active == 'haml' ? 'text-sky-400 border-sky-400' : 'border-transparent text-white/90'"
60
- class="-ml-3 pl-5 pr-3 py-3 font-mono text-sm border-b-2 hover:text-sky-400 hover:border-sky-400"><%= local_assigns[:haml_filename] %></a>
61
- <span class="w-px h-11 bg-gradient-to-b from-neutral-600 to-neutral-700 transform rotate-[20deg] block ml-2"></span>
62
- </li>
63
- <% end %>
64
58
 
65
59
  <% if content_for?(:bash) %>
66
60
  <li class="flex items-center">
@@ -68,7 +62,7 @@
68
62
  @click.prevent="active = 'bash'"
69
63
  :class="active == 'bash' ? 'text-cyan-400 border-cyan-400' : 'border-transparent text-white/90'"
70
64
  class="-ml-2 pl-5 pr-3 py-3 font-mono text-sm border-b-2 hover:text-cyan-400 hover:border-cyan-400">bash</a>
71
- <span class="w-px h-11 bg-gradient-to-b from-neutral-600 to-neutral-700 transform rotate-[20deg] block ml-2"></span>
65
+ <span class="w-px h-11 bg-gradient-to-b from-indigo-400/30 to-indigo-500/20 transform rotate-[20deg] block ml-2"></span>
72
66
  </li>
73
67
  <% end %>
74
68
 
@@ -78,7 +72,7 @@
78
72
  @click.prevent="active = 'js'"
79
73
  :class="active == 'js' ? 'text-amber-400 border-amber-400' : 'border-transparent text-white/90'"
80
74
  class="-ml-3 pl-5 pr-3 py-3 font-mono text-sm border-b-2 hover:text-amber-400 hover:border-amber-400"><%= local_assigns[:js_filename] %></a>
81
- <span class="w-px h-11 bg-gradient-to-b from-neutral-600 to-neutral-700 transform rotate-[20deg] block ml-2"></span>
75
+ <span class="w-px h-11 bg-gradient-to-b from-indigo-400/30 to-indigo-500/20 transform rotate-[20deg] block ml-2"></span>
82
76
  </li>
83
77
  <% end %>
84
78
 
@@ -88,7 +82,7 @@
88
82
  @click.prevent="active = 'ruby'"
89
83
  :class="active == 'ruby' ? 'text-rose-400 border-rose-400' : 'border-transparent text-white/90'"
90
84
  class="-ml-3 pl-5 pr-3 py-3 font-mono text-sm border-b-2 hover:text-rose-400 hover:border-rose-400"><%= local_assigns[:ruby_filename] %></a>
91
- <span class="w-px h-11 bg-gradient-to-b from-neutral-600 to-neutral-700 transform rotate-[20deg] block ml-2"></span>
85
+ <span class="w-px h-11 bg-gradient-to-b from-indigo-400/30 to-indigo-500/20 transform rotate-[20deg] block ml-2"></span>
92
86
  </li>
93
87
  <% end %>
94
88
 
@@ -98,12 +92,12 @@
98
92
  @click.prevent="active = 'css'"
99
93
  :class="active == 'css' ? 'text-fuchsia-400 border-fuchsia-400' : 'border-transparent text-white/90'"
100
94
  class="-ml-2 pl-5 pr-3 py-3 font-mono text-sm border-b-2 hover:text-fuchsia-400 hover:border-fuchsia-400"><%= local_assigns[:css_filename] %></a>
101
- <span class="w-px h-11 bg-gradient-to-b from-neutral-600 to-neutral-700 transform rotate-[20deg] block ml-2"></span>
95
+ <span class="w-px h-11 bg-gradient-to-b from-indigo-400/30 to-indigo-500/20 transform rotate-[20deg] block ml-2"></span>
102
96
  </li>
103
97
  <% end %>
104
98
  </ul>
105
99
  </div>
106
- <div role="tabpanels" class="overflow-y-auto max-h-[650px] scrollbar scrollbar-track-neutral-950 scrollbar-thumb-neutral-500">
100
+ <div role="tabpanels" class="overflow-y-auto max-h-[650px] scrollbar scrollbar-track-[#292d3e] scrollbar-thumb-indigo-400/50">
107
101
  <% if content_for?(:html) %>
108
102
  <div role="tabpanel"
109
103
  x-show="active == 'html'"
@@ -132,20 +126,6 @@
132
126
  <pre><code data-railsui-code-target="snippet" data-railsui-clipboard-target="content" class="language-erb scrollbar"><%= erb_content.to_param.strip %></code></pre>
133
127
  </div>
134
128
  <% end %>
135
- <% if content_for(:haml) %>
136
- <div
137
- role="tabpanel"
138
- x-show="active == 'haml'"
139
- data-controller="railsui-clipboard"
140
- >
141
- <button data-action="click->railsui-clipboard#copy"
142
- class="bg-white/10 backdrop-blur-sm p-1 rounded-lg absolute right-2 top-2 hover:bg-gradient-to-br hover:to-sky-600 hover:from-sky-400 transition ease-in-out w-duration-200"
143
- type="button">
144
- <%= icon "clipboard", class: "stroke-current text-white select-none size-5" %>
145
- </button>
146
- <pre><code data-railsui-code-target="snippet" data-railsui-clipboard-target="content" class="language-haml scrollbar"><%= haml_content.to_param.strip %></code></pre>
147
- </div>
148
- <% end %>
149
129
  <% if content_for(:bash) %>
150
130
  <div
151
131
  role="tabpanel"
@@ -1,3 +1,3 @@
1
1
  module Railsui
2
- VERSION = "3.4.1"
2
+ VERSION = "3.4.3"
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: railsui
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.1
4
+ version: 3.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Leverenz
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2026-02-13 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: rails
@@ -65,7 +65,9 @@ dependencies:
65
65
  - - ">="
66
66
  - !ruby/object:Gem::Version
67
67
  version: '2.0'
68
- description: Professionally designed UI components and templates for Ruby on Rails.
68
+ description: Rails UI is the product UI system for Rails SaaS builders. Complete app
69
+ kits and the Rails-native components behind them, in clean ERB and Tailwind, so
70
+ you ship a finished product instead of a blank page.
69
71
  email:
70
72
  - railsui@justalever.com
71
73
  executables: []
@@ -1804,7 +1806,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1804
1806
  - !ruby/object:Gem::Version
1805
1807
  version: '0'
1806
1808
  requirements: []
1807
- rubygems_version: 3.6.5
1809
+ rubygems_version: 3.6.9
1808
1810
  specification_version: 4
1809
- summary: Plug and play UI for Rails
1811
+ summary: The product UI system for Rails SaaS builders
1810
1812
  test_files: []