Compare commits

...

2 Commits

2
.gitignore vendored

@ -0,0 +1,2 @@
/playground/**
!playground/.gitkeep

@ -0,0 +1,4 @@
# Findings
## Gemini CLI
- Didn't understand that the goal was to create a compliant HTML webpages. It just copy and pasted components from ./components together.

@ -0,0 +1,485 @@
# Gemini CLI Configuration for Project Components
This document provides context and instructions for the Gemini CLI when working with this project.
---
## Project Context
This project utilizes a `components/` directory at its root, which contains a collection of Tailwind CSS-based HTML partials. These components are organized hierarchically by their intended purpose (e.g., `application_ui`, `marketing`).
**The files within the `components/` directory are intended as a library of examples and building blocks.** They should **never be directly modified or edited** by the Gemini CLI.
---
## Component Utilization Strategy
When generating or modifying HTML, the Gemini CLI should refer to the examples provided in the `components/` directory to understand patterns, styles, and structures for various UI elements.
**For any request involving a UI element that closely resembles a component in `components/`, the CLI should:**
1. **Identify relevant component(s):** Search the `components/` directory for the most appropriate and similar HTML partials.
2. **Adapt and integrate:** Extract the necessary HTML and Tailwind classes from the identified component(s) and adapt them to fit the specific requirements of the user's request. This involves:
* Copying and pasting relevant HTML structures.
* Applying or adjusting Tailwind classes as needed.
* Modifying content (text, images, links) to match the request.
* Combining elements from multiple components if necessary to fulfill a complex request.
3. **Generate new code:** The adapted code should be generated in the target file specified by the user's request, *not* within the `components/` directory.
---
## Component Directory Structure
The following is an overview of the `components/` directory structure for reference:
```
components/
├── application_ui
│   ├── application_shells
│   │   ├── multi_column_layouts
│   │   │   ├── constrained_three_column.html
│   │   │   ├── constrained_with_sticky_columns.html
│   │   │   ├── full_width_secondary_column_on_right.html
│   │   │   ├── full_width_three_column.html
│   │   │   ├── full_width_with_narrow_sidebar_and_header.html
│   │   │   └── full_width_with_narrow_sidebar.html
│   │   ├── sidebar_layouts
│   │   │   ├── brand_sidebar.html
│   │   │   ├── brand_sidebar_with_headers.html
│   │   │   ├── dark_sidebar.html
│   │   │   ├── dark_sidebar_with_header.html
│   │   │   ├── light_sidebar.html
│   │   │   ├── light_sidebar_with_constrained_content_area.html
│   │   │   ├── light_sidebar_with_header.html
│   │   │   └── light_sidebar_with_off_white_background.html
│   │   └── stacked_layouts
│   │   ├── branded_nav_with_compact_page_header.html
│   │   ├── branded_nav_with_white_page_header.html
│   │   ├── brand_nav_with_overlap.html
│   │   ├── dark_nav_with_compact_white_page_header.html
│   │   ├── dark_nav_with_overlap.html
│   │   ├── dark_nav_with_white_page_header.html
│   │   ├── light_nav_on_gray_background.html
│   │   ├── light_nav_with_bottom_border.html
│   │   └── two_row_navigation_with_overlap.html
│   ├── data_display
│   │   ├── calendars
│   │   │   ├── borderless_side_by_side.html
│   │   │   ├── bordlerless_stacked.html
│   │   │   ├── day_view.html
│   │   │   ├── double.html
│   │   │   ├── month_view.html
│   │   │   ├── small_with_meetings.html
│   │   │   ├── week_view.html
│   │   │   └── year_view.html
│   │   ├── description_lists
│   │   │   ├── left_aligned.html
│   │   │   ├── left_aligned_in_card.html
│   │   │   ├── left_aligned_on_dark.html
│   │   │   ├── left_aligned_striped.html
│   │   │   ├── left_aligned_with_inline_actions.html
│   │   │   ├── narrow_with_hidden_labels.html
│   │   │   └── two_column.html
│   │   └── stats
│   │   ├── simple.html
│   │   ├── simple_in_cards.html
│   │   ├── with_brand_icon.html
│   │   ├── with_shared_borders.html
│   │   └── with_trending.html
│   ├── elements
│   │   ├── avatars
│   │   │   ├── avatar_group_stacked_botton_to_top.html
│   │   │   ├── avatar_group_stacked_top_to_bottom.html
│   │   │   ├── circular_avatars.html
│   │   │   ├── circular_avatars_with_bottom_notification.html
│   │   │   ├── circular_avatars_with_placeholder_icon.html
│   │   │   ├── circular_avatars_with_placeholder_initials.html
│   │   │   ├── circular_avatars_with_top_notification.html
│   │   │   ├── rounded_avatars.html
│   │   │   ├── rounded_avatars_with_bottom_notification.html
│   │   │   ├── rounded_avatars_with_top_notification.html
│   │   │   └── with_text.html
│   │   ├── badges
│   │   │   ├── flat.html
│   │   │   ├── flat_pill.html
│   │   │   ├── flat_pill_with_dot.html
│   │   │   ├── flat_with_dot.html
│   │   │   ├── flat_with_remove_button.html
│   │   │   ├── pill_with_border_and_dot.html
│   │   │   ├── pill_with_border.html
│   │   │   ├── small_flat.html
│   │   │   ├── small_flat_pill.html
│   │   │   ├── small_flat_pill_with_dot.html
│   │   │   ├── small_flat_with_dot.html
│   │   │   ├── small_pill_with_border.html
│   │   │   ├── small_with_border.html
│   │   │   ├── with_border_and_dot.html
│   │   │   ├── with_border_and_dot_on_dark.html
│   │   │   ├── with_border_and_remove_button.html
│   │   │   ├── with_border.html
│   │   │   └── with_border_on_dark.html
│   │   ├── button_groups
│   │   │   ├── basic.html
│   │   │   ├── icon_only.html
│   │   │   ├── with_checkbox_and_dropdown.html
│   │   │   ├── with_dropdown.html
│   │   │   └── with_stat.html
│   │   ├── buttons
│   │   │   ├── buttons_with_leading_icon.html
│   │   │   ├── buttons_with_trailing_icon.html
│   │   │   ├── circular_buttons.html
│   │   │   ├── primary_buttons.html
│   │   │   ├── primary_buttons_on_dark.html
│   │   │   ├── rounded_primary_buttons.html
│   │   │   ├── rounded_secondary_buttons.html
│   │   │   ├── secondary_buttons.html
│   │   │   ├── secondary_buttons_on_dark.html
│   │   │   └── soft_buttons.html
│   │   └── dropdowns
│   │   ├── simple.html
│   │   ├── with_dividers.html
│   │   ├── with_icons.html
│   │   ├── with_minimal_menu_icon.html
│   │   └── with_simple_header.html
│   ├── feedback
│   │   ├── alerts
│   │   │   ├── with_accent_border.html
│   │   │   ├── with_actions.html
│   │   │   ├── with_description.html
│   │   │   ├── with_dismiss_button.html
│   │   │   ├── with_link_on_right.html
│   │   │   └── with_list.html
│   │   └── empty_states
│   │   ├── simple.html
│   │   ├── with_dashed_border.html
│   │   ├── with_recommendation_grids.html
│   │   ├── with_recommendations.html
│   │   ├── with_starting_points.html
│   │   └── with_templates.html
│   ├── forms
│   │   ├── action_panels
│   │   │   ├── simple.html
│   │   │   ├── simple_well.html
│   │   │   ├── with_button_at_top_right.html
│   │   │   ├── with_button_on_right.html
│   │   │   ├── with_input.html
│   │   │   ├── with_link.html
│   │   │   ├── with_toggle.html
│   │   │   └── with_well.html
│   │   ├── checkboxes
│   │   │   ├── list_with_checkbox_on_right.html
│   │   │   ├── list_with_description.html
│   │   │   ├── list_with_inline_description.html
│   │   │   └── simple_list_with_heading.html
│   │   ├── comboboxes
│   │   │   ├── simple.html
│   │   │   ├── with_image.html
│   │   │   ├── with_secondary_text.html
│   │   │   └── with_status_indicator.html
│   │   ├── form_layouts
│   │   │   ├── labels_on_left.html
│   │   │   ├── stacked.html
│   │   │   ├── stacked_on_dark.html
│   │   │   ├── two_column.html
│   │   │   └── two_column_with_cards.html
│   │   ├── input_groups
│   │   │   ├── inpout_with_disabled_state.html
│   │   │   ├── inputs_with_inset_labels_and_shared_borders.html
│   │   │   ├── inputs_with_shared_borders.html
│   │   │   ├── input_with_addon.html
│   │   │   ├── input_with_corner_hint.html
│   │   │   ├── input_with_gray_background_and_bottom_border.html
│   │   │   ├── input_with_hidden_label.html
│   │   │   ├── input_with_inline_addon.html
│   │   │   ├── input_with_inline_leading_addon_and_trailing_dropdown.html
│   │   │   ├── input_with_inline_leading_and_trailing_addons.html
│   │   │   ├── input_with_inline_leading_dropdown.html
│   │   │   ├── input_with_inset_label.html
│   │   │   ├── input_with_keyboard_shortcut.html
│   │   │   ├── input_with_label_and_help_text.html
│   │   │   ├── input_with_label.html
│   │   │   ├── input_with_leading_icon_and_trailing_button.html
│   │   │   ├── input_with_leading_icon.html
│   │   │   ├── input_with_overlapping_label.html
│   │   │   ├── input_with_pill_shape.html
│   │   │   ├── input_with_trailing_icon.html
│   │   │   └── input_with_validation_error.html
│   │   ├── radio_groups
│   │   │   ├── cards.html
│   │   │   ├── color_picker.html
│   │   │   ├── list_with_description.html
│   │   │   ├── list_with_descriptions_in_panel.html
│   │   │   ├── list_with_inline_description.html
│   │   │   ├── list_with_radio_on_right.html
│   │   │   ├── simple_inline_list.html
│   │   │   ├── simple_list.html
│   │   │   ├── simple_list_with_radio_on_right.html
│   │   │   ├── simple_table.html
│   │   │   ├── small_cards.html
│   │   │   └── stacked_cards.html
│   │   ├── select_menus
│   │   │   ├── branded_with_supported_text.html
│   │   │   ├── custom_with_avatar.html
│   │   │   ├── custom_with_check_on_left.html
│   │   │   ├── custom_with_status_indicator.html
│   │   │   ├── simple_custom.html
│   │   │   ├── simple_native.html
│   │   │   └── with_secondary_text.html
│   │   ├── signin_and_registration
│   │   │   ├── simple_card.html
│   │   │   ├── simple.html
│   │   │   ├── simple_no_labels.html
│   │   │   ├── simple_on_dark.html
│   │   │   └── split_screen.html
│   │   ├── textareas
│   │   │   ├── simple.html
│   │   │   ├── with_avatar_and_actions.html
│   │   │   ├── with_preview_button.html
│   │   │   ├── with_title_and_pill_actions.html
│   │   │   └── with_underline_and_actions.html
│   │   └── toggles
│   │   ├── short_toggle.html
│   │   ├── simple_toggle.html
│   │   ├── toggle_with_icon.html
│   │   ├── with_left_label_and_description.html
│   │   └── with_right_label.html
│   ├── headings
│   │   ├── card_headings
│   │   │   ├── simple.html
│   │   │   ├── with_action.html
│   │   │   ├── with_avatar_and_actions.html
│   │   │   ├── with_avatar_meta_and_dropdown.html
│   │   │   ├── with_description_and_action.html
│   │   │   └── with_description.html
│   │   ├── page_headings
│   │   │   ├── card_with_avatar_and_stats.html
│   │   │   ├── with_actions_and_breadcrumbs.html
│   │   │   ├── with_actions_and_breadcrumbs_on_dark.html
│   │   │   ├── with_actions.html
│   │   │   ├── with_actions_on_dark.html
│   │   │   ├── with_avatar_and_actions.html
│   │   │   ├── with_banner_image.html
│   │   │   ├── with_filters_and_action.html
│   │   │   ├── with_logo_meta_and_actions.html
│   │   │   ├── with_meta_actions_and_breadcrumbs.html
│   │   │   ├── with_meta_actions_and_breadcrumbs_on_dark.html
│   │   │   ├── with_meta_and_actions.html
│   │   │   └── with_meta_and_actions_on_dark.html
│   │   └── section_headings
│   ├── layout
│   │   ├── cards
│   │   │   ├── basic_card.html
│   │   │   ├── card_edge_to_edge_on_mobile.html
│   │   │   ├── card_with_footer.html
│   │   │   ├── card_with_gray_body.html
│   │   │   ├── card_with_gray_footer.html
│   │   │   ├── card_with_header.html
│   │   │   ├── card_with_heeader_and_footer.html
│   │   │   ├── well_edge_to_edge_on_mobile.html
│   │   │   ├── well.html
│   │   │   └── well_on_gray.html
│   │   ├── containers
│   │   │   ├── constrained_to_br_with_padded_content.html
│   │   │   ├── constrained_with_padded_content.html
│   │   │   ├── full_mobil_constrained_to_br_with_padded_content.html
│   │   │   ├── full_mobile_constrained_with_padded_content_above.html
│   │   │   └── narrow_constrained_with_padded_content.html
│   │   ├── dividers
│   │   │   ├── with_button.html
│   │   │   ├── with_icon.html
│   │   │   ├── with_label.html
│   │   │   ├── with_label_on_left.html
│   │   │   ├── with_title_and_button.html
│   │   │   ├── with_title.html
│   │   │   ├── with_title_on_left.html
│   │   │   └── with_toolbar.html
│   │   ├── list_containers
│   │   │   ├── card_with_dividers_full_width_on_mobile.html
│   │   │   ├── card_with_dividers.html
│   │   │   ├── flat_card_with_dividers.html
│   │   │   ├── separate_cards_full_width_on_mobile.html
│   │   │   ├── separate_cards.html
│   │   │   ├── simple_with_dividers_full_width_on_mobile.html
│   │   │   └── simple_with_dividers.html
│   │   └── media_objects
│   │   ├── aligned_to_bottom.html
│   │   ├── aligned_to_center.html
│   │   ├── basic.html
│   │   ├── basic_responsive.html
│   │   ├── media_on_right.html
│   │   ├── nested.html
│   │   ├── stretched_to_fit.html
│   │   └── wide_responsive.html
│   ├── lists
│   │   ├── feeds
│   │   │   ├── simple_with_icons.html
│   │   │   ├── with_comments.html
│   │   │   └── with_multiple_items_types.html
│   │   ├── grid_lists
│   │   │   ├── actions_with_shared_borders.html
│   │   │   ├── contact_cards.html
│   │   │   ├── contact_cards_with_small_portraits.html
│   │   │   ├── horizontal_link_cards.html
│   │   │   ├── images_with_details.html
│   │   │   ├── logo_cards_with_description_list.html
│   │   │   └── simple_cards.html
│   │   ├── stacked_lists
│   │   │   ├── full_width_with_constrained_content.html
│   │   │   ├── full_width_with_links.html
│   │   │   ├── in_card_with_links.html
│   │   │   ├── narrow.html
│   │   │   ├── narrow_with_actions.html
│   │   │   ├── narrow_with_badges_on_dark.html
│   │   │   ├── narrow_with_small_avatars.html
│   │   │   ├── narrow_with_small_avatars_on_dark.html
│   │   │   ├── narrow_with_sticky_headings.html
│   │   │   ├── narrow_with_truncated_content.html
│   │   │   ├── simple.html
│   │   │   ├── simple_on_dark.html
│   │   │   ├── two_columns_with_links.html
│   │   │   ├── with_badges_buttons_and_action_menu.html
│   │   │   ├── with_inline_links_and_actions_menu.html
│   │   │   ├── with_inline_links_and_avatar_group.html
│   │   │   └── with_links.html
│   │   └── tables
│   │   ├── full_width.html
│   │   ├── full_width_with_avatars_on_dark.html
│   │   ├── full_width_with_constrained_content.html
│   │   ├── simple.html
│   │   ├── simple_in_card.html
│   │   ├── simple_on_dark.html
│   │   ├── with_avatars_and_multi_line_content.html
│   │   ├── with_border.html
│   │   ├── with_checkboxes.html
│   │   ├── with_condensed_content.html
│   │   ├── with_grouped_rows.html
│   │   ├── with_hidden_columns_on_mobile.html
│   │   ├── with_hidden_headings.html
│   │   ├── with_sortable_headings.html
│   │   ├── with_stacked_columns_on_mobile.html
│   │   ├── with_sticky_header.html
│   │   ├── with_striped_rows.html
│   │   ├── with_summary_rows.html
│   │   ├── with_uppercase_headings.html
│   │   └── with_veritcal_lines.html
│   ├── navigation
│   │   ├── breadcrumbs
│   │   │   ├── contained.html
│   │   │   ├── full_width_bar.html
│   │   │   ├── simple_with_chevrons.html
│   │   │   └── simple_with_slashes.html
│   │   ├── command_palettes
│   │   │   ├── dark_with_icons.html
│   │   │   ├── semi_transparent_with_icons.html
│   │   │   ├── simple.html
│   │   │   ├── simple_with_padding.html
│   │   │   ├── with_footer.html
│   │   │   ├── with_groups.html
│   │   │   ├── with_icons.html
│   │   │   ├── with_images_and_descriptions.html
│   │   │   └── with_preview.html
│   │   ├── navbars
│   │   │   ├── dark_with_quick_action.html
│   │   │   ├── dark_with_search.html
│   │   │   ├── simple_dark.html
│   │   │   ├── simple_dark_with_menu_button_on_left.html
│   │   │   ├── simple.html
│   │   │   ├── simple_with_menu_button_on_left.html
│   │   │   ├── with_centered_search_and_secondary_links_dark.html
│   │   │   ├── with_centered_search_and_secondary_links.html
│   │   │   ├── with_quick_action.html
│   │   │   ├── with_search.html
│   │   │   └── with_search_in_column_layout.html
│   │   ├── pagination
│   │   │   ├── card_footer_with_page_buttons.html
│   │   │   ├── centered_page_numbers.html
│   │   │   └── simple_card_footer.html
│   │   ├── progress_bars
│   │   │   ├── bullets_and_text.html
│   │   │   ├── bullets.html
│   │   │   ├── circles.html
│   │   │   ├── circles_with_text.html
│   │   │   ├── panels.html
│   │   │   ├── panels_with_border.html
│   │   │   ├── progress_bar.html
│   │   │   └── simple.html
│   │   ├── sidebar_navigation
│   │   │   ├── brand.html
│   │   │   ├── dark.html
│   │   │   ├── light.html
│   │   │   ├── with_expandable_sections.html
│   │   │   └── with_secondary_navigation.html
│   │   ├── tabs
│   │   │   ├── bar_with_underline.html
│   │   │   ├── full_width_tabs_with_underline.html
│   │   │   ├── simple_on_dark.html
│   │   │   ├── tabs_in_pills.html
│   │   │   ├── tabs_in_pills_on_gray.html
│   │   │   ├── tabs_in_pills_with_brand_color.html
│   │   │   ├── tabs_with_underline_and_badges.html
│   │   │   ├── tabs_with_underline_and_icons.html
│   │   │   └── tabs_with_underline.html
│   │   └── vertical_navigation
│   │   ├── on_gray.html
│   │   ├── simple.html
│   │   ├── with_badges.html
│   │   ├── with_icons_and_badges.html
│   │   ├── with_icons.html
│   │   └── with_secondary_navigation.html
│   ├── overlays
│   │   ├── drawers
│   │   │   ├── contact_list_example.html
│   │   │   ├── create_project_form_example.html
│   │   │   ├── empty.html
│   │   │   ├── file_details_example.html
│   │   │   ├── user_profile_example.html
│   │   │   ├── wide_create_project_from_example.html
│   │   │   ├── wide_empty.html
│   │   │   ├── wide_horizontal_user_profile_example.html
│   │   │   ├── with_background_overly.html
│   │   │   ├── with_branded_header.html
│   │   │   ├── with_clone_button_on_outside.html
│   │   │   └── with_sticky_footer.html
│   │   ├── modal_dialogs
│   │   │   ├── centered_with_sinlge_action.html
│   │   │   ├── centered_with_wide_buttons.html
│   │   │   ├── simple_alert.html
│   │   │   ├── simple_alerts_with_left_aligned_buttons.html
│   │   │   ├── simple_with_dismiss_button.html
│   │   │   └── simple_with_gray_footer.html
│   │   └── notifications
│   │   ├── condensed.html
│   │   ├── simple.html
│   │   ├── with_actions_below.html
│   │   ├── with_avatar.html
│   │   ├── with_buttons_below.html
│   │   └── with_split_buttons.html
│   └── page_examples
│   ├── detail_screens
│   │   ├── index.html
│   │   ├── sidebar_on_dark.html
│   │   └── stacked.html
│   ├── home_screens
│   │   ├── sidebar_on_dark.html
│   │   └── stacked.html
│   └── settings_screens
│   ├── sidebar_on_dark.html
│   └── stacked.html
└── marketing
└── page_sections
└── hero_sections
├── simple_centered.html
├── simple_centered_with_background_image.html
├── split_with_bordered_screenshot.html
├── split_with_code_example.html
├── split_with_image.html
├── split_with_screenshot.html
├── with_angled_image_on_right.html
├── with_app_screen_shot.html
├── with_bordered_app_screenshot.html
├── with_image_tiles.html
├── with_offset_image.html
└── with_phone_mockup.html
65 directories, 382 files
```

@ -0,0 +1,12 @@
prepare: clean
cp -R ./template/* ./playground
clean:
cd ./playground && find . ! -name '.gitkeep' -delete
watch:
tailwindcss -i ./playground/src/css/input.css -o ./playground/src/css/main.css --watch
live:
live-server ./playground/src/

@ -0,0 +1,18 @@
# Tailwind-AI
An lab to run experiments using agentic coding tools to use Tailwind Plus Components.
## Setup
The setup assumes you have `tailwindcss` installed globally on your machine.
## How to run an experiment
A makefile is present with the commands `prepare` and `clean`. Note these are destructive commands and will wipe the current contents of the `./playground` directory.
Each experiment you want to run should be done within the `./playground` directory. Simply `make prepare` the directory then run your agentic coding tool within that directory as the target for changes.
## Resources
- [Gemini-cli Cheatsheet](https://www.philschmid.de/gemini-cli-cheatsheet)
- [Tailwind 4 Features](https://tailwindcss.com/blog/tailwindcss-v4#css-first-configuration)

@ -1,12 +0,0 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Page Title</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" type="text/css" media="screen" href="main.css" />
<script src="main.js"></script>
</head>
<body></body>
</html>

@ -91,10 +91,7 @@
</div>
</div>
<el-dialog>
<dialog
id="mobile-menu"
class="backdrop:bg-transparent lg:hidden"
>
<dialog id="mobile-menu" class="backdrop:bg-transparent lg:hidden">
<div tabindex="0" class="fixed inset-0 focus:outline-none">
<el-dialog-panel
class="fixed inset-y-0 left-0 z-50 w-full overflow-y-auto bg-white px-4 pb-6 sm:max-w-sm sm:px-6 sm:ring-1 sm:ring-gray-900/10"
@ -125,9 +122,7 @@
</button>
<div class="-ml-0.5">
<a href="#" class="-m-1.5 block p-1.5">
<span class="sr-only"
>Your Company</span
>
<span class="sr-only">Your Company</span>
<img
src="https://tailwindcss.com/plus-assets/img/logos/mark.svg?color=indigo&shade=600"
alt=""
@ -166,10 +161,7 @@
<main>
<header class="relative isolate pt-16">
<div
aria-hidden="true"
class="absolute inset-0 -z-10 overflow-hidden"
>
<div aria-hidden="true" class="absolute inset-0 -z-10 overflow-hidden">
<div
class="absolute top-full left-16 -mt-16 transform-gpu opacity-50 blur-3xl xl:left-1/2 xl:-ml-80"
>
@ -194,9 +186,7 @@
class="aspect-1154/678 w-288.5 bg-linear-to-br from-[#FF80B5] to-[#9089FC]"
></div>
</div>
<div
class="absolute inset-x-0 bottom-0 h-px bg-gray-900/5"
></div>
<div class="absolute inset-x-0 bottom-0 h-px bg-gray-900/5"></div>
</div>
<div class="mx-auto max-w-7xl px-4 py-10 sm:px-6 lg:px-8">
@ -214,9 +204,7 @@
Invoice
<span class="text-gray-700">#00011</span>
</div>
<div
class="mt-1 text-base font-semibold text-gray-900"
>
<div class="mt-1 text-base font-semibold text-gray-900">
Tuple, Inc
</div>
</h1>
@ -286,19 +274,11 @@
<!-- Invoice summary -->
<div class="lg:col-start-3 lg:row-end-1">
<h2 class="sr-only">Summary</h2>
<div
class="rounded-lg bg-gray-50 shadow-xs ring-1 ring-gray-900/5"
>
<div class="rounded-lg bg-gray-50 shadow-xs ring-1 ring-gray-900/5">
<dl class="flex flex-wrap">
<div class="flex-auto pt-6 pl-6">
<dt
class="text-sm/6 font-semibold text-gray-900"
>
Amount
</dt>
<dd
class="mt-1 text-base font-semibold text-gray-900"
>
<dt class="text-sm/6 font-semibold text-gray-900">Amount</dt>
<dd class="mt-1 text-base font-semibold text-gray-900">
$10,560.00
</dd>
</div>
@ -329,15 +309,11 @@
/>
</svg>
</dt>
<dd
class="text-sm/6 font-medium text-gray-900"
>
<dd class="text-sm/6 font-medium text-gray-900">
Alex Curren
</dd>
</div>
<div
class="mt-4 flex w-full flex-none gap-x-4 px-6"
>
<div class="mt-4 flex w-full flex-none gap-x-4 px-6">
<dt class="flex-none">
<span class="sr-only">Due date</span>
<svg
@ -358,14 +334,10 @@
</svg>
</dt>
<dd class="text-sm/6 text-gray-500">
<time datetime="2023-01-31"
>January 31, 2023</time
>
<time datetime="2023-01-31">January 31, 2023</time>
</dd>
</div>
<div
class="mt-4 flex w-full flex-none gap-x-4 px-6"
>
<div class="mt-4 flex w-full flex-none gap-x-4 px-6">
<dt class="flex-none">
<span class="sr-only">Status</span>
<svg
@ -382,19 +354,12 @@
/>
</svg>
</dt>
<dd class="text-sm/6 text-gray-500">
Paid with MasterCard
</dd>
<dd class="text-sm/6 text-gray-500">Paid with MasterCard</dd>
</div>
</dl>
<div
class="mt-6 border-t border-gray-900/5 px-6 py-6"
>
<a
href="#"
class="text-sm/6 font-semibold text-gray-900"
>Download receipt
<span aria-hidden="true">&rarr;</span></a
<div class="mt-6 border-t border-gray-900/5 px-6 py-6">
<a href="#" class="text-sm/6 font-semibold text-gray-900"
>Download receipt <span aria-hidden="true">&rarr;</span></a
>
</div>
</div>
@ -404,39 +369,25 @@
<div
class="-mx-4 px-4 py-8 shadow-xs ring-1 ring-gray-900/5 sm:mx-0 sm:rounded-lg sm:px-8 sm:pb-14 lg:col-span-2 lg:row-span-2 lg:row-end-2 xl:px-16 xl:pt-16 xl:pb-20"
>
<h2 class="text-base font-semibold text-gray-900">
Invoice
</h2>
<dl
class="mt-6 grid grid-cols-1 text-sm/6 sm:grid-cols-2"
>
<h2 class="text-base font-semibold text-gray-900">Invoice</h2>
<dl class="mt-6 grid grid-cols-1 text-sm/6 sm:grid-cols-2">
<div class="sm:pr-4">
<dt class="inline text-gray-500">Issued on</dt>
<dd class="inline text-gray-700">
<time datetime="2023-23-01"
>January 23, 2023</time
>
<time datetime="2023-23-01">January 23, 2023</time>
</dd>
</div>
<div class="mt-2 sm:mt-0 sm:pl-4">
<dt class="inline text-gray-500">Due on</dt>
<dd class="inline text-gray-700">
<time datetime="2023-31-01"
>January 31, 2023</time
>
<time datetime="2023-31-01">January 31, 2023</time>
</dd>
</div>
<div
class="mt-6 border-t border-gray-900/5 pt-6 sm:pr-4"
>
<dt class="font-semibold text-gray-900">
From
</dt>
<div class="mt-6 border-t border-gray-900/5 pt-6 sm:pr-4">
<dt class="font-semibold text-gray-900">From</dt>
<dd class="mt-2 text-gray-500">
<span class="font-medium text-gray-900"
>Acme, Inc.</span
><br />7363 Cynthia Pass<br />Toronto, ON
N3Y 4H8
<span class="font-medium text-gray-900">Acme, Inc.</span
><br />7363 Cynthia Pass<br />Toronto, ON N3Y 4H8
</dd>
</div>
<div
@ -444,32 +395,21 @@
>
<dt class="font-semibold text-gray-900">To</dt>
<dd class="mt-2 text-gray-500">
<span class="font-medium text-gray-900"
>Tuple, Inc</span
><br />886 Walter Street<br />New York, NY
12345
<span class="font-medium text-gray-900">Tuple, Inc</span
><br />886 Walter Street<br />New York, NY 12345
</dd>
</div>
</dl>
<table
class="mt-16 w-full text-left text-sm/6 whitespace-nowrap"
>
<table class="mt-16 w-full text-left text-sm/6 whitespace-nowrap">
<colgroup>
<col class="w-full" />
<col />
<col />
<col />
</colgroup>
<thead
class="border-b border-gray-200 text-gray-900"
>
<thead class="border-b border-gray-200 text-gray-900">
<tr>
<th
scope="col"
class="px-0 py-3 font-semibold"
>
Projects
</th>
<th scope="col" class="px-0 py-3 font-semibold">Projects</th>
<th
scope="col"
class="hidden py-3 pr-0 pl-8 text-right font-semibold sm:table-cell"
@ -493,9 +433,7 @@
<tbody>
<tr class="border-b border-gray-100">
<td class="max-w-0 px-0 py-5 align-top">
<div
class="truncate font-medium text-gray-900"
>
<div class="truncate font-medium text-gray-900">
Logo redesign
</div>
<div class="truncate text-gray-500">
@ -520,14 +458,11 @@
</tr>
<tr class="border-b border-gray-100">
<td class="max-w-0 px-0 py-5 align-top">
<div
class="truncate font-medium text-gray-900"
>
<div class="truncate font-medium text-gray-900">
Website redesign
</div>
<div class="truncate text-gray-500">
Design and program new company
website.
Design and program new company website.
</div>
</td>
<td
@ -548,14 +483,12 @@
</tr>
<tr class="border-b border-gray-100">
<td class="max-w-0 px-0 py-5 align-top">
<div
class="truncate font-medium text-gray-900"
>
<div class="truncate font-medium text-gray-900">
Business cards
</div>
<div class="truncate text-gray-500">
Design and production of 3.5&quot; x
2.0&quot; business cards.
Design and production of 3.5&quot; x 2.0&quot; business
cards.
</div>
</td>
<td
@ -576,9 +509,7 @@
</tr>
<tr class="border-b border-gray-100">
<td class="max-w-0 px-0 py-5 align-top">
<div
class="truncate font-medium text-gray-900"
>
<div class="truncate font-medium text-gray-900">
T-shirt design
</div>
<div class="truncate text-gray-500">
@ -669,9 +600,7 @@
<div class="lg:col-start-3">
<!-- Activity feed -->
<h2 class="text-sm/6 font-semibold text-gray-900">
Activity
</h2>
<h2 class="text-sm/6 font-semibold text-gray-900">Activity</h2>
<ul role="list" class="mt-6 space-y-6">
<li class="relative flex gap-x-4">
<div
@ -686,12 +615,8 @@
class="size-1.5 rounded-full bg-gray-100 ring-1 ring-gray-300"
></div>
</div>
<p
class="flex-auto py-0.5 text-xs/5 text-gray-500"
>
<span class="font-medium text-gray-900"
>Chelsea Hagon</span
>
<p class="flex-auto py-0.5 text-xs/5 text-gray-500">
<span class="font-medium text-gray-900">Chelsea Hagon</span>
created the invoice.
</p>
<time
@ -713,12 +638,8 @@
class="size-1.5 rounded-full bg-gray-100 ring-1 ring-gray-300"
></div>
</div>
<p
class="flex-auto py-0.5 text-xs/5 text-gray-500"
>
<span class="font-medium text-gray-900"
>Chelsea Hagon</span
>
<p class="flex-auto py-0.5 text-xs/5 text-gray-500">
<span class="font-medium text-gray-900">Chelsea Hagon</span>
edited the invoice.
</p>
<time
@ -740,12 +661,8 @@
class="size-1.5 rounded-full bg-gray-100 ring-1 ring-gray-300"
></div>
</div>
<p
class="flex-auto py-0.5 text-xs/5 text-gray-500"
>
<span class="font-medium text-gray-900"
>Chelsea Hagon</span
>
<p class="flex-auto py-0.5 text-xs/5 text-gray-500">
<span class="font-medium text-gray-900">Chelsea Hagon</span>
sent the invoice.
</p>
<time
@ -769,11 +686,8 @@
class="flex-auto rounded-md p-3 ring-1 ring-gray-200 ring-inset"
>
<div class="flex justify-between gap-x-4">
<div
class="py-0.5 text-xs/5 text-gray-500"
>
<span
class="font-medium text-gray-900"
<div class="py-0.5 text-xs/5 text-gray-500">
<span class="font-medium text-gray-900"
>Chelsea Hagon</span
>
commented
@ -785,8 +699,8 @@
>
</div>
<p class="text-sm/6 text-gray-500">
Called client, they reassured me the
invoice would be paid by the 25th.
Called client, they reassured me the invoice would be paid
by the 25th.
</p>
</div>
</li>
@ -803,12 +717,8 @@
class="size-1.5 rounded-full bg-gray-100 ring-1 ring-gray-300"
></div>
</div>
<p
class="flex-auto py-0.5 text-xs/5 text-gray-500"
>
<span class="font-medium text-gray-900"
>Alex Curren</span
>
<p class="flex-auto py-0.5 text-xs/5 text-gray-500">
<span class="font-medium text-gray-900">Alex Curren</span>
viewed the invoice.
</p>
<time
@ -818,9 +728,7 @@
>
</li>
<li class="relative flex gap-x-4">
<div
class="absolute top-0 left-0 flex h-6 w-6 justify-center"
>
<div class="absolute top-0 left-0 flex h-6 w-6 justify-center">
<div class="w-px bg-gray-200"></div>
</div>
<div
@ -840,12 +748,8 @@
/>
</svg>
</div>
<p
class="flex-auto py-0.5 text-xs/5 text-gray-500"
>
<span class="font-medium text-gray-900"
>Alex Curren</span
>
<p class="flex-auto py-0.5 text-xs/5 text-gray-500">
<span class="font-medium text-gray-900">Alex Curren</span>
paid the invoice.
</p>
<time
@ -867,9 +771,7 @@
<div
class="overflow-hidden rounded-lg pb-12 outline-1 -outline-offset-1 outline-gray-300 focus-within:outline-2 focus-within:-outline-offset-2 focus-within:outline-indigo-600"
>
<label for="comment" class="sr-only"
>Add your comment</label
>
<label for="comment" class="sr-only">Add your comment</label>
<textarea
id="comment"
name="comment"
@ -901,9 +803,7 @@
fill-rule="evenodd"
/>
</svg>
<span class="sr-only"
>Attach a file</span
>
<span class="sr-only">Attach a file</span>
</button>
</div>
<div class="flex items-center">
@ -929,9 +829,7 @@
fill-rule="evenodd"
/>
</svg>
<span class="sr-only"
>Add your mood</span
>
<span class="sr-only">Add your mood</span>
</el-selectedcontent>
</button>
@ -944,9 +842,7 @@
value="excited"
class="relative block cursor-default bg-white px-3 py-2 select-none focus:bg-gray-100 focus:outline-hidden"
>
<div
class="flex items-center"
>
<div class="flex items-center">
<div
class="flex size-8 items-center justify-center rounded-full bg-red-500"
>
@ -974,9 +870,7 @@
value="loved"
class="relative block cursor-default bg-white px-3 py-2 select-none focus:bg-gray-100 focus:outline-hidden"
>
<div
class="flex items-center"
>
<div class="flex items-center">
<div
class="flex size-8 items-center justify-center rounded-full bg-pink-400"
>
@ -1002,9 +896,7 @@
value="happy"
class="relative block cursor-default bg-white px-3 py-2 select-none focus:bg-gray-100 focus:outline-hidden"
>
<div
class="flex items-center"
>
<div class="flex items-center">
<div
class="flex size-8 items-center justify-center rounded-full bg-green-400"
>
@ -1032,9 +924,7 @@
value="sad"
class="relative block cursor-default bg-white px-3 py-2 select-none focus:bg-gray-100 focus:outline-hidden"
>
<div
class="flex items-center"
>
<div class="flex items-center">
<div
class="flex size-8 items-center justify-center rounded-full bg-yellow-400"
>
@ -1062,9 +952,7 @@
value="thumbsy"
class="relative block cursor-default bg-white px-3 py-2 select-none focus:bg-gray-100 focus:outline-hidden"
>
<div
class="flex items-center"
>
<div class="flex items-center">
<div
class="flex size-8 items-center justify-center rounded-full bg-blue-500"
>
@ -1090,9 +978,7 @@
value=""
class="relative block cursor-default bg-white px-3 py-2 select-none focus:bg-gray-100 focus:outline-hidden"
>
<div
class="flex items-center"
>
<div class="flex items-center">
<div
class="flex size-8 items-center justify-center rounded-full bg-transparent in-[el-selectedcontent]:hidden"
>
@ -1124,16 +1010,11 @@
fill-rule="evenodd"
/>
</svg>
<span
class="sr-only"
>Add your
mood</span
>
<span class="sr-only">Add your mood</span>
</span>
<span
class="ml-3 block truncate font-medium in-[el-selectedcontent]:hidden"
>I feel
nothing</span
>I feel nothing</span
>
</div>
</el-option>

@ -0,0 +1,9 @@
# Tailwind Template
This is the basic setup necessary for configuring a tail page using the tailwind CSS 4.x version with the new Elements Javascript library for HTML based components.
## Running
```
tailwindcss -i src/css/input.css -o src/css/main.css --watch
```

@ -0,0 +1,5 @@
@import "tailwindcss";
@theme {
--font-sans: InterVariable, sans-serif;
}

@ -0,0 +1,19 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Tailwind AI</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="https://rsms.me/inter/inter.css" />
<link rel="stylesheet" type="text/css" media="screen" href="css/main.css" />
<script
src="vendor/js/tailwindcss-elements.1.0.0.js"
type="module"
></script>
</head>
<body>
<h1 class="text-4xl font-semibold text-center">Hello Tailwind</h1>
<!-- CONTENT GOES HERE -->
</body>
</html>

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save