poetry-ui 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitattributes +6 -0
- data/CHANGELOG.md +3 -0
- data/LICENSE.txt +21 -0
- data/README.md +87 -0
- data/THIRD_PARTY_NOTICES.md +201 -0
- data/app/components/poetry/ui/accordion/component.html.erb +3 -0
- data/app/components/poetry/ui/accordion/component.rb +197 -0
- data/app/components/poetry/ui/accordion/preview.rb +39 -0
- data/app/components/poetry/ui/accordion/style.rb +37 -0
- data/app/components/poetry/ui/alert/component.html.erb +6 -0
- data/app/components/poetry/ui/alert/component.rb +61 -0
- data/app/components/poetry/ui/alert/preview.rb +35 -0
- data/app/components/poetry/ui/alert/style.rb +24 -0
- data/app/components/poetry/ui/alert_dialog/component.html.erb +17 -0
- data/app/components/poetry/ui/alert_dialog/component.rb +208 -0
- data/app/components/poetry/ui/alert_dialog/preview.rb +48 -0
- data/app/components/poetry/ui/alert_dialog/style.rb +46 -0
- data/app/components/poetry/ui/aspect_ratio/component.rb +63 -0
- data/app/components/poetry/ui/aspect_ratio/preview.rb +29 -0
- data/app/components/poetry/ui/aspect_ratio/style.rb +13 -0
- data/app/components/poetry/ui/attachment/component.html.erb +13 -0
- data/app/components/poetry/ui/attachment/component.rb +139 -0
- data/app/components/poetry/ui/attachment/preview.rb +83 -0
- data/app/components/poetry/ui/attachment/style.rb +59 -0
- data/app/components/poetry/ui/autocomplete/component.html.erb +16 -0
- data/app/components/poetry/ui/autocomplete/component.rb +193 -0
- data/app/components/poetry/ui/autocomplete/preview.rb +39 -0
- data/app/components/poetry/ui/autocomplete/style.rb +18 -0
- data/app/components/poetry/ui/avatar/component.rb +103 -0
- data/app/components/poetry/ui/avatar/group_preview.html.erb +11 -0
- data/app/components/poetry/ui/avatar/preview.rb +50 -0
- data/app/components/poetry/ui/avatar/style.rb +34 -0
- data/app/components/poetry/ui/badge/component.rb +73 -0
- data/app/components/poetry/ui/badge/preview.rb +54 -0
- data/app/components/poetry/ui/badge/style.rb +35 -0
- data/app/components/poetry/ui/breadcrumb/component.html.erb +32 -0
- data/app/components/poetry/ui/breadcrumb/component.rb +102 -0
- data/app/components/poetry/ui/breadcrumb/dropdown_crumb_preview.html.erb +21 -0
- data/app/components/poetry/ui/breadcrumb/preview.rb +45 -0
- data/app/components/poetry/ui/breadcrumb/style.rb +25 -0
- data/app/components/poetry/ui/bubble/component.html.erb +4 -0
- data/app/components/poetry/ui/bubble/component.rb +106 -0
- data/app/components/poetry/ui/bubble/preview.rb +62 -0
- data/app/components/poetry/ui/bubble/style.rb +47 -0
- data/app/components/poetry/ui/button/component.html.erb +14 -0
- data/app/components/poetry/ui/button/component.rb +168 -0
- data/app/components/poetry/ui/button/preview.rb +94 -0
- data/app/components/poetry/ui/button/style.rb +41 -0
- data/app/components/poetry/ui/button_group/component.rb +70 -0
- data/app/components/poetry/ui/button_group/popup_triggers_preview.html.erb +21 -0
- data/app/components/poetry/ui/button_group/preview.rb +46 -0
- data/app/components/poetry/ui/button_group/style.rb +27 -0
- data/app/components/poetry/ui/button_group/text_prefix_preview.html.erb +7 -0
- data/app/components/poetry/ui/calendar/component.html.erb +72 -0
- data/app/components/poetry/ui/calendar/component.rb +366 -0
- data/app/components/poetry/ui/calendar/preview.rb +55 -0
- data/app/components/poetry/ui/calendar/style.rb +55 -0
- data/app/components/poetry/ui/card/component.html.erb +11 -0
- data/app/components/poetry/ui/card/component.rb +90 -0
- data/app/components/poetry/ui/card/preview.rb +29 -0
- data/app/components/poetry/ui/card/style.rb +23 -0
- data/app/components/poetry/ui/carousel/component.html.erb +17 -0
- data/app/components/poetry/ui/carousel/component.rb +179 -0
- data/app/components/poetry/ui/carousel/preview.rb +67 -0
- data/app/components/poetry/ui/carousel/style.rb +39 -0
- data/app/components/poetry/ui/checkbox/component.html.erb +22 -0
- data/app/components/poetry/ui/checkbox/component.rb +179 -0
- data/app/components/poetry/ui/checkbox/preview.rb +68 -0
- data/app/components/poetry/ui/checkbox/style.rb +28 -0
- data/app/components/poetry/ui/clipboard_text/component.html.erb +15 -0
- data/app/components/poetry/ui/clipboard_text/component.rb +154 -0
- data/app/components/poetry/ui/clipboard_text/preview.rb +24 -0
- data/app/components/poetry/ui/clipboard_text/style.rb +23 -0
- data/app/components/poetry/ui/code_block/component.html.erb +13 -0
- data/app/components/poetry/ui/code_block/component.rb +141 -0
- data/app/components/poetry/ui/code_block/preview.rb +40 -0
- data/app/components/poetry/ui/code_block/style.rb +38 -0
- data/app/components/poetry/ui/collapsible/component.html.erb +4 -0
- data/app/components/poetry/ui/collapsible/component.rb +134 -0
- data/app/components/poetry/ui/collapsible/preview.rb +24 -0
- data/app/components/poetry/ui/combobox/component.html.erb +49 -0
- data/app/components/poetry/ui/combobox/component.rb +1086 -0
- data/app/components/poetry/ui/combobox/preview.rb +164 -0
- data/app/components/poetry/ui/combobox/style.rb +148 -0
- data/app/components/poetry/ui/command/component.html.erb +20 -0
- data/app/components/poetry/ui/command/component.rb +526 -0
- data/app/components/poetry/ui/command/dialog_component.html.erb +14 -0
- data/app/components/poetry/ui/command/dialog_component.rb +206 -0
- data/app/components/poetry/ui/command/dialog_preview.rb +39 -0
- data/app/components/poetry/ui/command/preview.rb +121 -0
- data/app/components/poetry/ui/command/style.rb +78 -0
- data/app/components/poetry/ui/composable_trigger.rb +63 -0
- data/app/components/poetry/ui/context_menu/component.html.erb +6 -0
- data/app/components/poetry/ui/context_menu/component.rb +358 -0
- data/app/components/poetry/ui/context_menu/preview.rb +111 -0
- data/app/components/poetry/ui/context_menu/style.rb +59 -0
- data/app/components/poetry/ui/data_table/component.html.erb +78 -0
- data/app/components/poetry/ui/data_table/component.rb +277 -0
- data/app/components/poetry/ui/data_table/preview.rb +68 -0
- data/app/components/poetry/ui/data_table/state.rb +115 -0
- data/app/components/poetry/ui/data_table/style.rb +42 -0
- data/app/components/poetry/ui/date_field/component.html.erb +7 -0
- data/app/components/poetry/ui/date_field/component.rb +209 -0
- data/app/components/poetry/ui/date_field/preview.rb +42 -0
- data/app/components/poetry/ui/date_field/style.rb +35 -0
- data/app/components/poetry/ui/date_picker/component.html.erb +23 -0
- data/app/components/poetry/ui/date_picker/component.rb +242 -0
- data/app/components/poetry/ui/date_picker/preview.rb +31 -0
- data/app/components/poetry/ui/date_picker/style.rb +25 -0
- data/app/components/poetry/ui/deferred/component.html.erb +16 -0
- data/app/components/poetry/ui/deferred/component.rb +90 -0
- data/app/components/poetry/ui/deferred/preview.rb +24 -0
- data/app/components/poetry/ui/dialog/component.html.erb +21 -0
- data/app/components/poetry/ui/dialog/component.rb +194 -0
- data/app/components/poetry/ui/dialog/preview.rb +33 -0
- data/app/components/poetry/ui/dialog/style.rb +30 -0
- data/app/components/poetry/ui/drawer/component.html.erb +16 -0
- data/app/components/poetry/ui/drawer/component.rb +207 -0
- data/app/components/poetry/ui/drawer/preview.rb +69 -0
- data/app/components/poetry/ui/drawer/style.rb +105 -0
- data/app/components/poetry/ui/dropdown_menu/component.html.erb +6 -0
- data/app/components/poetry/ui/dropdown_menu/component.rb +350 -0
- data/app/components/poetry/ui/dropdown_menu/preview.rb +101 -0
- data/app/components/poetry/ui/dropdown_menu/style.rb +60 -0
- data/app/components/poetry/ui/empty/component.html.erb +10 -0
- data/app/components/poetry/ui/empty/component.rb +79 -0
- data/app/components/poetry/ui/empty/preview.rb +27 -0
- data/app/components/poetry/ui/empty/style.rb +27 -0
- data/app/components/poetry/ui/family_identity.rb +52 -0
- data/app/components/poetry/ui/field/component.html.erb +19 -0
- data/app/components/poetry/ui/field/component.rb +183 -0
- data/app/components/poetry/ui/field/preview.html.erb +30 -0
- data/app/components/poetry/ui/field/preview.rb +72 -0
- data/app/components/poetry/ui/field/style.rb +68 -0
- data/app/components/poetry/ui/field_group/component.rb +61 -0
- data/app/components/poetry/ui/field_group/preview.html.erb +30 -0
- data/app/components/poetry/ui/field_group/preview.rb +20 -0
- data/app/components/poetry/ui/field_group/style.rb +25 -0
- data/app/components/poetry/ui/field_separator/component.rb +70 -0
- data/app/components/poetry/ui/field_separator/preview.rb +18 -0
- data/app/components/poetry/ui/field_separator/style.rb +20 -0
- data/app/components/poetry/ui/fieldset/component.rb +90 -0
- data/app/components/poetry/ui/fieldset/preview.html.erb +22 -0
- data/app/components/poetry/ui/fieldset/preview.rb +25 -0
- data/app/components/poetry/ui/fieldset/style.rb +18 -0
- data/app/components/poetry/ui/file_input/component.html.erb +14 -0
- data/app/components/poetry/ui/file_input/component.rb +188 -0
- data/app/components/poetry/ui/file_input/preview.rb +30 -0
- data/app/components/poetry/ui/file_input/style.rb +35 -0
- data/app/components/poetry/ui/hover_card/component.html.erb +6 -0
- data/app/components/poetry/ui/hover_card/component.rb +201 -0
- data/app/components/poetry/ui/hover_card/preview.rb +60 -0
- data/app/components/poetry/ui/hover_card/style.rb +17 -0
- data/app/components/poetry/ui/icon/component.rb +127 -0
- data/app/components/poetry/ui/icon/preview.rb +21 -0
- data/app/components/poetry/ui/input/component.rb +80 -0
- data/app/components/poetry/ui/input/preview.rb +35 -0
- data/app/components/poetry/ui/input/style.rb +18 -0
- data/app/components/poetry/ui/input_group/button_preview.html.erb +12 -0
- data/app/components/poetry/ui/input_group/component.rb +69 -0
- data/app/components/poetry/ui/input_group/preview.rb +23 -0
- data/app/components/poetry/ui/input_group/search_preview.html.erb +13 -0
- data/app/components/poetry/ui/input_group/style.rb +40 -0
- data/app/components/poetry/ui/input_group/textarea_preview.html.erb +10 -0
- data/app/components/poetry/ui/input_group_field.rb +61 -0
- data/app/components/poetry/ui/input_otp/component.html.erb +25 -0
- data/app/components/poetry/ui/input_otp/component.rb +250 -0
- data/app/components/poetry/ui/input_otp/preview.rb +91 -0
- data/app/components/poetry/ui/input_otp/style.rb +36 -0
- data/app/components/poetry/ui/item/component.html.erb +13 -0
- data/app/components/poetry/ui/item/component.rb +99 -0
- data/app/components/poetry/ui/item/group_preview.html.erb +15 -0
- data/app/components/poetry/ui/item/preview.rb +52 -0
- data/app/components/poetry/ui/item/style.rb +45 -0
- data/app/components/poetry/ui/kbd/component.rb +47 -0
- data/app/components/poetry/ui/kbd/group_preview.html.erb +4 -0
- data/app/components/poetry/ui/kbd/preview.rb +23 -0
- data/app/components/poetry/ui/kbd/style.rb +13 -0
- data/app/components/poetry/ui/label/component.rb +46 -0
- data/app/components/poetry/ui/label/preview.html.erb +5 -0
- data/app/components/poetry/ui/label/preview.rb +16 -0
- data/app/components/poetry/ui/label/style.rb +13 -0
- data/app/components/poetry/ui/link/component.rb +62 -0
- data/app/components/poetry/ui/link/preview.rb +31 -0
- data/app/components/poetry/ui/link/style.rb +20 -0
- data/app/components/poetry/ui/marker/component.html.erb +4 -0
- data/app/components/poetry/ui/marker/component.rb +81 -0
- data/app/components/poetry/ui/marker/preview.rb +43 -0
- data/app/components/poetry/ui/marker/style.rb +24 -0
- data/app/components/poetry/ui/menubar/component.html.erb +3 -0
- data/app/components/poetry/ui/menubar/component.rb +493 -0
- data/app/components/poetry/ui/menubar/preview.rb +164 -0
- data/app/components/poetry/ui/menubar/style.rb +71 -0
- data/app/components/poetry/ui/menus.rb +386 -0
- data/app/components/poetry/ui/message/component.html.erb +8 -0
- data/app/components/poetry/ui/message/component.rb +64 -0
- data/app/components/poetry/ui/message/preview.rb +33 -0
- data/app/components/poetry/ui/message/style.rb +29 -0
- data/app/components/poetry/ui/message_scroller/component.html.erb +15 -0
- data/app/components/poetry/ui/message_scroller/component.rb +163 -0
- data/app/components/poetry/ui/message_scroller/preview.rb +33 -0
- data/app/components/poetry/ui/message_scroller/style.rb +39 -0
- data/app/components/poetry/ui/metadata_list/component.rb +88 -0
- data/app/components/poetry/ui/metadata_list/preview.rb +55 -0
- data/app/components/poetry/ui/metadata_list/style.rb +35 -0
- data/app/components/poetry/ui/meter/component.rb +117 -0
- data/app/components/poetry/ui/meter/preview.rb +28 -0
- data/app/components/poetry/ui/meter/style.rb +16 -0
- data/app/components/poetry/ui/native_select/component.rb +124 -0
- data/app/components/poetry/ui/native_select/labelled_preview.html.erb +7 -0
- data/app/components/poetry/ui/native_select/preview.rb +20 -0
- data/app/components/poetry/ui/native_select/style.rb +22 -0
- data/app/components/poetry/ui/navigation_menu/bar_preview.html.erb +14 -0
- data/app/components/poetry/ui/navigation_menu/component.html.erb +25 -0
- data/app/components/poetry/ui/navigation_menu/component.rb +254 -0
- data/app/components/poetry/ui/navigation_menu/preview.rb +20 -0
- data/app/components/poetry/ui/navigation_menu/style.rb +73 -0
- data/app/components/poetry/ui/navigation_menu/viewport_preview.html.erb +23 -0
- data/app/components/poetry/ui/number_field/component.html.erb +19 -0
- data/app/components/poetry/ui/number_field/component.rb +263 -0
- data/app/components/poetry/ui/number_field/preview.rb +66 -0
- data/app/components/poetry/ui/number_field/style.rb +14 -0
- data/app/components/poetry/ui/pagination/component.html.erb +40 -0
- data/app/components/poetry/ui/pagination/component.rb +182 -0
- data/app/components/poetry/ui/pagination/preview.rb +47 -0
- data/app/components/poetry/ui/pagination/style.rb +27 -0
- data/app/components/poetry/ui/popover/component.html.erb +17 -0
- data/app/components/poetry/ui/popover/component.rb +203 -0
- data/app/components/poetry/ui/popover/preview.html.erb +29 -0
- data/app/components/poetry/ui/popover/preview.rb +66 -0
- data/app/components/poetry/ui/popover/style.rb +26 -0
- data/app/components/poetry/ui/popper_consumer.rb +69 -0
- data/app/components/poetry/ui/progress/component.rb +95 -0
- data/app/components/poetry/ui/progress/preview.rb +22 -0
- data/app/components/poetry/ui/progress/style.rb +19 -0
- data/app/components/poetry/ui/questionnaire/component.html.erb +80 -0
- data/app/components/poetry/ui/questionnaire/component.rb +396 -0
- data/app/components/poetry/ui/questionnaire/preview.rb +99 -0
- data/app/components/poetry/ui/questionnaire/style.rb +53 -0
- data/app/components/poetry/ui/radio_group/component.html.erb +4 -0
- data/app/components/poetry/ui/radio_group/component.rb +323 -0
- data/app/components/poetry/ui/radio_group/preview.rb +109 -0
- data/app/components/poetry/ui/radio_group/style.rb +53 -0
- data/app/components/poetry/ui/resizable/component.html.erb +10 -0
- data/app/components/poetry/ui/resizable/component.rb +178 -0
- data/app/components/poetry/ui/resizable/preview.rb +42 -0
- data/app/components/poetry/ui/resizable/style.rb +30 -0
- data/app/components/poetry/ui/scroll_area/component.rb +76 -0
- data/app/components/poetry/ui/scroll_area/preview.rb +35 -0
- data/app/components/poetry/ui/scroll_area/style.rb +19 -0
- data/app/components/poetry/ui/search_field/component.html.erb +15 -0
- data/app/components/poetry/ui/search_field/component.rb +137 -0
- data/app/components/poetry/ui/search_field/preview.rb +23 -0
- data/app/components/poetry/ui/search_field/style.rb +18 -0
- data/app/components/poetry/ui/select/component.html.erb +15 -0
- data/app/components/poetry/ui/select/component.rb +639 -0
- data/app/components/poetry/ui/select/preview.rb +113 -0
- data/app/components/poetry/ui/select/style.rb +58 -0
- data/app/components/poetry/ui/sensitive_input/component.html.erb +29 -0
- data/app/components/poetry/ui/sensitive_input/component.rb +274 -0
- data/app/components/poetry/ui/sensitive_input/preview.rb +40 -0
- data/app/components/poetry/ui/sensitive_input/style.rb +49 -0
- data/app/components/poetry/ui/separator/component.rb +57 -0
- data/app/components/poetry/ui/separator/preview.rb +19 -0
- data/app/components/poetry/ui/separator/style.rb +15 -0
- data/app/components/poetry/ui/sheet/component.html.erb +21 -0
- data/app/components/poetry/ui/sheet/component.rb +97 -0
- data/app/components/poetry/ui/sheet/preview.rb +57 -0
- data/app/components/poetry/ui/sheet/style.rb +47 -0
- data/app/components/poetry/ui/sidebar/component.html.erb +20 -0
- data/app/components/poetry/ui/sidebar/component.rb +249 -0
- data/app/components/poetry/ui/sidebar/preview.rb +21 -0
- data/app/components/poetry/ui/sidebar/shell_preview.html.erb +47 -0
- data/app/components/poetry/ui/sidebar/style.rb +139 -0
- data/app/components/poetry/ui/skeleton/component.rb +39 -0
- data/app/components/poetry/ui/skeleton/preview.rb +22 -0
- data/app/components/poetry/ui/skeleton/style.rb +13 -0
- data/app/components/poetry/ui/slider/component.html.erb +13 -0
- data/app/components/poetry/ui/slider/component.rb +360 -0
- data/app/components/poetry/ui/slider/preview.rb +73 -0
- data/app/components/poetry/ui/slider/style.rb +55 -0
- data/app/components/poetry/ui/spinner/component.rb +58 -0
- data/app/components/poetry/ui/spinner/preview.rb +22 -0
- data/app/components/poetry/ui/spinner/style.rb +12 -0
- data/app/components/poetry/ui/stat/component.html.erb +13 -0
- data/app/components/poetry/ui/stat/component.rb +102 -0
- data/app/components/poetry/ui/stat/preview.rb +47 -0
- data/app/components/poetry/ui/stat/style.rb +29 -0
- data/app/components/poetry/ui/switch/component.html.erb +15 -0
- data/app/components/poetry/ui/switch/component.rb +136 -0
- data/app/components/poetry/ui/switch/preview.rb +66 -0
- data/app/components/poetry/ui/switch/style.rb +22 -0
- data/app/components/poetry/ui/table/component.html.erb +3 -0
- data/app/components/poetry/ui/table/component.rb +93 -0
- data/app/components/poetry/ui/table/preview.rb +96 -0
- data/app/components/poetry/ui/table/style.rb +26 -0
- data/app/components/poetry/ui/tabs/component.html.erb +10 -0
- data/app/components/poetry/ui/tabs/component.rb +253 -0
- data/app/components/poetry/ui/tabs/preview.rb +43 -0
- data/app/components/poetry/ui/tabs/style.rb +49 -0
- data/app/components/poetry/ui/tag_group/component.html.erb +8 -0
- data/app/components/poetry/ui/tag_group/component.rb +203 -0
- data/app/components/poetry/ui/tag_group/preview.rb +43 -0
- data/app/components/poetry/ui/tag_group/style.rb +29 -0
- data/app/components/poetry/ui/textarea/component.rb +64 -0
- data/app/components/poetry/ui/textarea/preview.rb +75 -0
- data/app/components/poetry/ui/textarea/style.rb +18 -0
- data/app/components/poetry/ui/time_field/component.html.erb +6 -0
- data/app/components/poetry/ui/time_field/component.rb +85 -0
- data/app/components/poetry/ui/time_field/preview.rb +40 -0
- data/app/components/poetry/ui/time_field/style.rb +30 -0
- data/app/components/poetry/ui/timeline/component.rb +134 -0
- data/app/components/poetry/ui/timeline/preview.rb +61 -0
- data/app/components/poetry/ui/timeline/style.rb +54 -0
- data/app/components/poetry/ui/toast/component.html.erb +24 -0
- data/app/components/poetry/ui/toast/component.rb +178 -0
- data/app/components/poetry/ui/toast/preview.rb +69 -0
- data/app/components/poetry/ui/toast/style.rb +33 -0
- data/app/components/poetry/ui/toast_trigger/addressed_preview.html.erb +12 -0
- data/app/components/poetry/ui/toast_trigger/component.html.erb +3 -0
- data/app/components/poetry/ui/toast_trigger/component.rb +82 -0
- data/app/components/poetry/ui/toast_trigger/default_preview.html.erb +11 -0
- data/app/components/poetry/ui/toast_trigger/preview.rb +19 -0
- data/app/components/poetry/ui/toaster/component.html.erb +1 -0
- data/app/components/poetry/ui/toaster/component.rb +99 -0
- data/app/components/poetry/ui/toaster/positions_preview.html.erb +24 -0
- data/app/components/poetry/ui/toaster/preview.rb +46 -0
- data/app/components/poetry/ui/toaster/stamp_preview.html.erb +15 -0
- data/app/components/poetry/ui/toaster/style.rb +26 -0
- data/app/components/poetry/ui/toggle/component.rb +120 -0
- data/app/components/poetry/ui/toggle/preview.rb +79 -0
- data/app/components/poetry/ui/toggle/style.rb +33 -0
- data/app/components/poetry/ui/toggle_group/component.html.erb +4 -0
- data/app/components/poetry/ui/toggle_group/component.rb +252 -0
- data/app/components/poetry/ui/toggle_group/preview.rb +143 -0
- data/app/components/poetry/ui/toggle_group/style.rb +33 -0
- data/app/components/poetry/ui/toolbar/component.rb +125 -0
- data/app/components/poetry/ui/toolbar/preview.rb +41 -0
- data/app/components/poetry/ui/toolbar/style.rb +20 -0
- data/app/components/poetry/ui/tooltip/component.html.erb +20 -0
- data/app/components/poetry/ui/tooltip/component.rb +185 -0
- data/app/components/poetry/ui/tooltip/preview.rb +74 -0
- data/app/components/poetry/ui/tooltip/previews/provider_row.html.erb +25 -0
- data/app/components/poetry/ui/tooltip/style.rb +24 -0
- data/app/components/poetry/ui/tree/component.html.erb +32 -0
- data/app/components/poetry/ui/tree/component.rb +233 -0
- data/app/components/poetry/ui/tree/preview.rb +55 -0
- data/app/components/poetry/ui/tree/style.rb +29 -0
- data/app/components/poetry/ui/typeset/component.rb +73 -0
- data/app/components/poetry/ui/typeset/preview.rb +45 -0
- data/app/components/poetry/ui/typeset/style.rb +15 -0
- data/app/controllers/poetry/ui/llms_controller.rb +28 -0
- data/app/helpers/poetry/ui/components_helper.rb +1794 -0
- data/app/helpers/poetry/ui/form_builder/type_inference.rb +117 -0
- data/app/helpers/poetry/ui/form_builder.rb +916 -0
- data/app/helpers/poetry/ui/optimistic_form_builder.rb +55 -0
- data/app/helpers/poetry/ui/toast_stream_actions.rb +27 -0
- data/config/component_descriptions.yml +96 -0
- data/config/component_registry.yml +12257 -0
- data/config/locales/en.yml +93 -0
- data/config/routes.rb +8 -0
- data/config/template_classes.txt +113 -0
- data/lib/generators/poetry/add/add_generator.rb +218 -0
- data/lib/generators/poetry/agent_rules/agent_rules_generator.rb +91 -0
- data/lib/generators/poetry/agents/agents_generator.rb +24 -0
- data/lib/generators/poetry/agents_section.rb +148 -0
- data/lib/generators/poetry/block/block_generator.rb +67 -0
- data/lib/generators/poetry/block/templates/action_bar.html.erb +45 -0
- data/lib/generators/poetry/block/templates/app_shell.html.erb +139 -0
- data/lib/generators/poetry/block/templates/data_index.html.erb +85 -0
- data/lib/generators/poetry/block/templates/destructive_panel.html.erb +26 -0
- data/lib/generators/poetry/block/templates/page_header.html.erb +25 -0
- data/lib/generators/poetry/block/templates/section_card.html.erb +42 -0
- data/lib/generators/poetry/block/templates/stepper.html.erb +79 -0
- data/lib/generators/poetry/block/templates/top_nav.html.erb +44 -0
- data/lib/generators/poetry/diff/diff_generator.rb +135 -0
- data/lib/generators/poetry/editor/editor_generator.rb +344 -0
- data/lib/generators/poetry/editor/templates/poetry-check-hook +81 -0
- data/lib/generators/poetry/install/install_generator.rb +364 -0
- data/lib/generators/poetry/pagination/pagination_generator.rb +76 -0
- data/lib/generators/poetry/pagination/templates/kaminari_paginator.html.erb +29 -0
- data/lib/generators/poetry/pagination/templates/poetry_link_renderer.rb +34 -0
- data/lib/generators/poetry/pagination/templates/poetry_pagy_helper.rb +28 -0
- data/lib/generators/poetry/recipes/agent_embed/app/javascript/controllers/agent_demo_controller.js +131 -0
- data/lib/generators/poetry/recipes/screen_data_index/app/controllers/orders_controller.rb +15 -0
- data/lib/generators/poetry/recipes/screen_data_index/app/views/orders/index.html.erb +7 -0
- data/lib/generators/poetry/recipes/screen_data_index/test/system/orders_index_test.rb +16 -0
- data/lib/generators/poetry/recipes/screen_settings/app/controllers/settings_controller.rb +14 -0
- data/lib/generators/poetry/recipes/screen_settings/app/views/settings/show.html.erb +9 -0
- data/lib/generators/poetry/recipes/screen_settings/test/system/settings_show_test.rb +16 -0
- data/lib/generators/poetry/scaffold_templates/scaffold_templates_generator.rb +60 -0
- data/lib/generators/poetry/scaffold_templates/templates/_form.html.erb.tt +77 -0
- data/lib/generators/poetry/scaffold_templates/templates/controller.rb.tt +78 -0
- data/lib/generators/poetry/scaffold_templates/templates/edit.html.erb.tt +14 -0
- data/lib/generators/poetry/scaffold_templates/templates/index.html.erb.tt +24 -0
- data/lib/generators/poetry/scaffold_templates/templates/new.html.erb.tt +11 -0
- data/lib/generators/poetry/scaffold_templates/templates/partial.html.erb.tt +13 -0
- data/lib/generators/poetry/scaffold_templates/templates/show.html.erb.tt +18 -0
- data/lib/generators/poetry/skill/skill_generator.rb +34 -0
- data/lib/generators/poetry/skill/templates/poetry-component/SKILL.md +58 -0
- data/lib/generators/poetry/skill/templates/poetry-component/references/anatomy.md +152 -0
- data/lib/generators/poetry/skill/templates/poetry-component/references/checklist.md +67 -0
- data/lib/generators/poetry/skill/templates/poetry-component/references/documentation.md +137 -0
- data/lib/generators/poetry/skill/templates/poetry-design/SKILL.md +56 -0
- data/lib/generators/poetry/skill/templates/poetry-design/references/audit.md +123 -0
- data/lib/generators/poetry/skill/templates/poetry-design/references/compose.md +73 -0
- data/lib/generators/poetry/skill/templates/poetry-design/references/figma.md +68 -0
- data/lib/generators/poetry/skill/templates/poetry-design/references/paper.md +56 -0
- data/lib/generators/poetry/skill/templates/poetry-design/references/study.md +47 -0
- data/lib/generators/poetry/skill/templates/poetry-design/references/theme.md +70 -0
- data/lib/generators/poetry/skills_section.rb +58 -0
- data/lib/poetry/ui/chat.rb +283 -0
- data/lib/poetry/ui/code_block_highlighter.rb +60 -0
- data/lib/poetry/ui/engine.rb +55 -0
- data/lib/poetry/ui/recipes.rb +157 -0
- data/lib/poetry/ui/testing/combobox.rb +167 -0
- data/lib/poetry/ui/testing/dialog.rb +73 -0
- data/lib/poetry/ui/testing/menu.rb +127 -0
- data/lib/poetry/ui/testing/registration.rb +58 -0
- data/lib/poetry/ui/testing/select.rb +147 -0
- data/lib/poetry/ui/testing/tester.rb +130 -0
- data/lib/poetry/ui/testing.rb +130 -0
- data/lib/poetry/ui/themes.rb +109 -0
- data/lib/poetry/ui/version.rb +8 -0
- data/lib/poetry/ui/webmcp.rb +91 -0
- data/lib/poetry/ui.rb +285 -0
- data/lib/poetry-ui.rb +5 -0
- data/lib/tasks/poetry/check.rake +73 -0
- data/lib/tasks/poetry/design.rake +293 -0
- data/lib/tasks/poetry/verify.rake +36 -0
- data/themes/default.css +1793 -0
- data/themes/luma.css +1764 -0
- data/themes/lyra.css +1768 -0
- data/themes/maia.css +1768 -0
- data/themes/mira.css +1760 -0
- data/themes/nova.css +1755 -0
- data/themes/rhea.css +1771 -0
- data/themes/sera.css +1757 -0
- data/themes/vega.css +1775 -0
- data/typeset/typeset.css +499 -0
- metadata +502 -0
data/themes/sera.css
ADDED
|
@@ -0,0 +1,1757 @@
|
|
|
1
|
+
/* poetry sera theme - upstream style-sera.css ported onto the
|
|
2
|
+
* cn-* layer (pinned clone 1773ecfe, the shadcn@4.19.0 release). Same contract as default.css:
|
|
3
|
+
* imported layer(base); bare selectors while installs carry ONE theme;
|
|
4
|
+
* rule order per component = base < elements < variants < compounds;
|
|
5
|
+
* split-side, no-empty-rules and cross-component-last rules apply.
|
|
6
|
+
*
|
|
7
|
+
* Port disciplines identical to vega/rhea (see
|
|
8
|
+
* docs/sera-port-ledger.txt): verbatim where poetry
|
|
9
|
+
* speaks the vocabulary; data-vertical -> data-[orientation=*];
|
|
10
|
+
* data-[state=on] -> data-pressed; overlays -> native-dialog
|
|
11
|
+
* backdrop:* (black/20 blur-sm); upstream ! stripped except the
|
|
12
|
+
* sidebar collapse geometry and default-inherited precedents; icon
|
|
13
|
+
* paddings ship upstream's has-data-[icon=*] (inert) plus working
|
|
14
|
+
* >svg:first/last-child twins; soft destructive holds AA via
|
|
15
|
+
* relative-oklch light-mode darkening (AA-contrast posture). Sera-specific:
|
|
16
|
+
* editorial uppercase tracked type at every level with sizes one step
|
|
17
|
+
* up (h-10 buttons), rounded-none universal, underline-only form
|
|
18
|
+
* fields (border-b transitions instead of focus rings), text-only
|
|
19
|
+
* badges, left-edge rule alerts, flat ring-1 cards on --card-spacing
|
|
20
|
+
* 8, filled bg-secondary close buttons, square bordered switch with
|
|
21
|
+
* +2px thumb overshoot (poetry rtl twins ride along), monochrome
|
|
22
|
+
* radios (fill-foreground dot), button-group caps-only geometry over
|
|
23
|
+
* poetry's structural flex-col, and mira's 0.8 kbd pair on the addon
|
|
24
|
+
* (the only AA hold beyond destructive - fields are untinted). Fonts
|
|
25
|
+
* move via tracking/uppercase/size/weight utilities only - the serif
|
|
26
|
+
* pairing is upstream create-flow metadata, told in docs, not CSS.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
/* MARK: Alert */
|
|
30
|
+
.cn-alert {
|
|
31
|
+
@apply grid grid-cols-[0_1fr] items-start gap-y-1 border bg-background px-4 py-3 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2.5 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current relative after:absolute after:-inset-y-px after:-left-px after:w-0.5;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.cn-alert-action {
|
|
35
|
+
@apply absolute top-2.5 right-3;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.cn-alert-title {
|
|
39
|
+
@apply col-start-2 text-sm font-semibold;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.cn-alert-description {
|
|
43
|
+
@apply col-start-2 text-sm text-muted-foreground text-balance md:text-pretty [&_p:not(:last-child)]:mb-4;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.cn-alert-variant-default {
|
|
47
|
+
@apply bg-card text-card-foreground after:bg-foreground;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.cn-alert-variant-destructive {
|
|
51
|
+
@apply text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current after:bg-destructive;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* MARK: Accordion */
|
|
55
|
+
/* Root hook: boxed-root themes (mira/rhea, later luma/maia)
|
|
56
|
+
* style this; every fragment must give the name content (the compile
|
|
57
|
+
* gate), so default carries the upstream demo idiom. */
|
|
58
|
+
.cn-accordion {
|
|
59
|
+
@apply w-full;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.cn-accordion-item {
|
|
63
|
+
@apply not-last:border-b;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.cn-accordion-trigger {
|
|
67
|
+
@apply focus-visible:ring-ring/30 focus-visible:border-ring rounded-none gap-6 py-4 text-left text-sm font-semibold hover:underline focus-visible:ring-2;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.cn-accordion-trigger-icon {
|
|
71
|
+
@apply ml-auto size-3.5 text-muted-foreground;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.cn-accordion-content {
|
|
75
|
+
@apply text-sm data-closed:animate-accordion-up data-open:animate-accordion-down;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.cn-accordion-content-inner {
|
|
79
|
+
@apply pt-0 pb-4;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/* MARK: AlertDialog */
|
|
83
|
+
.cn-alert-dialog-content {
|
|
84
|
+
@apply w-full max-w-[calc(100%-2rem)] bg-popover text-popover-foreground ring-foreground/10 gap-6 rounded-none p-6 shadow-md ring-1 duration-100 data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-md backdrop:bg-black/20 supports-backdrop-filter:backdrop:backdrop-blur-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.cn-alert-dialog-header {
|
|
88
|
+
@apply gap-2 has-data-[slot=alert-dialog-media]:gap-x-6;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.cn-alert-dialog-media {
|
|
92
|
+
@apply mb-2 size-16 rounded-none bg-muted *:[svg:not([class*='size-'])]:size-8;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.cn-alert-dialog-title {
|
|
96
|
+
@apply text-lg font-semibold uppercase tracking-wider;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.cn-alert-dialog-description {
|
|
100
|
+
@apply text-muted-foreground *:[a]:hover:text-foreground text-sm text-balance md:text-pretty *:[a]:underline *:[a]:underline-offset-3 leading-relaxed mt-0.5;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/* Footer hook: nova bands it; gap-2 moved here from the inline
|
|
104
|
+
* set with the name (direction/justify stay inline - the sm-size grid
|
|
105
|
+
* branch replaces them consumer-side). */
|
|
106
|
+
.cn-alert-dialog-footer {
|
|
107
|
+
@apply gap-2;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/* MARK: Attachment */
|
|
111
|
+
/* w-fit lives here so the vertical orientation's w-24 beats it in-layer
|
|
112
|
+
* (split-side rule). */
|
|
113
|
+
.cn-attachment {
|
|
114
|
+
@apply rounded-none w-fit focus-within:ring-1 focus-within:ring-ring/30;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.cn-attachment-actions {
|
|
118
|
+
@apply group-data-[orientation=vertical]/attachment:absolute group-data-[orientation=vertical]/attachment:top-3 group-data-[orientation=vertical]/attachment:right-3 relative z-20 group-data-[orientation=vertical]/attachment:gap-1;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.cn-attachment-trigger {
|
|
122
|
+
@apply absolute inset-0 z-10 outline-none;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.cn-attachment-media-variant-image {
|
|
126
|
+
@apply opacity-60 group-data-[state=idle]/attachment:opacity-100 group-data-[state=done]/attachment:opacity-100;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.cn-attachment-size-default {
|
|
130
|
+
@apply gap-2 has-data-[slot=attachment-content]:px-3 has-data-[slot=attachment-content]:py-2.5 has-data-[slot=attachment-media]:p-2.5 text-sm;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.cn-attachment-size-sm {
|
|
134
|
+
@apply gap-2.5 has-data-[slot=attachment-content]:px-2.5 has-data-[slot=attachment-content]:py-2 has-data-[slot=attachment-media]:p-2 text-xs;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.cn-attachment-size-xs {
|
|
138
|
+
@apply gap-1.5 has-data-[slot=attachment-content]:px-2 has-data-[slot=attachment-content]:py-1.5 has-data-[slot=attachment-media]:p-1.5 text-xs rounded-none;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.cn-attachment-orientation-horizontal {
|
|
142
|
+
@apply min-w-40;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.cn-attachment-orientation-vertical {
|
|
146
|
+
@apply w-24 has-data-[slot=attachment-content]:w-30;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.cn-attachment-media {
|
|
150
|
+
@apply bg-muted text-foreground w-10 rounded-none group-data-[size=sm]/attachment:w-8 group-data-[size=xs]/attachment:w-7 group-data-[size=xs]/attachment:rounded-none [&_svg:not([class*='size-'])]:size-4 group-data-[size=xs]/attachment:[&_svg:not([class*='size-'])]:size-3.5 group-data-[orientation=vertical]/attachment:w-full group-data-[orientation=vertical]/attachment:[&_svg:not([class*='size-'])]:size-6 group-data-[orientation=vertical]/attachment:*:data-[slot=spinner]:size-6;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.cn-attachment-content {
|
|
154
|
+
@apply leading-tight group-data-[orientation=vertical]/attachment:px-1;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.cn-attachment-title {
|
|
158
|
+
@apply font-medium;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.cn-attachment-description {
|
|
162
|
+
@apply mt-0.5 text-xs;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.cn-attachment-group {
|
|
166
|
+
@apply gap-3 py-1 scroll-px-1;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/* MARK: Avatar */
|
|
170
|
+
.cn-avatar {
|
|
171
|
+
@apply size-8 rounded-full after:rounded-full data-[size=lg]:size-10 data-[size=sm]:size-6;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
.cn-avatar-image {
|
|
175
|
+
@apply rounded-full;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
.cn-avatar-fallback {
|
|
179
|
+
@apply rounded-full bg-muted text-muted-foreground;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
.cn-avatar-badge {
|
|
183
|
+
@apply bg-primary text-primary-foreground ring-background group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2 group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.cn-avatar-group-count {
|
|
187
|
+
@apply size-8 rounded-full bg-muted text-sm text-muted-foreground group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/* MARK: Badge */
|
|
191
|
+
/* The focus/invalid ring chain lives HERE (upstream keeps it inline): the
|
|
192
|
+
* destructive variant re-colors focus-visible:ring-* and can only beat
|
|
193
|
+
* the base treatment from the same layer. */
|
|
194
|
+
.cn-badge {
|
|
195
|
+
@apply gap-1.5 rounded-none border-0 bg-transparent px-0 py-0 text-[0.625rem] font-semibold uppercase tracking-widest transition-colors has-data-[icon=inline-end]:pr-0 has-data-[icon=inline-start]:pl-0 has-[>svg:first-child]:pl-0 has-[>svg:last-child]:pr-0 [&>svg]:size-3 focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 aria-invalid:ring-2 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
.cn-badge-variant-ghost {
|
|
199
|
+
@apply text-muted-foreground hover:text-foreground;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.cn-badge-variant-link {
|
|
203
|
+
@apply text-foreground underline-offset-4 hover:underline;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
.cn-badge-variant-default {
|
|
207
|
+
@apply text-foreground [a]:hover:text-foreground/70;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.cn-badge-variant-secondary {
|
|
211
|
+
@apply text-muted-foreground [a]:hover:text-foreground;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
.cn-badge-variant-destructive {
|
|
215
|
+
@apply text-[oklch(from_var(--destructive)_calc(l*0.85)_c_h)] dark:text-destructive [a]:hover:text-destructive/70 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
.cn-badge-variant-outline {
|
|
219
|
+
@apply text-foreground [a]:hover:text-foreground/70;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
.cn-badge-variant-success {
|
|
223
|
+
@apply text-[oklch(from_var(--success)_calc(l*0.85)_c_h)] dark:text-success [a]:hover:text-success/70;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
.cn-badge-variant-warning {
|
|
227
|
+
@apply text-[oklch(from_var(--warning)_calc(l*0.85)_c_h)] dark:text-warning [a]:hover:text-warning/70;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
.cn-badge-variant-info {
|
|
231
|
+
@apply text-[oklch(from_var(--info)_calc(l*0.85)_c_h)] dark:text-info [a]:hover:text-info/70;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/* MARK: Breadcrumb */
|
|
235
|
+
.cn-breadcrumb-list {
|
|
236
|
+
@apply text-muted-foreground gap-1.5 text-xs uppercase tracking-wide sm:gap-2.5;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
.cn-breadcrumb-item {
|
|
240
|
+
@apply gap-1.5;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
.cn-breadcrumb-link {
|
|
244
|
+
@apply transition-colors hover:text-foreground;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
.cn-breadcrumb-page {
|
|
248
|
+
@apply font-normal text-foreground;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
.cn-breadcrumb-separator {
|
|
252
|
+
@apply [&>svg]:size-3.5;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
.cn-breadcrumb-ellipsis {
|
|
256
|
+
@apply size-5 [&>svg]:size-4;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/* MARK: Bubble */
|
|
260
|
+
.cn-bubble {
|
|
261
|
+
@apply gap-1 data-[align=end]:self-end max-w-[80%] data-[variant=ghost]:max-w-full group-data-[align=end]/message:self-end;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
.cn-bubble-group {
|
|
265
|
+
@apply gap-2;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
.cn-bubble-variant-default {
|
|
269
|
+
@apply *:data-[slot=bubble-content]:bg-primary *:data-[slot=bubble-content]:text-primary-foreground [&>[data-slot=bubble-content]:is(button,a):hover]:bg-primary/80;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
.cn-bubble-variant-secondary {
|
|
273
|
+
@apply *:data-[slot=bubble-content]:bg-secondary *:data-[slot=bubble-content]:text-secondary-foreground [&>[data-slot=bubble-content]:is(button,a):hover]:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)];
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
.cn-bubble-variant-muted {
|
|
277
|
+
@apply *:data-[slot=bubble-content]:bg-muted [&>[data-slot=bubble-content]:is(button,a):hover]:bg-[color-mix(in_oklch,var(--muted),var(--foreground)_5%)];
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
.cn-bubble-variant-tinted {
|
|
281
|
+
@apply *:data-[slot=bubble-content]:bg-[oklch(from_var(--primary)_0.93_calc(c*0.4)_h)] *:data-[slot=bubble-content]:text-foreground dark:*:data-[slot=bubble-content]:bg-[oklch(from_var(--primary)_0.3_calc(c*0.4)_h)] [&>[data-slot=bubble-content]:is(button,a):hover]:bg-[oklch(from_var(--primary)_0.88_calc(c*0.5)_h)] dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-[oklch(from_var(--primary)_0.35_calc(c*0.5)_h)];
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
.cn-bubble-variant-outline {
|
|
285
|
+
@apply *:data-[slot=bubble-content]:border-border *:data-[slot=bubble-content]:bg-background [&>[data-slot=bubble-content]:is(button,a):hover]:bg-muted [&>[data-slot=bubble-content]:is(button,a):hover]:text-foreground dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-input/30;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
.cn-bubble-variant-ghost {
|
|
289
|
+
@apply border-none *:data-[slot=bubble-content]:rounded-none *:data-[slot=bubble-content]:bg-transparent *:data-[slot=bubble-content]:p-0 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-muted [&>[data-slot=bubble-content]:is(button,a):hover]:text-foreground dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-muted/50;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
.cn-bubble-variant-destructive {
|
|
293
|
+
@apply *:data-[slot=bubble-content]:bg-destructive/10 *:data-[slot=bubble-content]:text-destructive dark:*:data-[slot=bubble-content]:bg-destructive/20 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-destructive/20 dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-destructive/30;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
.cn-bubble-content {
|
|
297
|
+
@apply rounded-none border border-transparent px-4 py-3 text-sm leading-relaxed [button,a]:outline-none [button,a]:focus-visible:border-ring [button,a]:focus-visible:ring-2 [button,a]:focus-visible:ring-ring/30 group-data-[align=end]/bubble:self-end;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
.cn-bubble-reactions {
|
|
301
|
+
@apply rounded-none ring-3 ring-card bg-muted gap-1 px-2 py-0.5 has-[button]:p-0 text-sm;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
/* MARK: Button */
|
|
305
|
+
.cn-button {
|
|
306
|
+
@apply focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-none border border-transparent bg-clip-padding text-xs font-semibold uppercase tracking-widest focus-visible:ring-2 aria-invalid:ring-2 active:not-aria-[haspopup]:translate-y-px [&_svg:not([class*='size-'])]:size-3.5;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
.cn-button-variant-default {
|
|
310
|
+
@apply bg-primary text-primary-foreground hover:bg-primary/80;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
.cn-button-variant-destructive {
|
|
314
|
+
@apply bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-[oklch(from_var(--destructive)_calc(l*0.85)_c_h)] dark:text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
.cn-button-variant-outline {
|
|
318
|
+
@apply border-border bg-transparent hover:bg-muted hover:text-foreground dark:hover:bg-input/30 aria-expanded:bg-muted aria-expanded:text-foreground;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
.cn-button-variant-secondary {
|
|
322
|
+
@apply bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
.cn-button-variant-ghost {
|
|
326
|
+
@apply hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
.cn-button-variant-link {
|
|
330
|
+
@apply text-primary underline-offset-4 hover:underline underline;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
.cn-button-size-default {
|
|
334
|
+
@apply h-10 gap-1.5 px-6 has-data-[icon=inline-end]:pr-4 has-data-[icon=inline-start]:pl-4 has-[>svg:first-child]:pl-4 has-[>svg:last-child]:pr-4;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
.cn-button-size-xs {
|
|
338
|
+
@apply h-7 gap-1 px-3 text-xs has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 has-[>svg:first-child]:pl-2 has-[>svg:last-child]:pr-2 [&_svg:not([class*='size-'])]:size-3;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
.cn-button-size-sm {
|
|
342
|
+
@apply h-9 gap-1 px-4 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3 has-[>svg:first-child]:pl-3 has-[>svg:last-child]:pr-3;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
.cn-button-size-lg {
|
|
346
|
+
@apply h-11 gap-1.5 px-8 has-data-[icon=inline-end]:pr-5 has-data-[icon=inline-start]:pl-5 has-[>svg:first-child]:pl-5 has-[>svg:last-child]:pr-5;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
.cn-button-size-icon {
|
|
350
|
+
@apply size-10;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
.cn-button-size-icon-xs {
|
|
354
|
+
@apply size-7 [&_svg:not([class*='size-'])]:size-3;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
.cn-button-size-icon-sm {
|
|
358
|
+
@apply size-9;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
.cn-button-size-icon-lg {
|
|
362
|
+
@apply size-11;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
/* MARK: ButtonGroup */
|
|
366
|
+
.cn-button-group {
|
|
367
|
+
@apply *:data-[slot=input]:px-4 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-none has-[>[data-variant=outline]]:[&>input]:border-border has-[>[data-variant=outline]]:[&>input:focus-visible]:border-ring has-[>[data-variant=outline]]:*:data-[slot=input-group]:border-border has-[>[data-variant=outline]]:[&>[data-slot=input-group]:has(:focus-visible)]:border-ring has-[>[data-variant=outline]]:*:data-[slot=select-trigger]:border-border has-[>[data-variant=outline]]:[&>[data-slot=select-trigger]:focus-visible]:border-ring has-[>[data-variant=outline]]:*:data-[slot=input-group]:px-2.5 has-[>[data-variant=outline]]:*:[[role=combobox]]:px-2.5;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
.cn-button-group-orientation-horizontal {
|
|
371
|
+
@apply [&>[data-slot]:not(:has(~[data-slot]))]:rounded-none! [&>:is([data-slot=select],[data-slot=dropdown-menu],[data-slot=popover]):not(:has(~[data-slot]))_:is([data-slot=select-trigger],[data-slot=dropdown-menu-trigger],[data-slot=popover-trigger])]:rounded-none!;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
.cn-button-group-orientation-vertical {
|
|
375
|
+
@apply flex-col [&>[data-slot]:not(:has(~[data-slot]))]:rounded-none! [&>:is([data-slot=select],[data-slot=dropdown-menu],[data-slot=popover]):not(:has(~[data-slot]))_:is([data-slot=select-trigger],[data-slot=dropdown-menu-trigger],[data-slot=popover-trigger])]:rounded-none!;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
.cn-button-group-text {
|
|
379
|
+
@apply gap-2 border border-transparent border-b-input bg-transparent px-2.5 text-xs font-semibold [&_svg:not([class*='size-'])]:size-3.5 group-has-[>[data-variant=outline]]/button-group:border-border uppercase;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
.cn-button-group-separator {
|
|
383
|
+
@apply bg-input!;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
/* MARK: Calendar */
|
|
387
|
+
.cn-calendar {
|
|
388
|
+
@apply p-3;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
.cn-calendar-caption {
|
|
392
|
+
@apply text-xs font-semibold uppercase tracking-wide;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
.cn-calendar-weekday {
|
|
396
|
+
@apply rounded-md text-[0.8rem] font-normal text-muted-foreground;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
.cn-calendar-day-button {
|
|
400
|
+
@apply rounded-md text-sm leading-none font-normal hover:bg-accent hover:text-accent-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:text-muted-foreground disabled:opacity-50 data-today:bg-muted data-today:text-foreground data-outside:text-muted-foreground data-selected:bg-primary data-selected:text-primary-foreground data-selected:hover:bg-primary data-selected:hover:text-primary-foreground data-range-start:rounded-l-md data-range-start:bg-primary data-range-start:text-primary-foreground data-range-middle:rounded-none data-range-middle:bg-muted data-range-middle:text-foreground data-range-end:rounded-r-md data-range-end:bg-primary data-range-end:text-primary-foreground;
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
/* MARK: Card */
|
|
404
|
+
.cn-card {
|
|
405
|
+
@apply bg-card text-card-foreground ring-foreground/5 gap-(--card-spacing) overflow-hidden py-(--card-spacing) text-sm shadow-sm ring-1 [--card-spacing:--spacing(8)] has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(5)] *:[img:first-child]:rounded-none *:[img:last-child]:rounded-none;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
.cn-card-header {
|
|
409
|
+
@apply gap-1.5 rounded-none px-(--card-spacing) [.border-b]:pb-(--card-spacing);
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
.cn-card-title {
|
|
413
|
+
@apply text-lg font-semibold tracking-wider uppercase;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
.cn-card-description {
|
|
417
|
+
@apply text-muted-foreground text-sm leading-relaxed;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
.cn-card-content {
|
|
421
|
+
@apply px-(--card-spacing);
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
.cn-card-footer {
|
|
425
|
+
@apply px-(--card-spacing) [.border-t]:pt-(--card-spacing);
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
/* MARK: Checkbox */
|
|
429
|
+
.cn-checkbox {
|
|
430
|
+
@apply border-input bg-transparent data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 flex size-4.5 items-center justify-center rounded-none border transition-shadow focus-visible:ring-2 aria-invalid:ring-2 group-has-[:focus-visible]/field-label:data-checked:border-primary group-has-[:focus-visible]/field-label:not-data-checked:border-input group-has-[:focus-visible]/field-label:ring-0 group-has-disabled/field:opacity-50;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
.cn-checkbox-indicator {
|
|
434
|
+
@apply [&>svg]:size-3.5;
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
/* MARK: CodeBlock */
|
|
438
|
+
/* The syntax palette: seven vars the dictionary's token map reads
|
|
439
|
+
* (GitHub light/dark is the shared v1 baseline - a theme restyles code by
|
|
440
|
+
* redefining the vars); .hll is highlight_lines:, .line::before the CSS
|
|
441
|
+
* counters (out of copied text by construction). */
|
|
442
|
+
.cn-code-block {
|
|
443
|
+
@apply bg-muted/30 rounded-lg border text-foreground [--syntax-keyword:#a40e26] [--syntax-constant:#0550ae] [--syntax-string:#0a3069] [--syntax-entity:#7f3400] [--syntax-markup:#116329] [--syntax-function:#6639ba] [--syntax-comment:#57606a] dark:[--syntax-keyword:#ff7b72] dark:[--syntax-constant:#79c0ff] dark:[--syntax-string:#a5d6ff] dark:[--syntax-entity:#ffa657] dark:[--syntax-markup:#7ee787] dark:[--syntax-function:#d2a8ff] dark:[--syntax-comment:#8b949e];
|
|
444
|
+
}
|
|
445
|
+
.cn-code-block .hll {
|
|
446
|
+
@apply bg-primary/10 -mx-4 w-[calc(100%+2rem)] px-4;
|
|
447
|
+
}
|
|
448
|
+
.cn-code-block[data-line-numbers] .line::before {
|
|
449
|
+
@apply text-muted-foreground me-4 inline-block w-6 text-right content-[counter(line)] [counter-increment:line];
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
/* MARK: Command */
|
|
453
|
+
.cn-command {
|
|
454
|
+
@apply bg-popover text-popover-foreground;
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
.cn-input-otp-group {
|
|
458
|
+
@apply has-aria-invalid:border-b-destructive dark:has-aria-invalid:border-b-destructive/50 rounded-none gap-1;
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
.cn-input-otp-separator {
|
|
462
|
+
@apply [&_svg:not([class*='size-'])]:size-3.5;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
.cn-command-input-icon {
|
|
466
|
+
@apply size-3.5 shrink-0 opacity-50;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
.cn-command-input-wrapper {
|
|
470
|
+
@apply m-1 mb-0 gap-2 border-b px-3 py-1;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
.cn-command-input {
|
|
474
|
+
@apply w-full bg-transparent text-sm placeholder:text-muted-foreground;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
/* Loose items (direct children, no group): the source's palette never
|
|
478
|
+
* renders them, so the list carries the inset itself and its groups drop
|
|
479
|
+
* their horizontal padding - every row aligns; group-only lists keep the
|
|
480
|
+
* cmdk geometry. */
|
|
481
|
+
.cn-command-list {
|
|
482
|
+
@apply no-scrollbar max-h-72 scroll-py-1 outline-none has-[>[data-slot=command-item]]:p-1.5 has-[>[data-slot=command-item]]:*:data-[slot=command-group]:px-0;
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
.cn-command-empty {
|
|
486
|
+
@apply py-6 text-center text-sm;
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
.cn-command-group {
|
|
490
|
+
@apply text-foreground p-1.5;
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
.cn-command-group-heading {
|
|
494
|
+
@apply px-3 py-2 text-xs font-semibold uppercase tracking-wider text-muted-foreground;
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
.cn-command-item {
|
|
498
|
+
@apply data-highlighted:bg-muted data-highlighted:text-foreground data-highlighted:*:[svg]:text-foreground items-center gap-2 rounded-none px-3 py-2 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-none [&_svg:not([class*='size-'])]:size-3.5;
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
.cn-command-shortcut {
|
|
502
|
+
@apply text-muted-foreground group-data-highlighted/command-item:text-foreground ml-auto text-xs tracking-widest;
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
.cn-command-separator {
|
|
506
|
+
@apply bg-border/50 -mx-1.5 my-1.5 h-px;
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
/* MARK: Combobox */
|
|
510
|
+
.cn-combobox-trigger {
|
|
511
|
+
@apply h-9 w-[200px] gap-2 rounded-md border bg-background px-4 py-2 text-sm font-normal shadow-xs hover:bg-accent hover:text-accent-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-muted-foreground dark:aria-invalid:ring-destructive/40 dark:border-input dark:bg-input/30 dark:hover:bg-input/50 has-[>svg]:px-3 [&_svg:not([class*='size-'])]:size-3.5;
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
.cn-combobox-content {
|
|
515
|
+
@apply bg-popover text-popover-foreground ring-foreground/10 *:data-[slot=input-group]:bg-transparent *:data-[slot=input-group]:border-b-input *:data-[slot=input-group]:m-1.5 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-transparent *:data-[slot=input-group]:focus-within:border-transparent *:data-[slot=input-group]:px-2.5 max-h-72 min-w-36 overflow-hidden rounded-none p-0 shadow-md ring-1 duration-100 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
/* The popup's list and group label: the source's combobox rules (the
|
|
519
|
+
* inset rides the LIST, the group stays unpadded). */
|
|
520
|
+
.cn-combobox-label {
|
|
521
|
+
@apply px-3 py-2 text-xs uppercase tracking-wider font-semibold text-muted-foreground;
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
.cn-combobox-list {
|
|
525
|
+
@apply no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1.5 overflow-y-auto p-1.5 data-empty:p-0;
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
.cn-combobox-item-indicator {
|
|
529
|
+
@apply pointer-events-none absolute right-2 flex size-4 items-center justify-center;
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
/* The chips FIELD (multiple:) - sera's underline field (border-b only,
|
|
533
|
+
* no box); chips wear the small-caps editorial voice. */
|
|
534
|
+
.cn-combobox-chips {
|
|
535
|
+
@apply min-h-10 gap-1.5 rounded-none border border-transparent border-b-input px-0 py-1 text-sm transition-[color,border-color] focus-within:border-b-ring has-aria-invalid:border-b-destructive dark:has-aria-invalid:border-b-destructive/50;
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
.cn-combobox-chip {
|
|
539
|
+
@apply h-5.5 gap-1.5 rounded-none bg-secondary px-1.5 text-[0.625rem] font-semibold tracking-widest text-secondary-foreground uppercase focus-visible:ring-1 focus-visible:ring-ring/50;
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
.cn-combobox-chip-remove {
|
|
543
|
+
@apply -ml-0.5 rounded-none opacity-50 hover:opacity-100 focus-visible:opacity-100;
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
.cn-combobox-chip-input {
|
|
547
|
+
@apply min-w-16 placeholder:text-muted-foreground;
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
/* MARK: ContextMenu */
|
|
551
|
+
.cn-context-menu-content {
|
|
552
|
+
@apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-48 rounded-none p-1.5 shadow-md ring-1 duration-100;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
.cn-context-menu-item {
|
|
556
|
+
@apply focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive focus:*:[svg]:text-accent-foreground gap-2.5 rounded-none px-3 py-2 text-xs font-medium uppercase tracking-wider data-inset:pl-9.5 [&_svg:not([class*='size-'])]:size-3.5;
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
.cn-context-menu-checkbox-item {
|
|
560
|
+
@apply focus:bg-accent focus:text-accent-foreground gap-2.5 rounded-none py-2 pr-8 pl-3 text-xs font-medium uppercase tracking-wider data-inset:pl-9.5 [&_svg:not([class*='size-'])]:size-3.5;
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
.cn-context-menu-radio-item {
|
|
564
|
+
@apply focus:bg-accent focus:text-accent-foreground gap-2.5 rounded-none py-2 pr-8 pl-3 text-xs font-medium uppercase tracking-wider data-inset:pl-9.5 [&_svg:not([class*='size-'])]:size-3.5;
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
.cn-context-menu-label {
|
|
568
|
+
@apply px-3 py-2 text-xs uppercase tracking-wider data-inset:pl-9.5 font-semibold text-muted-foreground;
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
.cn-context-menu-separator {
|
|
572
|
+
@apply bg-border/50 -mx-1.5 my-1.5 h-px;
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
.cn-context-menu-shortcut {
|
|
576
|
+
@apply text-muted-foreground group-focus/context-menu-item:text-accent-foreground ml-auto text-xs tracking-widest;
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
.cn-context-menu-sub-trigger {
|
|
580
|
+
@apply focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground rounded-none px-3 py-2 text-xs font-medium uppercase tracking-wider data-inset:pl-9.5 [&_svg:not([class*='size-'])]:size-3.5 data-popup-open:bg-accent data-popup-open:text-accent-foreground;
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
.cn-context-menu-sub-content {
|
|
584
|
+
@apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-none p-1.5 shadow-md ring-1 duration-100;
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
.cn-context-menu-item-indicator {
|
|
588
|
+
@apply right-2;
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
/* MARK: DataTable */
|
|
592
|
+
.cn-data-table-toolbar {
|
|
593
|
+
@apply py-4;
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
.cn-data-table-container {
|
|
597
|
+
@apply rounded-md border;
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
.cn-data-table-footer {
|
|
601
|
+
@apply py-4;
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
.cn-data-table-empty {
|
|
605
|
+
@apply h-24 text-center;
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
/* MARK: Dialog */
|
|
609
|
+
.cn-dialog-content {
|
|
610
|
+
@apply w-full max-w-[calc(100%-2rem)] bg-popover text-popover-foreground ring-foreground/10 gap-6 rounded-none p-6 text-sm shadow-md ring-1 duration-100 sm:max-w-md backdrop:bg-black/20 supports-backdrop-filter:backdrop:backdrop-blur-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95;
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
.cn-dialog-footer {
|
|
614
|
+
@apply gap-2;
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
.cn-dialog-header {
|
|
618
|
+
@apply gap-2;
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
.cn-dialog-title {
|
|
622
|
+
@apply text-lg font-semibold leading-none uppercase tracking-wider;
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
.cn-dialog-description {
|
|
626
|
+
@apply text-muted-foreground *:[a]:hover:text-foreground text-sm *:[a]:underline *:[a]:underline-offset-3 leading-relaxed mt-0.5;
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
.cn-dialog-close {
|
|
630
|
+
@apply absolute top-5 right-5 bg-secondary;
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
/* MARK: Drawer */
|
|
634
|
+
.cn-drawer-content {
|
|
635
|
+
/* Flush drawer - the explicit stance for the dictionary's
|
|
636
|
+
var(--drawer-inset) read (floating themes ship --spacing(2)). */
|
|
637
|
+
@apply bg-popover text-popover-foreground text-sm backdrop:bg-black/20 supports-backdrop-filter:backdrop:backdrop-blur-sm [--drawer-inset:0px];
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
.cn-drawer-direction-down {
|
|
641
|
+
@apply rounded-none border-t;
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
.cn-drawer-direction-up {
|
|
645
|
+
@apply rounded-none border-b;
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
.cn-drawer-direction-left {
|
|
649
|
+
@apply rounded-none border-r;
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
.cn-drawer-direction-right {
|
|
653
|
+
@apply rounded-none border-l;
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
.cn-drawer-swipe-handle {
|
|
657
|
+
@apply after:h-1.5 after:w-[100px] after:rounded-none after:bg-muted;
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
.cn-drawer-header {
|
|
661
|
+
@apply gap-1 p-4 md:gap-2 md:text-left;
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
.cn-drawer-footer {
|
|
665
|
+
@apply gap-2 p-4;
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
.cn-drawer-title {
|
|
669
|
+
@apply text-foreground text-lg font-semibold uppercase tracking-wider;
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
.cn-drawer-description {
|
|
673
|
+
@apply text-muted-foreground text-sm leading-relaxed mt-0.5;
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
.cn-drawer-body {
|
|
677
|
+
@apply p-4;
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
/* MARK: DropdownMenu */
|
|
681
|
+
.cn-dropdown-menu-content {
|
|
682
|
+
@apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-48 rounded-none p-1.5 shadow-md ring-1 duration-100;
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
.cn-dropdown-menu-item {
|
|
686
|
+
@apply focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2.5 rounded-none px-3 py-2 text-xs font-medium uppercase tracking-wider data-inset:pl-9.5 [&_svg:not([class*='size-'])]:size-3.5;
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
.cn-dropdown-menu-checkbox-item {
|
|
690
|
+
@apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2.5 rounded-none py-2 pr-8 pl-3 text-xs font-medium uppercase tracking-wider data-inset:pl-9.5 [&_svg:not([class*='size-'])]:size-3.5;
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
.cn-dropdown-menu-radio-item {
|
|
694
|
+
@apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2.5 rounded-none py-2 pr-8 pl-3 text-xs font-medium uppercase tracking-wider data-inset:pl-9.5 [&_svg:not([class*='size-'])]:size-3.5;
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
.cn-dropdown-menu-label {
|
|
698
|
+
@apply px-3 py-2 text-xs uppercase tracking-wider data-inset:pl-9.5 font-semibold text-muted-foreground;
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
.cn-dropdown-menu-separator {
|
|
702
|
+
@apply bg-border/50 -mx-1.5 my-1.5 h-px;
|
|
703
|
+
}
|
|
704
|
+
|
|
705
|
+
.cn-dropdown-menu-shortcut {
|
|
706
|
+
@apply text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest;
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
.cn-dropdown-menu-sub-trigger {
|
|
710
|
+
@apply focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-none px-3 py-2 text-xs font-medium uppercase tracking-wider data-inset:pl-9.5 [&_svg:not([class*='size-'])]:size-3.5 data-popup-open:bg-accent data-popup-open:text-accent-foreground;
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
.cn-dropdown-menu-sub-content {
|
|
714
|
+
@apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-36 rounded-none p-1.5 shadow-md ring-1 duration-100;
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
.cn-dropdown-menu-item-indicator {
|
|
718
|
+
@apply right-2 flex items-center justify-center;
|
|
719
|
+
}
|
|
720
|
+
|
|
721
|
+
/* MARK: Empty */
|
|
722
|
+
.cn-empty {
|
|
723
|
+
@apply gap-4 border-dashed p-12;
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
.cn-empty-header {
|
|
727
|
+
@apply gap-2;
|
|
728
|
+
}
|
|
729
|
+
|
|
730
|
+
.cn-empty-media {
|
|
731
|
+
@apply mb-2;
|
|
732
|
+
}
|
|
733
|
+
|
|
734
|
+
.cn-empty-media-default {
|
|
735
|
+
@apply bg-transparent;
|
|
736
|
+
}
|
|
737
|
+
|
|
738
|
+
.cn-empty-media-icon {
|
|
739
|
+
@apply bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-none [&_svg:not([class*='size-'])]:size-5;
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
.cn-empty-title {
|
|
743
|
+
@apply text-lg font-semibold tracking-wider uppercase;
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
.cn-empty-description {
|
|
747
|
+
@apply text-sm/relaxed mt-0.5;
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
.cn-empty-content {
|
|
751
|
+
@apply gap-4 text-sm;
|
|
752
|
+
}
|
|
753
|
+
|
|
754
|
+
/* MARK: Field */
|
|
755
|
+
.cn-field {
|
|
756
|
+
@apply data-[invalid=true]:text-destructive gap-3;
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
.cn-field-description {
|
|
760
|
+
@apply text-muted-foreground text-left text-sm [[data-variant=legend]+&]:-mt-1.5 normal-case tracking-normal;
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
.cn-field-error {
|
|
764
|
+
@apply text-destructive text-sm;
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
.cn-field-orientation-horizontal {
|
|
768
|
+
@apply gap-x-3;
|
|
769
|
+
}
|
|
770
|
+
|
|
771
|
+
/* Row layout: the label + hint pair packs at the theme's
|
|
772
|
+
cn-field-content rhythm; the field gap keeps the column axis. */
|
|
773
|
+
.cn-field-orientation-responsive {
|
|
774
|
+
@apply @md/field-group:gap-y-1;
|
|
775
|
+
}
|
|
776
|
+
|
|
777
|
+
.cn-field-set {
|
|
778
|
+
@apply gap-6 has-[>.cn-field-group-choices]:gap-3 has-[>[data-slot=radio-group]]:gap-3;
|
|
779
|
+
}
|
|
780
|
+
|
|
781
|
+
.cn-field-legend {
|
|
782
|
+
@apply mb-3 font-semibold uppercase data-[variant=legend]:text-xs data-[variant=label]:text-xs;
|
|
783
|
+
}
|
|
784
|
+
|
|
785
|
+
.cn-field-group {
|
|
786
|
+
@apply gap-10 *:data-[slot=field-group]:gap-4;
|
|
787
|
+
}
|
|
788
|
+
|
|
789
|
+
.cn-field-group-choices {
|
|
790
|
+
@apply gap-3;
|
|
791
|
+
}
|
|
792
|
+
|
|
793
|
+
.cn-field-content {
|
|
794
|
+
@apply gap-1;
|
|
795
|
+
}
|
|
796
|
+
|
|
797
|
+
.cn-field-label {
|
|
798
|
+
@apply has-data-checked:bg-primary/5 has-data-checked:border-primary/30 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10 gap-2 leading-relaxed *:data-[slot=field]:p-4 group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:border has-[>[data-slot=field]]:has-[:focus-visible]:ring-2 has-[>[data-slot=field]]:has-[:focus-visible]:ring-ring/30 has-[>[data-slot=field]]:not-has-[:disabled,[data-disabled]]:hover:bg-muted/50 has-[>[data-slot=field]]:rounded-none;
|
|
799
|
+
}
|
|
800
|
+
|
|
801
|
+
.cn-field-label-card {
|
|
802
|
+
@apply rounded-none border p-4;
|
|
803
|
+
}
|
|
804
|
+
|
|
805
|
+
.cn-field-title {
|
|
806
|
+
@apply gap-2 leading-normal font-semibold uppercase text-xs;
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
.cn-field-separator {
|
|
810
|
+
@apply -my-2 h-5 text-sm;
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
.cn-field-separator-content {
|
|
814
|
+
@apply px-2 text-muted-foreground;
|
|
815
|
+
}
|
|
816
|
+
|
|
817
|
+
/* MARK: HoverCard */
|
|
818
|
+
.cn-hover-card-content {
|
|
819
|
+
@apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground w-72 p-4 text-sm shadow-md ring-1 duration-100;
|
|
820
|
+
}
|
|
821
|
+
|
|
822
|
+
/* MARK: Input */
|
|
823
|
+
.cn-input {
|
|
824
|
+
@apply border-transparent border-b-input bg-transparent focus-visible:border-b-ring aria-invalid:border-b-destructive dark:aria-invalid:border-b-destructive/50 h-10 border px-0 py-1 text-base transition-[color,border-color] file:h-7 file:text-sm file:font-medium md:text-sm placeholder:text-muted-foreground;
|
|
825
|
+
}
|
|
826
|
+
|
|
827
|
+
/* MARK: InputGroup */
|
|
828
|
+
.cn-input-group {
|
|
829
|
+
@apply border-transparent border-b-input bg-transparent has-[[data-slot=input-group-control]:focus-visible]:border-b-ring has-[[data-slot][aria-invalid=true]]:border-b-destructive dark:has-[[data-slot][aria-invalid=true]]:border-b-destructive/50 h-10 rounded-none border transition-[color,border-color] in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-data-[align=block-end]:rounded-none has-data-[align=block-start]:rounded-none has-[textarea]:rounded-none has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3;
|
|
830
|
+
}
|
|
831
|
+
|
|
832
|
+
.cn-input-group-addon {
|
|
833
|
+
@apply text-muted-foreground **:data-[slot=kbd]:bg-muted-foreground/10 **:data-[slot=kbd]:text-[oklch(from_var(--muted-foreground)_calc(l*0.8)_c_h)] dark:**:data-[slot=kbd]:text-muted-foreground h-auto gap-2 py-2 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 **:data-[slot=kbd]:rounded-none **:data-[slot=kbd]:px-1.5 [&>svg:not([class*='size-'])]:size-3.5;
|
|
834
|
+
}
|
|
835
|
+
|
|
836
|
+
.cn-input-group-addon-align-inline-start {
|
|
837
|
+
@apply pl-0;
|
|
838
|
+
}
|
|
839
|
+
|
|
840
|
+
.cn-input-group-addon-align-inline-end {
|
|
841
|
+
@apply pr-0;
|
|
842
|
+
}
|
|
843
|
+
|
|
844
|
+
.cn-input-group-addon-align-block-start {
|
|
845
|
+
@apply pt-3 group-has-[>input]/input-group:pt-3.5 [.border-b]:pb-3.5;
|
|
846
|
+
}
|
|
847
|
+
|
|
848
|
+
.cn-input-group-addon-align-block-end {
|
|
849
|
+
@apply pb-3 group-has-[>input]/input-group:pb-3.5 [.border-t]:pt-3.5;
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
.cn-input-group-text {
|
|
853
|
+
@apply text-muted-foreground gap-2 text-sm [&_svg:not([class*='size-'])]:size-3.5;
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
/* MARK: InputOTP */
|
|
857
|
+
.cn-input-otp {
|
|
858
|
+
@apply gap-2;
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
.cn-input-otp-slot {
|
|
862
|
+
@apply border-transparent border-b-input bg-transparent data-[active=true]:border-b-ring aria-invalid:border-b-destructive dark:aria-invalid:border-b-destructive/50 size-10 border text-sm transition-[color,border-color] outline-none first:rounded-none last:rounded-none not-first:ml-1;
|
|
863
|
+
}
|
|
864
|
+
|
|
865
|
+
.cn-input-otp-caret-line {
|
|
866
|
+
@apply bg-foreground h-4 w-px;
|
|
867
|
+
}
|
|
868
|
+
|
|
869
|
+
/* MARK: Item */
|
|
870
|
+
.cn-item {
|
|
871
|
+
@apply [a]:hover:bg-muted rounded-none border text-sm;
|
|
872
|
+
}
|
|
873
|
+
|
|
874
|
+
.cn-item-media {
|
|
875
|
+
@apply gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start;
|
|
876
|
+
}
|
|
877
|
+
|
|
878
|
+
.cn-item-media-variant-default {
|
|
879
|
+
@apply bg-transparent;
|
|
880
|
+
}
|
|
881
|
+
|
|
882
|
+
.cn-item-media-variant-icon {
|
|
883
|
+
@apply [&_svg:not([class*='size-'])]:size-4;
|
|
884
|
+
}
|
|
885
|
+
|
|
886
|
+
.cn-item-media-variant-image {
|
|
887
|
+
@apply size-10 overflow-hidden rounded-none group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 group-data-[size=xs]/item:rounded-none [&_img]:size-full [&_img]:object-cover;
|
|
888
|
+
}
|
|
889
|
+
|
|
890
|
+
.cn-item-content {
|
|
891
|
+
@apply gap-1 group-data-[size=xs]/item:gap-0.5;
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
.cn-item-title {
|
|
895
|
+
@apply gap-2 text-xs leading-snug font-semibold uppercase underline-offset-4;
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
.cn-item-description {
|
|
899
|
+
@apply text-muted-foreground text-left text-sm leading-relaxed;
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
.cn-item-actions {
|
|
903
|
+
@apply gap-2;
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
.cn-item-header {
|
|
907
|
+
@apply gap-2;
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
.cn-item-footer {
|
|
911
|
+
@apply gap-2;
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
.cn-item-group {
|
|
915
|
+
@apply gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2;
|
|
916
|
+
}
|
|
917
|
+
|
|
918
|
+
.cn-item-separator {
|
|
919
|
+
@apply my-2;
|
|
920
|
+
}
|
|
921
|
+
|
|
922
|
+
.cn-item-variant-default {
|
|
923
|
+
@apply border-transparent;
|
|
924
|
+
}
|
|
925
|
+
|
|
926
|
+
.cn-item-variant-outline {
|
|
927
|
+
@apply border-border;
|
|
928
|
+
}
|
|
929
|
+
|
|
930
|
+
.cn-item-variant-muted {
|
|
931
|
+
@apply border-transparent bg-muted/50;
|
|
932
|
+
}
|
|
933
|
+
|
|
934
|
+
.cn-item-size-default {
|
|
935
|
+
@apply gap-3.5 px-4 py-3.5;
|
|
936
|
+
}
|
|
937
|
+
|
|
938
|
+
.cn-item-size-sm {
|
|
939
|
+
@apply gap-3.5 px-3.5 py-3;
|
|
940
|
+
}
|
|
941
|
+
|
|
942
|
+
.cn-item-size-xs {
|
|
943
|
+
@apply gap-2.5 px-3 py-2.5 in-data-[slot=dropdown-menu-content]:p-0;
|
|
944
|
+
}
|
|
945
|
+
|
|
946
|
+
/* MARK: Kbd */
|
|
947
|
+
.cn-kbd {
|
|
948
|
+
@apply bg-muted text-muted-foreground in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 h-5.5 w-fit min-w-5.5 gap-1 rounded-none px-1.5 font-sans text-xs font-medium [&_svg:not([class*='size-'])]:size-3 in-data-[slot=input-group]:bg-input;
|
|
949
|
+
}
|
|
950
|
+
|
|
951
|
+
.cn-kbd-group {
|
|
952
|
+
@apply gap-1;
|
|
953
|
+
}
|
|
954
|
+
|
|
955
|
+
/* MARK: Label */
|
|
956
|
+
.cn-label {
|
|
957
|
+
@apply gap-2 font-semibold peer-data-[slot=checkbox]:text-sm peer-data-[slot=radio-group-item]:text-sm peer-data-[slot=switch]:text-sm leading-relaxed group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50 peer-data-[slot=checkbox]:font-normal peer-data-[slot=radio-group-item]:font-normal peer-data-[slot=switch]:font-normal uppercase text-xs tracking-wide peer-data-[slot=checkbox]:normal-case peer-data-[slot=checkbox]:tracking-normal peer-data-[slot=radio-group-item]:normal-case peer-data-[slot=radio-group-item]:tracking-normal peer-data-[slot=switch]:normal-case peer-data-[slot=switch]:tracking-normal;
|
|
958
|
+
}
|
|
959
|
+
|
|
960
|
+
/* MARK: Link */
|
|
961
|
+
.cn-link {
|
|
962
|
+
@apply gap-1 rounded-sm text-primary underline-offset-4 focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50;
|
|
963
|
+
}
|
|
964
|
+
|
|
965
|
+
.cn-link-underline-hover {
|
|
966
|
+
@apply no-underline hover:underline;
|
|
967
|
+
}
|
|
968
|
+
|
|
969
|
+
.cn-link-underline-always {
|
|
970
|
+
@apply underline;
|
|
971
|
+
}
|
|
972
|
+
|
|
973
|
+
.cn-link-underline-none {
|
|
974
|
+
@apply no-underline;
|
|
975
|
+
}
|
|
976
|
+
|
|
977
|
+
/* MARK: Marker */
|
|
978
|
+
.cn-marker {
|
|
979
|
+
@apply gap-2 text-xs text-muted-foreground [a]:hover:text-foreground [a]:underline-offset-3 [a]:underline [&_svg:not([class*='size-'])]:size-4 min-h-4 text-left uppercase tracking-wide;
|
|
980
|
+
}
|
|
981
|
+
|
|
982
|
+
.cn-marker-variant-separator {
|
|
983
|
+
@apply before:mr-1 before:h-px before:min-w-0 before:flex-1 before:bg-border after:ml-1 after:h-px after:min-w-0 after:flex-1 after:bg-border;
|
|
984
|
+
}
|
|
985
|
+
|
|
986
|
+
.cn-marker-variant-border {
|
|
987
|
+
@apply border-b border-border pb-2;
|
|
988
|
+
}
|
|
989
|
+
|
|
990
|
+
.cn-marker-icon {
|
|
991
|
+
@apply size-4 [&_svg:not([class*='size-'])]:size-4;
|
|
992
|
+
}
|
|
993
|
+
|
|
994
|
+
.cn-marker-content {
|
|
995
|
+
@apply group-data-[variant=separator]/marker:flex-none group-data-[variant=separator]/marker:text-center *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground;
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
/* MARK: Menubar */
|
|
999
|
+
.cn-menubar {
|
|
1000
|
+
@apply h-10 rounded-none border p-1;
|
|
1001
|
+
}
|
|
1002
|
+
|
|
1003
|
+
.cn-menubar-checkbox-item-indicator {
|
|
1004
|
+
@apply left-3 size-4 [&_svg:not([class*='size-'])]:size-4;
|
|
1005
|
+
}
|
|
1006
|
+
|
|
1007
|
+
.cn-menubar-radio-item-indicator {
|
|
1008
|
+
@apply left-3 size-4 [&_svg:not([class*='size-'])]:size-4;
|
|
1009
|
+
}
|
|
1010
|
+
|
|
1011
|
+
.cn-navigation-menu {
|
|
1012
|
+
@apply max-w-max;
|
|
1013
|
+
}
|
|
1014
|
+
|
|
1015
|
+
.cn-menubar-trigger {
|
|
1016
|
+
@apply hover:bg-muted aria-expanded:bg-muted rounded-none px-2 py-0.75 text-sm font-medium;
|
|
1017
|
+
}
|
|
1018
|
+
|
|
1019
|
+
.cn-menubar-content {
|
|
1020
|
+
@apply bg-popover text-popover-foreground data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-48 rounded-none p-1.5 shadow-md ring-1 duration-100;
|
|
1021
|
+
}
|
|
1022
|
+
|
|
1023
|
+
.cn-menubar-item {
|
|
1024
|
+
@apply focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive! not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2.5 rounded-none px-3 py-2 text-sm data-disabled:opacity-50 data-inset:pl-9.5 [&_svg:not([class*='size-'])]:size-3.5;
|
|
1025
|
+
}
|
|
1026
|
+
|
|
1027
|
+
.cn-menubar-checkbox-item {
|
|
1028
|
+
@apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2.5 rounded-none py-2 pr-3 pl-9.5 text-xs font-medium uppercase tracking-wider data-inset:pl-9.5;
|
|
1029
|
+
}
|
|
1030
|
+
|
|
1031
|
+
.cn-menubar-radio-item {
|
|
1032
|
+
@apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2.5 rounded-none py-2 pr-3 pl-9.5 text-xs font-medium uppercase tracking-wider data-disabled:opacity-50 data-inset:pl-9.5 [&_svg:not([class*='size-'])]:size-3.5;
|
|
1033
|
+
}
|
|
1034
|
+
|
|
1035
|
+
.cn-menubar-label {
|
|
1036
|
+
@apply px-3.5 py-2 text-xs uppercase tracking-wider data-inset:pl-9.5 font-semibold text-muted-foreground;
|
|
1037
|
+
}
|
|
1038
|
+
|
|
1039
|
+
.cn-menubar-separator {
|
|
1040
|
+
@apply bg-border/50 -mx-1.5 my-1.5 h-px;
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1043
|
+
.cn-menubar-shortcut {
|
|
1044
|
+
@apply text-muted-foreground group-focus/menubar-item:text-accent-foreground text-xs tracking-widest;
|
|
1045
|
+
}
|
|
1046
|
+
|
|
1047
|
+
.cn-menubar-sub-trigger {
|
|
1048
|
+
@apply focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground gap-2 rounded-none px-3 py-2 text-xs font-medium uppercase tracking-wider data-inset:pl-9.5 [&_svg:not([class*='size-'])]:size-3.5 data-popup-open:bg-accent data-popup-open:text-accent-foreground;
|
|
1049
|
+
}
|
|
1050
|
+
|
|
1051
|
+
.cn-menubar-sub-content {
|
|
1052
|
+
@apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-32 rounded-none p-1.5 shadow-md ring-1 duration-100;
|
|
1053
|
+
}
|
|
1054
|
+
|
|
1055
|
+
|
|
1056
|
+
/* MARK: Message */
|
|
1057
|
+
.cn-message {
|
|
1058
|
+
@apply gap-2 text-sm;
|
|
1059
|
+
}
|
|
1060
|
+
|
|
1061
|
+
.cn-message-group {
|
|
1062
|
+
@apply gap-2;
|
|
1063
|
+
}
|
|
1064
|
+
|
|
1065
|
+
.cn-message-avatar {
|
|
1066
|
+
@apply min-w-8 group-has-data-[slot=message-footer]/message:-translate-y-8;
|
|
1067
|
+
}
|
|
1068
|
+
|
|
1069
|
+
.cn-message-content {
|
|
1070
|
+
@apply gap-2.5 group-data-[align=end]/message:*:data-slot:self-end;
|
|
1071
|
+
}
|
|
1072
|
+
|
|
1073
|
+
.cn-message-header {
|
|
1074
|
+
@apply text-xs font-medium text-muted-foreground px-4 group-has-data-[variant=ghost]/message:px-0 uppercase tracking-wide;
|
|
1075
|
+
}
|
|
1076
|
+
|
|
1077
|
+
.cn-message-footer {
|
|
1078
|
+
@apply text-xs font-medium text-muted-foreground px-4 group-has-data-[variant=ghost]/message:px-0 uppercase tracking-wide;
|
|
1079
|
+
}
|
|
1080
|
+
|
|
1081
|
+
/* MARK: MessageScroller */
|
|
1082
|
+
.cn-message-scroller-content {
|
|
1083
|
+
@apply gap-8;
|
|
1084
|
+
}
|
|
1085
|
+
|
|
1086
|
+
/* MARK: NavigationMenu */
|
|
1087
|
+
.cn-navigation-menu-list {
|
|
1088
|
+
@apply gap-0;
|
|
1089
|
+
}
|
|
1090
|
+
|
|
1091
|
+
.cn-navigation-menu-trigger {
|
|
1092
|
+
@apply hover:bg-muted focus:bg-muted data-open:hover:bg-muted data-open:focus:bg-muted data-open:bg-muted/50 focus-visible:ring-ring/30 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted rounded-none px-4.5 py-2.5 text-sm font-medium transition-all focus-visible:ring-2 focus-visible:outline-1 disabled:opacity-50;
|
|
1093
|
+
}
|
|
1094
|
+
|
|
1095
|
+
.cn-navigation-menu-trigger-icon {
|
|
1096
|
+
@apply ml-1 size-3 group-data-open/navigation-menu-trigger:rotate-180 group-data-popup-open/navigation-menu-trigger:rotate-180;
|
|
1097
|
+
}
|
|
1098
|
+
|
|
1099
|
+
.cn-navigation-menu-content {
|
|
1100
|
+
@apply data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:ring-foreground/10 p-2.5 pr-3 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:rounded-none group-data-[viewport=false]/navigation-menu:shadow-md group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:duration-300;
|
|
1101
|
+
}
|
|
1102
|
+
|
|
1103
|
+
.cn-navigation-menu-popup {
|
|
1104
|
+
@apply bg-popover text-popover-foreground ring-foreground/10 rounded-none shadow-md ring-1 transition-all ease-[cubic-bezier(0.22,1,0.36,1)] outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:scale-90 data-starting-style:opacity-0;
|
|
1105
|
+
}
|
|
1106
|
+
|
|
1107
|
+
.cn-navigation-menu-link {
|
|
1108
|
+
@apply data-[active=true]:focus:bg-muted data-[active=true]:hover:bg-muted data-[active=true]:bg-muted/50 focus-visible:ring-ring/30 hover:bg-muted focus:bg-muted gap-1.5 rounded-none p-3 text-sm transition-all focus-visible:ring-2 focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-3.5 in-data-[slot=navigation-menu-content]:rounded-none;
|
|
1109
|
+
}
|
|
1110
|
+
|
|
1111
|
+
/* MARK: NativeSelect */
|
|
1112
|
+
.cn-native-select {
|
|
1113
|
+
@apply border-transparent border-b-input bg-transparent placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground focus-visible:border-b-ring aria-invalid:border-b-destructive dark:aria-invalid:border-b-destructive/50 h-10 min-w-0 rounded-none border py-2 pr-8 pl-0 text-sm transition-[color,border-color] select-none data-[size=sm]:h-9;
|
|
1114
|
+
}
|
|
1115
|
+
|
|
1116
|
+
.cn-native-select-icon {
|
|
1117
|
+
@apply text-muted-foreground;
|
|
1118
|
+
}
|
|
1119
|
+
|
|
1120
|
+
/* MARK: Pagination */
|
|
1121
|
+
.cn-pagination-content {
|
|
1122
|
+
@apply gap-1;
|
|
1123
|
+
}
|
|
1124
|
+
|
|
1125
|
+
.cn-pagination-previous {
|
|
1126
|
+
@apply pl-2!;
|
|
1127
|
+
}
|
|
1128
|
+
|
|
1129
|
+
.cn-pagination-next {
|
|
1130
|
+
@apply pr-2!;
|
|
1131
|
+
}
|
|
1132
|
+
|
|
1133
|
+
.cn-pagination-ellipsis {
|
|
1134
|
+
@apply size-9 [&_svg:not([class*='size-'])]:size-4;
|
|
1135
|
+
}
|
|
1136
|
+
|
|
1137
|
+
/* MARK: Popover */
|
|
1138
|
+
.cn-popover-content {
|
|
1139
|
+
@apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 flex flex-col gap-4 rounded-none p-4 text-sm shadow-md ring-1 duration-100;
|
|
1140
|
+
}
|
|
1141
|
+
|
|
1142
|
+
.cn-popover-header {
|
|
1143
|
+
@apply gap-1 text-sm;
|
|
1144
|
+
}
|
|
1145
|
+
|
|
1146
|
+
.cn-popover-title {
|
|
1147
|
+
@apply text-xs font-semibold uppercase;
|
|
1148
|
+
}
|
|
1149
|
+
|
|
1150
|
+
.cn-popover-description {
|
|
1151
|
+
@apply text-muted-foreground text-sm leading-relaxed mt-0.5;
|
|
1152
|
+
}
|
|
1153
|
+
|
|
1154
|
+
/* MARK: Progress */
|
|
1155
|
+
.cn-progress-track {
|
|
1156
|
+
@apply bg-muted h-0.5 rounded-none;
|
|
1157
|
+
}
|
|
1158
|
+
|
|
1159
|
+
.cn-progress-indicator {
|
|
1160
|
+
@apply bg-primary;
|
|
1161
|
+
}
|
|
1162
|
+
|
|
1163
|
+
.cn-progress-label {
|
|
1164
|
+
@apply text-xs font-semibold tracking-wide uppercase;
|
|
1165
|
+
}
|
|
1166
|
+
|
|
1167
|
+
.cn-progress-value {
|
|
1168
|
+
@apply ml-auto text-sm text-muted-foreground tabular-nums;
|
|
1169
|
+
}
|
|
1170
|
+
|
|
1171
|
+
/* MARK: RadioGroup */
|
|
1172
|
+
.cn-radio-group {
|
|
1173
|
+
@apply grid gap-3;
|
|
1174
|
+
}
|
|
1175
|
+
|
|
1176
|
+
.cn-radio-group-item {
|
|
1177
|
+
@apply border-input bg-transparent data-checked:border-foreground aria-invalid:aria-checked:border-foreground aria-invalid:border-destructive focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 dark:aria-invalid:border-destructive/50 flex size-4.5 rounded-full focus-visible:ring-2 aria-invalid:ring-2 border group-has-[:focus-visible]/field-label:data-checked:border-foreground group-has-[:focus-visible]/field-label:not-data-checked:border-input group-has-[:focus-visible]/field-label:ring-0;
|
|
1178
|
+
}
|
|
1179
|
+
|
|
1180
|
+
.cn-radio-group-indicator {
|
|
1181
|
+
@apply flex size-4.5 items-center justify-center;
|
|
1182
|
+
}
|
|
1183
|
+
|
|
1184
|
+
.cn-radio-group-indicator-icon {
|
|
1185
|
+
@apply bg-foreground absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full;
|
|
1186
|
+
}
|
|
1187
|
+
|
|
1188
|
+
/* MARK: Resizable */
|
|
1189
|
+
.cn-resizable-handle-icon {
|
|
1190
|
+
@apply bg-border h-6 w-1 rounded-none;
|
|
1191
|
+
}
|
|
1192
|
+
|
|
1193
|
+
/* MARK: Select */
|
|
1194
|
+
.cn-select-trigger {
|
|
1195
|
+
@apply border-transparent border-b-input bg-transparent data-placeholder:text-muted-foreground focus-visible:border-b-ring aria-invalid:border-b-destructive dark:aria-invalid:border-b-destructive/50 gap-1.5 rounded-none border py-2 px-0 text-sm transition-[color,border-color] data-[size=default]:h-10 data-[size=sm]:h-9 *:data-[slot=select-value]:flex *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-3.5;
|
|
1196
|
+
}
|
|
1197
|
+
|
|
1198
|
+
.cn-select-trigger-icon {
|
|
1199
|
+
@apply text-muted-foreground size-3.5;
|
|
1200
|
+
}
|
|
1201
|
+
|
|
1202
|
+
.cn-select-content {
|
|
1203
|
+
@apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-none shadow-md ring-1 duration-100;
|
|
1204
|
+
}
|
|
1205
|
+
|
|
1206
|
+
.cn-select-group {
|
|
1207
|
+
@apply scroll-my-1.5 p-1.5;
|
|
1208
|
+
}
|
|
1209
|
+
|
|
1210
|
+
.cn-select-value {
|
|
1211
|
+
@apply flex flex-1 text-left;
|
|
1212
|
+
}
|
|
1213
|
+
|
|
1214
|
+
.cn-select-item-text {
|
|
1215
|
+
@apply flex flex-1 gap-2;
|
|
1216
|
+
}
|
|
1217
|
+
|
|
1218
|
+
.cn-select-scroll-up-button {
|
|
1219
|
+
@apply bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-3.5;
|
|
1220
|
+
}
|
|
1221
|
+
|
|
1222
|
+
.cn-select-scroll-down-button {
|
|
1223
|
+
@apply bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-3.5;
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1226
|
+
.cn-select-viewport {
|
|
1227
|
+
@apply p-1.5 scroll-my-1.5;
|
|
1228
|
+
}
|
|
1229
|
+
|
|
1230
|
+
.cn-select-item {
|
|
1231
|
+
@apply focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2.5 rounded-none py-2 pr-8 pl-3 text-sm [&_svg:not([class*='size-'])]:size-3.5 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2;
|
|
1232
|
+
}
|
|
1233
|
+
|
|
1234
|
+
.cn-select-label {
|
|
1235
|
+
@apply px-3 py-2 text-xs uppercase tracking-wider font-semibold text-muted-foreground;
|
|
1236
|
+
}
|
|
1237
|
+
|
|
1238
|
+
.cn-select-separator {
|
|
1239
|
+
@apply bg-border/50 -mx-1.5 my-1.5 h-px;
|
|
1240
|
+
}
|
|
1241
|
+
|
|
1242
|
+
.cn-select-item-indicator {
|
|
1243
|
+
@apply pointer-events-none absolute right-2 flex size-4 items-center justify-center;
|
|
1244
|
+
}
|
|
1245
|
+
|
|
1246
|
+
/* MARK: Sheet */
|
|
1247
|
+
/* w-full lives here so the sides' w-3/4 can beat it in-layer (split-side
|
|
1248
|
+
* rule) - a latent full-width regression the visual gate cannot see on a
|
|
1249
|
+
* closed dialog. */
|
|
1250
|
+
.cn-sheet-content {
|
|
1251
|
+
@apply m-0 w-full bg-popover text-popover-foreground text-sm bg-clip-padding shadow-md transition duration-200 ease-in-out data-open:animate-in data-closed:animate-out backdrop:bg-black/20 supports-backdrop-filter:backdrop:backdrop-blur-sm;
|
|
1252
|
+
}
|
|
1253
|
+
|
|
1254
|
+
.cn-sheet-side-top {
|
|
1255
|
+
@apply bottom-auto mb-auto h-auto w-full max-w-none border-b data-open:slide-in-from-top data-closed:slide-out-to-top;
|
|
1256
|
+
}
|
|
1257
|
+
|
|
1258
|
+
.cn-sheet-side-right {
|
|
1259
|
+
@apply ml-auto h-full max-h-none w-3/4 border-l data-open:slide-in-from-right data-closed:slide-out-to-right sm:max-w-sm;
|
|
1260
|
+
}
|
|
1261
|
+
|
|
1262
|
+
.cn-sheet-side-bottom {
|
|
1263
|
+
@apply top-auto mt-auto h-auto w-full max-w-none border-t data-open:slide-in-from-bottom data-closed:slide-out-to-bottom;
|
|
1264
|
+
}
|
|
1265
|
+
|
|
1266
|
+
.cn-sheet-side-left {
|
|
1267
|
+
@apply mr-auto h-full max-h-none w-3/4 border-r data-open:slide-in-from-left data-closed:slide-out-to-left sm:max-w-sm;
|
|
1268
|
+
}
|
|
1269
|
+
|
|
1270
|
+
.cn-sheet-header {
|
|
1271
|
+
@apply gap-1.5 p-8;
|
|
1272
|
+
}
|
|
1273
|
+
|
|
1274
|
+
.cn-sheet-title {
|
|
1275
|
+
@apply text-foreground text-lg font-semibold uppercase tracking-wider;
|
|
1276
|
+
}
|
|
1277
|
+
|
|
1278
|
+
.cn-sheet-description {
|
|
1279
|
+
@apply text-muted-foreground text-sm leading-relaxed mt-0.5;
|
|
1280
|
+
}
|
|
1281
|
+
|
|
1282
|
+
.cn-sheet-footer {
|
|
1283
|
+
@apply gap-2 p-8;
|
|
1284
|
+
}
|
|
1285
|
+
|
|
1286
|
+
.cn-sheet-close {
|
|
1287
|
+
@apply absolute top-4 right-4 bg-secondary;
|
|
1288
|
+
}
|
|
1289
|
+
|
|
1290
|
+
/* MARK: SensitiveInput */
|
|
1291
|
+
/* The masked MASK OVERLAY is the focusable reveal button (the
|
|
1292
|
+
* group would trip axe nested-interactive around the inert input) - the
|
|
1293
|
+
* bordered group wears the ring when the mask inside holds focus. */
|
|
1294
|
+
.cn-sensitive-input-group:has([data-slot=sensitive-input-mask]:focus-visible) {
|
|
1295
|
+
@apply outline-none border-b-ring;
|
|
1296
|
+
}
|
|
1297
|
+
|
|
1298
|
+
/* MARK: Sidebar */
|
|
1299
|
+
.cn-sidebar-mobile {
|
|
1300
|
+
@apply bg-sidebar p-0 text-sidebar-foreground shadow-md transition duration-200 ease-in-out data-open:animate-in data-closed:animate-out backdrop:bg-black/20 supports-backdrop-filter:backdrop:backdrop-blur-sm;
|
|
1301
|
+
}
|
|
1302
|
+
|
|
1303
|
+
.cn-sidebar-mobile-left {
|
|
1304
|
+
@apply border-r data-open:slide-in-from-left data-closed:slide-out-to-left;
|
|
1305
|
+
}
|
|
1306
|
+
|
|
1307
|
+
.cn-sidebar-mobile-right {
|
|
1308
|
+
@apply border-l data-open:slide-in-from-right data-closed:slide-out-to-right;
|
|
1309
|
+
}
|
|
1310
|
+
|
|
1311
|
+
.cn-sidebar-inner {
|
|
1312
|
+
@apply bg-sidebar group-data-[variant=floating]:ring-sidebar-border group-data-[variant=floating]:rounded-none group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1;
|
|
1313
|
+
}
|
|
1314
|
+
|
|
1315
|
+
.cn-sidebar-header {
|
|
1316
|
+
@apply gap-2 p-2 [--radius:0];
|
|
1317
|
+
}
|
|
1318
|
+
|
|
1319
|
+
.cn-sidebar-footer {
|
|
1320
|
+
@apply gap-2 p-2;
|
|
1321
|
+
}
|
|
1322
|
+
|
|
1323
|
+
.cn-sidebar-separator {
|
|
1324
|
+
@apply mx-2 bg-sidebar-border;
|
|
1325
|
+
}
|
|
1326
|
+
|
|
1327
|
+
.cn-sidebar-content {
|
|
1328
|
+
@apply gap-2 [--radius:0];
|
|
1329
|
+
}
|
|
1330
|
+
|
|
1331
|
+
.cn-sidebar-gap {
|
|
1332
|
+
@apply transition-[width] duration-200 ease-linear;
|
|
1333
|
+
}
|
|
1334
|
+
|
|
1335
|
+
.cn-sidebar-rail {
|
|
1336
|
+
@apply hover:after:bg-sidebar-border;
|
|
1337
|
+
}
|
|
1338
|
+
|
|
1339
|
+
.cn-sidebar-inset {
|
|
1340
|
+
@apply bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-none md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2;
|
|
1341
|
+
}
|
|
1342
|
+
|
|
1343
|
+
.cn-sidebar-group {
|
|
1344
|
+
@apply p-2;
|
|
1345
|
+
}
|
|
1346
|
+
|
|
1347
|
+
.cn-sidebar-group-label {
|
|
1348
|
+
@apply text-sidebar-foreground/70 ring-sidebar-ring h-8 rounded-none px-3 text-xs font-semibold uppercase tracking-wider transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-3.5;
|
|
1349
|
+
}
|
|
1350
|
+
|
|
1351
|
+
.cn-sidebar-group-content {
|
|
1352
|
+
@apply text-sm;
|
|
1353
|
+
}
|
|
1354
|
+
|
|
1355
|
+
.cn-sidebar-menu {
|
|
1356
|
+
@apply gap-0.5;
|
|
1357
|
+
}
|
|
1358
|
+
|
|
1359
|
+
.cn-sidebar-menu-button {
|
|
1360
|
+
@apply ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground gap-2 rounded-none px-3 py-2 text-left text-sm transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! focus-visible:ring-2 data-active:font-medium [&_svg]:size-4;
|
|
1361
|
+
}
|
|
1362
|
+
|
|
1363
|
+
.cn-sidebar-input {
|
|
1364
|
+
@apply bg-transparent border-input h-8 w-full shadow-none;
|
|
1365
|
+
}
|
|
1366
|
+
|
|
1367
|
+
.cn-sidebar-group-action {
|
|
1368
|
+
@apply text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 w-5 rounded-none p-0 focus-visible:ring-2 [&>svg]:size-3.5;
|
|
1369
|
+
}
|
|
1370
|
+
|
|
1371
|
+
.cn-sidebar-menu-button-variant-default {
|
|
1372
|
+
@apply hover:bg-sidebar-accent hover:text-sidebar-accent-foreground;
|
|
1373
|
+
}
|
|
1374
|
+
|
|
1375
|
+
.cn-sidebar-menu-button-variant-outline {
|
|
1376
|
+
@apply bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_var(--sidebar-border)] hover:shadow-[0_0_0_1px_var(--sidebar-accent)];
|
|
1377
|
+
}
|
|
1378
|
+
|
|
1379
|
+
.cn-sidebar-menu-skeleton {
|
|
1380
|
+
@apply h-8 gap-2 rounded-none px-2;
|
|
1381
|
+
}
|
|
1382
|
+
|
|
1383
|
+
.cn-sidebar-menu-skeleton-icon {
|
|
1384
|
+
@apply size-3.5 rounded-none;
|
|
1385
|
+
}
|
|
1386
|
+
|
|
1387
|
+
.cn-sidebar-menu-skeleton-text {
|
|
1388
|
+
@apply h-4;
|
|
1389
|
+
}
|
|
1390
|
+
|
|
1391
|
+
.cn-sidebar-menu-button-size-default {
|
|
1392
|
+
@apply h-9 text-sm;
|
|
1393
|
+
}
|
|
1394
|
+
|
|
1395
|
+
.cn-sidebar-menu-button-size-sm {
|
|
1396
|
+
@apply h-8 text-xs;
|
|
1397
|
+
}
|
|
1398
|
+
|
|
1399
|
+
.cn-sidebar-menu-button-size-lg {
|
|
1400
|
+
@apply h-14 px-3 text-sm group-data-[collapsible=icon]:p-0!;
|
|
1401
|
+
}
|
|
1402
|
+
|
|
1403
|
+
.cn-sidebar-menu-action {
|
|
1404
|
+
@apply text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground w-5 rounded-none p-0 peer-data-[size=default]/menu-button:top-2 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 focus-visible:ring-2 [&>svg]:size-3.5;
|
|
1405
|
+
}
|
|
1406
|
+
|
|
1407
|
+
.cn-sidebar-menu-badge {
|
|
1408
|
+
@apply text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-active/menu-button:text-sidebar-accent-foreground h-5 min-w-5 rounded-none px-1 text-xs font-medium peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1;
|
|
1409
|
+
}
|
|
1410
|
+
|
|
1411
|
+
.cn-sidebar-menu-sub {
|
|
1412
|
+
@apply border-sidebar-border gap-1 border-l px-2.5 py-0.5 group-data-[collapsible=icon]:hidden;
|
|
1413
|
+
}
|
|
1414
|
+
|
|
1415
|
+
.cn-sidebar-menu-sub-button {
|
|
1416
|
+
@apply text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground h-7 gap-2 rounded-none px-3 focus-visible:ring-2 data-[size=md]:text-sm data-[size=sm]:text-xs [&>svg]:size-3.5;
|
|
1417
|
+
}
|
|
1418
|
+
|
|
1419
|
+
/* MARK: Skeleton */
|
|
1420
|
+
.cn-skeleton {
|
|
1421
|
+
@apply bg-muted;
|
|
1422
|
+
}
|
|
1423
|
+
|
|
1424
|
+
/* MARK: Slider */
|
|
1425
|
+
.cn-slider {
|
|
1426
|
+
@apply data-[orientation=vertical]:min-h-40;
|
|
1427
|
+
}
|
|
1428
|
+
|
|
1429
|
+
.cn-slider-track {
|
|
1430
|
+
@apply bg-input/50 data-[orientation=horizontal]:h-0.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-0.5;
|
|
1431
|
+
}
|
|
1432
|
+
|
|
1433
|
+
.cn-slider-range {
|
|
1434
|
+
@apply bg-primary;
|
|
1435
|
+
}
|
|
1436
|
+
|
|
1437
|
+
.cn-slider-thumb {
|
|
1438
|
+
@apply size-3 border-none bg-primary transition-colors hover:ring-2 hover:ring-ring/30 focus-visible:ring-2 focus-visible:ring-ring/30 focus-visible:outline-hidden;
|
|
1439
|
+
}
|
|
1440
|
+
|
|
1441
|
+
/* MARK: Switch */
|
|
1442
|
+
.cn-switch {
|
|
1443
|
+
@apply data-checked:bg-primary data-unchecked:bg-input data-checked:border-primary border data-unchecked:border-input/50 focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 shrink-0 rounded-none focus-visible:ring-2 aria-invalid:ring-2 data-[size=default]:h-4.5 data-[size=default]:w-8.25 data-[size=sm]:h-3.5 data-[size=sm]:w-6.25 group-has-[:focus-visible]/field-label:data-checked:border-primary group-has-[:focus-visible]/field-label:data-unchecked:border-input/50 group-has-[:focus-visible]/field-label:ring-0;
|
|
1444
|
+
}
|
|
1445
|
+
|
|
1446
|
+
.cn-switch-thumb {
|
|
1447
|
+
@apply bg-background dark:data-unchecked:bg-foreground dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:size-3.5 group-data-[size=sm]/switch:size-2.5 data-checked:translate-x-[calc(100%+2px)] data-unchecked:translate-x-0.25 rtl:data-checked:-translate-x-[calc(100%+2px)] rtl:data-unchecked:-translate-x-0.25;
|
|
1448
|
+
}
|
|
1449
|
+
|
|
1450
|
+
/* MARK: Table */
|
|
1451
|
+
.cn-table {
|
|
1452
|
+
@apply w-full caption-bottom text-sm;
|
|
1453
|
+
}
|
|
1454
|
+
|
|
1455
|
+
.cn-table-container {
|
|
1456
|
+
@apply relative w-full overflow-x-auto;
|
|
1457
|
+
}
|
|
1458
|
+
|
|
1459
|
+
.cn-table-header {
|
|
1460
|
+
@apply [&_tr]:border-b;
|
|
1461
|
+
}
|
|
1462
|
+
|
|
1463
|
+
.cn-table-body {
|
|
1464
|
+
@apply [&_tr:last-child]:border-0;
|
|
1465
|
+
}
|
|
1466
|
+
|
|
1467
|
+
.cn-table-footer {
|
|
1468
|
+
@apply border-t bg-muted/50 font-medium [&>tr]:last:border-b-0;
|
|
1469
|
+
}
|
|
1470
|
+
|
|
1471
|
+
.cn-table-row {
|
|
1472
|
+
@apply border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-selected:bg-muted;
|
|
1473
|
+
}
|
|
1474
|
+
|
|
1475
|
+
.cn-table-head {
|
|
1476
|
+
@apply text-muted-foreground h-12 px-3 text-left align-middle text-xs font-medium uppercase tracking-wider whitespace-nowrap [&:has([role=checkbox])]:pr-0;
|
|
1477
|
+
}
|
|
1478
|
+
|
|
1479
|
+
.cn-table-cell {
|
|
1480
|
+
@apply p-3 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0;
|
|
1481
|
+
}
|
|
1482
|
+
|
|
1483
|
+
.cn-table-caption {
|
|
1484
|
+
@apply mt-4 text-sm text-muted-foreground;
|
|
1485
|
+
}
|
|
1486
|
+
|
|
1487
|
+
/* MARK: Tabs */
|
|
1488
|
+
.cn-tabs {
|
|
1489
|
+
@apply gap-2;
|
|
1490
|
+
}
|
|
1491
|
+
|
|
1492
|
+
.cn-tabs-list {
|
|
1493
|
+
@apply p-1 group-data-horizontal/tabs:h-10;
|
|
1494
|
+
}
|
|
1495
|
+
|
|
1496
|
+
.cn-tabs-list-variant-default {
|
|
1497
|
+
@apply bg-muted;
|
|
1498
|
+
}
|
|
1499
|
+
|
|
1500
|
+
.cn-tabs-list-variant-line {
|
|
1501
|
+
@apply gap-1 bg-transparent;
|
|
1502
|
+
}
|
|
1503
|
+
|
|
1504
|
+
/* The whole text-color cluster lives here (split-side rule): the base
|
|
1505
|
+
* dims (text-foreground/60, dark:text-muted-foreground) must lose to the
|
|
1506
|
+
* data-active colors, which they only can in-layer. */
|
|
1507
|
+
.cn-tabs-trigger {
|
|
1508
|
+
@apply gap-2 rounded-none border border-transparent px-4 py-1.5 text-xs font-semibold uppercase tracking-wider text-foreground/60 hover:text-foreground has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg:not([class*='size-'])]:size-3.5 group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground after:bg-foreground group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100 group-data-vertical/tabs:px-4 group-data-vertical/tabs:py-2;
|
|
1509
|
+
}
|
|
1510
|
+
|
|
1511
|
+
.cn-tabs-content {
|
|
1512
|
+
@apply text-sm;
|
|
1513
|
+
}
|
|
1514
|
+
|
|
1515
|
+
/* MARK: Textarea */
|
|
1516
|
+
.cn-textarea {
|
|
1517
|
+
@apply border-transparent border-b-input bg-transparent focus-visible:border-b-ring aria-invalid:border-b-destructive dark:aria-invalid:border-b-destructive/50 resize-none rounded-none border px-0 py-3 text-base transition-[color,border-color] md:text-sm placeholder:text-muted-foreground;
|
|
1518
|
+
}
|
|
1519
|
+
|
|
1520
|
+
/* MARK: Toast */
|
|
1521
|
+
.cn-toast {
|
|
1522
|
+
@apply gap-3 rounded-none border bg-popover p-4 text-popover-foreground shadow-lg data-open:animate-in data-open:fade-in-0 data-open:slide-in-from-bottom-2 group-data-[position^=top]/toaster:data-open:slide-in-from-top-2 data-closed:animate-out data-closed:fade-out-80 data-closed:slide-out-to-bottom-2 group-data-[position^=top]/toaster:data-closed:slide-out-to-top-2;
|
|
1523
|
+
}
|
|
1524
|
+
|
|
1525
|
+
.cn-toast-variant-success {
|
|
1526
|
+
@apply [&_[data-slot=toast-icon]]:text-primary;
|
|
1527
|
+
}
|
|
1528
|
+
|
|
1529
|
+
.cn-toast-variant-info {
|
|
1530
|
+
@apply [&_[data-slot=toast-icon]]:text-muted-foreground;
|
|
1531
|
+
}
|
|
1532
|
+
|
|
1533
|
+
.cn-toast-variant-warning {
|
|
1534
|
+
@apply [&_[data-slot=toast-icon]]:text-primary;
|
|
1535
|
+
}
|
|
1536
|
+
|
|
1537
|
+
.cn-toast-variant-destructive {
|
|
1538
|
+
@apply text-destructive [&_[data-slot=toast-icon]]:text-destructive;
|
|
1539
|
+
}
|
|
1540
|
+
|
|
1541
|
+
.cn-toast-icon {
|
|
1542
|
+
@apply mt-0.5 size-4 [&_svg]:size-4;
|
|
1543
|
+
}
|
|
1544
|
+
|
|
1545
|
+
.cn-toast-body {
|
|
1546
|
+
@apply gap-1;
|
|
1547
|
+
}
|
|
1548
|
+
|
|
1549
|
+
.cn-toast-title {
|
|
1550
|
+
@apply text-sm font-medium;
|
|
1551
|
+
}
|
|
1552
|
+
|
|
1553
|
+
.cn-toast-description {
|
|
1554
|
+
@apply text-sm text-muted-foreground;
|
|
1555
|
+
}
|
|
1556
|
+
|
|
1557
|
+
/* MARK: Toaster */
|
|
1558
|
+
/* max-w-full lives here WITH its sm: cap (the split-side rule extends to
|
|
1559
|
+
* responsive pairs: a bare utility would beat the themed breakpoint
|
|
1560
|
+
* override from the utilities layer at every width). */
|
|
1561
|
+
.cn-toaster {
|
|
1562
|
+
@apply max-w-full gap-2 p-4 sm:max-w-[420px];
|
|
1563
|
+
}
|
|
1564
|
+
|
|
1565
|
+
/* MARK: Toggle */
|
|
1566
|
+
/* hover:bg-muted lives HERE (not inline, where upstream keeps it): the
|
|
1567
|
+
* outline variant's hover:bg-accent must beat it, and it only can when
|
|
1568
|
+
* both sides share the base layer (in-layer order = the merger's old
|
|
1569
|
+
* last-wins). An inline utility would win the cascade unconditionally. */
|
|
1570
|
+
.cn-toggle {
|
|
1571
|
+
@apply hover:text-foreground aria-pressed:bg-muted focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive gap-1.5 rounded-none text-xs font-semibold uppercase tracking-widest transition-colors [&_svg:not([class*='size-'])]:size-3.5;
|
|
1572
|
+
}
|
|
1573
|
+
|
|
1574
|
+
.cn-toggle-variant-default {
|
|
1575
|
+
@apply bg-transparent;
|
|
1576
|
+
}
|
|
1577
|
+
|
|
1578
|
+
.cn-toggle-variant-outline {
|
|
1579
|
+
@apply border-input hover:bg-muted border bg-transparent;
|
|
1580
|
+
}
|
|
1581
|
+
|
|
1582
|
+
.cn-toggle-size-default {
|
|
1583
|
+
@apply h-10 min-w-10 px-6 has-data-[icon=inline-end]:pr-4 has-data-[icon=inline-start]:pl-4 has-[>svg:first-child]:pl-4 has-[>svg:last-child]:pr-4;
|
|
1584
|
+
}
|
|
1585
|
+
|
|
1586
|
+
.cn-toggle-size-sm {
|
|
1587
|
+
@apply h-9 min-w-9 px-4 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3 has-[>svg:first-child]:pl-3 has-[>svg:last-child]:pr-3;
|
|
1588
|
+
}
|
|
1589
|
+
|
|
1590
|
+
.cn-toggle-size-lg {
|
|
1591
|
+
@apply h-11 min-w-11 px-8 has-data-[icon=inline-end]:pr-5 has-data-[icon=inline-start]:pl-5 has-[>svg:first-child]:pl-5 has-[>svg:last-child]:pr-5;
|
|
1592
|
+
}
|
|
1593
|
+
|
|
1594
|
+
/* MARK: ToggleGroup */
|
|
1595
|
+
.cn-toggle-group {
|
|
1596
|
+
@apply data-[spacing=0]:data-[variant=outline]:rounded-none;
|
|
1597
|
+
}
|
|
1598
|
+
|
|
1599
|
+
/* Segmented edge radii live theme-side (side-move): each theme
|
|
1600
|
+
* rounds spacing=0 segments in its own radius language. */
|
|
1601
|
+
.cn-toggle-group-item {
|
|
1602
|
+
@apply data-pressed:bg-muted data-pressed:text-foreground group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-6 group-data-[spacing=0]/toggle-group:shadow-none group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-none group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-none group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-none group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-none group-data-[spacing=0]/toggle-group:has-data-[icon=inline-end]:pr-4 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-start]:pl-4;
|
|
1603
|
+
}
|
|
1604
|
+
|
|
1605
|
+
/* MARK: Tooltip */
|
|
1606
|
+
.cn-tooltip-content {
|
|
1607
|
+
@apply data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 inline-flex items-center gap-1.5 rounded-none px-3 py-1.5 text-xs has-data-[slot=kbd]:pr-1.5 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-none;
|
|
1608
|
+
}
|
|
1609
|
+
|
|
1610
|
+
.cn-tooltip-arrow {
|
|
1611
|
+
@apply size-2.5 translate-y-[calc(-50%-2px)] rounded-none;
|
|
1612
|
+
}
|
|
1613
|
+
|
|
1614
|
+
/* MARK: Consumer utilities
|
|
1615
|
+
* Standalone cn-* classes templates and consumers apply directly (they
|
|
1616
|
+
* ride the css:verify_theme allowlist - no dictionary emits cn-rtl-flip).
|
|
1617
|
+
* cn-font-heading: upstream globals (@apply font-heading); poetry inlines
|
|
1618
|
+
* the var with a sans fallback so it is a no-op until a theme defines
|
|
1619
|
+
* --font-heading. cn-rtl-flip: upstream ships the NAME with no rule
|
|
1620
|
+
* anywhere (dead in source); poetry authors the intended RTL mirror. */
|
|
1621
|
+
.cn-font-heading {
|
|
1622
|
+
font-family: var(--font-heading, var(--font-sans));
|
|
1623
|
+
}
|
|
1624
|
+
|
|
1625
|
+
.cn-rtl-flip {
|
|
1626
|
+
@apply rtl:-scale-x-100;
|
|
1627
|
+
}
|
|
1628
|
+
|
|
1629
|
+
/* MARK: Cross-component overrides
|
|
1630
|
+
* Rules that restyle ANOTHER component's cn surface must come after every
|
|
1631
|
+
* rule they override - in-layer order is what lets an override win, so
|
|
1632
|
+
* alphabetical placement would silently lose (cn-input-group-textarea vs
|
|
1633
|
+
* the later cn-textarea). Keep every such rule in this closing section. */
|
|
1634
|
+
.cn-input-group-input {
|
|
1635
|
+
@apply border-0 bg-transparent ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent group-has-[>[data-align=inline-start]]/input-group:pl-2 group-has-[>[data-align=inline-end]]/input-group:pr-2;
|
|
1636
|
+
}
|
|
1637
|
+
|
|
1638
|
+
.cn-input-group-textarea {
|
|
1639
|
+
@apply border-0 bg-transparent py-2.5 ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent;
|
|
1640
|
+
}
|
|
1641
|
+
|
|
1642
|
+
.cn-input-group-button {
|
|
1643
|
+
@apply gap-2 rounded-none text-sm;
|
|
1644
|
+
}
|
|
1645
|
+
|
|
1646
|
+
.cn-input-group-button-size-xs {
|
|
1647
|
+
@apply h-6 gap-1 rounded-none px-1.5 [&>svg:not([class*='size-'])]:size-3.5 text-xs;
|
|
1648
|
+
}
|
|
1649
|
+
|
|
1650
|
+
/* poetry-authored: upstream themes this hook only in lyra/mira (gap-1
|
|
1651
|
+
both); the class must compile in every theme (css:verify_compiled). */
|
|
1652
|
+
.cn-input-group-button-size-sm {
|
|
1653
|
+
@apply gap-1;
|
|
1654
|
+
}
|
|
1655
|
+
|
|
1656
|
+
.cn-input-group-button-size-icon-xs {
|
|
1657
|
+
@apply size-6 p-0 has-[>svg]:p-0 text-xs;
|
|
1658
|
+
}
|
|
1659
|
+
|
|
1660
|
+
.cn-input-group-button-size-icon-sm {
|
|
1661
|
+
@apply size-8 p-0 has-[>svg]:p-0;
|
|
1662
|
+
}
|
|
1663
|
+
|
|
1664
|
+
/* CommandDialog re-tunes the Dialog panel (p-0 must beat cn-dialog-content's p-6). */
|
|
1665
|
+
.cn-command-dialog {
|
|
1666
|
+
@apply p-0;
|
|
1667
|
+
}
|
|
1668
|
+
|
|
1669
|
+
/* MARK: Stat */
|
|
1670
|
+
.cn-stat-delta-positive {
|
|
1671
|
+
@apply text-[oklch(from_var(--success)_calc(l*0.85)_c_h)] dark:text-success;
|
|
1672
|
+
}
|
|
1673
|
+
|
|
1674
|
+
/* MARK: Questionnaire */
|
|
1675
|
+
.cn-questionnaire {
|
|
1676
|
+
@apply gap-6;
|
|
1677
|
+
}
|
|
1678
|
+
|
|
1679
|
+
.cn-questionnaire-progress {
|
|
1680
|
+
@apply text-xs uppercase tracking-wide;
|
|
1681
|
+
}
|
|
1682
|
+
|
|
1683
|
+
.cn-questionnaire-item {
|
|
1684
|
+
@apply flex flex-col gap-5;
|
|
1685
|
+
}
|
|
1686
|
+
|
|
1687
|
+
.cn-questionnaire-title {
|
|
1688
|
+
@apply text-xs font-semibold uppercase tracking-wide [&:not(:has(~[data-slot=questionnaire-description]))]:mb-5;
|
|
1689
|
+
}
|
|
1690
|
+
|
|
1691
|
+
.cn-questionnaire-description {
|
|
1692
|
+
@apply text-sm normal-case tracking-normal;
|
|
1693
|
+
}
|
|
1694
|
+
|
|
1695
|
+
.cn-questionnaire-choices {
|
|
1696
|
+
@apply gap-3;
|
|
1697
|
+
}
|
|
1698
|
+
|
|
1699
|
+
.cn-questionnaire-choice {
|
|
1700
|
+
@apply hover:bg-muted/50 data-checked:bg-primary/5 data-checked:border-primary/30 dark:data-checked:border-primary/20 dark:data-checked:bg-primary/10 in-data-invalid:border-destructive has-[>input:focus-visible]:ring-ring/30 gap-3 rounded-none border border-input bg-transparent px-4 py-4 text-sm has-[>input:focus-visible]:ring-2;
|
|
1701
|
+
}
|
|
1702
|
+
|
|
1703
|
+
.cn-questionnaire-choice-indicator {
|
|
1704
|
+
@apply border-input group-data-checked/questionnaire-choice:border-foreground group-data-[type=checkbox]/questionnaire-choice:group-data-checked/questionnaire-choice:bg-primary group-data-[type=checkbox]/questionnaire-choice:group-data-checked/questionnaire-choice:text-primary-foreground group-data-[type=checkbox]/questionnaire-choice:group-data-checked/questionnaire-choice:border-primary size-4.5 translate-y-[--spacing(0.45)] group-has-data-[slot=questionnaire-choice-description]/questionnaire-choice:translate-y-0.5;
|
|
1705
|
+
}
|
|
1706
|
+
|
|
1707
|
+
.cn-questionnaire-choice-indicator-dot {
|
|
1708
|
+
@apply bg-foreground size-2;
|
|
1709
|
+
}
|
|
1710
|
+
|
|
1711
|
+
.cn-questionnaire-choice-indicator-check {
|
|
1712
|
+
@apply size-3.5;
|
|
1713
|
+
}
|
|
1714
|
+
|
|
1715
|
+
.cn-questionnaire-choice-content {
|
|
1716
|
+
@apply gap-1;
|
|
1717
|
+
}
|
|
1718
|
+
|
|
1719
|
+
.cn-questionnaire-choice-description {
|
|
1720
|
+
@apply text-muted-foreground;
|
|
1721
|
+
}
|
|
1722
|
+
|
|
1723
|
+
.cn-questionnaire-shortcut {
|
|
1724
|
+
@apply border-input bg-background text-muted-foreground size-5 translate-y-[--spacing(0.45)] group-has-data-[slot=questionnaire-choice-description]/questionnaire-choice:translate-y-0.5 items-center justify-center rounded-none border font-mono text-[0.625rem] font-medium leading-none;
|
|
1725
|
+
}
|
|
1726
|
+
|
|
1727
|
+
.cn-questionnaire-input-wrapper {
|
|
1728
|
+
@apply w-full;
|
|
1729
|
+
}
|
|
1730
|
+
|
|
1731
|
+
.cn-questionnaire-input {
|
|
1732
|
+
@apply border-transparent border-b-input bg-transparent focus-visible:border-b-ring aria-invalid:border-b-destructive dark:aria-invalid:border-b-destructive/50 h-10 border px-0 py-1 text-base md:text-sm;
|
|
1733
|
+
}
|
|
1734
|
+
|
|
1735
|
+
.cn-questionnaire-error {
|
|
1736
|
+
@apply mt-2 text-sm;
|
|
1737
|
+
}
|
|
1738
|
+
|
|
1739
|
+
.cn-questionnaire-actions {
|
|
1740
|
+
@apply gap-2 sm:min-h-10;
|
|
1741
|
+
}
|
|
1742
|
+
|
|
1743
|
+
/* MARK: WebMCP agent focus (declarative tools) - the browser marks the
|
|
1744
|
+
form an agent is filling and its submit; :where() keeps the rule
|
|
1745
|
+
forgiving in browsers that lack the pseudo-classes. */
|
|
1746
|
+
:where(form:tool-form-active) {
|
|
1747
|
+
@apply rounded-lg outline-2 outline-dashed outline-offset-4 outline-ring/60;
|
|
1748
|
+
}
|
|
1749
|
+
|
|
1750
|
+
:where(:tool-submit-active) {
|
|
1751
|
+
@apply border-ring ring-3 ring-ring/50;
|
|
1752
|
+
}
|
|
1753
|
+
|
|
1754
|
+
/* MARK: Menu translucent (shared, LAST - wins the content bg cascade) */
|
|
1755
|
+
.cn-menu-translucent {
|
|
1756
|
+
@apply animate-none! relative bg-popover/70 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! **:data-[variant=destructive]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!;
|
|
1757
|
+
}
|