plutonium 0.50.0 → 0.51.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.
- checksums.yaml +4 -4
- data/.claude/skills/plutonium/SKILL.md +85 -102
- data/.claude/skills/plutonium-app/SKILL.md +572 -0
- data/.claude/skills/plutonium-auth/SKILL.md +163 -300
- data/.claude/skills/plutonium-behavior/SKILL.md +838 -0
- data/.claude/skills/plutonium-resource/SKILL.md +1176 -0
- data/.claude/skills/plutonium-tenancy/SKILL.md +655 -0
- data/.claude/skills/plutonium-testing/SKILL.md +6 -5
- data/.claude/skills/plutonium-ui/SKILL.md +900 -0
- data/CHANGELOG.md +27 -2
- data/Rakefile +2 -1
- data/app/assets/plutonium.css +1 -11
- data/app/assets/plutonium.js +1009 -1214
- data/app/assets/plutonium.js.map +3 -3
- data/app/assets/plutonium.min.js +52 -51
- data/app/assets/plutonium.min.js.map +3 -3
- data/docs/.vitepress/config.ts +37 -27
- data/docs/getting-started/index.md +22 -29
- data/docs/getting-started/installation.md +37 -80
- data/docs/getting-started/tutorial/index.md +4 -5
- data/docs/guides/adding-resources.md +66 -377
- data/docs/guides/authentication.md +94 -463
- data/docs/guides/authorization.md +124 -370
- data/docs/guides/creating-packages.md +94 -296
- data/docs/guides/custom-actions.md +121 -441
- data/docs/guides/index.md +22 -42
- data/docs/guides/multi-tenancy.md +116 -187
- data/docs/guides/nested-resources.md +103 -431
- data/docs/guides/search-filtering.md +123 -240
- data/docs/guides/testing.md +5 -4
- data/docs/guides/theming.md +157 -407
- data/docs/guides/troubleshooting.md +5 -3
- data/docs/guides/user-invites.md +106 -425
- data/docs/guides/user-profile.md +76 -243
- data/docs/index.md +1 -1
- data/docs/reference/app/generators.md +517 -0
- data/docs/reference/app/index.md +158 -0
- data/docs/reference/app/packages.md +146 -0
- data/docs/reference/app/portals.md +377 -0
- data/docs/reference/auth/accounts.md +230 -0
- data/docs/reference/auth/index.md +88 -0
- data/docs/reference/auth/profile.md +185 -0
- data/docs/reference/behavior/controllers.md +395 -0
- data/docs/reference/behavior/index.md +22 -0
- data/docs/reference/behavior/interactions.md +341 -0
- data/docs/reference/behavior/policies.md +417 -0
- data/docs/reference/index.md +56 -49
- data/docs/reference/resource/actions.md +423 -0
- data/docs/reference/resource/definition.md +508 -0
- data/docs/reference/resource/index.md +50 -0
- data/docs/reference/resource/model.md +348 -0
- data/docs/reference/resource/query.md +305 -0
- data/docs/reference/tenancy/entity-scoping.md +361 -0
- data/docs/reference/tenancy/index.md +36 -0
- data/docs/reference/tenancy/invites.md +393 -0
- data/docs/reference/tenancy/nested-resources.md +267 -0
- data/docs/reference/testing/index.md +287 -0
- data/docs/reference/ui/assets.md +400 -0
- data/docs/reference/ui/components.md +165 -0
- data/docs/reference/ui/displays.md +104 -0
- data/docs/reference/ui/forms.md +284 -0
- data/docs/reference/ui/index.md +30 -0
- data/docs/reference/ui/layouts.md +106 -0
- data/docs/reference/ui/pages.md +189 -0
- data/docs/reference/ui/tables.md +117 -0
- data/docs/superpowers/specs/2026-05-09-typeahead-endpoint-design.md +203 -0
- data/docs/superpowers/specs/2026-05-12-skill-compaction-design.md +99 -0
- data/docs/superpowers/specs/2026-05-13-docs-restructure-design.md +186 -0
- data/gemfiles/rails_7.gemfile.lock +1 -1
- data/gemfiles/rails_8.0.gemfile.lock +1 -1
- data/gemfiles/rails_8.1.gemfile.lock +1 -1
- data/lib/generators/pu/core/update/update_generator.rb +0 -20
- data/lib/generators/pu/invites/install_generator.rb +1 -0
- data/lib/plutonium/definition/base.rb +1 -1
- data/lib/plutonium/definition/{views.rb → index_views.rb} +21 -20
- data/lib/plutonium/helpers/turbo_helper.rb +11 -0
- data/lib/plutonium/helpers/turbo_stream_actions_helper.rb +14 -0
- data/lib/plutonium/resource/controller.rb +1 -0
- data/lib/plutonium/resource/controllers/crud_actions.rb +19 -1
- data/lib/plutonium/resource/controllers/typeahead.rb +180 -0
- data/lib/plutonium/resource/policy.rb +7 -0
- data/lib/plutonium/routing/mapper_extensions.rb +15 -0
- data/lib/plutonium/ui/component/methods.rb +4 -0
- data/lib/plutonium/ui/form/base.rb +6 -2
- data/lib/plutonium/ui/form/components/json.rb +58 -0
- data/lib/plutonium/ui/form/components/resource_select.rb +62 -8
- data/lib/plutonium/ui/form/components/secure_association.rb +98 -22
- data/lib/plutonium/ui/form/concerns/typeahead_attributes.rb +83 -0
- data/lib/plutonium/ui/form/resource.rb +0 -4
- data/lib/plutonium/ui/grid/resource.rb +1 -1
- data/lib/plutonium/ui/layout/base.rb +1 -0
- data/lib/plutonium/ui/page/base.rb +0 -7
- data/lib/plutonium/ui/page/index.rb +4 -4
- data/lib/plutonium/ui/table/resource.rb +1 -1
- data/lib/plutonium/version.rb +1 -1
- data/lib/plutonium.rb +8 -0
- data/lib/tasks/release.rake +15 -1
- data/package.json +10 -10
- data/src/css/slim_select.css +4 -0
- data/src/js/controllers/slim_select_controller.js +61 -0
- data/src/js/turbo/turbo_actions.js +33 -0
- data/yarn.lock +553 -543
- metadata +44 -33
- data/.claude/skills/plutonium-assets/SKILL.md +0 -512
- data/.claude/skills/plutonium-controller/SKILL.md +0 -396
- data/.claude/skills/plutonium-create-resource/SKILL.md +0 -303
- data/.claude/skills/plutonium-definition/SKILL.md +0 -1223
- data/.claude/skills/plutonium-entity-scoping/SKILL.md +0 -317
- data/.claude/skills/plutonium-forms/SKILL.md +0 -465
- data/.claude/skills/plutonium-installation/SKILL.md +0 -331
- data/.claude/skills/plutonium-interaction/SKILL.md +0 -413
- data/.claude/skills/plutonium-invites/SKILL.md +0 -408
- data/.claude/skills/plutonium-model/SKILL.md +0 -440
- data/.claude/skills/plutonium-nested-resources/SKILL.md +0 -360
- data/.claude/skills/plutonium-package/SKILL.md +0 -198
- data/.claude/skills/plutonium-policy/SKILL.md +0 -456
- data/.claude/skills/plutonium-portal/SKILL.md +0 -410
- data/.claude/skills/plutonium-views/SKILL.md +0 -651
- data/docs/reference/assets/index.md +0 -496
- data/docs/reference/controller/index.md +0 -412
- data/docs/reference/definition/actions.md +0 -462
- data/docs/reference/definition/fields.md +0 -383
- data/docs/reference/definition/index.md +0 -326
- data/docs/reference/definition/query.md +0 -351
- data/docs/reference/generators/index.md +0 -648
- data/docs/reference/interaction/index.md +0 -449
- data/docs/reference/model/features.md +0 -248
- data/docs/reference/model/index.md +0 -218
- data/docs/reference/policy/index.md +0 -456
- data/docs/reference/portal/index.md +0 -379
- data/docs/reference/views/forms.md +0 -411
- data/docs/reference/views/index.md +0 -544
|
@@ -1,331 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: plutonium-installation
|
|
3
|
-
description: Use BEFORE installing Plutonium in a Rails app, running pu:core:install, or configuring initial Plutonium setup. Covers generators, gemfile, and initial config.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Plutonium Installation
|
|
7
|
-
|
|
8
|
-
## 🚨 Critical (read first)
|
|
9
|
-
- **Use the generators.** `pu:core:install`, `pu:rodauth:install`, `pu:pkg:portal`, `pu:res:scaffold`, `pu:res:conn` — never hand-write base controllers, policies, or layouts.
|
|
10
|
-
- **Use `base.rb`, not `plutonium.rb`, for existing apps.** The `plutonium.rb` template reruns the full bootstrap (dotenv, annotate, solid_*, assets) and clobbers git history. For any pre-existing app, use `base.rb`.
|
|
11
|
-
- **Pass `--dest`, `--force`, `--auth`, `--skip-bundle` for unattended runs** so generators don't block on prompts. See `plutonium` index for the full flag matrix.
|
|
12
|
-
- **Related skills:** `plutonium` (architecture overview), `plutonium-auth` (Rodauth setup), `plutonium-portal` (portal config), `plutonium-create-resource` (scaffolding resources).
|
|
13
|
-
|
|
14
|
-
## Quick checklist
|
|
15
|
-
|
|
16
|
-
Fresh install in a new Rails app:
|
|
17
|
-
|
|
18
|
-
1. Generate the Rails app with `rails new myapp -a propshaft -j esbuild -c tailwind -m https://radioactive-labs.github.io/plutonium-core/templates/plutonium.rb` (greenfield) OR `bin/rails app:template LOCATION=.../base.rb` (existing app).
|
|
19
|
-
2. Run `bundle install` if you added the gem manually.
|
|
20
|
-
3. Run `rails generate pu:core:install` to create base controllers, policies, definitions, and config.
|
|
21
|
-
4. Run `rails generate pu:rodauth:install` + `rails generate pu:rodauth:account user` for auth.
|
|
22
|
-
5. Run `rails generate pu:pkg:portal admin --auth=user` to create a portal.
|
|
23
|
-
6. Run `rails generate pu:res:scaffold Post title:string 'content:text?' --dest=main_app` for a first resource.
|
|
24
|
-
7. Run `rails db:migrate`.
|
|
25
|
-
8. Run `rails generate pu:res:conn Post --dest=admin_portal` to connect the resource.
|
|
26
|
-
9. Mount the portal in `config/routes.rb`: `mount AdminPortal::Engine, at: "/admin"`.
|
|
27
|
-
10. Start the server and visit `/admin`.
|
|
28
|
-
|
|
29
|
-
## New Rails App (Recommended)
|
|
30
|
-
|
|
31
|
-
Use the Rails template for a fully configured setup:
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
rails new myapp -a propshaft -j esbuild -c tailwind \
|
|
35
|
-
-m https://radioactive-labs.github.io/plutonium-core/templates/plutonium.rb
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
This sets up Rails with Propshaft, esbuild, TailwindCSS, and Plutonium in one command.
|
|
39
|
-
|
|
40
|
-
## Existing Rails App
|
|
41
|
-
|
|
42
|
-
> **⚠️ Use `base.rb`, not `plutonium.rb`.** The `plutonium.rb` template is for `rails new` only — it re-runs the full app bootstrap (dotenv, annotate, solid_*, assets) and creates generic "initial commit" commits that clobber history. For any pre-existing app, always use `base.rb`.
|
|
43
|
-
|
|
44
|
-
### Option 1: Rails Template
|
|
45
|
-
|
|
46
|
-
```bash
|
|
47
|
-
bin/rails app:template \
|
|
48
|
-
LOCATION=https://radioactive-labs.github.io/plutonium-core/templates/base.rb
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
### Option 2: Manual Installation
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
# Add to Gemfile
|
|
55
|
-
gem "plutonium"
|
|
56
|
-
|
|
57
|
-
# Install
|
|
58
|
-
bundle install
|
|
59
|
-
rails generate pu:core:install
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
## What Gets Generated
|
|
63
|
-
|
|
64
|
-
After `pu:core:install`:
|
|
65
|
-
|
|
66
|
-
```
|
|
67
|
-
app/
|
|
68
|
-
├── controllers/
|
|
69
|
-
│ ├── plutonium_controller.rb # Base controller
|
|
70
|
-
│ └── resource_controller.rb # Resource CRUD base
|
|
71
|
-
├── definitions/
|
|
72
|
-
│ └── resource_definition.rb # Definition base class
|
|
73
|
-
├── interactions/
|
|
74
|
-
│ └── resource_interaction.rb # Interaction base class
|
|
75
|
-
├── models/
|
|
76
|
-
│ └── resource_record.rb # Abstract model base
|
|
77
|
-
├── policies/
|
|
78
|
-
│ └── resource_policy.rb # Policy base class
|
|
79
|
-
└── views/
|
|
80
|
-
└── layouts/
|
|
81
|
-
└── resource.html.erb # Base layout
|
|
82
|
-
|
|
83
|
-
config/
|
|
84
|
-
├── initializers/
|
|
85
|
-
│ └── plutonium.rb # Configuration
|
|
86
|
-
└── packages.rb # Package loader
|
|
87
|
-
|
|
88
|
-
packages/
|
|
89
|
-
└── .keep
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
## Base Classes
|
|
93
|
-
|
|
94
|
-
### ResourceController
|
|
95
|
-
|
|
96
|
-
```ruby
|
|
97
|
-
class ResourceController < PlutoniumController
|
|
98
|
-
include Plutonium::Resource::Controller
|
|
99
|
-
# Provides: index, show, new, create, edit, update, destroy
|
|
100
|
-
# Plus: interactive actions, authorization, query handling
|
|
101
|
-
end
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
### ResourcePolicy
|
|
105
|
-
|
|
106
|
-
```ruby
|
|
107
|
-
class ResourcePolicy < Plutonium::Resource::Policy
|
|
108
|
-
def create?
|
|
109
|
-
true # Override with your logic
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
def read?
|
|
113
|
-
true
|
|
114
|
-
end
|
|
115
|
-
end
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
### ResourceDefinition
|
|
119
|
-
|
|
120
|
-
```ruby
|
|
121
|
-
class ResourceDefinition < Plutonium::Resource::Definition
|
|
122
|
-
# Add app-wide definition defaults here
|
|
123
|
-
end
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
### ResourceRecord
|
|
127
|
-
|
|
128
|
-
```ruby
|
|
129
|
-
class ResourceRecord < ApplicationRecord
|
|
130
|
-
self.abstract_class = true
|
|
131
|
-
# Models inherit from this for Plutonium features
|
|
132
|
-
end
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
## Authentication Setup
|
|
136
|
-
|
|
137
|
-
### Install Rodauth
|
|
138
|
-
|
|
139
|
-
```bash
|
|
140
|
-
rails generate pu:rodauth:install
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
### Create Account Types
|
|
144
|
-
|
|
145
|
-
```bash
|
|
146
|
-
# Basic user account
|
|
147
|
-
rails generate pu:rodauth:account user
|
|
148
|
-
|
|
149
|
-
# Admin with 2FA, lockout, audit logging
|
|
150
|
-
rails generate pu:rodauth:admin admin
|
|
151
|
-
|
|
152
|
-
# SaaS user with entity/organization (multi-tenant)
|
|
153
|
-
rails generate pu:saas:setup --user Customer --entity Organization
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
### Account Options
|
|
157
|
-
|
|
158
|
-
| Option | Description |
|
|
159
|
-
|--------|-------------|
|
|
160
|
-
| `--defaults` | Enable common features (login, logout, remember, reset_password) |
|
|
161
|
-
| `--kitchen_sink` | Enable all available features |
|
|
162
|
-
| `--no-allow-signup` | Disable public signup |
|
|
163
|
-
|
|
164
|
-
### Connect Auth to Controllers
|
|
165
|
-
|
|
166
|
-
```ruby
|
|
167
|
-
# app/controllers/resource_controller.rb
|
|
168
|
-
class ResourceController < PlutoniumController
|
|
169
|
-
include Plutonium::Resource::Controller
|
|
170
|
-
include Plutonium::Auth::Rodauth(:user) # Add this
|
|
171
|
-
end
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
## Creating Your First Resource
|
|
175
|
-
|
|
176
|
-
```bash
|
|
177
|
-
rails generate pu:res:scaffold Post user:belongs_to title:string content:text
|
|
178
|
-
rails db:migrate
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
## Creating a Portal
|
|
182
|
-
|
|
183
|
-
```bash
|
|
184
|
-
rails generate pu:pkg:portal admin
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
Select authentication when prompted:
|
|
188
|
-
- **Rodauth account** - Use existing auth
|
|
189
|
-
- **Public access** - No authentication
|
|
190
|
-
- **Bring your own** - Custom implementation
|
|
191
|
-
|
|
192
|
-
### Mount the Portal
|
|
193
|
-
|
|
194
|
-
```ruby
|
|
195
|
-
# config/routes.rb
|
|
196
|
-
Rails.application.routes.draw do
|
|
197
|
-
mount AdminPortal::Engine, at: "/admin"
|
|
198
|
-
end
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
### Connect Resources to Portal
|
|
202
|
-
|
|
203
|
-
```bash
|
|
204
|
-
rails generate pu:res:conn Post --dest=admin_portal
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
## Configuration
|
|
208
|
-
|
|
209
|
-
```ruby
|
|
210
|
-
# config/initializers/plutonium.rb
|
|
211
|
-
Plutonium.configure do |config|
|
|
212
|
-
config.load_defaults 1.0
|
|
213
|
-
|
|
214
|
-
# Page chrome. Default :modern (topbar + icon rail). Set :classic
|
|
215
|
-
# only when upgrading and you want to keep the legacy header + sidebar.
|
|
216
|
-
# config.shell = :classic
|
|
217
|
-
|
|
218
|
-
# Custom assets (optional)
|
|
219
|
-
# config.assets.stylesheet = "custom_stylesheet"
|
|
220
|
-
# config.assets.script = "custom_script"
|
|
221
|
-
# config.assets.logo = "custom_logo.png"
|
|
222
|
-
end
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
## Package System
|
|
226
|
-
|
|
227
|
-
Packages are loaded from `config/packages.rb`:
|
|
228
|
-
|
|
229
|
-
```ruby
|
|
230
|
-
Dir.glob(File.expand_path("../packages/**/lib/engine.rb", __dir__)) { |package| load package }
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
Create packages in `packages/` directory:
|
|
234
|
-
- **Feature packages** - Business logic (`rails g pu:pkg:package blogging`)
|
|
235
|
-
- **Portal packages** - Web interfaces (`rails g pu:pkg:portal admin`)
|
|
236
|
-
|
|
237
|
-
## Post-Installation Checklist
|
|
238
|
-
|
|
239
|
-
1. **Install core**
|
|
240
|
-
```bash
|
|
241
|
-
rails generate pu:core:install
|
|
242
|
-
```
|
|
243
|
-
|
|
244
|
-
2. **Setup authentication** (if needed)
|
|
245
|
-
```bash
|
|
246
|
-
rails generate pu:rodauth:install
|
|
247
|
-
rails generate pu:rodauth:account user
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
3. **Create a portal**
|
|
251
|
-
```bash
|
|
252
|
-
rails generate pu:pkg:portal admin
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
4. **Create resources**
|
|
256
|
-
```bash
|
|
257
|
-
rails generate pu:res:scaffold Post title:string content:text
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
5. **Connect resources to portal**
|
|
261
|
-
```bash
|
|
262
|
-
rails generate pu:res:conn Post --dest=admin_portal
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
6. **Run migrations**
|
|
266
|
-
```bash
|
|
267
|
-
rails db:migrate
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
7. **Mount portal** (add to `config/routes.rb`)
|
|
271
|
-
```ruby
|
|
272
|
-
mount AdminPortal::Engine, at: "/admin"
|
|
273
|
-
```
|
|
274
|
-
|
|
275
|
-
8. **Start server**
|
|
276
|
-
```bash
|
|
277
|
-
rails server
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
## Converting Existing Models
|
|
281
|
-
|
|
282
|
-
For models that already exist in your app:
|
|
283
|
-
|
|
284
|
-
1. Include the module:
|
|
285
|
-
```ruby
|
|
286
|
-
class Post < ApplicationRecord
|
|
287
|
-
include Plutonium::Resource::Record
|
|
288
|
-
end
|
|
289
|
-
```
|
|
290
|
-
|
|
291
|
-
2. Generate supporting files (skips model/migration):
|
|
292
|
-
```bash
|
|
293
|
-
rails g pu:res:scaffold Post
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
3. Connect to portal:
|
|
297
|
-
```bash
|
|
298
|
-
rails g pu:res:conn Post --dest=admin_portal
|
|
299
|
-
```
|
|
300
|
-
|
|
301
|
-
## Generator Reference
|
|
302
|
-
|
|
303
|
-
| Generator | Purpose |
|
|
304
|
-
|-----------|---------|
|
|
305
|
-
| `pu:core:install` | Initial Plutonium setup |
|
|
306
|
-
| `pu:rodauth:install` | Setup Rodauth authentication |
|
|
307
|
-
| `pu:rodauth:account NAME` | Create user account type |
|
|
308
|
-
| `pu:rodauth:admin NAME` | Create admin account with 2FA |
|
|
309
|
-
| `pu:saas:setup` | Create SaaS user + entity + membership |
|
|
310
|
-
| `pu:saas:user NAME` | Create SaaS user account |
|
|
311
|
-
| `pu:saas:entity NAME` | Create entity model |
|
|
312
|
-
| `pu:saas:membership` | Create membership join table |
|
|
313
|
-
| `pu:pkg:package NAME` | Create feature package |
|
|
314
|
-
| `pu:pkg:portal NAME` | Create portal package |
|
|
315
|
-
| `pu:res:scaffold NAME` | Create resource (model, policy, definition, controller) |
|
|
316
|
-
| `pu:res:conn NAME` | Connect resource to portal |
|
|
317
|
-
| `pu:eject:layout` | Eject layout files for customization |
|
|
318
|
-
| `pu:eject:shell` | Eject the topbar/sidebar partials so you can customize chrome per-portal |
|
|
319
|
-
| `pu:core:update` | Update the plutonium gem + npm package |
|
|
320
|
-
| `pu:skills:sync` | Sync Claude Code skills to project |
|
|
321
|
-
|
|
322
|
-
## Related Skills
|
|
323
|
-
|
|
324
|
-
- `plutonium` - Resource architecture overview
|
|
325
|
-
- `plutonium-auth` - Authentication setup and configuration
|
|
326
|
-
- `plutonium-package` - Feature and portal packages
|
|
327
|
-
- `plutonium-portal` - Portal configuration
|
|
328
|
-
- `plutonium-views` - Custom pages, layouts, and Phlex components
|
|
329
|
-
- `plutonium-assets` - TailwindCSS and custom styling
|
|
330
|
-
- `plutonium-create-resource` - Resource scaffold options
|
|
331
|
-
- `plutonium-portal` - Portal connection
|