<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2017 The Android Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<resources>
    <!-- Framework -->
    <!-- Margin -->
    <dimen name="car_margin">20dp</dimen>

    <!-- Gutters -->
    <dimen name="car_gutter_size">16dp</dimen>

    <!-- Keylines -->
    <dimen name="car_keyline_1">24dp</dimen>
    <dimen name="car_keyline_2">96dp</dimen>
    <dimen name="car_keyline_3">112dp</dimen>
    <dimen name="car_keyline_4">148dp</dimen>
    <dimen name="car_keyline_1_neg">-24dp</dimen>
    <dimen name="car_keyline_2_neg">-96dp</dimen>
    <dimen name="car_keyline_3_neg">-112dp</dimen>
    <dimen name="car_keyline_4_neg">-148dp</dimen>

    <!-- Paddings -->
    <dimen name="car_padding_1">4dp</dimen>
    <dimen name="car_padding_2">10dp</dimen>
    <dimen name="car_padding_3">16dp</dimen>
    <dimen name="car_padding_4">28dp</dimen>
    <dimen name="car_padding_5">32dp</dimen>

    <!-- Radii -->
    <dimen name="car_radius_1">4dp</dimen>
    <dimen name="car_radius_2">8dp</dimen>
    <dimen name="car_radius_3">16dp</dimen>
    <dimen name="car_radius_5">100dp</dimen>

    <!-- Car Component Dimensions -->
    <!-- Type Sizings -->
    <dimen name="car_title_size">32sp</dimen>
    <dimen name="car_title2_size">32sp</dimen>
    <dimen name="car_headline1_size">45sp</dimen>
    <dimen name="car_headline2_size">36sp</dimen>
    <dimen name="car_headline3_size">24sp</dimen>
    <dimen name="car_headline4_size">20sp</dimen>
    <dimen name="car_body1_size">32sp</dimen>
    <dimen name="car_body2_size">26sp</dimen>
    <dimen name="car_body3_size">16sp</dimen>
    <dimen name="car_body4_size">14sp</dimen>
    <dimen name="car_body5_size">18sp</dimen>
    <dimen name="car_action1_size">26sp</dimen>

    <!-- Icons and Buttons -->
    <!-- Icons -->
    <dimen name="car_primary_icon_size">44dp</dimen>
    <dimen name="car_secondary_icon_size">24dp</dimen>

    <!-- Avatars -->
    <dimen name="car_avatar_size">56dp</dimen>

    <!-- Minimum touch target size. -->
    <dimen name="car_touch_target_size">76dp</dimen>

    <!-- Buttons -->
    <dimen name="car_button_height">56dp</dimen>
    <dimen name="car_button_min_width">158dp</dimen>
    <dimen name="car_button_horizontal_padding">@dimen/car_padding_4</dimen>
    <dimen name="car_borderless_button_horizontal_padding">0dp</dimen>
    <dimen name="car_button_radius">@dimen/car_radius_1</dimen>

    <!-- Application Bar -->
    <dimen name="car_app_bar_height">80dp</dimen>

    <!-- Action Bars -->
    <dimen name="car_action_bar_height">128dp</dimen>
    <dimen name="car_secondary_single_action_bar_height">@dimen/car_action_bar_height</dimen>
    <dimen name="car_secondary_double_action_bar_height">256dp</dimen>

    <!-- Lists -->
    <dimen name="car_single_line_list_item_height">96dp</dimen>
    <dimen name="car_double_line_list_item_height">@dimen/car_single_line_list_item_height</dimen>
    <dimen name="car_list_divider_height">1dp</dimen>
    <!-- The height of a vertical line divider. -->
    <dimen name="car_vertical_line_divider_height">60dp</dimen>
    <dimen name="car_vertical_line_divider_width">1dp</dimen>

    <!-- Cards -->
    <dimen name="car_card_header_height">76dp</dimen>
    <dimen name="car_card_action_bar_height">76dp</dimen>

    <!-- Dialogs -->
    <dimen name="car_dialog_header_height">@dimen/car_card_header_height</dimen>
    <dimen name="car_dialog_action_bar_height">@dimen/car_card_action_bar_height</dimen>

    <!-- Slide Up Menu -->
    <dimen name="car_slide_up_menu_initial_height">76dp</dimen>

    <!-- Slide Down Menu -->
    <dimen name="car_slide_down_menu_initial_height">@dimen/car_slide_up_menu_initial_height</dimen>

    <!-- Sub Header -->
    <dimen name="car_sub_header_height">76dp</dimen>

    <!-- Seekbar -->
    <dimen name="car_seekbar_height">6dp</dimen>
    <dimen name="car_seekbar_thumb_size">20dp</dimen>
    <dimen name="car_seekbar_thumb_stroke">1dp</dimen>

    <!-- Scroll Bar -->
    <dimen name="car_scroll_bar_padding">@dimen/car_padding_2</dimen>

    <!-- Scroll Bar Thumb -->
    <dimen name="car_scroll_bar_thumb_width">@dimen/car_seekbar_height</dimen>
    <dimen name="car_scroll_bar_thumb_margin">@dimen/car_padding_1</dimen>

    <!-- Scroll Bar and Alpha Jump Buttons -->
    <dimen name="car_scroll_bar_button_size">56dp</dimen>
    <dimen name="car_alpha_jump_button_size">@dimen/car_scroll_bar_button_size</dimen>

    <!-- Progress Bar -->
    <dimen name="car_progress_bar_height">@dimen/car_seekbar_height</dimen>

    <!-- Text Input -->
    <dimen name="car_text_input_line_height">2dp</dimen>

    <!-- PagedListView Dimensions -->
    <!-- Sample row height used for scroll bar calculations in the off chance that a view hasn't
        been measured. It's highly unlikely that this value will actually be used for more than
        a frame max. The sample row is a 96dp card + 16dp margin on either side. -->
    <dimen name="car_sample_row_height">128dp</dimen>

    <!-- The amount of space the LayoutManager will make sure the last item on the screen is
         peeking before scrolling down -->
    <dimen name="car_last_card_peek_amount">16dp</dimen>

    <!-- Drawer Dimensions -->
    <!-- Size of progress-bar in Drawer -->
    <dimen name="car_drawer_progress_bar_size">48dp</dimen>

    <!-- The ending margin of the drawer. Is is the amount that the navigation drawer does not
       cover the screen. -->
    <dimen name="car_drawer_margin_end">96dp</dimen>

    <!-- Dimensions of the back arrow in the drawer. -->
    <dimen name="car_arrow_size">96dp</dimen>
    <dimen name="car_arrow_thickness">3dp</dimen>
    <dimen name="car_arrow_shaft_length">34dp</dimen>
    <dimen name="car_arrow_head_length">18dp</dimen>
    <dimen name="car_menu_bar_spacing">6dp</dimen>
    <dimen name="car_menu_bar_length">40dp</dimen>

    <!-- The size of the starting icon. -->
    <dimen name="car_drawer_list_item_icon_size">64dp</dimen>

    <!-- The margin after the starting icon. -->
    <dimen name="car_drawer_list_item_icon_end_margin">32dp</dimen>

    <!-- The ending margin on a list view. -->
    <dimen name="car_drawer_list_item_end_margin">32dp</dimen>

    <!-- The size of the starting icon in a small list item.-->
    <dimen name="car_drawer_list_item_small_icon_size">56dp</dimen>

    <!-- The size of the ending icon in a list item. -->
    <dimen name="car_drawer_list_item_end_icon_size">56dp</dimen>

    <!-- The margin between text is lies on top of each other. -->
    <dimen name="car_text_vertical_margin">2dp</dimen>
</resources>
