Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
f0c2834
feat(ui): add contextual help button to view headers
AlexVOiceover Sep 19, 2025
d5a7333
feat(help): enhance help system with rich content and modal support
AlexVOiceover Sep 19, 2025
a606293
style(layout): improve header padding consistency with responsive design
AlexVOiceover Sep 19, 2025
648d020
style(layout): improve header padding consistency with responsive design
AlexVOiceover Sep 20, 2025
03a2e2b
refactor(help): centralize styles and add safety checks
AlexVOiceover Sep 20, 2025
84caa94
fix(a11y): implement proper focus trap in help modal using inert
AlexVOiceover Sep 20, 2025
d5d42f9
feat(nav): add clickable breadcrumbs replacing view headers
AlexVOiceover Sep 20, 2025
5f489c3
perf(breadcrumb): optimize rendering and add null safety checks
AlexVOiceover Sep 20, 2025
29509e4
feat(actions): create ActionsCRUD component for comprehensive action …
AlexVOiceover Sep 21, 2025
04a3885
style(actions): add basic layout styles for ActionsCRUD component
AlexVOiceover Sep 21, 2025
e8b2428
fix(breadcrumb): implement proper ellipsis for narrow screens
AlexVOiceover Sep 21, 2025
5b50359
fix(actions): remove unused questionId prop and fix accessibility
AlexVOiceover Sep 21, 2025
06e26b0
fix(actions): implement proper null safety for action IDs
AlexVOiceover Sep 21, 2025
2b34228
feat(actions): add comprehensive form validation and race condition p…
AlexVOiceover Sep 21, 2025
0aa4b2a
refactor: remove unused action-related code after ActionsCRUD impleme…
AlexVOiceover Sep 21, 2025
2cf1fcc
style(actions): improve code formatting and readability in ActionsCRUD
AlexVOiceover Sep 21, 2025
bb092e3
feat(ui): change completed question indicator color to accent
AlexVOiceover Sep 21, 2025
ffb53e0
feat(ui): add icons to question status indicators
AlexVOiceover Sep 21, 2025
9c2772d
feat(ui): replace 'Archived' terminology with 'Inactive' for better c…
AlexVOiceover Sep 21, 2025
83b63ae
feat(ui): add dynamic font size control with accessibility features
AlexVOiceover Sep 21, 2025
426acc7
style(ui): improve button sizes and font control icon design
AlexVOiceover Sep 21, 2025
176cd8c
feat(db): add preferences column to profiles table for UI settings
AlexVOiceover Sep 21, 2025
bd6baa2
feat(types): add optional user preferences interface for font size se…
AlexVOiceover Sep 21, 2025
5f3af45
feat(state): initialize default preferences in appState profile
AlexVOiceover Sep 21, 2025
985beb2
feat(preferences): implement persistent font size control with databa…
AlexVOiceover Sep 21, 2025
4074b1c
chore: bump version to 0.6.008
AlexVOiceover Sep 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "Workwise",
"private": true,
"version": "0.6.007",
"version": "0.6.008",
"type": "module",
"scripts": {
"dev": "vite dev",
Expand Down
183 changes: 174 additions & 9 deletions src/app.css
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ h3 {
}

.dash-grid-2 {
@apply grid grid-cols-2 gap-8;
@apply mt-2 grid grid-cols-2;
}

.dash-tile-rect {
Expand All @@ -70,7 +70,7 @@ h3 {
}

.dash-tile-square {
@apply card border-primary bg-base-100 my-1 rounded-lg border p-6 transition-shadow hover:shadow-md;
@apply card border-primary bg-base-100 mx-10 my-1 rounded-lg border p-3 transition-shadow hover:shadow-md;
@apply flex flex-col items-center justify-center text-center;
@apply cursor-pointer;
/* Height constraints relative to .list-item */
Expand All @@ -87,8 +87,8 @@ h3 {
}

.footer {
@apply bg-primary text-primary-content h-20;
padding-bottom: env(safe-area-inset-bottom);
@apply bg-primary text-primary-content h-16;
/* padding-bottom: env(safe-area-inset-bottom); */
padding-left: env(safe-area-inset-left);
padding-right: env(safe-area-inset-right);
}
Expand All @@ -106,23 +106,23 @@ h3 {
}

.header-container-logo {
@apply rounded-xl bg-white p-2 shadow-sm;
@apply flex-shrink-0 rounded-xl bg-white p-2 shadow-sm;
}

.header-content {
@apply flex h-20 w-full flex-row items-center justify-between px-2 sm:px-6 lg:px-8;
@apply flex h-20 w-full flex-row items-center justify-between px-5;
}

.header-left {
@apply flex items-center space-x-4 px-2;
@apply flex items-center space-x-4;
}

.view {
@apply flex h-full w-full flex-col overflow-hidden;
}

.view-header {
@apply bg-accent max-w-full p-3;
@apply bg-accent h-14 max-w-full px-5;
/* height: 4.5rem; */
display: grid;
grid-template-columns: 1fr auto;
Expand Down Expand Up @@ -180,7 +180,7 @@ h3 {
}

.status-default {
@apply bg-base-300;
@apply bg-accent;
}

.status-action {
Expand Down Expand Up @@ -243,6 +243,171 @@ h3 {
@apply mx-1 mb-2 w-full;
}

.help-section {
border-bottom: 1px solid hsl(var(--bc) / 0.1);
}

.help-section:last-child {
border-bottom: none;
padding-bottom: 0;
}

.screenshot-container {
display: flex;
flex-direction: column;
align-items: center;
}

.breadcrumb {
font-size: 1.25rem;
font-weight: 700;
}

.breadcrumb-list {
@apply m-0 flex list-none items-center p-0;
white-space: nowrap;
overflow: hidden;
min-width: 0;
flex: 1;
}

.breadcrumb-item {
@apply flex flex-shrink-0 items-center;
}

.breadcrumb-item:last-child {
@apply min-w-0 flex-shrink;
max-width: 100%;
}

.breadcrumb-link {
@apply text-accent-content cursor-pointer border-none bg-transparent p-0 font-normal underline transition-colors hover:text-white;
}

.breadcrumb-current {
@apply text-accent-content font-bold;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}

.breadcrumb-separator {
@apply text-accent-content/70 flex-shrink-0 font-normal;
margin: 0 0.25rem;
}

.actions-crud {
@apply space-y-4;
}

.actions-header {
@apply mb-4;
}

.actions-list {
@apply space-y-3;
}

.action-item {
@apply card border-primary bg-base-100 mb-3 rounded-lg border-2 p-3 transition-shadow hover:shadow-md;
}

.action-view {
@apply flex items-start justify-between gap-3;
}

.action-content {
@apply flex-1;
}

.action-description {
@apply text-base-content mb-2 font-medium;
}

.action-date {
@apply text-base-content/60 text-xs;
}

.action-buttons {
@apply flex flex-shrink-0 gap-2;
}

.action-edit-form {
@apply space-y-3;
}

.action-description-input {
@apply textarea border-primary focus:border-accent w-full rounded-lg border p-3 outline-none;
}

.action-edit-buttons {
@apply flex gap-2;
}

.action-edit-buttons .btn-sm {
@apply btn btn-sm;
}

.action-edit-buttons .btn-submit {
@apply btn btn-accent hover:btn-secondary text-base-100 btn-sm;
}

.new-action-form {
@apply card border-primary bg-base-100 space-y-3 rounded-lg border-2 border-dashed p-4;
}

.new-action-buttons {
@apply flex gap-2;
}

.new-action-buttons .btn-sm {
@apply btn btn-sm;
}

.new-action-buttons .btn-submit {
@apply btn btn-accent hover:btn-secondary text-base-100 btn-sm;
}

.add-action-btn {
@apply border-primary hover:border-accent w-full;
}

/* Error states */
.border-error {
@apply border-error;
}

/* Loading states */
.btn:disabled {
@apply cursor-not-allowed opacity-50;
}

.loading-xs {
width: 1rem;
height: 1rem;
}

/* Font size controls */
.font-size-extra-small {
font-size: 12px;
}

.font-size-small {
font-size: 14px;
}

.font-size-medium {
font-size: 16px;
}

.font-size-large {
font-size: 18px;
}

.font-size-extra-large {
font-size: 20px;
}

@media (max-width: 375px) {
.dash-grid {
@apply grid-cols-1;
Expand Down
38 changes: 26 additions & 12 deletions src/lib/components/cards/ListItem.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,11 @@
>
<div
id="list-item-{item.id}-row"
class="flex w-full {table === 'questions' ? 'flex-row items-center justify-between' : table === 'resources' ? 'flex-row items-center justify-center' : 'flex-col items-start md:flex-row md:items-center md:justify-between'}"
class="flex w-full {table === 'questions'
? 'flex-row items-center justify-between'
: table === 'resources'
? 'flex-row items-center justify-center'
: 'flex-col items-start md:flex-row md:items-center md:justify-between'}"
>
{#if table === 'actions'}
<!-- Text content for actions, stacked vertically -->
Expand Down Expand Up @@ -155,8 +159,10 @@
<Tooltip text="Question already answered or skipped" position="right">
<div
id="list-item-{item.id}-status-icon"
class="status-indicator-lg status-default"
></div>
class="status-indicator-lg status-default flex items-center justify-center"
>
<span class="text-s text-white">✓</span>
</div>
</Tooltip>
{:then response}
{@const hasValidStatus =
Expand All @@ -166,32 +172,40 @@
<Tooltip text="Question already answered or skipped" position="right">
<div
id="list-item-{item.id}-status-icon"
class="status-indicator-lg status-default"
></div>
class="status-indicator-lg status-default flex items-center justify-center"
>
<span class="text-s text-white">✓</span>
</div>
</Tooltip>
{:else}
<!-- Magenta -->
<Tooltip text="Question requires attention from user" position="right">
<div
id="list-item-{item.id}-status-icon"
class="status-indicator-lg status-active"
></div>
class="status-indicator-lg status-active flex items-center justify-center"
>
<span class="text-s text-white">?</span>
</div>
</Tooltip>
{/if}
{:catch}
<Tooltip text="Question already answered or skipped" position="right">
<div
id="list-item-{item.id}-status-icon"
class="status-indicator-lg status-default"
></div>
class="status-indicator-lg status-default flex items-center justify-center"
>
<span class="text-s text-white">✓</span>
</div>
</Tooltip>
{/await}
{:else}
<Tooltip text="Question already answered or skipped" position="right">
<div
id="list-item-{item.id}-status-icon"
class="status-indicator-lg status-default"
></div>
class="status-indicator-lg status-default flex items-center justify-center"
>
<span class="text-s text-white">✓</span>
</div>
</Tooltip>
{/if}
</div>
Expand All @@ -210,7 +224,7 @@
href={item.url}
target="_blank"
rel="noopener noreferrer"
class="text-accent hover:text-accent-dark text-sm underline break-all"
class="text-accent hover:text-accent-dark text-sm break-all underline"
onclick={(e) => e.stopPropagation()}
>
{item.url}
Expand Down
Loading