true, 'comment_update' => true, 'title_change' => true, 'move_to_another_board' => true, 'Label' => true, 'due_at' => true, 'priority' => true, 'assignee_added' => true, 'assignee_removed' => true ]; const BOARD_NOTIFICATION_TYPES = [ 'email_after_comment' => true, 'email_after_task_assign' => true, 'email_after_task_stage_change' => true, 'email_after_task_due_date_change' => true, 'email_after_remove_from_task' => true, 'email_after_task_archive' => true, 'dashboard_notification' => true ]; const OBJECT_TYPE_BOARD_NOTIFICATION = 'board_notification'; const OBJECT_TYPE_USER_TASK_WATCH = 'task_user_watch'; const OBJECT_TYPE_TASK_DEPENDENCY = 'task_dependency'; const IS_TASK_TEMPLATE = 'is_template'; const IS_TASK_PINNED = 'is_pinned'; const BOARD_USER_SETTINGS = [ 'is_admin' => false ]; const BOARD_USER_VIEWER_ONLY_SETTINGS = [ 'is_admin' => false, 'is_viewer_only' => true ]; const FLUENT_BOARD_ADMIN = 'fluent_board_admin'; const IS_BOARD_ADMIN = 'is_admin'; const USER_RECENT_BOARDS = 'user_recent_boards'; const USER_GLOBAL_NOTIFICATIONS = 'user_global_notifications'; const OBJECT_TYPE_BOARD = 'board'; const OBJECT_TYPE_FOLDER = 'folder'; const OBJECT_TYPE_FOLDER_BOARD = 'FluentBoardsPro\App\Models\Folder'; const OBJECT_TYPE_TASK = 'TASK'; const CRM_CONTACT = 'crm_subscriber'; const CRM_CONTACT_ASSOCIATED_BOARD = 'contact_associated_board'; const BOARD_ASSOCIATED_CRM_CONTACT = 'board_associated_contact'; const BOARD_INVITATION = 'board_email_invitation'; const GLOBAL_EMAIL_NOTIFICATION_COMMENT = 'email_after_comment'; const GLOBAL_EMAIL_NOTIFICATION_TASK_ASSIGN = 'email_after_task_assign'; const GLOBAL_EMAIL_NOTIFICATION_STAGE_CHANGE = 'email_after_task_stage_change'; const GLOBAL_EMAIL_NOTIFICATION_DUE_DATE = 'email_after_task_due_date_change'; const GLOBAL_EMAIL_NOTIFICATION_REMOVE_FROM_TASK = 'email_after_remove_from_task'; const GLOBAL_EMAIL_NOTIFICATION_TASK_ARCHIVE = 'email_after_task_archive'; const GLOBAL_EMAIL_NOTIFICATION_CREATING_TASK = 'watch_on_creating_task'; const GLOBAL_EMAIL_NOTIFICATION_COMMENTING = 'watch_on_commenting'; const GLOBAL_EMAIL_NOTIFICATION_ASSIGNING= 'watch_on_assigning'; const GLOBAL_DASHBOARD_NOTIFICATION = 'dashboard_notification'; const USER_DASHBOARD_VIEW = 'user_dashboard_view'; const USER_LISTVIEW_PREFERENCES = 'user_listview_preferences'; const USER_TABLEVIEW_PREFERENCES = 'user_tableview_preferences'; const DEFAULT_DASHBOARD_VIEW_PREFERENCES = [ 'dashboard_view_label' => true, 'dashboard_view_priority' => true, 'dashboard_view_assignee' => true, 'dashboard_view_subtask' => true, 'dashboard_view_attachment' => true, 'dashboard_view_due_date' => true, 'dashboard_view_comment' => true, 'dashboard_view_notification' => true ]; const DEFAULT_TABLEVIEW_VIEW_PREFERENCES = [ 'table_view_priority' => true, 'table_view_status' => true, 'table_view_dates' => true, 'table_view_assignees' => true, 'table_view_labels' => true, 'table_view_created_at' => true, 'table_view_subtasks' => false, 'table_view_activity' => false, ]; const TRELLO_COLOR_MAP = [ "green" => "#4bce97", "yellow" => "#f5cd47", "orange" => "#fea362", "red" => "#f87168", "purple" => "#9f8fef", "blue" => "#579dff", "sky" => "#6cc3e0", "lime" => "#94c748", "pink" => "#e774bb", "black" => "#8590a2", "green_dark" => "#1f845a", "yellow_dark" => "#946f00", "orange_dark" => "#c25100", "red_dark" => "#ae2e24", "purple_dark" => "#5e4db2", "blue_dark" => "#0c66e4", "sky_dark" => "#206a83", "lime_dark" => "#5b7f24", "pink_dark" => "#943d73", "black_dark" => "#44546f", "green_light" => "#baf3db", "yellow_light" => "#f8e6a0", "orange_light" => "#fedec8", "red_light" => "#ffd5d2", "purple_light" => "#dfd8fd", "blue_light" => "#cce0ff", "sky_light" => "#c6edfb", "lime_light" => "#d3f1a7", "pink_light" => "#fdd0ec", "black_light" => "#dcdfe4" ]; const TEXT_COLOR_MAP = [ "green" => "#1B2533", "yellow" => "#1B2533", "orange" => "#1B2533", "red" => "#1B2533", "purple" => "#1B2533", "blue" => "#1B2533", "sky" => "#1B2533", "lime" => "#1B2533", "pink" => "#1B2533", "black" => "#1B2533", "green_dark" => "#fff", "yellow_dark" => "#fff", "orange_dark" => "#fff", "red_dark" => "#fff", "purple_dark" => "#fff", "blue_dark" => "#fff", "sky_dark" => "#fff", "lime_dark" => "#fff", "pink_dark" => "#fff", "black_dark" => "#fff", "green_light" => "#1B2533", "yellow_light" => "#1B2533", "orange_light" => "#1B2533", "red_light" => "#1B2533", "purple_light" => "#1B2533", "blue_light" => "#1B2533", "sky_light" => "#1B2533", "lime_light" => "#1B2533", "pink_light" => "#1B2533", "black_light" => "#1B2533" ]; const LABEL_COLOR_PRESET_SETTING = 'color_preset'; /** * Theme-aware label colors in the same order shown by the label picker. * * The persisted preset ID is stable; the UI selects the light or dark * pair at render time. The light pair is also stored as a compatibility * fallback for integrations and older clients. */ const LABEL_COLOR_PRESETS = [ ['id' => 'green-soft', 'light_bg_color' => '#C1EED9', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#234030', 'dark_text_color' => '#FFFFFF'], ['id' => 'yellow-soft', 'light_bg_color' => '#F1E593', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#463817', 'dark_text_color' => '#FFFFFF'], ['id' => 'orange-soft', 'light_bg_color' => '#F7E0A8', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#562F15', 'dark_text_color' => '#FFFFFF'], ['id' => 'red-soft', 'light_bg_color' => '#F6D2CE', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#4B211D', 'dark_text_color' => '#FFFFFF'], ['id' => 'purple-soft', 'light_bg_color' => '#E6D3F7', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#3A234F', 'dark_text_color' => '#FFFFFF'], ['id' => 'green-bold', 'light_bg_color' => '#70C392', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#366048', 'dark_text_color' => '#FFFFFF'], ['id' => 'yellow-bold', 'light_bg_color' => '#E4CA59', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#6F5523', 'dark_text_color' => '#FFFFFF'], ['id' => 'orange-bold', 'light_bg_color' => '#EBA146', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#874922', 'dark_text_color' => '#FFFFFF'], ['id' => 'red-bold', 'light_bg_color' => '#E17066', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#95362D', 'dark_text_color' => '#FFFFFF'], ['id' => 'purple-bold', 'light_bg_color' => '#B579E7', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#6B3E92', 'dark_text_color' => '#FFFFFF'], ['id' => 'green-strong', 'light_bg_color' => '#3F7654', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#70C392', 'dark_text_color' => '#1B2533'], ['id' => 'yellow-strong', 'light_bg_color' => '#826429', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#CFAA47', 'dark_text_color' => '#1B2533'], ['id' => 'orange-strong', 'light_bg_color' => '#A6572A', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#EBA146', 'dark_text_color' => '#1B2533'], ['id' => 'red-strong', 'light_bg_color' => '#AF4035', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#E17066', 'dark_text_color' => '#1B2533'], ['id' => 'purple-strong', 'light_bg_color' => '#8049AE', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#B579E7', 'dark_text_color' => '#1B2533'], ['id' => 'blue-soft', 'light_bg_color' => '#CCDDF9', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#1A2D53', 'dark_text_color' => '#FFFFFF'], ['id' => 'sky-soft', 'light_bg_color' => '#C9E8F7', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#223B49', 'dark_text_color' => '#FFFFFF'], ['id' => 'lime-soft', 'light_bg_color' => '#D5ECAA', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#333E22', 'dark_text_color' => '#FFFFFF'], ['id' => 'pink-soft', 'light_bg_color' => '#F4CDE6', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#402436', 'dark_text_color' => '#FFFFFF'], ['id' => 'gray-soft', 'light_bg_color' => '#D8D9DC', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#424446', 'dark_text_color' => '#FFFFFF'], ['id' => 'blue-bold', 'light_bg_color' => '#6A93E3', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#294FA9', 'dark_text_color' => '#FFFFFF'], ['id' => 'sky-bold', 'light_bg_color' => '#7BB9D6', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#345E73', 'dark_text_color' => '#FFFFFF'], ['id' => 'lime-bold', 'light_bg_color' => '#97BD5C', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#4A5F2B', 'dark_text_color' => '#FFFFFF'], ['id' => 'pink-bold', 'light_bg_color' => '#D172AE', 'light_text_color' => '#1B2533', 'dark_bg_color' => '#7D3D65', 'dark_text_color' => '#FFFFFF'], ['id' => 'gray-bold', 'light_bg_color' => '#81848B', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#595B60', 'dark_text_color' => '#FFFFFF'], ['id' => 'blue-strong', 'light_bg_color' => '#305FCA', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#6A93E3', 'dark_text_color' => '#1B2533'], ['id' => 'sky-strong', 'light_bg_color' => '#3D708B', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#7BB9D6', 'dark_text_color' => '#1B2533'], ['id' => 'lime-strong', 'light_bg_color' => '#5A7133', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#97BD5C', 'dark_text_color' => '#1B2533'], ['id' => 'pink-strong', 'light_bg_color' => '#964878', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#D172AE', 'dark_text_color' => '#1B2533'], ['id' => 'gray-strong', 'light_bg_color' => '#60636A', 'light_text_color' => '#FFFFFF', 'dark_bg_color' => '#8B8E93', 'dark_text_color' => '#1B2533'], ]; /** * Find a predefined label color by its persisted ID. * * @param string $presetId * @return array|null */ public static function getLabelColorPreset($presetId) { foreach (self::LABEL_COLOR_PRESETS as $preset) { if ($preset['id'] === $presetId) { return $preset; } } return null; } const FBS_ONBOARDING = 'fbs_onboarding'; const FBS_RECENTLY_VIEWED_CHECK = 'fbs_recently_viewed_checked'; const BOARD_BACKGROUND_DEFAULT_SOLID_COLORS = [ [ 'id' => 'solid_1', 'value' => '#6A88A7', 'dark_value' => '#314253' ], [ 'id' => 'solid_2', 'value' => '#9E7D61', 'dark_value' => '#574435' ], [ 'id' => 'solid_3', 'value' => '#D24F7D', 'dark_value' => '#6A223C' ], [ 'id' => 'solid_4', 'value' => '#D7543D', 'dark_value' => '#772E21' ], [ 'id' => 'solid_5', 'value' => '#B17720', 'dark_value' => '#614113' ], [ 'id' => 'solid_6', 'value' => '#8C8920', 'dark_value' => '#44420F' ], [ 'id' => 'solid_7', 'value' => '#429B3A', 'dark_value' => '#1B4C17' ], [ 'id' => 'solid_8', 'value' => '#259A77', 'dark_value' => '#114B39' ], [ 'id' => 'solid_9', 'value' => '#259697', 'dark_value' => '#114949' ], [ 'id' => 'solid_10', 'value' => '#2491B6', 'dark_value' => '#114659' ], [ 'id' => 'solid_11', 'value' => '#2682F1', 'dark_value' => '#0F3F79' ], [ 'id' => 'solid_12', 'value' => '#7F6DEE', 'dark_value' => '#3D3379' ], [ 'id' => 'solid_13', 'value' => '#A85ED1', 'dark_value' => '#532B6A' ], [ 'id' => 'solid_14', 'value' => '#C156AB', 'dark_value' => '#612655' ], [ 'id' => 'solid_15', 'value' => '#FB98EE', 'dark_value' => '#673361' ], [ 'id' => 'solid_16', 'value' => '#522BC1', 'dark_value' => '#352678' ], [ 'id' => 'solid_17', 'value' => '#3C40F3', 'dark_value' => '#222A8C' ], [ 'id' => 'solid_18', 'value' => '#FCB84E', 'dark_value' => '#6D4C14' ], [ 'id' => 'solid_19', 'value' => '#FCA848', 'dark_value' => '#714714' ], [ 'id' => 'solid_20', 'value' => '#EF8346', 'dark_value' => '#763B19' ], [ 'id' => 'solid_21', 'value' => '#B63220', 'dark_value' => '#681D22' ], [ 'id' => 'solid_22', 'value' => '#63F1D9', 'dark_value' => '#15584E' ] ]; const BOARD_BACKGROUND_DEFAULT_GRADIENT_COLORS = [ [ 'id' => 'gradient_1', 'value' => 'linear-gradient(145deg, #479176 0%, #0F2C2B 100%)', 'dark_value' => 'linear-gradient(145deg, #156A4F 0%, #0D302F 100%)', ], [ 'id' => 'gradient_2', 'value' => 'linear-gradient(145deg, #A470E1 0%, #2E2758 100%)', 'dark_value' => 'linear-gradient(145deg, #7637B7 0%, #2A2650 100%)', ], [ 'id' => 'gradient_3', 'value' => 'linear-gradient(145deg, #F86E35 0%, #F13855 98%)', 'dark_value' => 'linear-gradient(145deg, #9F3A13 0%, #580A18 98%)', ], [ 'id' => 'gradient_4', 'value' => 'linear-gradient(145deg, #145CD7 0%, #050634 100%)', 'dark_value' => 'linear-gradient(145deg, #1858B4 0%, #242155 100%)', ], [ 'id' => 'gradient_5', 'value' => 'linear-gradient(145deg, #5E69F9 0%, #F3A6FB 100%)', 'dark_value' => 'linear-gradient(145deg, #423EA7 0%, #4B1D50 100%)', ], [ 'id' => 'gradient_6', 'value' => 'linear-gradient(145deg, #62EED9 0%, #646FF9 100%)', 'dark_value' => 'linear-gradient(145deg, #187767 0%, #2A2660 100%)', ] ]; const ACTIVITY_ACTION_CREATED = 'created'; const ACTIVITY_ACTION_UPDATED = 'updated'; const ACTIVITY_ACTION_DELETED = 'deleted'; const TASK_ATTACHMENT = 'TASK'; const TASK_DESCRIPTION = 'task_description'; const COMMENT_IMAGE = 'comment_image'; const ATTACHMENT_UPLOAD_BOARD_ID = 'upload_board_id'; const ATTACHMENT_UPLOAD_USER_ID = 'upload_user_id'; const ATTACHMENT_LEGACY_SIGNATURE_QUERY_KEY = 'secure_sign'; const ATTACHMENT_LEGACY_EXPIRES_QUERY_KEY = 'secure_expires'; const REPEAT_TASK_META = 'repeat_task'; const TASK_CUSTOM_FIELD = 'task_custom_field'; const BOARD_CSV_EXPORT = 'csv_export'; const BOARD_JSON_EXPORT = 'json_export'; const BOARD_ATTACHMENT = 'BOARD'; const BOARD_BACKGROUND_IMAGE = 'board_background_image'; const FBS_TASK_TABS_CONFIG = "fbs_task_tabs_config"; const FBS_OLD_SUBTASK_SYNC = 'fbs_old_subtask_sync'; const SUBTASK_GROUP_NAME = 'group_name'; const SUBTASK_GROUP_CHILD = 'subtask_group_id'; const USER_PINNED_BOARDS = 'pinned_boards'; const META_KEY_ARCHIVED_BY_STAGE = 'archived_by_stage'; }