* 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>
* 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>
* feat(settings): add option to always open calendar in new tab
* fix: await setting
---------
Co-authored-by: doprz <52579214+doprz@users.noreply.github.com>
* docs: proper captializing
* docs: confirmed that the for loop is entered but on first startup something else
* feat: turns out - validate login status - not in background - pass background now
* feat: kronk.gif
* Update UserScheduleMessages.ts
* Update addCourseByURL.ts
* chore: format
* chore: chore
---------
Co-authored-by: doprz <52579214+doprz@users.noreply.github.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
---------
Co-authored-by: doprz <52579214+doprz@users.noreply.github.com>
* feat: update calendar sidebar, footer, and header with Figma design
* chore: run lint
* feat: update header with Figma design
* chore: run lint
* chore: remove unused vars
* chore: fix types
* fix: adjust sidebar minimum width
* fix: update LogoIcon layout to ensure text is always displayed
* feat: add spacing constants
* fix: add sidebar styling with spacing system and sticky header
* fix: update spacing constants to use rem units
* refactor: replace padding with spacing system and colors with UTRP theme
* refactor: rename ImportantLinks to ResourceLinks
* refactor: simplify CalendarHeader button component by using icon prop
* feat: add sidebar open and close transition
* refactor: rename unused var
* fix: update social icon color
* feat: improve layout and spacing in calendar components
* refactor: remove unused GearSix icon and options handler
* feat: update calendar components with new icons and improved spacing
* fix: correct class name
* refactor: organize social links into array and update link styling
* refactor: remove unused import
* fix: adjust gap spacing in radio button
* fix: update divider component to use theme offwhite1
* fix: increase size of outward arrow icon
* feat: add getSpacingInPx function to convert rem to pixels
* fix: update gap spacing in CalendarSchedules component to use spacing system
* fix: rollback footer social icons to original icons
* fix: update Calendar styles to use theme offwhite1 and adjust padding to account for scrollbar
* fix: update LargeLogo component to use gap-spacing-3
* fix: update button variants to 'minimal' and adjust styles for consistency
* fix: adjust padding in Calendar component for better layout consistency
* fix: increase size of arrow icon
* fix: add shrink-0 to radio buttons
* feat: export schedule function to be added to handler
* feat: use UserScheduleStore and return json
* feat: download functionality
* feat: oh wow we already have a blob download util that is very very nice
* feat: return empty json if none found
* feat: import function completion
* feat: file uploading done
* feat: new input component-stories made-settings input replaced with component
* feat: attempt 1 to hook settings.tsx to importSchedule
* feat: it works horray aka using right Course constructor it works
* chore: fix jsdoc
* chore: comments and debug style
* docs: extra comment
* feat: name of schedule more user friendly
* feat: reworked how schedule is passed and check for file being schedule
* feat: color is kept on import
* fix: add sendResponse to exportSchedule
---------
Co-authored-by: doprz <52579214+doprz@users.noreply.github.com>
* fix: instructor formatting errors
* refactor: simplify logic in Instructor toString, remove unused formatters
* refactor: remove "unnecessary" else's after returns
I think it looks worse like this but whatever
* feat: first button attempt
* feat: fetching each course code
* feat: adding courses function from there but idk where to get the active schedule from
* docs: todo
* feat: retrieved active schedule
* feat: button tactics
* feat: add support for my.utexas.edu
* feat: inject button into MyUT
* feat: refactor code to render components dynamically based on site
* feat: scrape course ids from MyUT and remove duplicates
* feat: site support links for classlist
* feat: add utility function to add course by URL
* feat: support additional case for course cal
* feat: duplicates
* chore: cleanup
* feat: temporary checkpoint
* feat: reroute to use new add course by url
* feat: linking to new function, cleaning up, adding messaging for course url add
* chore: unused import
* feat: relinking addCourse function to the button fingers crossed
* feat: we did it!
* chore: remove comment
* chore: cleanup cleanup
* feat: tried to handle the async stuff because of that small bug but nothing fixed. doesnt hurt tho
* feat: i have fixed it holy kevinnn
* chore: delete unused file and organization
* chore: removed unused log
* feat: better log for course add
* chore: refactor via data destructuring
* chore: pass component as prop via React.ComponentType
---------
Co-authored-by: Ethan Lanting <ethanlanting@gmail.com>
Co-authored-by: doprz <52579214+doprz@users.noreply.github.com>
* feat: add CacheStore for GitHub stats and use names instead of usernames
* fix: only cache name for successful API queries
* chore: linting
* chore: refactor any with unknown and add jsdocs
* fix: use cached endpoint to avoid rate limiting issues
* fix: code style
* chore: add type assertion
* fix: use correct type
* Revert "fix: use correct type"
This reverts commit 74956c12f3.
* fix: use correct type
* fix: use URL Web API
* fix: add CONTRIBUTORS_API_ROUTE constant
---------
Co-authored-by: Derek Chen <derex1987@gmail.com>
Co-authored-by: doprz <52579214+doprz@users.noreply.github.com>
* feat: add more relevant links to the From the Team section
* feat: add CRXPages.ts
* chore: update to TS 4.9 satisfies
---------
Co-authored-by: doprz <52579214+doprz@users.noreply.github.com>
* feat: add core curriculum chips to injected popup
* fix: add VP and MAcore indicators
* feat: core now defined in constructor
* fix: make core and flags closer together
* fix: stop empty core chip from showing when no core requirements
* fix: remove optional chaining for core chips
* feat: generalize Chip for both flags and core classes
* fix: change types for storybook and add new story for CoreChip
* fix: remove labelMap prop from Chip, chore: clean up imports
* feat: change tooltip for core curriculum requirement
---------
Co-authored-by: Derek Chen <derex1987@gmail.com>
* feat: temporary removal of waitlist etc
* feat: experimental toggle for icons for now
* feat: popupmain toggle
* feat: cal header toggle
* feat: adjusted course cell for toggle
* feat: fine it'll be a constant
* chore: lint
* feat: other experimental options
* feat: screenshot whole page, hide certain elements, screenshot fixed size
* refactor: use variants instead of groups and custom rules
* feat: scaled header, smaller body, weird padding/margin changes
* feat: consistent sizing & style regardless of zoom
* feat: use downloadBlob instead of hand-rolled image saving
* fix: be type safe is toBlob returns Promise<null>
* fix: revoke object url when it should be
* fix: animation scheduling
---------
Co-authored-by: Razboy20 <razboy20@gmail.com>
* feat: calendar-course-cell-color-picker done??
* fix: ensure hex code is lowercase
* fix: make hex codes lower case
* chore: convert px to rem in ColorPatch.tsx
* fix: add functionality to the invert colors button
* fix: some more lowercase stuff
* fix: remove hardcoded color patch hex codes, remove hardcoded pixel values
* chore: remove React.FC
* chore: modify docs
* fix: remove duplicate style
* fix: used name over size specified classes
* fix: grid over flex, elie feedback
* refactor: use color strings instead of indices
* refactor: remove console.log statements
* feat: Imports to popupcourseblock.tsx
* changing the blocks to accept parameters for clicking functionality which may or may not open the calendar
* put the click parameter in the div of popupcourseblock
* safely calling for onCourseClick in the event it is an undefined function
* handled other calls of popupcourseblock with empty functions for now, and i think popupmain opens calendar now when the course block is clicked
* feat: Testing out passing params to handleOpenCalendar
* url that takes in params to open calendar with params
* further work on url params; from popup main to handleopencalendar to calendar using urlsearchparams
* feat: small calendar shifting after merge:
* fix: merge handling and then references to new click parameter
* fix: optional params
* feat: split into two functions instead
* fix: changing proper usage of handleOpenCalendarWithCourse
* feat: show course popup when calendar opened
* chore: remove useless commented out code
* feat: close popup on calendar nav, fix build errors, remove useless comments/logs
* chore: chromatic so dumb fr why aren't you chrome
* fix: refactor listeners to build properly
* feat: exit early when not in chrome extension
* fix: function return type
* fix: function return type x2
* fix: generic type for useState
* refactor: extract calendar opening on click functions
* refactor: chrome runtime mock, omit question mark if no query params, rename calendar event
* refactor: move course click event into component directly instead of prop
* refactor: removed useless wrapper functions, made popup course block more accessible
* fix: i dont wanna talk about it
---------
Co-authored-by: Samuel Gunter <sgunter@utexas.edu>
* refactor(UserSchedule): index by a unique id rather than name
* refactor: Update parameter names in schedule function jsdocs
* refactor: change more instances of .name to .id
* refactor: Fix typo in variable name and update references
* refactor: Remove console.log statement
* fix(chromatic): Update ScheduleListItem story
* refactor: remove unused eslint rule