@kernhq/module-billing 0.5.11 → 0.5.12
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": "@kernhq/module-billing",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.12",
|
|
4
4
|
"description": "Kern billing module: plans, entitlements, subscriptions and Stripe — the mechanism that lets any Kern instance sell seats on itself",
|
|
5
5
|
"homepage": "https://github.com/KernAIO/module-billing#readme",
|
|
6
6
|
"license": "AGPL-3.0-only",
|
|
@@ -204,15 +204,17 @@ const planOptions = $derived([
|
|
|
204
204
|
{:else}
|
|
205
205
|
<!-- the table scrolls inside itself; the page body must never scroll sideways -->
|
|
206
206
|
<div class="overflow-x-auto">
|
|
207
|
+
<!-- Seven columns, sized to fit the admin pane at a laptop width: this sat at eight and was
|
|
208
|
+
wider than the pane behind the second sidebar, so the revenue column and the row menu
|
|
209
|
+
lived off-screen with nothing to say so. Seats and storage share a cell. -->
|
|
207
210
|
<Table
|
|
208
|
-
columns="minmax(
|
|
211
|
+
columns="minmax(100px,2fr) minmax(90px,1.2fr) minmax(104px,auto) minmax(112px,auto) minmax(80px,auto) minmax(72px,auto) 36px"
|
|
209
212
|
>
|
|
210
213
|
<TableHeader>
|
|
211
214
|
<TableCell header>{t('admin_col_workspace')}</TableCell>
|
|
212
215
|
<TableCell header>{t('admin_col_plan')}</TableCell>
|
|
213
216
|
<TableCell header>{t('admin_col_status')}</TableCell>
|
|
214
|
-
<TableCell header end>{t('
|
|
215
|
-
<TableCell header end>{t('admin_col_storage')}</TableCell>
|
|
217
|
+
<TableCell header end>{t('admin_col_usage')}</TableCell>
|
|
216
218
|
<TableCell header>{t('admin_col_renews')}</TableCell>
|
|
217
219
|
<TableCell header end>{t('admin_col_revenue')}</TableCell>
|
|
218
220
|
<TableCell header end></TableCell>
|
|
@@ -227,14 +229,15 @@ const planOptions = $derived([
|
|
|
227
229
|
</span>
|
|
228
230
|
</div>
|
|
229
231
|
</TableCell>
|
|
230
|
-
|
|
231
|
-
|
|
232
|
+
<!-- The badge sits under the name, never beside it: side by side, one of the two was
|
|
233
|
+
always the thing that got clipped ("Overrid", then "B…") in a column this narrow. -->
|
|
234
|
+
<TableCell class="min-w-0">
|
|
235
|
+
<div class="grid">
|
|
232
236
|
<span class="truncate">{row.planName ?? t('no_plan')}</span>
|
|
233
237
|
{#if row.overridden}
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
</Badge>
|
|
238
|
+
<span class="mt-0.5">
|
|
239
|
+
<Badge tone="purple" title={t('admin_overridden_hint')}>{t('admin_overridden')}</Badge>
|
|
240
|
+
</span>
|
|
238
241
|
{/if}
|
|
239
242
|
</div>
|
|
240
243
|
</TableCell>
|
|
@@ -250,9 +253,8 @@ const planOptions = $derived([
|
|
|
250
253
|
<TableCell end>
|
|
251
254
|
{row.seatsPurchased > 0
|
|
252
255
|
? `${nf.format(row.seatsUsed)}/${nf.format(row.seatsPurchased)}`
|
|
253
|
-
: nf.format(row.seatsUsed)}
|
|
256
|
+
: nf.format(row.seatsUsed)} · {formatBytes(row.storageBytes, locale)}
|
|
254
257
|
</TableCell>
|
|
255
|
-
<TableCell end>{formatBytes(row.storageBytes, locale)}</TableCell>
|
|
256
258
|
<TableCell>{day(row.currentPeriodEnd ?? row.trialEndsAt)}</TableCell>
|
|
257
259
|
<TableCell end>
|
|
258
260
|
{row.monthlyMinor > 0 ? formatMoney(row.monthlyMinor, row.currency, locale) : '—'}
|
package/src/client/i18n.ts
CHANGED
|
@@ -27,6 +27,7 @@ export const en: Record<string, Message> = {
|
|
|
27
27
|
'billing.admin_col_renews': 'Renews',
|
|
28
28
|
'billing.admin_col_revenue': 'Per month',
|
|
29
29
|
'billing.admin_col_seats': 'Seats',
|
|
30
|
+
'billing.admin_col_usage': 'Seats · storage',
|
|
30
31
|
'billing.admin_col_status': 'Status',
|
|
31
32
|
'billing.admin_col_storage': 'Storage',
|
|
32
33
|
'billing.admin_col_workspace': 'Workspace',
|
|
@@ -197,6 +198,7 @@ const ar: Record<string, Message> = {
|
|
|
197
198
|
'billing.admin_col_renews': 'التجديد',
|
|
198
199
|
'billing.admin_col_revenue': 'شهرياً',
|
|
199
200
|
'billing.admin_col_seats': 'المقاعد',
|
|
201
|
+
'billing.admin_col_usage': 'المقاعد · التخزين',
|
|
200
202
|
'billing.admin_col_status': 'الحالة',
|
|
201
203
|
'billing.admin_col_storage': 'التخزين',
|
|
202
204
|
'billing.admin_col_workspace': 'مساحة العمل',
|
|
@@ -362,6 +364,7 @@ const de: Record<string, Message> = {
|
|
|
362
364
|
'billing.admin_col_renews': 'Verlängert am',
|
|
363
365
|
'billing.admin_col_revenue': 'Pro Monat',
|
|
364
366
|
'billing.admin_col_seats': 'Plätze',
|
|
367
|
+
'billing.admin_col_usage': 'Plätze · Speicher',
|
|
365
368
|
'billing.admin_col_status': 'Status',
|
|
366
369
|
'billing.admin_col_storage': 'Speicher',
|
|
367
370
|
'billing.admin_col_workspace': 'Arbeitsbereich',
|
|
@@ -534,6 +537,7 @@ const fa: Record<string, Message> = {
|
|
|
534
537
|
'billing.admin_col_renews': 'تمدید',
|
|
535
538
|
'billing.admin_col_revenue': 'ماهانه',
|
|
536
539
|
'billing.admin_col_seats': 'کاربران',
|
|
540
|
+
'billing.admin_col_usage': 'کاربران · فضا',
|
|
537
541
|
'billing.admin_col_status': 'وضعیت',
|
|
538
542
|
'billing.admin_col_storage': 'فضای ذخیرهسازی',
|
|
539
543
|
'billing.admin_col_workspace': 'فضای کاری',
|
|
@@ -697,6 +701,7 @@ const tr: Record<string, Message> = {
|
|
|
697
701
|
'billing.admin_col_renews': 'Yenilenme',
|
|
698
702
|
'billing.admin_col_revenue': 'Aylık',
|
|
699
703
|
'billing.admin_col_seats': 'Kullanıcı',
|
|
704
|
+
'billing.admin_col_usage': 'Kullanıcı · depolama',
|
|
700
705
|
'billing.admin_col_status': 'Durum',
|
|
701
706
|
'billing.admin_col_storage': 'Depolama',
|
|
702
707
|
'billing.admin_col_workspace': 'Çalışma alanı',
|