mirror of
https://github.com/temetro/temetro.git
synced 2026-07-27 12:18:56 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| aa535f08c4 | |||
| 000591f87f |
@@ -7,6 +7,16 @@ for how releases are cut and published.
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.15.1] — 2026-07-17
|
||||
|
||||
### Fixed
|
||||
- **Settings frames with more than one panel now breathe.** When a settings section stacked
|
||||
several cards — the AI availability toggles and the patient/account notification lists — the
|
||||
panels sat flush against each other with no gap, reading as one joined block. Those frames now
|
||||
use the COSS "separated panels" spacing (a 1rem gap that keeps each card's rounded corners),
|
||||
while intentional joined lists (care team, records) stay flush. Opt-in via a new `separated`
|
||||
prop on `SettingsFrame`/`SettingsSection` (`frontend/components/settings/settings-parts.tsx`).
|
||||
|
||||
## [0.15.0] — 2026-07-15
|
||||
|
||||
### Fixed
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "temetro-backend",
|
||||
"version": "0.15.0",
|
||||
"version": "0.15.1",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"description": "temetro backend — Express + Postgres API with Better Auth (email/password, organizations) and org-scoped patient records.",
|
||||
|
||||
@@ -211,6 +211,7 @@ export function AIPanel() {
|
||||
{policy ? (
|
||||
<SettingsFrame
|
||||
description={t("settings.ai.availability.description")}
|
||||
separated
|
||||
title={t("settings.ai.availability.title")}
|
||||
>
|
||||
{isAdmin ? (
|
||||
|
||||
@@ -14,6 +14,7 @@ import {
|
||||
CardFrameTitle,
|
||||
} from "@/components/ui/card";
|
||||
import { Switch } from "@/components/ui/switch";
|
||||
import { cn } from "@/lib/utils";
|
||||
|
||||
// A settings section rendered inside the COSS "frame" surface: a titled header
|
||||
// above one or more cards.
|
||||
@@ -34,15 +35,23 @@ export function SettingsFrame({
|
||||
action,
|
||||
children,
|
||||
className,
|
||||
separated = false,
|
||||
}: {
|
||||
title: string;
|
||||
description?: string;
|
||||
action?: ReactNode;
|
||||
children: ReactNode;
|
||||
className?: string;
|
||||
/**
|
||||
* COSS "Separated Panels": add a 1rem gap so sibling panels read as distinct
|
||||
* cards instead of one flush joined list. The `gap-4` matches CardFrame's
|
||||
* built-in `--clip-top/--clip-bottom: -1rem`, which keeps each panel's rounded
|
||||
* corners clipping correctly across the gap. Leave off for a joined list.
|
||||
*/
|
||||
separated?: boolean;
|
||||
}) {
|
||||
return (
|
||||
<CardFrame className={className}>
|
||||
<CardFrame className={cn(separated && "gap-4", className)}>
|
||||
<CardFrameHeader className="border-b border-border/60">
|
||||
<CardFrameTitle className="text-base">{title}</CardFrameTitle>
|
||||
{description ? (
|
||||
@@ -63,14 +72,22 @@ export function SettingsSection({
|
||||
description,
|
||||
action,
|
||||
children,
|
||||
separated = false,
|
||||
}: {
|
||||
title: string;
|
||||
description?: string;
|
||||
action?: ReactNode;
|
||||
children: ReactNode;
|
||||
/** See {@link SettingsFrame}'s `separated` — spaces sibling panels apart. */
|
||||
separated?: boolean;
|
||||
}) {
|
||||
return (
|
||||
<SettingsFrame action={action} description={description} title={title}>
|
||||
<SettingsFrame
|
||||
action={action}
|
||||
description={description}
|
||||
separated={separated}
|
||||
title={title}
|
||||
>
|
||||
{children}
|
||||
</SettingsFrame>
|
||||
);
|
||||
|
||||
@@ -339,6 +339,7 @@ export function ProfilePanel() {
|
||||
|
||||
<SettingsSection
|
||||
description={t("settings.profile.patientNotificationsDescription")}
|
||||
separated
|
||||
title={t("settings.profile.patientNotifications")}
|
||||
>
|
||||
{patientNotifications.map((item) => (
|
||||
@@ -356,6 +357,7 @@ export function ProfilePanel() {
|
||||
|
||||
<SettingsSection
|
||||
description={t("settings.profile.accountNotificationsDescription")}
|
||||
separated
|
||||
title={t("settings.profile.accountNotifications")}
|
||||
>
|
||||
{accountNotifications.map((item) => (
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "frontend",
|
||||
"version": "0.15.0",
|
||||
"version": "0.15.1",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "temetro",
|
||||
"version": "0.15.0",
|
||||
"version": "0.15.1",
|
||||
"private": true,
|
||||
"devDependencies": {
|
||||
"shadcn": "^4.11.0"
|
||||
|
||||
Reference in New Issue
Block a user