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
@@ -1 +0,0 @@
1
- import{_ as t,c as a,o as s,ag as o}from"./chunks/framework.1L-BeKqY.js";const i="/assets/DevEnvironment.DaFcVfwP.png",n="/assets/dev-env-protocol.DysDAtnz.png",d="/assets/workspace-protocol.C0gXsoDb.png",g=JSON.parse('{"title":"Dev Environment","description":"","frontmatter":{},"headers":[],"relativePath":"dev-environment.md","filePath":"dev-environment.md"}'),r={name:"dev-environment.md"};function l(c,e,p,h,u,m){return s(),a("div",null,e[0]||(e[0]=[o("",48)]))}const y=t(r,[["render",l]]);export{g as __pageData,y as default};