* feat: add DiningAppPromo component and integrate it into Calendar
* feat: update WhatsNewPopup with new features and app download link
* fix: remove outdated links
* chore: run lint
* chore: run prettier
* feat: enhance DiningAppPromo with close button and integrate user preference for promo visibility
* chore: run lint
* chore: run check types
* fix: correct promo visibility logic in Calendar component
* feat: centralize app store URLs in appUrls.ts
* chore: run lint
* feat: integrate UT Dining promo image
* chore: run lint
* fix: update logo in WhatsNew popup to use LD icon
* fix: convert URLs to URL objects for consistency
* fix: update LD icon in WhatsNew popup to new version
* fix: update description for Coffee Shops feature to clarify operating times
* fix: rename promo state and storage key to showUTDiningPromo for clarity
---------
Co-authored-by: doprz <52579214+doprz@users.noreply.github.com>
* fix: include logo in screenshot
* fix: screenshots on small/zoomed windows, screenshots with no async/other
---------
Co-authored-by: Razboy20 <razboy20@gmail.com>
* feat: enhance schedule deletion to create a new schedule if none remain
* feat: set active index to new schedule if only one exists
* chore: run lint
* feat: enhance schedule deletion to create a new schedule if none remain
* feat: set active index to new schedule if only one exists
* chore: run lint
* feat: reset schedules on update, refactor invariant to within deleteSchedule
* chore: pnpm lint
---------
Co-authored-by: Samuel Gunter <29130894+Samathingamajig@users.noreply.github.com>
Co-authored-by: Samuel Gunter <sgunter@utexas.edu>
* feat: academicCalendars object
* feat: seemingly working start, end, and until dates
* feat: seemingly working everything
* style: removed unnecessary deps, reorganized code
* style: code comments yay
* chore: old version of pnpm?
* ci: force github actions to rerun
* feat: list instructors in ics string, basic tests
* feat: testable code for ICS, tests for ICS, filter excluded dates
* style: eslint autofix
* test: check for graceful handling of errors in ICS
* fix: actually use scheduleToIcsString
* chore: eslint didn't include a space where it should've
* fix: ensure tz everywhere
* refactor: move string util to string util file
* feat: em dash in calendar event title
* feat: academic calendars 22-23 and 23-24
* fix: en dash instead of em dash
* feat: create whats new initial component
* feat: create initial whats-new hook
* feat: create whats-new story
* feat: add button to open dialog in storybook
* feat: complete popup ui
* feat: add check for new updates or installs
* fix: fix linter issues
* fix: use proper features and add video
* fix: properly fetch version from manifest
* feat: add a link to open the popup
* fix: update spacing and features' content
* fix: update UTRP Map name
* fix: increase icon size and display version correctly
* feat: update the features video
* fix: update offwhite color
* fix: color typo
* fix: fixing colors again
* feat: use numbers instead of boolean
* fix: typo in import
* feat: add type safety to features array
* feat: cdn video url
* fix: delete mp4 video
* feat: handle video failure to load
* fix: make border outline tight to video
* feat: make design responsive
* fix: make features array readonly
---------
Co-authored-by: doprz <52579214+doprz@users.noreply.github.com>
Co-authored-by: Derek Chen <derex1987@gmail.com>
* chore: update lock file and set engine to use pnpm v10.5.2
* chore: set pnpm version to v10.x.x
* chore(ci): use pnpm v10
* chore: update Dockerfile to use pnpm@latest-10
* chore(ci): use pnpm/action-setup@v4
* fix: add active scale style and accept file prop
* chore: improve type safety using MIMEType
* fix: update FileUpload component to support multiple MIME types in accept prop
* chore: run lint
---------
Co-authored-by: doprz <52579214+doprz@users.noreply.github.com>
* feat: update styling and text for unscheduled courses in footer
* refactor: correct offwhite theme colors
* fix(ui): adjust em dash spacing, footer bottom padding, and vertically align course text
---------
Co-authored-by: doprz <52579214+doprz@users.noreply.github.com>
* feat(ui): calendar header redesign (WIP)
* feat(ui): calendar header redesign (WIP)
* chore: use path alias
* feat(ui): calendar header redesign
* implement Isaiah changes
* refactor to prevent unnecessary recreations of resize observer
* clean up resize observer and remove unnecessary checks
* remove offwhite border from toolbar
* merge
* complete toolbar
* update screenreader functionality
* ensure truncation works
* merge
* finish new toolbar
* remove unused screen size hook and .mjs file
* add in export button with options
* add static size for export button dropdown to prevent shrinking on smaller viewports
* change schedule section min width to prevent shrinkage
* change text for schedule section to match small caps
* fix truncating issues with small caps
* remove hidden overflow
* add padding
* add min height for hader
* reserve scrollbar width
* tmp
* add sticky positioning to header
* fix inert prop issue
* remove pnpm lock file
* fix scrollbar appearing too early
* fix vertical stickiness
* fix(ui): fix header spacing
* fix(ui): update total hours and courses to be h4
* fix(ui): reduce top spacing on header
* fix(ui): remove header top padding
* fix(ui): stop bottom scrollbar from shifting layout
* feat: add functionality to header and fix screenshot spacing
* feat: add functionality to header and fix screenshot spacing
* fix(ui): allow scrollbar in header and adjust padding to compensate for reserved space
* fix(ui): make export options container hug children
* fix(ui): add offwhite border
* chore: add back lock file from main branch :)
* feat(ui): add reduced motion for accessability
* feat(ui): change right scrollbar on calendar grid to be hidden when not necessary
* chore: make all buttons except export invisible
* chore: remove all buttons except export and adjust hardcoded pixel widths for responsiveness
---------
Co-authored-by: doprz <52579214+doprz@users.noreply.github.com>
Co-authored-by: Razboy20 <razboy20@gmail.com>
* fix: update CourseCellColorPicker.tsx background to white
* feat: add color picker to CalendarCourseCell component
* feat: add color picker functionality to update course colors
* fix: type issues with storybook components
* feat: add useColorPicker hook, isValidHexColor and updateCourseColors utilities
* refactor: color picker logic and UI components
* refactor: update useFlattenedCourseSchedule hook to include courseID property
* refactor: update storybook calendar components with updated props
* refactor: update color picker ui logic to account for position of cell
* fix: revert back to error handling for invalid rgb
* refactor: update jsdocs
* refactor: integrate ColorPickerContext into Calendar components and update props
* refactor: integrate ColorPickerContext into Calendar components and update related props
* refactor: change JSDocs comments and remove unused color inversion state
* refactor: update story components
* feat: add functionality for selecting secondary course colors
* refactor: enhance HexColorEditor to dynamically adjust tag icon color based on preview color
* refactor: simplify JSDoc comment in useColorPicker hook
* fix: revert Button component
* refactor: update CalendarCourseCell component positioning and styling
* fix: correct types in color.ts
* feat: add getDarkerShade function to compute darker shades of hex colors
* feat: add shadow to color picker button
* fix: update button size in ColorPatch component
* feat: implement debounced input for hex color editor and add useDebounce hook
* chore: utilize the logical and && operator instead of the ternary operator
* fix: imports and palette icon
* refactor: remove unused import
* fix: bug when course add fails with custom colors
* chore: run lint
* chore: run check-types
* feat: add HSL color type and conversion functions
* refactor: rename colorway to theme
* fix: hide color picker on screenshot
* fix: undo important syntax
* refactor: rename SomeFunction to DebouncedCallback
* refactor: remove inner function
* refactor: update return type to DebouncedCallback
* fix: adjust sizes for hash and palette button
* feat: create tests for hexToHSL and isValidHexColor
* refactor: update parameter type to use HexColor
* fix: increase size of palette button
* fix: update dependency array for hex code debounce
* fix: change colorPickerRef element ref
* feat: add Roboto Mono font
* fix: update input class to use monospace font
* feat: add getLighterShade function
* chore: run prettier and lint
* feat: synchronize local hex code with hexCode prop changes
---------
Co-authored-by: doprz <52579214+doprz@users.noreply.github.com>