brut 0.3.1 → 0.5.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.
Files changed (408) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +46 -0
  3. data/Gemfile.lock +1 -1
  4. data/assets/MetroIcon.graffle +0 -0
  5. data/brut-css/package-lock.json +2 -2
  6. data/brut-css/package.json +1 -1
  7. data/brut-css/src/css/flex.css +1 -1
  8. data/brut-css/src/docs/includes/body-and-header.html.ejs +1 -1
  9. data/brut-js/package-lock.json +2 -2
  10. data/brut-js/package.json +1 -1
  11. data/brut-js/specs/AjaxSubmit.spec.js +100 -7
  12. data/brut-js/specs/ConstraintViolationMessage.spec.js +1 -1
  13. data/brut-js/specs/ConstraintViolationMessages.spec.js +2 -2
  14. data/brut-js/specs/Form.spec.js +5 -5
  15. data/brut-js/src/AjaxSubmit.js +76 -40
  16. data/brut-js/src/ConstraintViolationMessage.js +3 -3
  17. data/brut-js/src/ConstraintViolationMessages.js +2 -2
  18. data/brutrb.com/adrs.md +1 -0
  19. data/brutrb.com/database-schema.md +22 -2
  20. data/brutrb.com/dev-environment.md +1 -0
  21. data/brutrb.com/form-constraints.md +2 -2
  22. data/brutrb.com/handlers.md +1 -1
  23. data/brutrb.com/i18n.md +2 -2
  24. data/brutrb.com/layouts.md +1 -1
  25. data/docs/404.html +2 -2
  26. data/docs/adrs.html +5 -5
  27. data/docs/ai.html +3 -3
  28. data/docs/api/Brut/BackEnd/SeedData.html +1 -1
  29. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server/FlushSpans.html +1 -1
  30. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server.html +1 -1
  31. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares.html +1 -1
  32. data/docs/api/Brut/BackEnd/Sidekiq.html +1 -1
  33. data/docs/api/Brut/BackEnd/Validators/FormValidator.html +1 -1
  34. data/docs/api/Brut/BackEnd/Validators.html +1 -1
  35. data/docs/api/Brut/BackEnd.html +1 -1
  36. data/docs/api/Brut/CLI/App.html +1 -1
  37. data/docs/api/Brut/CLI/AppRunner.html +1 -1
  38. data/docs/api/Brut/CLI/Apps/BuildAssets/All.html +2 -2
  39. data/docs/api/Brut/CLI/Apps/BuildAssets/CSS.html +6 -6
  40. data/docs/api/Brut/CLI/Apps/BuildAssets/Images.html +1 -1
  41. data/docs/api/Brut/CLI/Apps/BuildAssets/JS.html +6 -6
  42. data/docs/api/Brut/CLI/Apps/BuildAssets.html +2 -2
  43. data/docs/api/Brut/CLI/Apps/DB/Create.html +1 -1
  44. data/docs/api/Brut/CLI/Apps/DB/Drop.html +1 -1
  45. data/docs/api/Brut/CLI/Apps/DB/Migrate.html +1 -1
  46. data/docs/api/Brut/CLI/Apps/DB/NewMigration.html +6 -2
  47. data/docs/api/Brut/CLI/Apps/DB/Rebuild.html +1 -1
  48. data/docs/api/Brut/CLI/Apps/DB/Seed.html +1 -1
  49. data/docs/api/Brut/CLI/Apps/DB/Status.html +9 -9
  50. data/docs/api/Brut/CLI/Apps/DB.html +1 -1
  51. data/docs/api/Brut/CLI/Apps/DeployBase/GitChecks.html +1 -1
  52. data/docs/api/Brut/CLI/Apps/DeployBase.html +1 -1
  53. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy/Deploy.html +1 -1
  54. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy.html +1 -1
  55. data/docs/api/Brut/CLI/Apps/Scaffold/Action/Route.html +1 -1
  56. data/docs/api/Brut/CLI/Apps/Scaffold/Action.html +8 -12
  57. data/docs/api/Brut/CLI/Apps/Scaffold/Component.html +1 -1
  58. data/docs/api/Brut/CLI/Apps/Scaffold/CustomElementTest.html +5 -5
  59. data/docs/api/Brut/CLI/Apps/Scaffold/DbModel.html +384 -0
  60. data/docs/api/Brut/CLI/Apps/Scaffold/E2ETest.html +1 -1
  61. data/docs/api/Brut/CLI/Apps/Scaffold/Form.html +5 -5
  62. data/docs/api/Brut/CLI/Apps/Scaffold/Page/Route.html +1 -1
  63. data/docs/api/Brut/CLI/Apps/Scaffold/Page.html +1 -1
  64. data/docs/api/Brut/CLI/Apps/Scaffold/RoutesEditor.html +36 -36
  65. data/docs/api/Brut/CLI/Apps/Scaffold/Test.html +1 -1
  66. data/docs/api/Brut/CLI/Apps/Scaffold.html +2 -2
  67. data/docs/api/Brut/CLI/Apps/Test/Audit.html +1 -1
  68. data/docs/api/Brut/CLI/Apps/Test/E2e.html +1 -1
  69. data/docs/api/Brut/CLI/Apps/Test/JS.html +1 -1
  70. data/docs/api/Brut/CLI/Apps/Test/Run.html +1 -1
  71. data/docs/api/Brut/CLI/Apps/Test.html +1 -1
  72. data/docs/api/Brut/CLI/Apps.html +1 -1
  73. data/docs/api/Brut/CLI/Command.html +29 -31
  74. data/docs/api/Brut/CLI/Error.html +1 -1
  75. data/docs/api/Brut/CLI/ExecutionResults/Result.html +1 -1
  76. data/docs/api/Brut/CLI/ExecutionResults.html +1 -1
  77. data/docs/api/Brut/CLI/Executor.html +1 -1
  78. data/docs/api/Brut/CLI/InvalidOption.html +1 -1
  79. data/docs/api/Brut/CLI/Options.html +1 -1
  80. data/docs/api/Brut/CLI/Output.html +1 -1
  81. data/docs/api/Brut/CLI/SystemExecError.html +1 -1
  82. data/docs/api/Brut/CLI.html +1 -1
  83. data/docs/api/Brut/FactoryBot.html +1 -1
  84. data/docs/api/Brut/Framework/App.html +1 -1
  85. data/docs/api/Brut/Framework/Config.html +16 -2
  86. data/docs/api/Brut/Framework/Container.html +1 -1
  87. data/docs/api/Brut/Framework/Error.html +1 -1
  88. data/docs/api/Brut/Framework/Errors/AbstractMethod.html +1 -1
  89. data/docs/api/Brut/Framework/Errors/Bug.html +1 -1
  90. data/docs/api/Brut/Framework/Errors/MissingConfiguration.html +1 -1
  91. data/docs/api/Brut/Framework/Errors/MissingParameter.html +1 -1
  92. data/docs/api/Brut/Framework/Errors/NoClassForPath.html +1 -1
  93. data/docs/api/Brut/Framework/Errors/NotFound.html +1 -1
  94. data/docs/api/Brut/Framework/Errors/NotImplemented.html +1 -1
  95. data/docs/api/Brut/Framework/Errors.html +1 -1
  96. data/docs/api/Brut/Framework/FussyTypeEnforcement.html +1 -1
  97. data/docs/api/Brut/Framework/MCP.html +1 -1
  98. data/docs/api/Brut/Framework/ProjectEnvironment.html +1 -1
  99. data/docs/api/Brut/Framework.html +1 -1
  100. data/docs/api/Brut/FrontEnd/AssetPathResolver.html +1 -1
  101. data/docs/api/Brut/FrontEnd/Component/Helpers.html +86 -2
  102. data/docs/api/Brut/FrontEnd/Component.html +78 -9
  103. data/docs/api/Brut/FrontEnd/Components/ConstraintViolations.html +5 -5
  104. data/docs/api/Brut/FrontEnd/Components/FormTag.html +3 -3
  105. data/docs/api/Brut/FrontEnd/Components/I18nTranslations.html +12 -16
  106. data/docs/api/Brut/FrontEnd/Components/Input.html +3 -3
  107. data/docs/api/Brut/FrontEnd/Components/Inputs/CsrfToken.html +3 -3
  108. data/docs/api/Brut/FrontEnd/Components/Inputs/InputTag.html +3 -3
  109. data/docs/api/Brut/FrontEnd/Components/Inputs/RadioButton.html +3 -3
  110. data/docs/api/Brut/FrontEnd/Components/Inputs/SelectTagWithOptions.html +5 -5
  111. data/docs/api/Brut/FrontEnd/Components/Inputs/TextareaTag.html +3 -3
  112. data/docs/api/Brut/FrontEnd/Components/Inputs.html +1 -1
  113. data/docs/api/Brut/FrontEnd/Components/LocaleDetection.html +3 -3
  114. data/docs/api/Brut/FrontEnd/Components/PageIdentifier.html +3 -3
  115. data/docs/api/Brut/FrontEnd/Components/TimeTag.html +3 -3
  116. data/docs/api/Brut/FrontEnd/Components/Traceparent.html +3 -3
  117. data/docs/api/Brut/FrontEnd/Components.html +1 -1
  118. data/docs/api/Brut/FrontEnd/Download.html +1 -1
  119. data/docs/api/Brut/FrontEnd/Flash.html +1 -1
  120. data/docs/api/Brut/FrontEnd/Form.html +92 -20
  121. data/docs/api/Brut/FrontEnd/Forms/ConstraintViolation.html +1 -1
  122. data/docs/api/Brut/FrontEnd/Forms/Input/Color.html +1 -1
  123. data/docs/api/Brut/FrontEnd/Forms/Input/TimeOfDay.html +1 -1
  124. data/docs/api/Brut/FrontEnd/Forms/Input.html +1 -1
  125. data/docs/api/Brut/FrontEnd/Forms/InputDeclarations.html +1 -1
  126. data/docs/api/Brut/FrontEnd/Forms/InputDefinition.html +1 -1
  127. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInput.html +1 -1
  128. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInputDefinition.html +1 -1
  129. data/docs/api/Brut/FrontEnd/Forms/SelectInput.html +1 -1
  130. data/docs/api/Brut/FrontEnd/Forms/SelectInputDefinition.html +1 -1
  131. data/docs/api/Brut/FrontEnd/Forms/ValidityState.html +1 -1
  132. data/docs/api/Brut/FrontEnd/Forms.html +1 -1
  133. data/docs/api/Brut/FrontEnd/GenericResponse.html +1 -1
  134. data/docs/api/Brut/FrontEnd/Handler.html +1 -1
  135. data/docs/api/Brut/FrontEnd/Handlers/CspReportingHandler.html +1 -1
  136. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler/TraceParent.html +1 -1
  137. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler.html +1 -1
  138. data/docs/api/Brut/FrontEnd/Handlers/LocaleDetectionHandler.html +1 -1
  139. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler/Form.html +2 -2
  140. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler.html +1 -1
  141. data/docs/api/Brut/FrontEnd/Handlers.html +1 -1
  142. data/docs/api/Brut/FrontEnd/HandlingResults.html +1 -1
  143. data/docs/api/Brut/FrontEnd/HttpMethod.html +1 -1
  144. data/docs/api/Brut/FrontEnd/HttpStatus.html +1 -1
  145. data/docs/api/Brut/FrontEnd/InlineSvgLocator.html +1 -1
  146. data/docs/api/Brut/FrontEnd/Layout.html +3 -3
  147. data/docs/api/Brut/FrontEnd/Middleware.html +1 -1
  148. data/docs/api/Brut/FrontEnd/Middlewares/AnnotateBrutOwnedPaths.html +1 -1
  149. data/docs/api/Brut/FrontEnd/Middlewares/Favicon.html +1 -1
  150. data/docs/api/Brut/FrontEnd/Middlewares/OpenTelemetrySpan.html +1 -1
  151. data/docs/api/Brut/FrontEnd/Middlewares/ReloadApp.html +1 -1
  152. data/docs/api/Brut/FrontEnd/Middlewares.html +1 -1
  153. data/docs/api/Brut/FrontEnd/Page.html +31 -23
  154. data/docs/api/Brut/FrontEnd/Pages/MissingPage.html +3 -3
  155. data/docs/api/Brut/FrontEnd/Pages.html +1 -1
  156. data/docs/api/Brut/FrontEnd/RequestContext.html +1 -1
  157. data/docs/api/Brut/FrontEnd/RouteHook.html +1 -1
  158. data/docs/api/Brut/FrontEnd/RouteHooks/AgeFlash.html +1 -1
  159. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineScripts.html +1 -1
  160. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts/ReportOnly.html +1 -1
  161. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts.html +1 -1
  162. data/docs/api/Brut/FrontEnd/RouteHooks/LocaleDetection.html +1 -1
  163. data/docs/api/Brut/FrontEnd/RouteHooks/SetupRequestContext.html +1 -1
  164. data/docs/api/Brut/FrontEnd/RouteHooks.html +1 -1
  165. data/docs/api/Brut/FrontEnd/Routing/FormHandlerRoute.html +1 -1
  166. data/docs/api/Brut/FrontEnd/Routing/FormRoute.html +1 -1
  167. data/docs/api/Brut/FrontEnd/Routing/MissingForm.html +1 -1
  168. data/docs/api/Brut/FrontEnd/Routing/MissingHandler.html +1 -1
  169. data/docs/api/Brut/FrontEnd/Routing/MissingPage.html +1 -1
  170. data/docs/api/Brut/FrontEnd/Routing/MissingPath.html +1 -1
  171. data/docs/api/Brut/FrontEnd/Routing/PageRoute.html +1 -1
  172. data/docs/api/Brut/FrontEnd/Routing/Route.html +1 -1
  173. data/docs/api/Brut/FrontEnd/Routing.html +1 -1
  174. data/docs/api/Brut/FrontEnd/Session.html +1 -1
  175. data/docs/api/Brut/FrontEnd.html +1 -1
  176. data/docs/api/Brut/I18n/BaseMethods.html +1 -1
  177. data/docs/api/Brut/I18n/ForBackEnd.html +1 -1
  178. data/docs/api/Brut/I18n/ForCLI.html +1 -1
  179. data/docs/api/Brut/I18n/ForHTML.html +1 -1
  180. data/docs/api/Brut/I18n/HTTPAcceptLanguage/AlwaysEnglish.html +1 -1
  181. data/docs/api/Brut/I18n/HTTPAcceptLanguage.html +1 -1
  182. data/docs/api/Brut/I18n.html +1 -1
  183. data/docs/api/Brut/Instrumentation/LoggerSpanExporter.html +1 -1
  184. data/docs/api/Brut/Instrumentation/OpenTelemetry/NormalizedAttributes.html +1 -1
  185. data/docs/api/Brut/Instrumentation/OpenTelemetry/Span.html +1 -1
  186. data/docs/api/Brut/Instrumentation/OpenTelemetry.html +1 -1
  187. data/docs/api/Brut/Instrumentation.html +1 -1
  188. data/docs/api/Brut/SinatraHelpers/ClassMethods.html +13 -11
  189. data/docs/api/Brut/SinatraHelpers.html +1 -1
  190. data/docs/api/Brut/SpecSupport/ClockSupport.html +1 -1
  191. data/docs/api/Brut/SpecSupport/ComponentSupport.html +1 -1
  192. data/docs/api/Brut/SpecSupport/E2ETestServer.html +1 -1
  193. data/docs/api/Brut/SpecSupport/E2eSupport.html +1 -1
  194. data/docs/api/Brut/SpecSupport/EnhancedNode.html +1 -1
  195. data/docs/api/Brut/SpecSupport/FlashSupport.html +1 -1
  196. data/docs/api/Brut/SpecSupport/GeneralSupport/ClassMethods.html +1 -1
  197. data/docs/api/Brut/SpecSupport/GeneralSupport.html +1 -1
  198. data/docs/api/Brut/SpecSupport/HandlerSupport.html +1 -1
  199. data/docs/api/Brut/SpecSupport/Matchers/BeABug.html +1 -1
  200. data/docs/api/Brut/SpecSupport/Matchers/BePageFor.html +1 -1
  201. data/docs/api/Brut/SpecSupport/Matchers/BeRoutingFor.html +1 -1
  202. data/docs/api/Brut/SpecSupport/Matchers/HaveConstraintViolation.html +1 -1
  203. data/docs/api/Brut/SpecSupport/Matchers/HaveGenerated.html +1 -1
  204. data/docs/api/Brut/SpecSupport/Matchers/HaveHTMLAttribute.html +1 -1
  205. data/docs/api/Brut/SpecSupport/Matchers/HaveI18nString.html +1 -1
  206. data/docs/api/Brut/SpecSupport/Matchers/HaveLinkTo.html +1 -1
  207. data/docs/api/Brut/SpecSupport/Matchers/HaveRedirectedTo.html +1 -1
  208. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedHttpStatus.html +1 -1
  209. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedRackResponse.html +1 -1
  210. data/docs/api/Brut/SpecSupport/Matchers.html +1 -1
  211. data/docs/api/Brut/SpecSupport/RSpecSetup/OptionalSidekiqSupport.html +1 -1
  212. data/docs/api/Brut/SpecSupport/RSpecSetup.html +1 -1
  213. data/docs/api/Brut/SpecSupport/SessionSupport.html +1 -1
  214. data/docs/api/Brut/SpecSupport.html +1 -1
  215. data/docs/api/Brut.html +1 -1
  216. data/docs/api/Clock.html +1 -1
  217. data/docs/api/ModuleName.html +595 -0
  218. data/docs/api/RichString.html +1 -1
  219. data/docs/api/SemanticLogger/Appender/Async.html +1 -1
  220. data/docs/api/Sequel/Extensions/BrutInstrumentation.html +1 -1
  221. data/docs/api/Sequel/Extensions/BrutMigrations.html +1 -1
  222. data/docs/api/Sequel/Extensions.html +1 -1
  223. data/docs/api/Sequel/Plugins/CreatedAt/InstanceMethods.html +1 -1
  224. data/docs/api/Sequel/Plugins/CreatedAt.html +1 -1
  225. data/docs/api/Sequel/Plugins/ExternalId/ClassMethods.html +1 -1
  226. data/docs/api/Sequel/Plugins/ExternalId/InstanceMethods.html +1 -1
  227. data/docs/api/Sequel/Plugins/ExternalId.html +1 -1
  228. data/docs/api/Sequel/Plugins/FindBang/ClassMethods.html +1 -1
  229. data/docs/api/Sequel/Plugins/FindBang.html +1 -1
  230. data/docs/api/Sequel/Plugins.html +1 -1
  231. data/docs/api/Sequel.html +1 -1
  232. data/docs/api/_index.html +24 -12
  233. data/docs/api/class_list.html +1 -1
  234. data/docs/api/file.README.html +1 -1
  235. data/docs/api/index.html +1 -1
  236. data/docs/api/method_list.html +416 -328
  237. data/docs/api/top-level-namespace.html +2 -2
  238. data/docs/assets/{adrs.md.JRxZ5uYE.js → adrs.md.BxjHi9-8.js} +1 -1
  239. data/docs/assets/adrs.md.BxjHi9-8.lean.js +1 -0
  240. data/docs/assets/{app.C0n_5kBs.js → app.D6BuVHo9.js} +1 -1
  241. data/docs/assets/chunks/@localSearchIndexroot.COP2Bcmp.js +1 -0
  242. data/docs/assets/chunks/{VPLocalSearchBox.yICoU-Ly.js → VPLocalSearchBox.BpvHMbx6.js} +1 -1
  243. data/docs/assets/chunks/{theme.gMVDgzXI.js → theme.wlAOvi2f.js} +2 -2
  244. data/docs/assets/{components.md.DGVPNB9a.js → components.md.iLiv2E9X.js} +3 -3
  245. data/docs/assets/{configuration.md.DK3YrtYn.js → configuration.md.DmuAdsli.js} +1 -1
  246. data/docs/assets/{database-schema.md.CSYk6E6v.js → database-schema.md.C5gXexJi.js} +10 -3
  247. data/docs/assets/{database-schema.md.CSYk6E6v.lean.js → database-schema.md.C5gXexJi.lean.js} +1 -1
  248. data/docs/assets/{dev-environment.md.Dy6EldaM.js → dev-environment.md.DRH2D2-O.js} +3 -3
  249. data/docs/assets/dev-environment.md.DRH2D2-O.lean.js +1 -0
  250. data/docs/assets/{form-constraints.md.x5tNpTTI.js → form-constraints.md.DK5adCgM.js} +2 -2
  251. data/docs/assets/{forms.md.DwdQGwOK.js → forms.md.D8aa_qI-.js} +1 -1
  252. data/docs/assets/{getting-started.md.DuiTvmpG.js → getting-started.md.DLplsDUd.js} +3 -3
  253. data/docs/assets/{getting-started.md.DuiTvmpG.lean.js → getting-started.md.DLplsDUd.lean.js} +1 -1
  254. data/docs/assets/{handlers.md.Chyri6KA.js → handlers.md.h84MMB1R.js} +1 -1
  255. data/docs/assets/{i18n.md.xQhiGo1G.js → i18n.md.BAm9t9JJ.js} +1 -1
  256. data/docs/assets/{layouts.md.CJGDFY-m.js → layouts.md.CVGl9xIO.js} +1 -1
  257. data/docs/assets.html +3 -3
  258. data/docs/brut-css/brut.max.css +1 -1
  259. data/docs/brut-css/classes/appearances.html +1 -1
  260. data/docs/brut-css/classes/background-colors.html +1 -1
  261. data/docs/brut-css/classes/border-colors.html +1 -1
  262. data/docs/brut-css/classes/borders.html +1 -1
  263. data/docs/brut-css/classes/dimensions.html +1 -1
  264. data/docs/brut-css/classes/flex.html +3 -3
  265. data/docs/brut-css/classes/foreground-colors.html +1 -1
  266. data/docs/brut-css/classes/junk-drawer.html +1 -1
  267. data/docs/brut-css/classes/layout.html +1 -1
  268. data/docs/brut-css/classes/lists.html +1 -1
  269. data/docs/brut-css/classes/positioning.html +1 -1
  270. data/docs/brut-css/classes/spacings.html +1 -1
  271. data/docs/brut-css/classes/typography.html +1 -1
  272. data/docs/brut-css/customization/advanced-configuration.html +1 -1
  273. data/docs/brut-css/customization/breakpoints.html +1 -1
  274. data/docs/brut-css/customization/design-system.html +1 -1
  275. data/docs/brut-css/customization/pseudo-classes.html +1 -1
  276. data/docs/brut-css/getting-started/core-concepts.html +1 -1
  277. data/docs/brut-css/getting-started/installation.html +1 -1
  278. data/docs/brut-css/getting-started/overview.html +1 -1
  279. data/docs/brut-css/getting-started/simple-example.html +1 -1
  280. data/docs/brut-css/index.html +1 -1
  281. data/docs/brut-css/properties/colors.html +1 -1
  282. data/docs/brut-css/properties/spacings.html +1 -1
  283. data/docs/brut-css/properties/typography.html +1 -1
  284. data/docs/brut-js/api/AjaxSubmit.html +56 -7
  285. data/docs/brut-js/api/AjaxSubmit.js.html +77 -41
  286. data/docs/brut-js/api/Autosubmit.html +1 -1
  287. data/docs/brut-js/api/Autosubmit.js.html +1 -1
  288. data/docs/brut-js/api/BaseCustomElement.html +1 -1
  289. data/docs/brut-js/api/BaseCustomElement.js.html +1 -1
  290. data/docs/brut-js/api/BrutCustomElements.html +1 -1
  291. data/docs/brut-js/api/BufferedLogger.html +1 -1
  292. data/docs/brut-js/api/ConfirmSubmit.html +1 -1
  293. data/docs/brut-js/api/ConfirmSubmit.js.html +1 -1
  294. data/docs/brut-js/api/ConfirmationDialog.html +1 -1
  295. data/docs/brut-js/api/ConfirmationDialog.js.html +1 -1
  296. data/docs/brut-js/api/ConstraintViolationMessage.html +2 -2
  297. data/docs/brut-js/api/ConstraintViolationMessage.js.html +4 -4
  298. data/docs/brut-js/api/ConstraintViolationMessages.html +3 -3
  299. data/docs/brut-js/api/ConstraintViolationMessages.js.html +3 -3
  300. data/docs/brut-js/api/CopyToClipboard.html +1 -1
  301. data/docs/brut-js/api/CopyToClipboard.js.html +1 -1
  302. data/docs/brut-js/api/Form.html +1 -1
  303. data/docs/brut-js/api/Form.js.html +1 -1
  304. data/docs/brut-js/api/I18nTranslation.html +1 -1
  305. data/docs/brut-js/api/I18nTranslation.js.html +1 -1
  306. data/docs/brut-js/api/LocaleDetection.html +1 -1
  307. data/docs/brut-js/api/LocaleDetection.js.html +1 -1
  308. data/docs/brut-js/api/Logger.html +1 -1
  309. data/docs/brut-js/api/Logger.js.html +1 -1
  310. data/docs/brut-js/api/Message.html +1 -1
  311. data/docs/brut-js/api/Message.js.html +1 -1
  312. data/docs/brut-js/api/PrefixedLogger.html +1 -1
  313. data/docs/brut-js/api/RichString.html +1 -1
  314. data/docs/brut-js/api/RichString.js.html +1 -1
  315. data/docs/brut-js/api/Tabs.html +1 -1
  316. data/docs/brut-js/api/Tabs.js.html +1 -1
  317. data/docs/brut-js/api/Tracing.html +1 -1
  318. data/docs/brut-js/api/Tracing.js.html +1 -1
  319. data/docs/brut-js/api/external-CustomElementRegistry.html +1 -1
  320. data/docs/brut-js/api/external-Performance.html +1 -1
  321. data/docs/brut-js/api/external-Promise.html +1 -1
  322. data/docs/brut-js/api/external-ValidityState.html +1 -1
  323. data/docs/brut-js/api/external-Window.html +1 -1
  324. data/docs/brut-js/api/external-fetch.html +1 -1
  325. data/docs/brut-js/api/global.html +1 -1
  326. data/docs/brut-js/api/index.html +1 -1
  327. data/docs/brut-js/api/index.js.html +1 -1
  328. data/docs/brut-js/api/module-testing.html +1 -1
  329. data/docs/brut-js/api/testing.AssetMetadata.html +1 -1
  330. data/docs/brut-js/api/testing.AssetMetadataLoader.html +1 -1
  331. data/docs/brut-js/api/testing.CustomElementTest.html +1 -1
  332. data/docs/brut-js/api/testing.DOMCreator.html +1 -1
  333. data/docs/brut-js/api/testing_AssetMetadata.js.html +1 -1
  334. data/docs/brut-js/api/testing_AssetMetadataLoader.js.html +1 -1
  335. data/docs/brut-js/api/testing_CustomElementTest.js.html +1 -1
  336. data/docs/brut-js/api/testing_DOMCreator.js.html +1 -1
  337. data/docs/brut-js/api/testing_index.js.html +1 -1
  338. data/docs/brut-js.html +3 -3
  339. data/docs/business-logic.html +3 -3
  340. data/docs/cli.html +3 -3
  341. data/docs/components.html +7 -7
  342. data/docs/configuration.html +5 -5
  343. data/docs/css.html +3 -3
  344. data/docs/custom-element-tests.html +3 -3
  345. data/docs/database-access.html +3 -3
  346. data/docs/database-schema.html +12 -5
  347. data/docs/deployment.html +3 -3
  348. data/docs/dev-environment.html +5 -5
  349. data/docs/dir-structure.html +3 -3
  350. data/docs/doc-conventions.html +3 -3
  351. data/docs/end-to-end-tests.html +3 -3
  352. data/docs/features.html +3 -3
  353. data/docs/flash-and-session.html +3 -3
  354. data/docs/form-constraints.html +6 -6
  355. data/docs/forms.html +5 -5
  356. data/docs/getting-started.html +6 -6
  357. data/docs/handlers.html +5 -5
  358. data/docs/hashmap.json +1 -1
  359. data/docs/hooks.html +3 -3
  360. data/docs/i18n.html +5 -5
  361. data/docs/index.html +3 -3
  362. data/docs/instrumentation.html +3 -3
  363. data/docs/javascript.html +3 -3
  364. data/docs/jobs.html +3 -3
  365. data/docs/keyword-injection.html +3 -3
  366. data/docs/layouts.html +5 -5
  367. data/docs/lsp.html +3 -3
  368. data/docs/markdown-examples.html +3 -3
  369. data/docs/middleware.html +3 -3
  370. data/docs/overview.html +3 -3
  371. data/docs/pages.html +3 -3
  372. data/docs/recipes/alternate-layouts.html +3 -3
  373. data/docs/recipes/authentication.html +3 -3
  374. data/docs/recipes/blank-layouts.html +3 -3
  375. data/docs/recipes/custom-flash.html +3 -3
  376. data/docs/recipes/indexed-forms.html +3 -3
  377. data/docs/recipes/migrations.html +3 -3
  378. data/docs/recipes/text-field-component.html +3 -3
  379. data/docs/roadmap.html +3 -3
  380. data/docs/routes.html +3 -3
  381. data/docs/security.html +3 -3
  382. data/docs/seed-data.html +3 -3
  383. data/docs/space-time-continuum.html +3 -3
  384. data/docs/tutorial.html +3 -3
  385. data/docs/unit-tests.html +3 -3
  386. data/docs/why.html +3 -3
  387. data/lib/brut/cli/apps/scaffold.rb +77 -0
  388. data/lib/brut/cli/command.rb +1 -2
  389. data/lib/brut/framework/config.rb +7 -0
  390. data/lib/brut/front_end/component.rb +19 -0
  391. data/lib/brut/front_end/components/constraint_violations.rb +2 -2
  392. data/lib/brut/front_end/components/i18n_translations.rb +6 -10
  393. data/lib/brut/front_end/form.rb +5 -2
  394. data/lib/brut/front_end/page.rb +11 -7
  395. data/lib/brut/junk_drawer.rb +53 -0
  396. data/lib/brut/sinatra_helpers.rb +1 -0
  397. data/lib/brut/version.rb +1 -1
  398. metadata +30 -27
  399. data/docs/assets/adrs.md.JRxZ5uYE.lean.js +0 -1
  400. data/docs/assets/chunks/@localSearchIndexroot.BF2caq1f.js +0 -1
  401. data/docs/assets/dev-environment.md.Dy6EldaM.lean.js +0 -1
  402. /data/docs/assets/{components.md.DGVPNB9a.lean.js → components.md.iLiv2E9X.lean.js} +0 -0
  403. /data/docs/assets/{configuration.md.DK3YrtYn.lean.js → configuration.md.DmuAdsli.lean.js} +0 -0
  404. /data/docs/assets/{form-constraints.md.x5tNpTTI.lean.js → form-constraints.md.DK5adCgM.lean.js} +0 -0
  405. /data/docs/assets/{forms.md.DwdQGwOK.lean.js → forms.md.D8aa_qI-.lean.js} +0 -0
  406. /data/docs/assets/{handlers.md.Chyri6KA.lean.js → handlers.md.h84MMB1R.lean.js} +0 -0
  407. /data/docs/assets/{i18n.md.xQhiGo1G.lean.js → i18n.md.BAm9t9JJ.lean.js} +0 -0
  408. /data/docs/assets/{layouts.md.CJGDFY-m.lean.js → layouts.md.CVGl9xIO.lean.js} +0 -0
@@ -329,7 +329,7 @@ redirect to a non-GET.</p>
329
329
  </div>
330
330
 
331
331
  <div id="footer">
332
- Generated on Thu Jul 10 13:41:03 2025 by
332
+ Generated on Mon Jul 21 18:28:17 2025 by
333
333
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
334
334
  0.9.37 (ruby-3.4.4).
335
335
  </div>
@@ -651,7 +651,7 @@
651
651
  </div>
652
652
 
653
653
  <div id="footer">
654
- Generated on Thu Jul 10 13:41:04 2025 by
654
+ Generated on Mon Jul 21 18:28:18 2025 by
655
655
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
656
656
  0.9.37 (ruby-3.4.4).
657
657
  </div>
@@ -486,7 +486,7 @@ considered a valid HTTP status code</p>
486
486
  </div>
487
487
 
488
488
  <div id="footer">
489
- Generated on Thu Jul 10 13:41:04 2025 by
489
+ Generated on Mon Jul 21 18:28:18 2025 by
490
490
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
491
491
  0.9.37 (ruby-3.4.4).
492
492
  </div>
@@ -274,7 +274,7 @@
274
274
  </div>
275
275
 
276
276
  <div id="footer">
277
- Generated on Thu Jul 10 13:41:04 2025 by
277
+ Generated on Mon Jul 21 18:28:18 2025 by
278
278
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
279
279
  0.9.37 (ruby-3.4.4).
280
280
  </div>
@@ -170,7 +170,7 @@ implementation of <code>view_template</code>.</p>
170
170
 
171
171
 
172
172
  <h3 class="inherited">Methods inherited from <span class='object_link'><a href="Component.html" title="Brut::FrontEnd::Component (class)">Component</a></span></h3>
173
- <p class="inherited"><span class='object_link'><a href="Component.html#component_name-class_method" title="Brut::FrontEnd::Component.component_name (method)">component_name</a></span>, <span class='object_link'><a href="Component.html#component_name-instance_method" title="Brut::FrontEnd::Component#component_name (method)">#component_name</a></span></p>
173
+ <p class="inherited"><span class='object_link'><a href="Component.html#around_template-instance_method" title="Brut::FrontEnd::Component#around_template (method)">#around_template</a></span>, <span class='object_link'><a href="Component.html#component_name-class_method" title="Brut::FrontEnd::Component.component_name (method)">component_name</a></span>, <span class='object_link'><a href="Component.html#component_name-instance_method" title="Brut::FrontEnd::Component#component_name (method)">#component_name</a></span></p>
174
174
 
175
175
 
176
176
 
@@ -181,7 +181,7 @@ implementation of <code>view_template</code>.</p>
181
181
 
182
182
 
183
183
  <h3 class="inherited">Methods included from <span class='object_link'><a href="Component/Helpers.html" title="Brut::FrontEnd::Component::Helpers (module)">Component::Helpers</a></span></h3>
184
- <p class="inherited"><span class='object_link'><a href="Component/Helpers.html#global_component-instance_method" title="Brut::FrontEnd::Component::Helpers#global_component (method)">#global_component</a></span>, <span class='object_link'><a href="Component/Helpers.html#inline_svg-instance_method" title="Brut::FrontEnd::Component::Helpers#inline_svg (method)">#inline_svg</a></span></p>
184
+ <p class="inherited"><span class='object_link'><a href="Component/Helpers.html#entity-instance_method" title="Brut::FrontEnd::Component::Helpers#entity (method)">#entity</a></span>, <span class='object_link'><a href="Component/Helpers.html#global_component-instance_method" title="Brut::FrontEnd::Component::Helpers#global_component (method)">#global_component</a></span>, <span class='object_link'><a href="Component/Helpers.html#inline_svg-instance_method" title="Brut::FrontEnd::Component::Helpers#inline_svg (method)">#inline_svg</a></span></p>
185
185
 
186
186
 
187
187
 
@@ -308,7 +308,7 @@ inserted into the filename.</p>
308
308
  </div>
309
309
 
310
310
  <div id="footer">
311
- Generated on Thu Jul 10 13:41:04 2025 by
311
+ Generated on Mon Jul 21 18:28:17 2025 by
312
312
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
313
313
  0.9.37 (ruby-3.4.4).
314
314
  </div>
@@ -125,7 +125,7 @@
125
125
  </div>
126
126
 
127
127
  <div id="footer">
128
- Generated on Thu Jul 10 13:41:04 2025 by
128
+ Generated on Mon Jul 21 18:28:18 2025 by
129
129
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
130
130
  0.9.37 (ruby-3.4.4).
131
131
  </div>
@@ -278,7 +278,7 @@ represents one that Brut is managing.</p>
278
278
  </div>
279
279
 
280
280
  <div id="footer">
281
- Generated on Thu Jul 10 13:41:05 2025 by
281
+ Generated on Mon Jul 21 18:28:19 2025 by
282
282
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
283
283
  0.9.37 (ruby-3.4.4).
284
284
  </div>
@@ -282,7 +282,7 @@
282
282
  </div>
283
283
 
284
284
  <div id="footer">
285
- Generated on Thu Jul 10 13:41:04 2025 by
285
+ Generated on Mon Jul 21 18:28:18 2025 by
286
286
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
287
287
  0.9.37 (ruby-3.4.4).
288
288
  </div>
@@ -314,7 +314,7 @@
314
314
  </div>
315
315
 
316
316
  <div id="footer">
317
- Generated on Thu Jul 10 13:41:05 2025 by
317
+ Generated on Mon Jul 21 18:28:18 2025 by
318
318
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
319
319
  0.9.37 (ruby-3.4.4).
320
320
  </div>
@@ -366,7 +366,7 @@
366
366
  </div>
367
367
 
368
368
  <div id="footer">
369
- Generated on Thu Jul 10 13:41:05 2025 by
369
+ Generated on Mon Jul 21 18:28:18 2025 by
370
370
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
371
371
  0.9.37 (ruby-3.4.4).
372
372
  </div>
@@ -115,7 +115,7 @@
115
115
  </div>
116
116
 
117
117
  <div id="footer">
118
- Generated on Thu Jul 10 13:41:03 2025 by
118
+ Generated on Mon Jul 21 18:28:17 2025 by
119
119
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
120
120
  0.9.37 (ruby-3.4.4).
121
121
  </div>
@@ -350,7 +350,7 @@ values that Brut will pass in when creating your page object.</p>
350
350
 
351
351
 
352
352
  <h3 class="inherited">Methods inherited from <span class='object_link'><a href="Component.html" title="Brut::FrontEnd::Component (class)">Component</a></span></h3>
353
- <p class="inherited"><span class='object_link'><a href="Component.html#component_name-class_method" title="Brut::FrontEnd::Component.component_name (method)">component_name</a></span>, <span class='object_link'><a href="Component.html#component_name-instance_method" title="Brut::FrontEnd::Component#component_name (method)">#component_name</a></span></p>
353
+ <p class="inherited"><span class='object_link'><a href="Component.html#around_template-instance_method" title="Brut::FrontEnd::Component#around_template (method)">#around_template</a></span>, <span class='object_link'><a href="Component.html#component_name-class_method" title="Brut::FrontEnd::Component.component_name (method)">component_name</a></span>, <span class='object_link'><a href="Component.html#component_name-instance_method" title="Brut::FrontEnd::Component#component_name (method)">#component_name</a></span></p>
354
354
 
355
355
 
356
356
 
@@ -361,7 +361,7 @@ values that Brut will pass in when creating your page object.</p>
361
361
 
362
362
 
363
363
  <h3 class="inherited">Methods included from <span class='object_link'><a href="Component/Helpers.html" title="Brut::FrontEnd::Component::Helpers (module)">Component::Helpers</a></span></h3>
364
- <p class="inherited"><span class='object_link'><a href="Component/Helpers.html#global_component-instance_method" title="Brut::FrontEnd::Component::Helpers#global_component (method)">#global_component</a></span>, <span class='object_link'><a href="Component/Helpers.html#inline_svg-instance_method" title="Brut::FrontEnd::Component::Helpers#inline_svg (method)">#inline_svg</a></span></p>
364
+ <p class="inherited"><span class='object_link'><a href="Component/Helpers.html#entity-instance_method" title="Brut::FrontEnd::Component::Helpers#entity (method)">#entity</a></span>, <span class='object_link'><a href="Component/Helpers.html#global_component-instance_method" title="Brut::FrontEnd::Component::Helpers#global_component (method)">#global_component</a></span>, <span class='object_link'><a href="Component/Helpers.html#inline_svg-instance_method" title="Brut::FrontEnd::Component::Helpers#inline_svg (method)">#inline_svg</a></span></p>
365
365
 
366
366
 
367
367
 
@@ -444,10 +444,10 @@ values that Brut will pass in when creating your page object.</p>
444
444
  <pre class="lines">
445
445
 
446
446
 
447
- 70</pre>
447
+ 74</pre>
448
448
  </td>
449
449
  <td>
450
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/page.rb', line 70</span>
450
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/page.rb', line 74</span>
451
451
 
452
452
  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_page_name'>page_name</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span></pre>
453
453
  </td>
@@ -550,19 +550,27 @@ calls to possibly render the page.</p>
550
550
  48
551
551
  49
552
552
  50
553
- 51</pre>
553
+ 51
554
+ 52
555
+ 53
556
+ 54
557
+ 55</pre>
554
558
  </td>
555
559
  <td>
556
560
  <pre class="code"><span class="info file"># File 'lib/brut/front_end/page.rb', line 42</span>
557
561
 
558
562
  <span class='kw'>def</span> <span class='id identifier rubyid_handle!'>handle!</span>
559
- <span class='kw'>case</span> <span class='id identifier rubyid_before_generate'>before_generate</span>
560
- <span class='kw'>in</span> <span class='const'>URI</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_uri'>uri</span>
561
- <span class='id identifier rubyid_uri'>uri</span>
562
- <span class='kw'>in</span> <span class='const'><span class='object_link'><a href="../../Brut.html" title="Brut (module)">Brut</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../FrontEnd.html" title="Brut::FrontEnd (module)">FrontEnd</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="HttpStatus.html" title="Brut::FrontEnd::HttpStatus (class)">HttpStatus</a></span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_http_status'>http_status</span>
563
- <span class='id identifier rubyid_http_status'>http_status</span>
564
- <span class='kw'>else</span>
565
- <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span>
563
+ <span class='const'><span class='object_link'><a href="../../Brut.html" title="Brut (module)">Brut</a></span></span><span class='period'>.</span><span class='id identifier rubyid_container'><span class='object_link'><a href="../../Brut.html#container-class_method" title="Brut.container (method)">container</a></span></span><span class='period'>.</span><span class='id identifier rubyid_instrumentation'>instrumentation</span><span class='period'>.</span><span class='id identifier rubyid_span'>span</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>#handle!</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_span'>span</span><span class='op'>|</span>
564
+ <span class='kw'>case</span> <span class='id identifier rubyid_before_generate'>before_generate</span>
565
+ <span class='kw'>in</span> <span class='const'>URI</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_uri'>uri</span>
566
+ <span class='id identifier rubyid_uri'>uri</span>
567
+ <span class='kw'>in</span> <span class='const'><span class='object_link'><a href="../../Brut.html" title="Brut (module)">Brut</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../FrontEnd.html" title="Brut::FrontEnd (module)">FrontEnd</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="HttpStatus.html" title="Brut::FrontEnd::HttpStatus (class)">HttpStatus</a></span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_http_status'>http_status</span>
568
+ <span class='id identifier rubyid_http_status'>http_status</span>
569
+ <span class='kw'>else</span>
570
+ <span class='const'><span class='object_link'><a href="../../Brut.html" title="Brut (module)">Brut</a></span></span><span class='period'>.</span><span class='id identifier rubyid_container'><span class='object_link'><a href="../../Brut.html#container-class_method" title="Brut.container (method)">container</a></span></span><span class='period'>.</span><span class='id identifier rubyid_instrumentation'>instrumentation</span><span class='period'>.</span><span class='id identifier rubyid_span'>span</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>#handle</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_span'>span</span><span class='op'>|</span>
571
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span>
572
+ <span class='kw'>end</span>
573
+ <span class='kw'>end</span>
566
574
  <span class='kw'>end</span>
567
575
  <span class='kw'>end</span></pre>
568
576
  </td>
@@ -662,10 +670,10 @@ layouts.</li>
662
670
  <pre class="lines">
663
671
 
664
672
 
665
- 73</pre>
673
+ 77</pre>
666
674
  </td>
667
675
  <td>
668
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/page.rb', line 73</span>
676
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/page.rb', line 77</span>
669
677
 
670
678
  <span class='kw'>def</span> <span class='id identifier rubyid_page_name'>page_name</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_page_name'>page_name</span></pre>
671
679
  </td>
@@ -701,10 +709,10 @@ do here. The only difference is that this will all be rendered in the context of
701
709
  <pre class="lines">
702
710
 
703
711
 
704
- 57</pre>
712
+ 61</pre>
705
713
  </td>
706
714
  <td>
707
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/page.rb', line 57</span>
715
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/page.rb', line 61</span>
708
716
 
709
717
  <span class='kw'>def</span> <span class='id identifier rubyid_page_template'>page_template</span> <span class='op'>=</span> <span class='id identifier rubyid_abstract_method!'>abstract_method!</span></pre>
710
718
  </td>
@@ -739,14 +747,14 @@ inside.</p>
739
747
  <pre class="lines">
740
748
 
741
749
 
742
- 62
743
- 63
744
- 64
745
- 65
746
- 66</pre>
750
+ 66
751
+ 67
752
+ 68
753
+ 69
754
+ 70</pre>
747
755
  </td>
748
756
  <td>
749
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/page.rb', line 62</span>
757
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/page.rb', line 66</span>
750
758
 
751
759
  <span class='kw'>def</span> <span class='id identifier rubyid_view_template'>view_template</span>
752
760
  <span class='id identifier rubyid_with_layout'>with_layout</span> <span class='kw'>do</span>
@@ -763,7 +771,7 @@ inside.</p>
763
771
  </div>
764
772
 
765
773
  <div id="footer">
766
- Generated on Thu Jul 10 13:41:04 2025 by
774
+ Generated on Mon Jul 21 18:28:17 2025 by
767
775
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
768
776
  0.9.37 (ruby-3.4.4).
769
777
  </div>
@@ -383,7 +383,7 @@ next steps to take.</p>
383
383
 
384
384
 
385
385
  <h3 class="inherited">Methods inherited from <span class='object_link'><a href="../Component.html" title="Brut::FrontEnd::Component (class)">Component</a></span></h3>
386
- <p class="inherited"><span class='object_link'><a href="../Component.html#component_name-class_method" title="Brut::FrontEnd::Component.component_name (method)">component_name</a></span>, <span class='object_link'><a href="../Component.html#component_name-instance_method" title="Brut::FrontEnd::Component#component_name (method)">#component_name</a></span></p>
386
+ <p class="inherited"><span class='object_link'><a href="../Component.html#around_template-instance_method" title="Brut::FrontEnd::Component#around_template (method)">#around_template</a></span>, <span class='object_link'><a href="../Component.html#component_name-class_method" title="Brut::FrontEnd::Component.component_name (method)">component_name</a></span>, <span class='object_link'><a href="../Component.html#component_name-instance_method" title="Brut::FrontEnd::Component#component_name (method)">#component_name</a></span></p>
387
387
 
388
388
 
389
389
 
@@ -394,7 +394,7 @@ next steps to take.</p>
394
394
 
395
395
 
396
396
  <h3 class="inherited">Methods included from <span class='object_link'><a href="../Component/Helpers.html" title="Brut::FrontEnd::Component::Helpers (module)">Component::Helpers</a></span></h3>
397
- <p class="inherited"><span class='object_link'><a href="../Component/Helpers.html#global_component-instance_method" title="Brut::FrontEnd::Component::Helpers#global_component (method)">#global_component</a></span>, <span class='object_link'><a href="../Component/Helpers.html#inline_svg-instance_method" title="Brut::FrontEnd::Component::Helpers#inline_svg (method)">#inline_svg</a></span></p>
397
+ <p class="inherited"><span class='object_link'><a href="../Component/Helpers.html#entity-instance_method" title="Brut::FrontEnd::Component::Helpers#entity (method)">#entity</a></span>, <span class='object_link'><a href="../Component/Helpers.html#global_component-instance_method" title="Brut::FrontEnd::Component::Helpers#global_component (method)">#global_component</a></span>, <span class='object_link'><a href="../Component/Helpers.html#inline_svg-instance_method" title="Brut::FrontEnd::Component::Helpers#inline_svg (method)">#inline_svg</a></span></p>
398
398
 
399
399
 
400
400
 
@@ -787,7 +787,7 @@ next steps to take.</p>
787
787
  </div>
788
788
 
789
789
  <div id="footer">
790
- Generated on Thu Jul 10 13:41:04 2025 by
790
+ Generated on Mon Jul 21 18:28:18 2025 by
791
791
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
792
792
  0.9.37 (ruby-3.4.4).
793
793
  </div>
@@ -115,7 +115,7 @@
115
115
  </div>
116
116
 
117
117
  <div id="footer">
118
- Generated on Thu Jul 10 13:41:03 2025 by
118
+ Generated on Mon Jul 21 18:28:17 2025 by
119
119
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
120
120
  0.9.37 (ruby-3.4.4).
121
121
  </div>
@@ -1302,7 +1302,7 @@ not present in this <code>RequestContext</code>.</p>
1302
1302
  </div>
1303
1303
 
1304
1304
  <div id="footer">
1305
- Generated on Thu Jul 10 13:41:04 2025 by
1305
+ Generated on Mon Jul 21 18:28:18 2025 by
1306
1306
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1307
1307
  0.9.37 (ruby-3.4.4).
1308
1308
  </div>
@@ -414,7 +414,7 @@ determine what information is avaiable.</p>
414
414
  </div>
415
415
 
416
416
  <div id="footer">
417
- Generated on Thu Jul 10 13:41:04 2025 by
417
+ Generated on Mon Jul 21 18:28:18 2025 by
418
418
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
419
419
  0.9.37 (ruby-3.4.4).
420
420
  </div>
@@ -232,7 +232,7 @@
232
232
  </div>
233
233
 
234
234
  <div id="footer">
235
- Generated on Thu Jul 10 13:41:04 2025 by
235
+ Generated on Mon Jul 21 18:28:18 2025 by
236
236
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
237
237
  0.9.37 (ruby-3.4.4).
238
238
  </div>
@@ -239,7 +239,7 @@ by the temporary use of inline styles.</p>
239
239
  </div>
240
240
 
241
241
  <div id="footer">
242
- Generated on Thu Jul 10 13:41:05 2025 by
242
+ Generated on Mon Jul 21 18:28:19 2025 by
243
243
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
244
244
  0.9.37 (ruby-3.4.4).
245
245
  </div>
@@ -254,7 +254,7 @@ This is useful for existing apps where you want to migrate to a more secure poli
254
254
  </div>
255
255
 
256
256
  <div id="footer">
257
- Generated on Thu Jul 10 13:41:05 2025 by
257
+ Generated on Mon Jul 21 18:28:19 2025 by
258
258
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
259
259
  0.9.37 (ruby-3.4.4).
260
260
  </div>
@@ -251,7 +251,7 @@
251
251
  </div>
252
252
 
253
253
  <div id="footer">
254
- Generated on Thu Jul 10 13:41:05 2025 by
254
+ Generated on Mon Jul 21 18:28:19 2025 by
255
255
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
256
256
  0.9.37 (ruby-3.4.4).
257
257
  </div>
@@ -274,7 +274,7 @@ Ruby's <code>I18n</code> to use it. This will also store the value in the sessi
274
274
  </div>
275
275
 
276
276
  <div id="footer">
277
- Generated on Thu Jul 10 13:41:05 2025 by
277
+ Generated on Mon Jul 21 18:28:18 2025 by
278
278
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
279
279
  0.9.37 (ruby-3.4.4).
280
280
  </div>
@@ -242,7 +242,7 @@ and strings provided by Rack.</p>
242
242
  </div>
243
243
 
244
244
  <div id="footer">
245
- Generated on Thu Jul 10 13:41:05 2025 by
245
+ Generated on Mon Jul 21 18:28:19 2025 by
246
246
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
247
247
  0.9.37 (ruby-3.4.4).
248
248
  </div>
@@ -105,7 +105,7 @@
105
105
  </div>
106
106
 
107
107
  <div id="footer">
108
- Generated on Thu Jul 10 13:41:03 2025 by
108
+ Generated on Mon Jul 21 18:28:17 2025 by
109
109
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
110
110
  0.9.37 (ruby-3.4.4).
111
111
  </div>
@@ -217,7 +217,7 @@
217
217
  </div>
218
218
 
219
219
  <div id="footer">
220
- Generated on Thu Jul 10 13:41:04 2025 by
220
+ Generated on Mon Jul 21 18:28:18 2025 by
221
221
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
222
222
  0.9.37 (ruby-3.4.4).
223
223
  </div>
@@ -295,7 +295,7 @@
295
295
  </div>
296
296
 
297
297
  <div id="footer">
298
- Generated on Thu Jul 10 13:41:04 2025 by
298
+ Generated on Mon Jul 21 18:28:18 2025 by
299
299
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
300
300
  0.9.37 (ruby-3.4.4).
301
301
  </div>
@@ -314,7 +314,7 @@
314
314
  </div>
315
315
 
316
316
  <div id="footer">
317
- Generated on Thu Jul 10 13:41:04 2025 by
317
+ Generated on Mon Jul 21 18:28:18 2025 by
318
318
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
319
319
  0.9.37 (ruby-3.4.4).
320
320
  </div>
@@ -309,7 +309,7 @@
309
309
  </div>
310
310
 
311
311
  <div id="footer">
312
- Generated on Thu Jul 10 13:41:04 2025 by
312
+ Generated on Mon Jul 21 18:28:18 2025 by
313
313
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
314
314
  0.9.37 (ruby-3.4.4).
315
315
  </div>
@@ -305,7 +305,7 @@
305
305
  </div>
306
306
 
307
307
  <div id="footer">
308
- Generated on Thu Jul 10 13:41:04 2025 by
308
+ Generated on Mon Jul 21 18:28:18 2025 by
309
309
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
310
310
  0.9.37 (ruby-3.4.4).
311
311
  </div>
@@ -305,7 +305,7 @@
305
305
  </div>
306
306
 
307
307
  <div id="footer">
308
- Generated on Thu Jul 10 13:41:04 2025 by
308
+ Generated on Mon Jul 21 18:28:18 2025 by
309
309
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
310
310
  0.9.37 (ruby-3.4.4).
311
311
  </div>
@@ -317,7 +317,7 @@
317
317
  </div>
318
318
 
319
319
  <div id="footer">
320
- Generated on Thu Jul 10 13:41:04 2025 by
320
+ Generated on Mon Jul 21 18:28:18 2025 by
321
321
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
322
322
  0.9.37 (ruby-3.4.4).
323
323
  </div>
@@ -751,7 +751,7 @@
751
751
  </div>
752
752
 
753
753
  <div id="footer">
754
- Generated on Thu Jul 10 13:41:04 2025 by
754
+ Generated on Mon Jul 21 18:28:18 2025 by
755
755
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
756
756
  0.9.37 (ruby-3.4.4).
757
757
  </div>
@@ -917,7 +917,7 @@
917
917
  </div>
918
918
 
919
919
  <div id="footer">
920
- Generated on Thu Jul 10 13:41:04 2025 by
920
+ Generated on Mon Jul 21 18:28:18 2025 by
921
921
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
922
922
  0.9.37 (ruby-3.4.4).
923
923
  </div>
@@ -1185,7 +1185,7 @@ the following logic:</p>
1185
1185
  </div>
1186
1186
 
1187
1187
  <div id="footer">
1188
- Generated on Thu Jul 10 13:41:04 2025 by
1188
+ Generated on Mon Jul 21 18:28:18 2025 by
1189
1189
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1190
1190
  0.9.37 (ruby-3.4.4).
1191
1191
  </div>
@@ -124,7 +124,7 @@ JavaScript and CSS, and processing form submissions. It contrasts to
124
124
  </div>
125
125
 
126
126
  <div id="footer">
127
- Generated on Thu Jul 10 13:41:03 2025 by
127
+ Generated on Mon Jul 21 18:28:17 2025 by
128
128
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
129
129
  0.9.37 (ruby-3.4.4).
130
130
  </div>
@@ -921,7 +921,7 @@ has pluralizations and no count: was given</p>
921
921
  </div>
922
922
 
923
923
  <div id="footer">
924
- Generated on Thu Jul 10 13:41:03 2025 by
924
+ Generated on Mon Jul 21 18:28:17 2025 by
925
925
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
926
926
  0.9.37 (ruby-3.4.4).
927
927
  </div>
@@ -292,7 +292,7 @@ their values are not necessarily HTML-escaped.</p>
292
292
  </div>
293
293
 
294
294
  <div id="footer">
295
- Generated on Thu Jul 10 13:41:03 2025 by
295
+ Generated on Mon Jul 21 18:28:17 2025 by
296
296
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
297
297
  0.9.37 (ruby-3.4.4).
298
298
  </div>
@@ -292,7 +292,7 @@ their values are not necessarily HTML-escaped.</p>
292
292
  </div>
293
293
 
294
294
  <div id="footer">
295
- Generated on Thu Jul 10 13:41:03 2025 by
295
+ Generated on Mon Jul 21 18:28:17 2025 by
296
296
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
297
297
  0.9.37 (ruby-3.4.4).
298
298
  </div>
@@ -286,7 +286,7 @@ this string in a Phlex view, you <em>must</em> call <code>#raw</code> and pass i
286
286
  </div>
287
287
 
288
288
  <div id="footer">
289
- Generated on Thu Jul 10 13:41:03 2025 by
289
+ Generated on Mon Jul 21 18:28:17 2025 by
290
290
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
291
291
  0.9.37 (ruby-3.4.4).
292
292
  </div>
@@ -306,7 +306,7 @@ to replace this with a known value later on.</p>
306
306
  </div>
307
307
 
308
308
  <div id="footer">
309
- Generated on Thu Jul 10 13:41:04 2025 by
309
+ Generated on Mon Jul 21 18:28:18 2025 by
310
310
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
311
311
  0.9.37 (ruby-3.4.4).
312
312
  </div>
@@ -920,7 +920,7 @@ In general, this returns true if the values came from the Accept-Language header
920
920
  </div>
921
921
 
922
922
  <div id="footer">
923
- Generated on Thu Jul 10 13:41:04 2025 by
923
+ Generated on Mon Jul 21 18:28:18 2025 by
924
924
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
925
925
  0.9.37 (ruby-3.4.4).
926
926
  </div>
@@ -117,7 +117,7 @@
117
117
  </div>
118
118
 
119
119
  <div id="footer">
120
- Generated on Thu Jul 10 13:41:03 2025 by
120
+ Generated on Mon Jul 21 18:28:17 2025 by
121
121
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
122
122
  0.9.37 (ruby-3.4.4).
123
123
  </div>
@@ -425,7 +425,7 @@ log spans in a more traditional log-style format.</p>
425
425
  </div>
426
426
 
427
427
  <div id="footer">
428
- Generated on Thu Jul 10 13:41:05 2025 by
428
+ Generated on Mon Jul 21 18:28:18 2025 by
429
429
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
430
430
  0.9.37 (ruby-3.4.4).
431
431
  </div>
@@ -276,7 +276,7 @@
276
276
  </div>
277
277
 
278
278
  <div id="footer">
279
- Generated on Thu Jul 10 13:41:04 2025 by
279
+ Generated on Mon Jul 21 18:28:18 2025 by
280
280
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
281
281
  0.9.37 (ruby-3.4.4).
282
282
  </div>