Packages

phoenix_kit

1.7.90
1.7.207 1.7.206 1.7.205 1.7.204 1.7.203 1.7.202 1.7.201 1.7.200 1.7.199 1.7.198 1.7.197 1.7.196 1.7.194 1.7.193 1.7.192 1.7.191 1.7.190 1.7.189 1.7.187 1.7.186 1.7.185 1.7.184 1.7.183 1.7.182 1.7.181 1.7.180 1.7.179 1.7.178 1.7.177 1.7.176 1.7.175 1.7.174 1.7.173 1.7.172 1.7.171 1.7.170 1.7.169 1.7.168 1.7.167 1.7.166 1.7.165 1.7.164 1.7.162 1.7.161 1.7.160 1.7.159 1.7.157 1.7.156 1.7.155 1.7.154 1.7.153 1.7.152 1.7.151 1.7.150 1.7.149 1.7.146 1.7.145 1.7.144 1.7.143 1.7.138 1.7.133 1.7.132 1.7.131 1.7.130 1.7.128 1.7.126 1.7.125 1.7.121 1.7.120 1.7.119 1.7.118 1.7.117 1.7.116 1.7.115 1.7.114 1.7.113 1.7.112 1.7.111 1.7.110 1.7.109 1.7.108 1.7.107 1.7.106 1.7.105 1.7.104 1.7.103 1.7.102 1.7.101 1.7.100 1.7.99 1.7.98 1.7.97 1.7.96 1.7.95 1.7.94 1.7.93 1.7.92 1.7.91 1.7.90 1.7.89 1.7.88 1.7.87 1.7.86 1.7.85 1.7.84 1.7.83 1.7.82 1.7.81 1.7.80 1.7.79 1.7.78 1.7.77 1.7.76 1.7.75 1.7.74 1.7.71 1.7.70 1.7.69 1.7.66 1.7.65 1.7.64 1.7.63 1.7.62 1.7.61 1.7.59 1.7.58 1.7.57 1.7.56 1.7.55 1.7.54 1.7.53 1.7.52 1.7.51 1.7.49 1.7.44 1.7.43 1.7.42 1.7.41 1.7.39 1.7.38 1.7.37 1.7.36 1.7.34 1.7.33 1.7.31 1.7.30 1.7.29 1.7.28 1.7.27 1.7.26 1.7.25 1.7.24 1.7.23 1.7.22 1.7.21 1.7.20 1.7.19 1.7.18 1.7.17 1.7.16 1.7.15 1.7.14 1.7.13 1.7.12 1.7.11 1.7.10 1.7.9 1.7.8 1.7.7 1.7.6 1.7.5 1.7.4 1.7.3 1.7.2 1.7.1 1.7.0 1.6.20 1.6.19 1.6.18 1.6.17 1.6.16 1.6.15 1.6.14 1.6.13 1.6.12 1.6.11 1.6.10 1.6.9 1.6.8 1.6.7 1.6.6 1.6.5 1.6.4 1.6.3 1.5.2 1.5.1 1.5.0 1.4.9 1.4.8 1.4.7 1.4.6 1.4.5 1.4.4 1.4.3 1.4.2 1.4.1 1.4.0 1.3.2 1.3.1 1.3.0 1.2.10 1.2.9 1.2.8 1.2.7 1.2.5 1.2.4 1.2.2 1.2.1 1.2.0 1.1.0 1.0.0

A foundation for building Elixir Phoenix apps — SaaS, social networks, ERP systems, marketplaces, and more

Current section

221 Versions

Jump to

Compare versions

47 files changed
+4121 additions
-571 deletions
  @@ -1,15 +1,26 @@
1 - ## 1.7.89 - 2026-04-04
1 + ## 1.7.90 - 2026-04-04
2 2
3 3 ### Added
4 + - Add organization accounts support with person/organization user types
5 + - Add organization invitations system with token-based invite flow
4 6 - Add V91 locations migration: location types, locations, and type assignments tables
7 + - Add V92 organization accounts migration (invitations, user type fields)
5 8 - Add JS hooks integration for parent app install and update workflows
6 - - Add organization accounts with person/organization user type and invitation flow
7 - - Add tax configuration consolidated into CountryData
9 + - Add LLMText module for AI/LLM-friendly content generation
10 + - Add auth logo from settings to admin header
11 + - Add billing tabs component
8 12
9 13 ### Changed
14 + - Move tax rate and CountryData from Billing to core PhoenixKit
10 15 - Remove hardcoded Billing and E-Commerce module cards in favor of auto-discovery
11 16 - Update AGENTS.md with severity level definitions and JS hooks documentation
12 17
18 + ### Fixed
19 + - Fix double sidebar for core modules and improve struct compatibility
20 + - Hide hamburger menu button when sidebar is permanently visible
21 + - Fix token security, gettext, and validation issues in organization invitations
22 + - Fix tax data loss, invitation status guard, and IbanData safety
23 +
13 24 ## 1.7.88 - 2026-04-02
14 25
15 26 ### Changed
  @@ -1,6 +1,6 @@
1 1 {<<"links">>,[{<<"GitHub">>,<<"https://github.com/BeamLabEU/phoenix_kit">>}]}.
2 2 {<<"name">>,<<"phoenix_kit">>}.
3 - {<<"version">>,<<"1.7.89">>}.
3 + {<<"version">>,<<"1.7.90">>}.
4 4 {<<"description">>,
5 5 <<65,32,102,111,117,110,100,97,116,105,111,110,32,102,111,114,32,98,117,105,
6 6 108,100,105,110,103,32,69,108,105,120,105,114,32,80,104,111,101,110,105,
  @@ -13,6 +13,7 @@
13 13 {<<"licenses">>,[<<"MIT">>]}.
14 14 {<<"files">>,
15 15 [<<"lib">>,<<"lib/phoenix_kit_web">>,<<"lib/phoenix_kit_web/components">>,
16 + <<"lib/phoenix_kit_web/components/invitation_banner.ex">>,
16 17 <<"lib/phoenix_kit_web/components/layout_wrapper.ex">>,
17 18 <<"lib/phoenix_kit_web/components/layouts">>,
18 19 <<"lib/phoenix_kit_web/components/layouts/dashboard.html.heex">>,
  @@ -29,6 +30,7 @@
29 30 <<"lib/phoenix_kit_web/components/core/table_default.ex">>,
30 31 <<"lib/phoenix_kit_web/components/core/file_display.ex">>,
31 32 <<"lib/phoenix_kit_web/components/core/email_activity_badges.ex">>,
33 + <<"lib/phoenix_kit_web/components/core/nav_tabs.ex">>,
32 34 <<"lib/phoenix_kit_web/components/core/theme_switcher.ex">>,
33 35 <<"lib/phoenix_kit_web/components/core/select.ex">>,
34 36 <<"lib/phoenix_kit_web/components/core/user_info.ex">>,
  @@ -188,7 +190,9 @@
188 190 <<"lib/phoenix_kit_web/router.ex">>,
189 191 <<"lib/phoenix_kit_web/auth_router.ex">>,<<"lib/phoenix_kit_web/routes">>,
190 192 <<"lib/phoenix_kit_web/routes/referrals.ex">>,
191 - <<"lib/phoenix_kit_web/routes/customer_service.ex">>,<<"lib/mix">>,
193 + <<"lib/phoenix_kit_web/routes/customer_service.ex">>,
194 + <<"lib/phoenix_kit_web/hooks">>,
195 + <<"lib/phoenix_kit_web/hooks/invitation_hook.ex">>,<<"lib/mix">>,
192 196 <<"lib/mix/tasks">>,<<"lib/mix/tasks/compile.phoenix_kit_css_sources.ex">>,
193 197 <<"lib/mix/tasks/phoenix_kit_templates.ex">>,
194 198 <<"lib/mix/tasks/phoenix_kit.status.ex">>,
  @@ -269,6 +273,7 @@
269 273 <<"lib/phoenix_kit/migrations/postgres/v02.ex">>,
270 274 <<"lib/phoenix_kit/migrations/postgres/v15.ex">>,
271 275 <<"lib/phoenix_kit/migrations/postgres/v65.ex">>,
276 + <<"lib/phoenix_kit/migrations/postgres/v92.ex">>,
272 277 <<"lib/phoenix_kit/migrations/postgres/v48.ex">>,
273 278 <<"lib/phoenix_kit/migrations/postgres/v17.ex">>,
274 279 <<"lib/phoenix_kit/migrations/postgres/v90.ex">>,
  @@ -281,6 +286,7 @@
281 286 <<"lib/phoenix_kit/migrations/postgres/v71.ex">>,
282 287 <<"lib/phoenix_kit/migrations/postgres/v66.ex">>,
283 288 <<"lib/phoenix_kit/migrations/postgres/v39.ex">>,
289 + <<"lib/phoenix_kit/migrations/postgres/v91.ex">>,
284 290 <<"lib/phoenix_kit/migrations/postgres/v16.ex">>,
285 291 <<"lib/phoenix_kit/migrations/postgres/v49.ex">>,
286 292 <<"lib/phoenix_kit/migrations/postgres/v08.ex">>,
  @@ -342,6 +348,7 @@
342 348 <<"lib/phoenix_kit/users/oauth_provider.ex">>,
343 349 <<"lib/phoenix_kit/users/rate_limiter.ex">>,
344 350 <<"lib/phoenix_kit/users/table_columns.ex">>,
351 + <<"lib/phoenix_kit/users/invitations.ex">>,
345 352 <<"lib/phoenix_kit/users/admin_note.ex">>,
346 353 <<"lib/phoenix_kit/users/oauth_config.ex">>,
347 354 <<"lib/phoenix_kit/users/custom_fields.ex">>,
  @@ -353,6 +360,7 @@
353 360 <<"lib/phoenix_kit/users/permissions.ex">>,
354 361 <<"lib/phoenix_kit/users/oauth.ex">>,
355 362 <<"lib/phoenix_kit/users/role_permission.ex">>,
363 + <<"lib/phoenix_kit/users/organization_invitation.ex">>,
356 364 <<"lib/phoenix_kit/users/auth.ex">>,<<"lib/phoenix_kit/users/role.ex">>,
357 365 <<"lib/phoenix_kit/users/oauth_availability.ex">>,
358 366 <<"lib/phoenix_kit/users/sessions.ex">>,<<"lib/phoenix_kit/users/auth">>,
  @@ -388,6 +396,7 @@
388 396 <<"lib/phoenix_kit/install/runtime_detector.ex">>,
389 397 <<"lib/phoenix_kit/install/igniter_compat.ex">>,
390 398 <<"lib/phoenix_kit/install/basic_configuration.ex">>,
399 + <<"lib/phoenix_kit/install/js_integration.ex">>,
391 400 <<"lib/phoenix_kit/install/endpoint_integration.ex">>,
392 401 <<"lib/phoenix_kit/install/mailer_config.ex">>,
393 402 <<"lib/phoenix_kit/install/db_connection_check.ex">>,
  @@ -445,8 +454,18 @@
445 454 <<"lib/modules/customer_service/ticket_status_history.ex">>,
446 455 <<"lib/modules/customer_service/ticket.ex">>,
447 456 <<"lib/modules/customer_service/customer_service.ex">>,
448 - <<"lib/modules/referrals">>,<<"lib/modules/referrals/web">>,
449 - <<"lib/modules/referrals/web/list.ex">>,
457 + <<"lib/modules/llm_text">>,<<"lib/modules/llm_text/sources">>,
458 + <<"lib/modules/llm_text/sources/publishing.ex">>,
459 + <<"lib/modules/llm_text/sources/source.ex">>,<<"lib/modules/llm_text/web">>,
460 + <<"lib/modules/llm_text/web/settings.ex">>,
461 + <<"lib/modules/llm_text/web/controller.ex">>,
462 + <<"lib/modules/llm_text/llm_text.ex">>,
463 + <<"lib/modules/llm_text/file_storage.ex">>,
464 + <<"lib/modules/llm_text/publishing_subscriber.ex">>,
465 + <<"lib/modules/llm_text/workers">>,
466 + <<"lib/modules/llm_text/workers/generate_llm_text_job.ex">>,
467 + <<"lib/modules/llm_text/generator.ex">>,<<"lib/modules/referrals">>,
468 + <<"lib/modules/referrals/web">>,<<"lib/modules/referrals/web/list.ex">>,
450 469 <<"lib/modules/referrals/web/form.html.heex">>,
451 470 <<"lib/modules/referrals/web/list.html.heex">>,
452 471 <<"lib/modules/referrals/web/settings.html.heex">>,
  @@ -506,8 +525,10 @@
506 525 <<"lib/modules/languages/dialect_mapper.ex">>,
507 526 <<"lib/modules/languages/language.ex">>,
508 527 <<"lib/modules/languages/languages.ex">>,
509 - <<"lib/modules/languages/README.md">>,<<"lib/modules/maintenance">>,
510 - <<"lib/modules/maintenance/maintenance.ex">>,
528 + <<"lib/modules/languages/README.md">>,<<"lib/modules/billing">>,
529 + <<"lib/modules/billing/web">>,<<"lib/modules/billing/web/components">>,
530 + <<"lib/modules/billing/web/components/billing_tabs.ex">>,
531 + <<"lib/modules/maintenance">>,<<"lib/modules/maintenance/maintenance.ex">>,
511 532 <<"lib/modules/maintenance/web">>,
512 533 <<"lib/modules/maintenance/web/components">>,
513 534 <<"lib/modules/maintenance/web/components/maintenance_page.ex">>,
  @@ -55,6 +55,7 @@ if Code.ensure_loaded?(Igniter.Mix.Task) do
55 55 DbConnectionCheck,
56 56 DemoFiles,
57 57 EndpointIntegration,
58 + JsIntegration,
58 59 LayoutConfig,
59 60 MailerConfig,
60 61 MigrationStrategy,
  @@ -103,6 +104,7 @@ if Code.ensure_loaded?(Igniter.Mix.Task) do
103 104 |> ObanConfig.add_oban_supervisor()
104 105 |> LayoutConfig.add_layout_integration_configuration()
105 106 |> CssIntegration.add_automatic_css_integration()
107 + |> JsIntegration.add_js_integration()
106 108 |> DemoFiles.copy_test_demo_files()
107 109 |> RouterIntegration.add_router_integration(opts[:router_path])
108 110 |> BrowserPipelineIntegration.add_integration_to_browser_pipeline()
  @@ -90,6 +90,7 @@ if Code.ensure_loaded?(Igniter.Mix.Task) do
90 90 CssIntegration,
91 91 DbConnectionCheck,
92 92 IgniterHelpers,
93 + JsIntegration,
93 94 ObanConfig,
94 95 RateLimiterConfig
95 96 }
  @@ -582,6 +583,9 @@ if Code.ensure_loaded?(Igniter.Mix.Task) do
582 583 # Update CSS integration (enables daisyUI themes if disabled)
583 584 update_css_integration()
584 585
586 + # Update JS hooks file
587 + JsIntegration.update_js_file()
588 +
585 589 # Always rebuild assets unless explicitly skipped
586 590 unless Keyword.get(opts, :skip_assets, false) do
587 591 AssetRebuild.check_and_rebuild(verbose: true)
  @@ -0,0 +1,45 @@
1 + defmodule PhoenixKit.Modules.Billing.Web.Components.BillingTabs do
2 + @moduledoc """
3 + Billing-specific tab configuration for settings pages.
4 +
5 + Wraps the generic `nav_tabs` component with billing tab definitions.
6 + """
7 +
8 + use Phoenix.Component
9 +
10 + import PhoenixKitWeb.Components.Core.NavTabs, only: [nav_tabs: 1]
11 +
12 + @billing_tabs [
13 + %{id: "general", label: "General", icon: "hero-cog-6-tooth", path: "/admin/settings/billing"},
14 + %{
15 + id: "providers",
16 + label: "Payment Providers",
17 + icon: "hero-credit-card",
18 + path: "/admin/settings/billing/providers"
19 + },
20 + %{
21 + id: "currencies",
22 + label: "Currencies",
23 + icon: "hero-currency-dollar",
24 + path: "/admin/billing/currencies"
25 + },
26 + %{
27 + id: "subscription_types",
28 + label: "Subscription Types",
29 + icon: "hero-clipboard-document-list",
30 + path: "/admin/billing/subscription-types"
31 + }
32 + ]
33 +
34 + attr :active_tab, :string,
35 + required: true,
36 + values: ~w(general providers currencies subscription_types)
37 +
38 + def billing_settings_tabs(assigns) do
39 + assigns = assign(assigns, :tabs, @billing_tabs)
40 +
41 + ~H"""
42 + <.nav_tabs active_tab={@active_tab} tabs={@tabs} class="mb-6" />
43 + """
44 + end
45 + end
Loading more files…