@djangocfg/layouts 2.1.484 → 2.1.487

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@djangocfg/layouts",
3
- "version": "2.1.484",
3
+ "version": "2.1.487",
4
4
  "description": "Simple, straightforward layout components for Next.js - import and use with props",
5
5
  "keywords": [
6
6
  "layouts",
@@ -89,12 +89,12 @@
89
89
  "check": "tsc --noEmit"
90
90
  },
91
91
  "peerDependencies": {
92
- "@djangocfg/analytics": "^2.1.484",
93
- "@djangocfg/api": "^2.1.484",
94
- "@djangocfg/centrifugo": "^2.1.484",
95
- "@djangocfg/devtools": "^2.1.484",
96
- "@djangocfg/i18n": "^2.1.484",
97
- "@djangocfg/ui-core": "^2.1.484",
92
+ "@djangocfg/analytics": "^2.1.487",
93
+ "@djangocfg/api": "^2.1.487",
94
+ "@djangocfg/centrifugo": "^2.1.487",
95
+ "@djangocfg/devtools": "^2.1.487",
96
+ "@djangocfg/i18n": "^2.1.487",
97
+ "@djangocfg/ui-core": "^2.1.487",
98
98
  "@hookform/resolvers": "^5.2.2",
99
99
  "consola": "^3.4.2",
100
100
  "lucide-react": "^0.545.0",
@@ -124,14 +124,14 @@
124
124
  "uuid": "^11.1.1"
125
125
  },
126
126
  "devDependencies": {
127
- "@djangocfg/analytics": "^2.1.484",
128
- "@djangocfg/api": "^2.1.484",
129
- "@djangocfg/centrifugo": "^2.1.484",
130
- "@djangocfg/devtools": "^2.1.484",
131
- "@djangocfg/i18n": "^2.1.484",
132
- "@djangocfg/typescript-config": "^2.1.484",
133
- "@djangocfg/ui-core": "^2.1.484",
134
- "@djangocfg/ui-tools": "^2.1.484",
127
+ "@djangocfg/analytics": "^2.1.487",
128
+ "@djangocfg/api": "^2.1.487",
129
+ "@djangocfg/centrifugo": "^2.1.487",
130
+ "@djangocfg/devtools": "^2.1.487",
131
+ "@djangocfg/i18n": "^2.1.487",
132
+ "@djangocfg/typescript-config": "^2.1.487",
133
+ "@djangocfg/ui-core": "^2.1.487",
134
+ "@djangocfg/ui-tools": "^2.1.487",
135
135
  "@types/node": "^25.9.5",
136
136
  "@types/react": "19.2.15",
137
137
  "@types/react-dom": "19.2.3",
@@ -128,8 +128,9 @@ function IdentifierStepRaw() {
128
128
  className="auth-input"
129
129
  />
130
130
 
131
+ {/* Both opt-in rows share `auth-optin` — same control, same weight. */}
131
132
  {consentEnabled && (
132
- <label className="auth-marketing-consent">
133
+ <label className="auth-optin">
133
134
  <Checkbox
134
135
  checked={consentChecked}
135
136
  onCheckedChange={(checked) => {
@@ -137,24 +138,24 @@ function IdentifierStepRaw() {
137
138
  setMarketingConsent(checked === true);
138
139
  }}
139
140
  disabled={isLoading}
140
- className="auth-marketing-consent-checkbox"
141
+ className="auth-optin-checkbox"
141
142
  />
142
143
  {/* Label copy comes from the consuming app — no product wording here. */}
143
- <span className="auth-marketing-consent-label">
144
+ <span className="auth-optin-label">
144
145
  {marketingConsentConfig?.label}
145
146
  </span>
146
147
  </label>
147
148
  )}
148
149
 
149
150
  {rememberMeConfig?.enabled !== false && (
150
- <label className="auth-remember">
151
+ <label className="auth-optin">
151
152
  <Checkbox
152
153
  checked={rememberMe}
153
154
  onCheckedChange={(checked) => setRememberMe(checked === true)}
154
155
  disabled={isLoading}
155
- className="auth-remember-checkbox"
156
+ className="auth-optin-checkbox"
156
157
  />
157
- <span className="auth-remember-label">
158
+ <span className="auth-optin-label">
158
159
  {rememberMeConfig?.label ?? 'Keep me signed in for 30 days'}
159
160
  </span>
160
161
  </label>
@@ -404,9 +404,17 @@
404
404
  color: var(--foreground);
405
405
  }
406
406
 
407
- /* ===== MARKETING CONSENT (opt-in checkbox on the identifier step) ===== */
407
+ /* ===== OPT-IN CHECKBOX ROWS (identifier step) =====
408
+ *
409
+ * One class for every opt-in row — marketing consent, remember-me, and whatever
410
+ * comes next. They are the same control doing the same job, so they must not
411
+ * drift apart in size, colour or alignment; two near-identical blocks are how
412
+ * the remember-me row ended up a step larger than the consent row above it.
413
+ *
414
+ * `align-items: flex-start` because a label may wrap to two lines: centring
415
+ * would then float the box against the middle of the paragraph. */
408
416
 
409
- .auth-marketing-consent {
417
+ .auth-optin {
410
418
  display: flex;
411
419
  align-items: flex-start;
412
420
  gap: 0.625rem;
@@ -418,34 +426,13 @@
418
426
  user-select: none;
419
427
  }
420
428
 
421
- .auth-marketing-consent-checkbox {
429
+ .auth-optin-checkbox {
422
430
  flex-shrink: 0;
423
431
  /* Optically align the box with the first line of the label copy. */
424
432
  margin-top: 0.0625rem;
425
433
  }
426
434
 
427
- .auth-marketing-consent-label {
428
- cursor: pointer;
429
- }
430
-
431
- /* ===== REMEMBER ME ===== */
432
-
433
- .auth-remember {
434
- display: flex;
435
- align-items: center;
436
- gap: 0.625rem;
437
- font-size: 0.875rem;
438
- color: var(--foreground);
439
- cursor: pointer;
440
- user-select: none;
441
- }
442
-
443
- .auth-remember-checkbox {
444
- flex-shrink: 0;
445
- }
446
-
447
- .auth-remember-label {
448
- font-weight: 400;
435
+ .auth-optin-label {
449
436
  cursor: pointer;
450
437
  }
451
438