practical 0.1.0 → 3.0.0.pre.alpha1

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 (78) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -4
  3. data/app/components/practical/views/flash_messages_component.rb +0 -1
  4. data/app/components/practical/views/form/fallback_errors_section_component.rb +5 -3
  5. data/app/components/practical/views/form/option_label_component.rb +0 -1
  6. data/app/components/practical/views/navigation/breadcrumb_item_component.rb +0 -1
  7. data/app/components/practical/views/navigation/breadcrumbs_component.rb +2 -1
  8. data/app/{controllers/concerns/practical/auth/passkeys → concerns/practical/auth/passkeys/controllers}/emergency_registrations.rb +2 -2
  9. data/app/{controllers/concerns/practical/auth/passkeys → concerns/practical/auth/passkeys/controllers}/web_authn_debug_context.rb +1 -1
  10. data/app/concerns/practical/memberships/controllers/membership_invitations/register_with_passkey.rb +92 -0
  11. data/app/lib/practical/forms/datatables/base.rb +80 -0
  12. data/app/lib/practical/loaders/base.rb +44 -0
  13. data/app/lib/practical/relation_builders/base.rb +35 -0
  14. data/app/lib/practical/test/shared/attachment/models/attachment/base.rb +123 -0
  15. data/app/lib/practical/test/shared/attachment/models/attachment/for_organization.rb +39 -0
  16. data/app/lib/practical/test/shared/attachment/models/organization/has_attachments.rb +12 -0
  17. data/app/lib/practical/test/shared/auth/passkeys/controllers/emergency_registration/base.rb +9 -6
  18. data/app/lib/practical/test/shared/auth/passkeys/controllers/emergency_registration/cross_pollination.rb +49 -0
  19. data/app/lib/practical/test/shared/auth/passkeys/controllers/passkey_management/base.rb +508 -0
  20. data/app/lib/practical/test/shared/auth/passkeys/controllers/reauthentication/base.rb +27 -9
  21. data/app/lib/practical/test/shared/auth/passkeys/controllers/reauthentication/cross_pollination.rb +19 -0
  22. data/app/lib/practical/test/shared/auth/passkeys/controllers/registrations/self_destroy.rb +26 -8
  23. data/app/lib/practical/test/shared/auth/passkeys/controllers/registrations/self_signup.rb +3 -2
  24. data/app/lib/practical/test/shared/auth/passkeys/controllers/registrations/update.rb +55 -19
  25. data/app/lib/practical/test/shared/auth/passkeys/controllers/sessions/cross_pollination.rb +29 -0
  26. data/app/lib/practical/test/shared/auth/passkeys/forms/emergency_registration.rb +0 -1
  27. data/app/lib/practical/test/shared/auth/passkeys/models/{passkey.rb → passkey/base.rb} +1 -1
  28. data/app/lib/practical/test/shared/auth/passkeys/models/passkey/emergency_registration.rb +23 -0
  29. data/app/lib/practical/test/shared/auth/passkeys/models/{resource_with_passkeys.rb → resource_with_passkeys/base.rb} +1 -1
  30. data/app/lib/practical/test/shared/auth/passkeys/models/resource_with_passkeys/emergency_registration.rb +41 -0
  31. data/app/lib/practical/test/shared/memberships/controllers/membership_invitations/base.rb +165 -0
  32. data/app/lib/practical/test/shared/memberships/controllers/membership_invitations/register_with_passkey.rb +417 -0
  33. data/app/lib/practical/test/shared/memberships/controllers/organization/membership.rb +400 -0
  34. data/app/lib/practical/test/shared/memberships/controllers/organization/membership_invitation.rb +148 -0
  35. data/app/lib/practical/test/shared/memberships/controllers/user/membership.rb +119 -0
  36. data/app/lib/practical/test/shared/memberships/controllers/user/membership_invitation.rb +57 -0
  37. data/app/lib/practical/test/shared/memberships/forms/create_new_user_with_membership_invitation.rb +197 -0
  38. data/app/lib/practical/test/shared/memberships/forms/organization/membership.rb +162 -0
  39. data/app/lib/practical/test/shared/memberships/forms/organization/new_membership_invitation.rb +195 -0
  40. data/app/lib/practical/test/shared/memberships/forms/user/membership.rb +87 -0
  41. data/app/lib/practical/test/shared/memberships/models/membership/base.rb +45 -0
  42. data/app/lib/practical/test/shared/memberships/models/membership_invitation/base.rb +85 -0
  43. data/app/lib/practical/test/shared/memberships/models/membership_invitation/sending.rb +76 -0
  44. data/app/lib/practical/test/shared/memberships/models/membership_invitation/use_for_and_notify.rb +55 -0
  45. data/app/lib/practical/test/shared/memberships/models/organization/base.rb +25 -0
  46. data/app/lib/practical/test/shared/memberships/models/user/base.rb +23 -0
  47. data/app/lib/practical/test/shared/memberships/policies/organization/base_resource.rb +29 -0
  48. data/app/lib/practical/test/shared/memberships/policies/organization/membership.rb +103 -0
  49. data/app/lib/practical/test/shared/memberships/policies/organization/membership_invitation.rb +94 -0
  50. data/app/lib/practical/test/shared/memberships/policies/organization/resource/inherits.rb +10 -0
  51. data/app/lib/practical/test/shared/memberships/policies/organization.rb +70 -0
  52. data/app/lib/practical/test/shared/memberships/policies/user/membership.rb +78 -0
  53. data/app/lib/practical/test/shared/memberships/policies/user/membership_invitation.rb +31 -0
  54. data/app/lib/practical/test/shared/models/normalized_email.rb +0 -1
  55. data/app/lib/practical/test/shared/policies/user/base.rb +14 -0
  56. data/app/lib/practical/views/error_handling.rb +2 -0
  57. data/app/lib/practical/views/error_response.rb +27 -0
  58. data/app/lib/practical/views/form_builders/base.rb +5 -4
  59. data/app/lib/practical/views/form_builders/collection_option.rb +5 -0
  60. data/app/lib/practical/views/icon_set.rb +12 -6
  61. data/config/locales/auth.en.yml +18 -0
  62. data/config/locales/memberships.en.yml +129 -0
  63. data/db/seeds/memberships/default.rb +68 -0
  64. data/db/seeds/moderators/default.rb +36 -0
  65. data/db/seeds/setup.rb +16 -0
  66. data/db/seeds/test/cases/membership_invitations.rb +31 -0
  67. data/db/seeds/users/default.rb +17 -15
  68. data/lib/generators/practical/test/shared_test/shared_test_generator.rb +2 -0
  69. data/lib/practical/framework/engine.rb +8 -0
  70. data/lib/practical/helpers/honeybadger_helper.rb +11 -0
  71. data/lib/practical/helpers/selector_helper.rb +8 -0
  72. data/lib/practical/version.rb +1 -1
  73. data/lib/practical/views/element_helper.rb +2 -0
  74. data/lib/practical/views/theme_helper.rb +13 -0
  75. data/lib/practical.rb +4 -1
  76. data/lib/tasks/practical/utility.rake +20 -0
  77. metadata +54 -11
  78. data/lib/tasks/practical/framework_tasks.rake +0 -6
@@ -3,6 +3,7 @@
3
3
  module Practical::Views::ElementHelper
4
4
  extend ActiveSupport::Concern
5
5
 
6
+ # rubocop:disable Layout/BlockLength
6
7
  def mix(*args)
7
8
  args.each_with_object({}) do |object, result|
8
9
  result.merge!(object) do |_key, old, new|
@@ -37,6 +38,7 @@ module Practical::Views::ElementHelper
37
38
  end
38
39
  end
39
40
  end
41
+ # rubocop:enable Layout/BlockLength
40
42
 
41
43
  def grab(**bindings)
42
44
  if bindings.size > 1
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Practical::Views::ThemeHelper
4
+ def theme_attribute
5
+ if user_signed_in?
6
+ return current_user.theme
7
+ else
8
+ return "match-system"
9
+ end
10
+ rescue
11
+ return "match-system"
12
+ end
13
+ end
data/lib/practical.rb CHANGED
@@ -15,7 +15,10 @@ module Practical
15
15
  end
16
16
 
17
17
  require "practical/views/element_helper"
18
+ require "practical/views/theme_helper"
18
19
  require "practical/helpers/form_with_helper"
19
20
  require "practical/helpers/icon_helper"
20
21
  require "practical/helpers/text_helper"
21
- require "practical/helpers/translation_helper"
22
+ require "practical/helpers/translation_helper"
23
+ require "practical/helpers/selector_helper"
24
+ require "practical/helpers/honeybadger_helper"
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ namespace :utility do
4
+ desc "Track the deployment"
5
+ task track_deployment: :environment do
6
+ Honeybadger.track_deployment(
7
+ environment: AppSettings.app_env,
8
+ revision: AppSettings.app_revision,
9
+ local_username: "rake",
10
+ repository: "git@github.com:practical-computer/app_repo.git"
11
+ )
12
+
13
+ HTTPX.get("https://api.honeybadger.io/v1/deploys", params: {
14
+ "deploy[environment]"=> AppSettings.app_env,
15
+ "deploy[local_username]" => "rake",
16
+ "deploy[revision]" => AppSettings.app_revision,
17
+ "api_key" => AppSettings.honeybadger_js_api_key
18
+ })
19
+ end
20
+ end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: practical
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 3.0.0.pre.alpha1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Cannon
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2025-05-29 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: rails
@@ -200,11 +199,15 @@ files:
200
199
  - app/components/practical/views/tiptap_document_component.rb
201
200
  - app/components/practical/views/toast_component.html.erb
202
201
  - app/components/practical/views/toast_component.rb
203
- - app/controllers/concerns/practical/auth/passkeys/emergency_registrations.rb
204
- - app/controllers/concerns/practical/auth/passkeys/web_authn_debug_context.rb
202
+ - app/concerns/practical/auth/passkeys/controllers/emergency_registrations.rb
203
+ - app/concerns/practical/auth/passkeys/controllers/web_authn_debug_context.rb
204
+ - app/concerns/practical/memberships/controllers/membership_invitations/register_with_passkey.rb
205
205
  - app/controllers/concerns/practical/views/flash_helpers.rb
206
206
  - app/controllers/concerns/practical/views/json_redirection.rb
207
207
  - app/lib/practical/defaults/shrine.rb
208
+ - app/lib/practical/forms/datatables/base.rb
209
+ - app/lib/practical/loaders/base.rb
210
+ - app/lib/practical/relation_builders/base.rb
208
211
  - app/lib/practical/test/helpers/administrator/test_helpers.rb
209
212
  - app/lib/practical/test/helpers/extra_assertions.rb
210
213
  - app/lib/practical/test/helpers/flash_assertions.rb
@@ -222,29 +225,64 @@ files:
222
225
  - app/lib/practical/test/helpers/spy_assertions.rb
223
226
  - app/lib/practical/test/helpers/system/assertions.rb
224
227
  - app/lib/practical/test/helpers/system/capybara_prep.rb
228
+ - app/lib/practical/test/shared/attachment/models/attachment/base.rb
229
+ - app/lib/practical/test/shared/attachment/models/attachment/for_organization.rb
230
+ - app/lib/practical/test/shared/attachment/models/organization/has_attachments.rb
225
231
  - app/lib/practical/test/shared/auth/passkeys/controllers/emergency_registration/base.rb
232
+ - app/lib/practical/test/shared/auth/passkeys/controllers/emergency_registration/cross_pollination.rb
226
233
  - app/lib/practical/test/shared/auth/passkeys/controllers/emergency_registration/self_service.rb
234
+ - app/lib/practical/test/shared/auth/passkeys/controllers/passkey_management/base.rb
227
235
  - app/lib/practical/test/shared/auth/passkeys/controllers/reauthentication/base.rb
236
+ - app/lib/practical/test/shared/auth/passkeys/controllers/reauthentication/cross_pollination.rb
228
237
  - app/lib/practical/test/shared/auth/passkeys/controllers/registrations/no_self_destroy.rb
229
238
  - app/lib/practical/test/shared/auth/passkeys/controllers/registrations/no_self_signup.rb
230
239
  - app/lib/practical/test/shared/auth/passkeys/controllers/registrations/self_destroy.rb
231
240
  - app/lib/practical/test/shared/auth/passkeys/controllers/registrations/self_signup.rb
232
241
  - app/lib/practical/test/shared/auth/passkeys/controllers/registrations/update.rb
233
242
  - app/lib/practical/test/shared/auth/passkeys/controllers/sessions/base.rb
243
+ - app/lib/practical/test/shared/auth/passkeys/controllers/sessions/cross_pollination.rb
234
244
  - app/lib/practical/test/shared/auth/passkeys/forms/emergency_registration.rb
235
245
  - app/lib/practical/test/shared/auth/passkeys/models/emergency_registration/base.rb
236
246
  - app/lib/practical/test/shared/auth/passkeys/models/emergency_registration/use_for_and_notify.rb
237
- - app/lib/practical/test/shared/auth/passkeys/models/passkey.rb
238
- - app/lib/practical/test/shared/auth/passkeys/models/resource_with_passkeys.rb
247
+ - app/lib/practical/test/shared/auth/passkeys/models/passkey/base.rb
248
+ - app/lib/practical/test/shared/auth/passkeys/models/passkey/emergency_registration.rb
249
+ - app/lib/practical/test/shared/auth/passkeys/models/resource_with_passkeys/base.rb
250
+ - app/lib/practical/test/shared/auth/passkeys/models/resource_with_passkeys/emergency_registration.rb
239
251
  - app/lib/practical/test/shared/auth/passkeys/policies/passkey.rb
240
252
  - app/lib/practical/test/shared/auth/passkeys/services/send_emergency_registration.rb
253
+ - app/lib/practical/test/shared/memberships/controllers/membership_invitations/base.rb
254
+ - app/lib/practical/test/shared/memberships/controllers/membership_invitations/register_with_passkey.rb
255
+ - app/lib/practical/test/shared/memberships/controllers/organization/membership.rb
256
+ - app/lib/practical/test/shared/memberships/controllers/organization/membership_invitation.rb
257
+ - app/lib/practical/test/shared/memberships/controllers/user/membership.rb
258
+ - app/lib/practical/test/shared/memberships/controllers/user/membership_invitation.rb
259
+ - app/lib/practical/test/shared/memberships/forms/create_new_user_with_membership_invitation.rb
260
+ - app/lib/practical/test/shared/memberships/forms/organization/membership.rb
261
+ - app/lib/practical/test/shared/memberships/forms/organization/new_membership_invitation.rb
262
+ - app/lib/practical/test/shared/memberships/forms/user/membership.rb
263
+ - app/lib/practical/test/shared/memberships/models/membership/base.rb
264
+ - app/lib/practical/test/shared/memberships/models/membership_invitation/base.rb
265
+ - app/lib/practical/test/shared/memberships/models/membership_invitation/sending.rb
266
+ - app/lib/practical/test/shared/memberships/models/membership_invitation/use_for_and_notify.rb
267
+ - app/lib/practical/test/shared/memberships/models/organization/base.rb
268
+ - app/lib/practical/test/shared/memberships/models/user/base.rb
269
+ - app/lib/practical/test/shared/memberships/policies/organization.rb
270
+ - app/lib/practical/test/shared/memberships/policies/organization/base_resource.rb
271
+ - app/lib/practical/test/shared/memberships/policies/organization/membership.rb
272
+ - app/lib/practical/test/shared/memberships/policies/organization/membership_invitation.rb
273
+ - app/lib/practical/test/shared/memberships/policies/organization/resource/inherits.rb
274
+ - app/lib/practical/test/shared/memberships/policies/user/membership.rb
275
+ - app/lib/practical/test/shared/memberships/policies/user/membership_invitation.rb
241
276
  - app/lib/practical/test/shared/models/normalized_email.rb
242
277
  - app/lib/practical/test/shared/models/user.rb
243
278
  - app/lib/practical/test/shared/models/utility/ip_address.rb
244
279
  - app/lib/practical/test/shared/models/utility/user_agent.rb
280
+ - app/lib/practical/test/shared/policies/user/base.rb
245
281
  - app/lib/practical/views/button/styling.rb
246
282
  - app/lib/practical/views/error_handling.rb
283
+ - app/lib/practical/views/error_response.rb
247
284
  - app/lib/practical/views/form_builders/base.rb
285
+ - app/lib/practical/views/form_builders/collection_option.rb
248
286
  - app/lib/practical/views/icon_set.rb
249
287
  - app/lib/practical/views/web_awesome/style_utility/appearance_variant.rb
250
288
  - app/lib/practical/views/web_awesome/style_utility/base.rb
@@ -252,9 +290,13 @@ files:
252
290
  - app/lib/practical/views/web_awesome/style_utility/size.rb
253
291
  - config/locales/auth.en.yml
254
292
  - config/locales/devise.passkeys.en.yml
293
+ - config/locales/memberships.en.yml
255
294
  - config/locales/practical_framework.en.yml
256
295
  - config/routes.rb
296
+ - db/seeds/memberships/default.rb
297
+ - db/seeds/moderators/default.rb
257
298
  - db/seeds/setup.rb
299
+ - db/seeds/test/cases/membership_invitations.rb
258
300
  - db/seeds/users/default.rb
259
301
  - lib/generators/practical/test/helper/USAGE
260
302
  - lib/generators/practical/test/helper/helper_generator.rb
@@ -267,13 +309,16 @@ files:
267
309
  - lib/practical.rb
268
310
  - lib/practical/framework/engine.rb
269
311
  - lib/practical/helpers/form_with_helper.rb
312
+ - lib/practical/helpers/honeybadger_helper.rb
270
313
  - lib/practical/helpers/icon_helper.rb
314
+ - lib/practical/helpers/selector_helper.rb
271
315
  - lib/practical/helpers/text_helper.rb
272
316
  - lib/practical/helpers/translation_helper.rb
273
317
  - lib/practical/version.rb
274
318
  - lib/practical/views/element_helper.rb
319
+ - lib/practical/views/theme_helper.rb
275
320
  - lib/tasks/practical/coverage.rake
276
- - lib/tasks/practical/framework_tasks.rake
321
+ - lib/tasks/practical/utility.rake
277
322
  homepage: https://github.com/practical-computer/practical
278
323
  licenses:
279
324
  - MIT
@@ -281,7 +326,6 @@ metadata:
281
326
  homepage_uri: https://github.com/practical-computer/practical
282
327
  source_code_uri: https://github.com/practical-computer/practical
283
328
  changelog_uri: https://github.com/practical-computer/practical/CHANGELOG.md
284
- post_install_message:
285
329
  rdoc_options: []
286
330
  require_paths:
287
331
  - lib
@@ -296,8 +340,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
296
340
  - !ruby/object:Gem::Version
297
341
  version: '0'
298
342
  requirements: []
299
- rubygems_version: 3.5.11
300
- signing_key:
343
+ rubygems_version: 3.6.7
301
344
  specification_version: 4
302
345
  summary: The Practical Framework
303
346
  test_files: []
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # desc "Explaining what the task does"
4
- # task :practical_framework do
5
- # # Task goes here
6
- # end