designkit-ai 1.0.0
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.
- package/AI-AGENT.md +51 -0
- package/LICENSE +21 -0
- package/README.md +517 -0
- package/bin/designkit.js +61 -0
- package/components/_index.md +81 -0
- package/components/app-mobile/README.md +117 -0
- package/components/app-mobile/badges/badge-count.html +9 -0
- package/components/app-mobile/badges/badge-dot.html +9 -0
- package/components/app-mobile/badges/badge-large.html +9 -0
- package/components/app-mobile/buttons/button-filled.html +9 -0
- package/components/app-mobile/buttons/button-icon.html +11 -0
- package/components/app-mobile/buttons/button-outlined.html +9 -0
- package/components/app-mobile/buttons/button-text.html +9 -0
- package/components/app-mobile/buttons/button-tonal.html +9 -0
- package/components/app-mobile/buttons/fab-extended.html +12 -0
- package/components/app-mobile/buttons/fab-small.html +11 -0
- package/components/app-mobile/buttons/fab.html +11 -0
- package/components/app-mobile/buttons/icon-button-filled.html +11 -0
- package/components/app-mobile/buttons/icon-button-tonal.html +11 -0
- package/components/app-mobile/buttons/segmented-button.html +13 -0
- package/components/app-mobile/cards/card-elevated.html +15 -0
- package/components/app-mobile/cards/card-filled.html +15 -0
- package/components/app-mobile/cards/card-outlined.html +15 -0
- package/components/app-mobile/charts/bar-chart.html +20 -0
- package/components/app-mobile/charts/donut-chart.html +20 -0
- package/components/app-mobile/charts/horizontal-bar.html +15 -0
- package/components/app-mobile/charts/line-chart.html +26 -0
- package/components/app-mobile/charts/progress-ring.html +17 -0
- package/components/app-mobile/charts/sparkline.html +11 -0
- package/components/app-mobile/charts/stat-card.html +18 -0
- package/components/app-mobile/chips/chip-assist.html +12 -0
- package/components/app-mobile/chips/chip-filter.html +12 -0
- package/components/app-mobile/chips/chip-input.html +14 -0
- package/components/app-mobile/chips/chip-suggestion.html +9 -0
- package/components/app-mobile/data-display/avatar-group.html +35 -0
- package/components/app-mobile/dialogs/dialog-basic.html +16 -0
- package/components/app-mobile/dialogs/dialog-fullscreen.html +18 -0
- package/components/app-mobile/dividers/divider-full.html +9 -0
- package/components/app-mobile/dividers/divider-inset.html +9 -0
- package/components/app-mobile/ecommerce/cart-item.html +29 -0
- package/components/app-mobile/ecommerce/cart-summary.html +31 -0
- package/components/app-mobile/ecommerce/color-selector.html +17 -0
- package/components/app-mobile/ecommerce/order-status.html +25 -0
- package/components/app-mobile/ecommerce/product-detail-hero.html +45 -0
- package/components/app-mobile/ecommerce/size-selector.html +17 -0
- package/components/app-mobile/ecommerce/wishlist-item.html +22 -0
- package/components/app-mobile/education/assignment-card.html +24 -0
- package/components/app-mobile/education/certificate.html +30 -0
- package/components/app-mobile/education/course-card.html +32 -0
- package/components/app-mobile/education/grade-report.html +53 -0
- package/components/app-mobile/education/lesson-progress.html +21 -0
- package/components/app-mobile/education/quiz-mcq.html +35 -0
- package/components/app-mobile/education/quiz-truefalse.html +26 -0
- package/components/app-mobile/education/student-dashboard.html +57 -0
- package/components/app-mobile/feedback/banner.html +13 -0
- package/components/app-mobile/feedback/progress-circular.html +14 -0
- package/components/app-mobile/feedback/progress-linear.html +11 -0
- package/components/app-mobile/feedback/skeleton.html +20 -0
- package/components/app-mobile/feedback/snackbar.html +15 -0
- package/components/app-mobile/feedback/tooltip.html +9 -0
- package/components/app-mobile/finance/bank-account-card.html +36 -0
- package/components/app-mobile/finance/budget-category.html +24 -0
- package/components/app-mobile/finance/credit-score.html +29 -0
- package/components/app-mobile/finance/investment-portfolio.html +52 -0
- package/components/app-mobile/finance/transaction-row.html +26 -0
- package/components/app-mobile/finance/transfer-form.html +42 -0
- package/components/app-mobile/fitness/body-metrics.html +41 -0
- package/components/app-mobile/fitness/calorie-tracker.html +48 -0
- package/components/app-mobile/fitness/exercise-timer.html +30 -0
- package/components/app-mobile/fitness/meal-plan.html +36 -0
- package/components/app-mobile/fitness/sleep-tracker.html +50 -0
- package/components/app-mobile/fitness/workout-card.html +37 -0
- package/components/app-mobile/food/cuisine-filter.html +39 -0
- package/components/app-mobile/food/menu-item.html +25 -0
- package/components/app-mobile/food/order-tracker.html +46 -0
- package/components/app-mobile/food/restaurant-card.html +34 -0
- package/components/app-mobile/food/review-card.html +35 -0
- package/components/app-mobile/food/table-reservation.html +42 -0
- package/components/app-mobile/forms/form-address.html +41 -0
- package/components/app-mobile/forms/form-payment.html +37 -0
- package/components/app-mobile/forms/form-profile.html +39 -0
- package/components/app-mobile/forms/time-picker.html +28 -0
- package/components/app-mobile/healthcare/appointment-card.html +26 -0
- package/components/app-mobile/healthcare/doctor-profile.html +32 -0
- package/components/app-mobile/healthcare/health-metric-chart.html +51 -0
- package/components/app-mobile/healthcare/insurance-card.html +35 -0
- package/components/app-mobile/healthcare/lab-results.html +23 -0
- package/components/app-mobile/healthcare/medication-reminder.html +24 -0
- package/components/app-mobile/healthcare/symptom-checker.html +42 -0
- package/components/app-mobile/healthcare/vitals-dashboard.html +56 -0
- package/components/app-mobile/inputs/date-picker.html +68 -0
- package/components/app-mobile/inputs/file-upload.html +13 -0
- package/components/app-mobile/inputs/otp-input.html +16 -0
- package/components/app-mobile/inputs/password-field.html +13 -0
- package/components/app-mobile/inputs/search-bar.html +17 -0
- package/components/app-mobile/inputs/select.html +17 -0
- package/components/app-mobile/inputs/text-field-filled.html +12 -0
- package/components/app-mobile/inputs/text-field-outlined.html +12 -0
- package/components/app-mobile/inputs/textarea.html +12 -0
- package/components/app-mobile/inputs/time-picker.html +33 -0
- package/components/app-mobile/job/application-status.html +18 -0
- package/components/app-mobile/job/interview-schedule.html +32 -0
- package/components/app-mobile/lists/list-item-1line.html +14 -0
- package/components/app-mobile/lists/list-item-2line.html +20 -0
- package/components/app-mobile/lists/list-item-3line.html +17 -0
- package/components/app-mobile/logistics/delivery-map.html +40 -0
- package/components/app-mobile/logistics/driver-card.html +25 -0
- package/components/app-mobile/logistics/package-tracker.html +42 -0
- package/components/app-mobile/logistics/shipment-row.html +20 -0
- package/components/app-mobile/media/audio-player.html +38 -0
- package/components/app-mobile/media/image-carousel.html +28 -0
- package/components/app-mobile/menus/menu-context.html +13 -0
- package/components/app-mobile/menus/menu-dropdown.html +14 -0
- package/components/app-mobile/native/gesture-nav-bar.html +11 -0
- package/components/app-mobile/native/ios-action-sheet.html +19 -0
- package/components/app-mobile/native/ios-alert.html +18 -0
- package/components/app-mobile/native/ios-home-indicator.html +11 -0
- package/components/app-mobile/native/ios-list-cell.html +14 -0
- package/components/app-mobile/native/ios-nav-bar.html +16 -0
- package/components/app-mobile/native/ios-page-sheet.html +17 -0
- package/components/app-mobile/native/ios-search-bar.html +15 -0
- package/components/app-mobile/native/ios-segmented-control.html +13 -0
- package/components/app-mobile/native/ios-status-bar.html +17 -0
- package/components/app-mobile/native/ios-tab-bar.html +31 -0
- package/components/app-mobile/native/ios-wheel-picker.html +34 -0
- package/components/app-mobile/native/notification-item.html +19 -0
- package/components/app-mobile/native/permission-dialog.html +18 -0
- package/components/app-mobile/native/status-bar.html +16 -0
- package/components/app-mobile/navbars/bottom-app-bar.html +19 -0
- package/components/app-mobile/navbars/bottom-nav-3.html +28 -0
- package/components/app-mobile/navbars/bottom-nav-4.html +26 -0
- package/components/app-mobile/navbars/bottom-nav-5.html +30 -0
- package/components/app-mobile/navbars/top-app-bar-center.html +17 -0
- package/components/app-mobile/navbars/top-app-bar-large.html +20 -0
- package/components/app-mobile/navbars/top-app-bar-medium.html +20 -0
- package/components/app-mobile/navbars/top-app-bar-small.html +22 -0
- package/components/app-mobile/navigation/back-header.html +32 -0
- package/components/app-mobile/navigation/segmented-control.html +19 -0
- package/components/app-mobile/navigation/stepper-vertical.html +65 -0
- package/components/app-mobile/patterns/accordion.html +20 -0
- package/components/app-mobile/patterns/activity-feed.html +26 -0
- package/components/app-mobile/patterns/audio-waveform.html +34 -0
- package/components/app-mobile/patterns/avatar-group.html +14 -0
- package/components/app-mobile/patterns/breadcrumb.html +15 -0
- package/components/app-mobile/patterns/calendar-month.html +56 -0
- package/components/app-mobile/patterns/camera-viewfinder.html +33 -0
- package/components/app-mobile/patterns/card-horizontal.html +15 -0
- package/components/app-mobile/patterns/cart-item.html +23 -0
- package/components/app-mobile/patterns/category-pills.html +15 -0
- package/components/app-mobile/patterns/chat-bubble-received.html +15 -0
- package/components/app-mobile/patterns/chat-bubble-sent.html +14 -0
- package/components/app-mobile/patterns/chat-conversation.html +27 -0
- package/components/app-mobile/patterns/chat-input-bar.html +13 -0
- package/components/app-mobile/patterns/code-editor.html +29 -0
- package/components/app-mobile/patterns/comment-item.html +15 -0
- package/components/app-mobile/patterns/contact-card.html +19 -0
- package/components/app-mobile/patterns/data-table.html +25 -0
- package/components/app-mobile/patterns/empty-state.html +19 -0
- package/components/app-mobile/patterns/error-screen.html +14 -0
- package/components/app-mobile/patterns/event-card.html +22 -0
- package/components/app-mobile/patterns/image-editor.html +34 -0
- package/components/app-mobile/patterns/image-grid.html +16 -0
- package/components/app-mobile/patterns/login-form.html +22 -0
- package/components/app-mobile/patterns/map-card.html +19 -0
- package/components/app-mobile/patterns/media-player.html +26 -0
- package/components/app-mobile/patterns/notification-list.html +25 -0
- package/components/app-mobile/patterns/onboarding-slide.html +24 -0
- package/components/app-mobile/patterns/order-summary.html +16 -0
- package/components/app-mobile/patterns/order-tracker.html +27 -0
- package/components/app-mobile/patterns/pagination.html +17 -0
- package/components/app-mobile/patterns/post-card.html +28 -0
- package/components/app-mobile/patterns/product-card.html +26 -0
- package/components/app-mobile/patterns/profile-header.html +18 -0
- package/components/app-mobile/patterns/rating-stars.html +15 -0
- package/components/app-mobile/patterns/review-card.html +22 -0
- package/components/app-mobile/patterns/search-results.html +35 -0
- package/components/app-mobile/patterns/settings-group.html +30 -0
- package/components/app-mobile/patterns/stepper-horizontal.html +24 -0
- package/components/app-mobile/patterns/story-circle.html +16 -0
- package/components/app-mobile/patterns/swipe-action.html +19 -0
- package/components/app-mobile/patterns/tag-pills.html +14 -0
- package/components/app-mobile/patterns/timeline-item.html +19 -0
- package/components/app-mobile/patterns/todo-item.html +18 -0
- package/components/app-mobile/patterns/video-editor-timeline.html +36 -0
- package/components/app-mobile/patterns/video-player.html +33 -0
- package/components/app-mobile/patterns/wallet-card.html +18 -0
- package/components/app-mobile/sliders/slider-continuous.html +14 -0
- package/components/app-mobile/sliders/slider-discrete.html +21 -0
- package/components/app-mobile/social/chat-bubble-received.html +15 -0
- package/components/app-mobile/social/chat-bubble-sent.html +16 -0
- package/components/app-mobile/social/notification-item.html +17 -0
- package/components/app-mobile/social/post-card.html +46 -0
- package/components/app-mobile/social/reaction-bar.html +29 -0
- package/components/app-mobile/social/story-circle.html +15 -0
- package/components/app-mobile/social/user-profile-card.html +29 -0
- package/components/app-mobile/surfaces/bottom-sheet.html +23 -0
- package/components/app-mobile/surfaces/nav-drawer.html +20 -0
- package/components/app-mobile/surfaces/nav-rail.html +14 -0
- package/components/app-mobile/surfaces/side-sheet.html +17 -0
- package/components/app-mobile/tabs/tabs-primary.html +13 -0
- package/components/app-mobile/tabs/tabs-secondary.html +13 -0
- package/components/app-mobile/toggles/checkbox.html +14 -0
- package/components/app-mobile/toggles/radio.html +14 -0
- package/components/app-mobile/toggles/switch.html +11 -0
- package/components/app-mobile/travel/booking-summary.html +51 -0
- package/components/app-mobile/travel/flight-card.html +41 -0
- package/components/app-mobile/travel/hotel-card.html +35 -0
- package/components/app-mobile/travel/itinerary-item.html +29 -0
- package/components/app-mobile/travel/map-pins.html +42 -0
- package/components/app-mobile/travel/travel-date-picker.html +72 -0
- package/components/common/decorations/abstract-lines.html +30 -0
- package/components/common/decorations/circle-rings.html +26 -0
- package/components/common/decorations/corner-decoration.html +27 -0
- package/components/common/decorations/dots-pattern.html +51 -0
- package/components/common/decorations/gradient-blob.html +19 -0
- package/components/common/decorations/mesh-gradient.html +32 -0
- package/components/common/decorations/sparkle-burst.html +35 -0
- package/components/common/decorations/wave-divider.html +17 -0
- package/components/common/illustrations/empty-cart.html +27 -0
- package/components/common/illustrations/empty-inbox.html +28 -0
- package/components/common/illustrations/empty-search.html +26 -0
- package/components/common/illustrations/error-404.html +29 -0
- package/components/common/illustrations/no-data.html +31 -0
- package/components/common/illustrations/success-check.html +33 -0
- package/components/common/illustrations/upload-cloud.html +23 -0
- package/components/common/illustrations/welcome.html +31 -0
- package/components/common/mockup-elements/avatar-placeholder.html +17 -0
- package/components/common/mockup-elements/browser-chrome.html +37 -0
- package/components/common/mockup-elements/chart-bar.html +42 -0
- package/components/common/mockup-elements/image-placeholder.html +27 -0
- package/components/common/mockup-elements/laptop-frame.html +32 -0
- package/components/common/mockup-elements/map-placeholder.html +39 -0
- package/components/common/mockup-elements/phone-frame.html +29 -0
- package/components/common/mockup-elements/status-bar-android.html +30 -0
- package/components/common/mockup-elements/status-bar-ios.html +26 -0
- package/components/common/mockup-elements/video-placeholder.html +29 -0
- package/components/common/ui-icons/icon-add-circle.html +12 -0
- package/components/common/ui-icons/icon-airdrop.html +10 -0
- package/components/common/ui-icons/icon-airplay.html +10 -0
- package/components/common/ui-icons/icon-apple-logo.html +10 -0
- package/components/common/ui-icons/icon-arrow-back.html +11 -0
- package/components/common/ui-icons/icon-arrow-down.html +10 -0
- package/components/common/ui-icons/icon-arrow-right.html +10 -0
- package/components/common/ui-icons/icon-arrow-up.html +10 -0
- package/components/common/ui-icons/icon-bag.html +10 -0
- package/components/common/ui-icons/icon-battery.html +10 -0
- package/components/common/ui-icons/icon-bluetooth.html +10 -0
- package/components/common/ui-icons/icon-bolt.html +10 -0
- package/components/common/ui-icons/icon-bookmark-fill.html +10 -0
- package/components/common/ui-icons/icon-bookmark.html +10 -0
- package/components/common/ui-icons/icon-bubble-left.html +10 -0
- package/components/common/ui-icons/icon-calendar.html +19 -0
- package/components/common/ui-icons/icon-camera.html +11 -0
- package/components/common/ui-icons/icon-cart.html +10 -0
- package/components/common/ui-icons/icon-checkmark.html +10 -0
- package/components/common/ui-icons/icon-chevron-down.html +10 -0
- package/components/common/ui-icons/icon-chevron-left.html +10 -0
- package/components/common/ui-icons/icon-chevron-right.html +10 -0
- package/components/common/ui-icons/icon-chevron-up.html +10 -0
- package/components/common/ui-icons/icon-clock.html +10 -0
- package/components/common/ui-icons/icon-creditcard.html +10 -0
- package/components/common/ui-icons/icon-doc.html +10 -0
- package/components/common/ui-icons/icon-download.html +10 -0
- package/components/common/ui-icons/icon-ellipsis-vertical.html +10 -0
- package/components/common/ui-icons/icon-ellipsis.html +10 -0
- package/components/common/ui-icons/icon-envelope.html +10 -0
- package/components/common/ui-icons/icon-eye-slash.html +10 -0
- package/components/common/ui-icons/icon-eye.html +10 -0
- package/components/common/ui-icons/icon-faceid.html +10 -0
- package/components/common/ui-icons/icon-favorite.html +10 -0
- package/components/common/ui-icons/icon-folder.html +10 -0
- package/components/common/ui-icons/icon-globe.html +10 -0
- package/components/common/ui-icons/icon-heart-fill.html +10 -0
- package/components/common/ui-icons/icon-heart.html +10 -0
- package/components/common/ui-icons/icon-home.html +10 -0
- package/components/common/ui-icons/icon-link.html +10 -0
- package/components/common/ui-icons/icon-list-bullet.html +10 -0
- package/components/common/ui-icons/icon-location.html +11 -0
- package/components/common/ui-icons/icon-lock.html +10 -0
- package/components/common/ui-icons/icon-magnifying-glass.html +10 -0
- package/components/common/ui-icons/icon-map.html +10 -0
- package/components/common/ui-icons/icon-menu-hamburger.html +12 -0
- package/components/common/ui-icons/icon-mic.html +10 -0
- package/components/common/ui-icons/icon-minus.html +10 -0
- package/components/common/ui-icons/icon-notification.html +11 -0
- package/components/common/ui-icons/icon-paperplane.html +10 -0
- package/components/common/ui-icons/icon-pause.html +10 -0
- package/components/common/ui-icons/icon-pencil.html +10 -0
- package/components/common/ui-icons/icon-person-2.html +10 -0
- package/components/common/ui-icons/icon-person-crop-circle.html +10 -0
- package/components/common/ui-icons/icon-phone-fill.html +10 -0
- package/components/common/ui-icons/icon-photo.html +10 -0
- package/components/common/ui-icons/icon-play-fill.html +10 -0
- package/components/common/ui-icons/icon-plus.html +10 -0
- package/components/common/ui-icons/icon-profile.html +11 -0
- package/components/common/ui-icons/icon-qrcode.html +10 -0
- package/components/common/ui-icons/icon-settings.html +11 -0
- package/components/common/ui-icons/icon-share.html +14 -0
- package/components/common/ui-icons/icon-slider-horizontal.html +10 -0
- package/components/common/ui-icons/icon-square-grid.html +10 -0
- package/components/common/ui-icons/icon-star-fill.html +10 -0
- package/components/common/ui-icons/icon-star.html +10 -0
- package/components/common/ui-icons/icon-touchid.html +10 -0
- package/components/common/ui-icons/icon-trash.html +10 -0
- package/components/common/ui-icons/icon-upload.html +10 -0
- package/components/common/ui-icons/icon-video.html +10 -0
- package/components/common/ui-icons/icon-wifi.html +10 -0
- package/components/common/ui-icons/icon-xmark.html +10 -0
- package/components/componentmap-app-mobile.md +210 -0
- package/components/componentmap-web.md +206 -0
- package/components/web/README.md +110 -0
- package/components/web/account/payment-method.html +13 -0
- package/components/web/account/profile-card.html +18 -0
- package/components/web/account/subscription-card.html +21 -0
- package/components/web/badges/badge-set.html +14 -0
- package/components/web/buttons/button-danger.html +10 -0
- package/components/web/buttons/button-ghost.html +10 -0
- package/components/web/buttons/button-group.html +12 -0
- package/components/web/buttons/button-icon.html +10 -0
- package/components/web/buttons/button-primary.html +11 -0
- package/components/web/buttons/button-secondary.html +10 -0
- package/components/web/cards/card-basic.html +11 -0
- package/components/web/cards/card-feature.html +12 -0
- package/components/web/cards/card-image.html +16 -0
- package/components/web/cards/card-pricing.html +21 -0
- package/components/web/cards/card-stat.html +15 -0
- package/components/web/cards/card-testimonial.html +21 -0
- package/components/web/cart/cart-page.html +30 -0
- package/components/web/cart/checkout-form.html +27 -0
- package/components/web/cart/order-confirmation.html +24 -0
- package/components/web/charts/chart-area.html +25 -0
- package/components/web/charts/chart-bar.html +19 -0
- package/components/web/charts/chart-donut.html +27 -0
- package/components/web/content/author-card.html +15 -0
- package/components/web/content/blog-card-horizontal.html +16 -0
- package/components/web/cta/cta-centered.html +15 -0
- package/components/web/cta/cta-newsletter.html +16 -0
- package/components/web/cta/cta-with-image.html +17 -0
- package/components/web/data-display/accordion.html +45 -0
- package/components/web/data-display/grid-view.html +21 -0
- package/components/web/data-display/list-view.html +27 -0
- package/components/web/data-display/progress-steps.html +39 -0
- package/components/web/data-display/rating-stars.html +38 -0
- package/components/web/data-display/stat-card-compact.html +32 -0
- package/components/web/data-display/stat-card-large.html +34 -0
- package/components/web/data-display/table-selectable.html +127 -0
- package/components/web/data-display/table-sortable.html +120 -0
- package/components/web/data-display/tag-group.html +25 -0
- package/components/web/data-display/timeline-horizontal.html +55 -0
- package/components/web/data-display/timeline-vertical.html +76 -0
- package/components/web/data-display/tree-view.html +86 -0
- package/components/web/dividers/divider-text.html +8 -0
- package/components/web/ecommerce/coupon-input.html +11 -0
- package/components/web/ecommerce/product-card-grid.html +29 -0
- package/components/web/ecommerce/product-card-list.html +32 -0
- package/components/web/features/features-alternating.html +35 -0
- package/components/web/features/features-bento.html +43 -0
- package/components/web/features/features-icon-list.html +44 -0
- package/components/web/feedback/alert-banner.html +12 -0
- package/components/web/feedback/empty-state-error.html +18 -0
- package/components/web/feedback/empty-state-no-data.html +18 -0
- package/components/web/feedback/empty-state-no-search.html +15 -0
- package/components/web/feedback/empty-state.html +16 -0
- package/components/web/feedback/loading-spinner.html +14 -0
- package/components/web/feedback/progress-bar.html +11 -0
- package/components/web/feedback/skeleton-card.html +17 -0
- package/components/web/feedback/skeleton-list.html +45 -0
- package/components/web/feedback/skeleton.html +16 -0
- package/components/web/feedback/toast-error.html +12 -0
- package/components/web/feedback/toast-info.html +12 -0
- package/components/web/feedback/toast-success.html +12 -0
- package/components/web/feedback/tooltip.html +8 -0
- package/components/web/forms/date-picker.html +67 -0
- package/components/web/forms/file-upload.html +16 -0
- package/components/web/forms/form-contact.html +35 -0
- package/components/web/forms/form-login.html +29 -0
- package/components/web/forms/form-search-filters.html +57 -0
- package/components/web/forms/form-signup.html +35 -0
- package/components/web/heroes/hero-gradient.html +20 -0
- package/components/web/heroes/hero-image-bg.html +21 -0
- package/components/web/heroes/hero-video.html +17 -0
- package/components/web/inputs/checkbox.html +11 -0
- package/components/web/inputs/date-input.html +15 -0
- package/components/web/inputs/file-upload.html +12 -0
- package/components/web/inputs/radio-group.html +15 -0
- package/components/web/inputs/search-command.html +12 -0
- package/components/web/inputs/select.html +14 -0
- package/components/web/inputs/tag-input.html +15 -0
- package/components/web/inputs/text-input.html +11 -0
- package/components/web/inputs/textarea.html +11 -0
- package/components/web/inputs/toggle.html +11 -0
- package/components/web/job/candidate-profile.html +47 -0
- package/components/web/job/job-listing.html +44 -0
- package/components/web/job/resume-section.html +41 -0
- package/components/web/job/salary-range.html +19 -0
- package/components/web/layout/cta-banner.html +15 -0
- package/components/web/layout/features-grid.html +31 -0
- package/components/web/layout/hero-centered.html +19 -0
- package/components/web/layout/hero-split.html +21 -0
- package/components/web/layout/pricing-section.html +37 -0
- package/components/web/layout/stats-row.html +13 -0
- package/components/web/logos/logo-grid.html +20 -0
- package/components/web/logos/logo-ticker.html +19 -0
- package/components/web/marketing/cta-simple.html +18 -0
- package/components/web/marketing/cta-split.html +20 -0
- package/components/web/marketing/faq-accordion.html +55 -0
- package/components/web/marketing/feature-centered.html +35 -0
- package/components/web/marketing/feature-grid-2col.html +58 -0
- package/components/web/marketing/feature-grid-3col.html +44 -0
- package/components/web/marketing/footer-complex.html +86 -0
- package/components/web/marketing/footer-simple.html +59 -0
- package/components/web/marketing/hero-centered.html +44 -0
- package/components/web/marketing/hero-split-left.html +41 -0
- package/components/web/marketing/hero-split-right.html +35 -0
- package/components/web/marketing/logo-cloud.html +18 -0
- package/components/web/marketing/newsletter-signup.html +25 -0
- package/components/web/marketing/pricing-3tier.html +72 -0
- package/components/web/marketing/pricing-toggle.html +85 -0
- package/components/web/marketing/social-proof-bar.html +32 -0
- package/components/web/marketing/stats-row.html +45 -0
- package/components/web/marketing/team-grid.html +65 -0
- package/components/web/marketing/testimonial-carousel.html +45 -0
- package/components/web/marketing/testimonial-grid.html +75 -0
- package/components/web/media/blog-post-card.html +24 -0
- package/components/web/media/comment-single.html +26 -0
- package/components/web/media/image-gallery-grid.html +18 -0
- package/components/web/media/rich-text-block.html +20 -0
- package/components/web/media/testimonial-quote.html +20 -0
- package/components/web/media/video-player.html +44 -0
- package/components/web/menus/dropdown-menu.html +14 -0
- package/components/web/metrics/kpi-row.html +13 -0
- package/components/web/modals/modal-basic.html +21 -0
- package/components/web/modals/modal-form.html +22 -0
- package/components/web/navbars/breadcrumb.html +14 -0
- package/components/web/navbars/footer.html +35 -0
- package/components/web/navbars/sidebar-dark.html +21 -0
- package/components/web/navbars/sidebar.html +23 -0
- package/components/web/navbars/topnav-search.html +25 -0
- package/components/web/navbars/topnav.html +20 -0
- package/components/web/navigation/mega-menu.html +92 -0
- package/components/web/navigation/pagination.html +43 -0
- package/components/web/navigation/sidebar-collapsed.html +93 -0
- package/components/web/navigation/sidebar-expanded.html +121 -0
- package/components/web/navigation/stepper-horizontal.html +51 -0
- package/components/web/patterns/accordion.html +19 -0
- package/components/web/patterns/activity-feed.html +25 -0
- package/components/web/patterns/auth-login.html +24 -0
- package/components/web/patterns/avatar-group.html +13 -0
- package/components/web/patterns/calendar-month.html +44 -0
- package/components/web/patterns/category-pills.html +15 -0
- package/components/web/patterns/chat-web.html +24 -0
- package/components/web/patterns/code-editor.html +34 -0
- package/components/web/patterns/comparison-table.html +39 -0
- package/components/web/patterns/cookie-banner.html +14 -0
- package/components/web/patterns/error-page.html +16 -0
- package/components/web/patterns/file-list.html +24 -0
- package/components/web/patterns/filter-toolbar.html +14 -0
- package/components/web/patterns/kanban-column.html +27 -0
- package/components/web/patterns/notification-list.html +26 -0
- package/components/web/patterns/order-tracker.html +16 -0
- package/components/web/patterns/pagination.html +16 -0
- package/components/web/patterns/product-card-web.html +23 -0
- package/components/web/patterns/settings-form.html +24 -0
- package/components/web/patterns/stepper.html +16 -0
- package/components/web/patterns/user-table-row.html +15 -0
- package/components/web/patterns/video-player.html +26 -0
- package/components/web/presentation/slide-content.html +17 -0
- package/components/web/presentation/slide-title.html +13 -0
- package/components/web/pricing/pricing-table.html +51 -0
- package/components/web/pricing/pricing-toggle.html +62 -0
- package/components/web/print/business-card.html +20 -0
- package/components/web/products/product-card-horizontal.html +19 -0
- package/components/web/products/product-detail.html +39 -0
- package/components/web/products/product-grid.html +13 -0
- package/components/web/products/review-section.html +29 -0
- package/components/web/promotions/coupon-card.html +17 -0
- package/components/web/promotions/promo-banner.html +24 -0
- package/components/web/real-estate/agent-contact.html +32 -0
- package/components/web/real-estate/listing-detail-hero.html +44 -0
- package/components/web/real-estate/price-range-slider.html +20 -0
- package/components/web/real-estate/property-card.html +38 -0
- package/components/web/real-estate/property-map-pin.html +19 -0
- package/components/web/real-estate/virtual-tour-button.html +17 -0
- package/components/web/saas/api-key-row.html +31 -0
- package/components/web/saas/audit-log-row.html +21 -0
- package/components/web/saas/billing-plan.html +50 -0
- package/components/web/saas/kpi-row.html +61 -0
- package/components/web/saas/team-member-row.html +30 -0
- package/components/web/saas/webhook-config.html +44 -0
- package/components/web/screenshots/app-screenshot.html +32 -0
- package/components/web/screenshots/screenshot-gallery.html +45 -0
- package/components/web/social/comment-thread.html +75 -0
- package/components/web/social-media/instagram-post.html +17 -0
- package/components/web/social-proof/logo-cloud.html +18 -0
- package/components/web/social-proof/testimonial-carousel.html +30 -0
- package/components/web/surfaces/slide-over.html +20 -0
- package/components/web/tables/data-table.html +41 -0
- package/components/web/tables/table-simple.html +13 -0
- package/components/web/tabs/tabs-pills.html +12 -0
- package/components/web/tabs/tabs-underline.html +13 -0
- package/components/web/toggles/toggle-dark-mode.html +19 -0
- package/components/web/toggles/toggle-group.html +38 -0
- package/components/web/toggles/toggle-switch.html +14 -0
- package/components/web/widgets/api-key-row.html +16 -0
- package/components/web/widgets/billing-card.html +14 -0
- package/components/web/widgets/changelog-item.html +15 -0
- package/components/web/widgets/integration-card.html +15 -0
- package/components/web/widgets/onboarding-checklist.html +18 -0
- package/components/web/widgets/pricing-toggle.html +13 -0
- package/components/web/widgets/team-member-row.html +13 -0
- package/components/web/widgets/usage-meter.html +12 -0
- package/package.json +46 -0
- package/skills/README.md +35 -0
- package/skills/contribute.md +267 -0
- package/skills/design.md +470 -0
- package/skills/flutter.md +156 -0
- package/skills/nextjs.md +143 -0
- package/skills/react-native.md +258 -0
- package/skills/react.md +171 -0
- package/skills/svelte.md +95 -0
- package/skills/swiftui.md +171 -0
- package/skills/tailwind.md +108 -0
- package/skills/vue.md +111 -0
- package/src/commands/add.js +51 -0
- package/src/commands/convert.js +120 -0
- package/src/commands/design.js +89 -0
- package/src/commands/init.js +136 -0
- package/src/commands/list.js +52 -0
- package/src/commands/search.js +40 -0
- package/src/lib/index.js +100 -0
package/skills/design.md
ADDED
|
@@ -0,0 +1,470 @@
|
|
|
1
|
+
# Skill: Design (HTML — single file output)
|
|
2
|
+
|
|
3
|
+
> **For:** Claude, GPT-4o, Gemini, Cursor, Copilot, or any AI agent.
|
|
4
|
+
> **Goal:** Read this kit → design a single-file HTML page or mobile screen.
|
|
5
|
+
> **Output:** One self-contained `.html` file. No external dependencies.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Your role
|
|
10
|
+
|
|
11
|
+
You are a **UI/UX designer and front-end developer**.
|
|
12
|
+
When given a design request (e.g. "design a finance app home screen"), you will:
|
|
13
|
+
|
|
14
|
+
1. Read the token system below
|
|
15
|
+
2. Pick the correct platform (mobile or web)
|
|
16
|
+
3. Compose components from the component library
|
|
17
|
+
4. Output a **single, complete, self-contained HTML file**
|
|
18
|
+
|
|
19
|
+
The output must open in any browser and look like a finished, pixel-perfect design.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Step 1 — Choose platform & canvas size
|
|
24
|
+
|
|
25
|
+
| Platform | Viewport width | Typical height | Use for |
|
|
26
|
+
|----------|---------------|----------------|---------|
|
|
27
|
+
| **Mobile** | `390px` | `844px` (scroll ok) | App screens, iOS/Android |
|
|
28
|
+
| **Tablet** | `768px` | `1024px` | iPad, large mobile |
|
|
29
|
+
| **Web / Desktop** | `1440px` | `900px` (scroll ok) | Landing pages, dashboards, web apps |
|
|
30
|
+
|
|
31
|
+
Set `<meta name="viewport" content="width=390">` for mobile.
|
|
32
|
+
Set `<meta name="viewport" content="width=1440">` for desktop.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Step 2 — Load the token kit
|
|
37
|
+
|
|
38
|
+
Always start your `<style>` block with these CSS variables. Adjust values to match the design mood.
|
|
39
|
+
|
|
40
|
+
```css
|
|
41
|
+
:root {
|
|
42
|
+
/* ── Brand colors ── */
|
|
43
|
+
--kit-primary: #6366F1; /* main brand — change this first */
|
|
44
|
+
--kit-primary-text: #FFFFFF; /* text on primary bg */
|
|
45
|
+
--kit-secondary: #64748B;
|
|
46
|
+
--kit-accent: #F59E0B;
|
|
47
|
+
|
|
48
|
+
/* ── Surface hierarchy ── */
|
|
49
|
+
--kit-bg: #FFFFFF; /* page background */
|
|
50
|
+
--kit-surface: #F8FAFC; /* card, panel */
|
|
51
|
+
--kit-surface-2: #F1F5F9; /* nested card, input bg */
|
|
52
|
+
--kit-surface-3: #E2E8F0; /* deeply nested, divider bg */
|
|
53
|
+
|
|
54
|
+
/* ── Text hierarchy ── */
|
|
55
|
+
--kit-text: #0F172A; /* primary text */
|
|
56
|
+
--kit-text-2: #475569; /* secondary, label */
|
|
57
|
+
--kit-text-3: #94A3B8; /* caption, placeholder */
|
|
58
|
+
--kit-text-inverse: #FFFFFF; /* text on dark bg */
|
|
59
|
+
|
|
60
|
+
/* ── Borders ── */
|
|
61
|
+
--kit-border: #E2E8F0;
|
|
62
|
+
--kit-border-strong: #CBD5E1;
|
|
63
|
+
|
|
64
|
+
/* ── Status colors ── */
|
|
65
|
+
--kit-success: #22C55E;
|
|
66
|
+
--kit-success-bg: #F0FDF4;
|
|
67
|
+
--kit-error: #EF4444;
|
|
68
|
+
--kit-error-bg: #FEF2F2;
|
|
69
|
+
--kit-warning: #F59E0B;
|
|
70
|
+
--kit-warning-bg: #FFFBEB;
|
|
71
|
+
--kit-info: #3B82F6;
|
|
72
|
+
--kit-info-bg: #EFF6FF;
|
|
73
|
+
|
|
74
|
+
/* ── Typography ── */
|
|
75
|
+
--kit-font: 'Inter', system-ui, -apple-system, sans-serif;
|
|
76
|
+
--kit-text-xs: 11px;
|
|
77
|
+
--kit-text-sm: 13px;
|
|
78
|
+
--kit-text-md: 15px; /* default body */
|
|
79
|
+
--kit-text-lg: 17px;
|
|
80
|
+
--kit-text-xl: 20px;
|
|
81
|
+
--kit-text-2xl: 24px;
|
|
82
|
+
--kit-text-3xl: 32px;
|
|
83
|
+
--kit-text-4xl: 48px;
|
|
84
|
+
|
|
85
|
+
/* ── Spacing ── */
|
|
86
|
+
--kit-space-1: 4px;
|
|
87
|
+
--kit-space-2: 8px;
|
|
88
|
+
--kit-space-3: 12px;
|
|
89
|
+
--kit-space-4: 16px; /* default padding */
|
|
90
|
+
--kit-space-5: 20px;
|
|
91
|
+
--kit-space-6: 24px;
|
|
92
|
+
--kit-space-8: 32px;
|
|
93
|
+
--kit-space-10: 40px;
|
|
94
|
+
--kit-space-12: 48px;
|
|
95
|
+
--kit-space-16: 80px;
|
|
96
|
+
|
|
97
|
+
/* ── Radii ── */
|
|
98
|
+
--kit-radius-sm: 6px;
|
|
99
|
+
--kit-radius: 10px; /* default */
|
|
100
|
+
--kit-radius-lg: 14px;
|
|
101
|
+
--kit-radius-xl: 20px;
|
|
102
|
+
--kit-radius-full: 9999px;
|
|
103
|
+
|
|
104
|
+
/* ── Shadows ── */
|
|
105
|
+
--kit-shadow-sm: 0 1px 3px rgba(0,0,0,0.08);
|
|
106
|
+
--kit-shadow: 0 4px 12px rgba(0,0,0,0.10);
|
|
107
|
+
--kit-shadow-lg: 0 8px 32px rgba(0,0,0,0.12);
|
|
108
|
+
--kit-shadow-xl: 0 20px 60px rgba(0,0,0,0.15);
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Dark mode token override
|
|
113
|
+
|
|
114
|
+
```css
|
|
115
|
+
/* Add inside <style> after :root */
|
|
116
|
+
@media (prefers-color-scheme: dark) {
|
|
117
|
+
:root {
|
|
118
|
+
--kit-bg: #0F172A;
|
|
119
|
+
--kit-surface: #1E293B;
|
|
120
|
+
--kit-surface-2: #334155;
|
|
121
|
+
--kit-surface-3: #475569;
|
|
122
|
+
--kit-text: #F1F5F9;
|
|
123
|
+
--kit-text-2: #94A3B8;
|
|
124
|
+
--kit-text-3: #64748B;
|
|
125
|
+
--kit-text-inverse: #0F172A;
|
|
126
|
+
--kit-border: #334155;
|
|
127
|
+
--kit-border-strong: #475569;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Step 3 — Compose your design
|
|
135
|
+
|
|
136
|
+
Use HTML components from this kit. All components use inline styles with `var(--kit-*)`.
|
|
137
|
+
|
|
138
|
+
### Available components (read from `components/` folder)
|
|
139
|
+
|
|
140
|
+
#### Mobile (`components/app-mobile/`)
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
navbars/ top-app-bar-small, top-app-bar-center, top-app-bar-large
|
|
144
|
+
bottom-nav-3, bottom-nav-4, bottom-nav-5, bottom-app-bar
|
|
145
|
+
buttons/ button-filled, button-tonal, button-outlined, button-text
|
|
146
|
+
button-icon, button-fab, button-fab-small, button-fab-extended
|
|
147
|
+
button-segmented
|
|
148
|
+
cards/ card-elevated, card-filled, card-outlined
|
|
149
|
+
inputs/ text-field-filled, text-field-outlined, search-bar
|
|
150
|
+
date-picker, time-picker, otp-input, password-field
|
|
151
|
+
file-upload, textarea, select
|
|
152
|
+
lists/ list-item-1line, list-item-2line, list-item-3line
|
|
153
|
+
chips/ chip-assist, chip-filter, chip-input, chip-suggestion
|
|
154
|
+
feedback/ snackbar, progress-linear, progress-circular, skeleton, banner, tooltip
|
|
155
|
+
tabs/ tabs-primary, tabs-secondary
|
|
156
|
+
toggles/ switch, checkbox, radio
|
|
157
|
+
surfaces/ bottom-sheet, drawer, navigation-rail
|
|
158
|
+
badges/ badge-dot, badge-count
|
|
159
|
+
native/ ios-status-bar, ios-nav-bar, ios-tab-bar, ios-home-indicator
|
|
160
|
+
android-status-bar, android-gesture-nav
|
|
161
|
+
patterns/ product-card, order-tracker, story-row, chat-bubble, contact-card
|
|
162
|
+
map-preview, transaction-item, health-metric, workout-card, …
|
|
163
|
+
charts/ bar-chart, line-chart, donut-chart, progress-ring, sparkline, stat-card
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
#### Web (`components/web/`)
|
|
167
|
+
|
|
168
|
+
```
|
|
169
|
+
navbars/ topnav, topnav-search, sidebar, sidebar-dark, breadcrumb, footer
|
|
170
|
+
heroes/ hero-gradient, hero-image-bg, hero-video
|
|
171
|
+
buttons/ button-primary, button-secondary, button-danger, button-ghost, button-icon
|
|
172
|
+
cards/ card-basic, card-image, card-stat, card-pricing, card-testimonial
|
|
173
|
+
inputs/ text-input, textarea, select, search-command, date-input
|
|
174
|
+
file-upload, tag-input, checkbox, radio-group, toggle
|
|
175
|
+
features/ features-icon-list, features-alternating, features-bento
|
|
176
|
+
cta/ cta-centered, cta-split-image, cta-newsletter
|
|
177
|
+
pricing/ pricing-comparison, pricing-toggle
|
|
178
|
+
social-proof/ logo-cloud, testimonials
|
|
179
|
+
layout/ hero-centered, hero-split, pricing-section, stats-row
|
|
180
|
+
tables/ table-simple, data-table
|
|
181
|
+
modals/ modal-basic, modal-form
|
|
182
|
+
feedback/ alert-banner, empty-state, loading-spinner, skeleton, toast, tooltip
|
|
183
|
+
tabs/ tabs-pills, tabs-underline
|
|
184
|
+
charts/ area-chart, bar-chart, donut-chart
|
|
185
|
+
widgets/ kpi-row, api-keys, billing, changelog, onboarding-checklist
|
|
186
|
+
patterns/ auth-login, kanban-board, chat-interface, calendar, settings-page
|
|
187
|
+
comparison-table, code-editor, activity-feed, filter-toolbar, …
|
|
188
|
+
products/ product-card, product-detail, product-grid, review-section
|
|
189
|
+
cart/ cart-page, checkout, order-confirmation
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Step 4 — Output format (single-file HTML)
|
|
195
|
+
|
|
196
|
+
```html
|
|
197
|
+
<!DOCTYPE html>
|
|
198
|
+
<html lang="en">
|
|
199
|
+
<head>
|
|
200
|
+
<meta charset="UTF-8">
|
|
201
|
+
<meta name="viewport" content="width=390, initial-scale=1.0"><!-- 390 mobile, 1440 web -->
|
|
202
|
+
<title>Screen / Page Name</title>
|
|
203
|
+
<style>
|
|
204
|
+
/* ── 1. Kit tokens ───────────────────────────────────── */
|
|
205
|
+
:root {
|
|
206
|
+
--kit-primary: #6366F1;
|
|
207
|
+
--kit-primary-text: #FFFFFF;
|
|
208
|
+
/* ... all tokens ... */
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/* ── 2. Reset ────────────────────────────────────────── */
|
|
212
|
+
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
|
213
|
+
body {
|
|
214
|
+
font-family: var(--kit-font, Inter, system-ui, sans-serif);
|
|
215
|
+
background: var(--kit-bg, #FFFFFF);
|
|
216
|
+
color: var(--kit-text, #0F172A);
|
|
217
|
+
-webkit-font-smoothing: antialiased;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/* ── 3. Screen wrapper ───────────────────────────────── */
|
|
221
|
+
/* MOBILE: */
|
|
222
|
+
.screen {
|
|
223
|
+
width: 390px;
|
|
224
|
+
min-height: 844px;
|
|
225
|
+
margin: 0 auto;
|
|
226
|
+
overflow-x: hidden;
|
|
227
|
+
position: relative;
|
|
228
|
+
background: var(--kit-bg, #FFFFFF);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/* DESKTOP: */
|
|
232
|
+
/* .screen { width: 100%; max-width: 1440px; margin: 0 auto; min-height: 100vh; } */
|
|
233
|
+
</style>
|
|
234
|
+
</head>
|
|
235
|
+
<body>
|
|
236
|
+
<div class="screen">
|
|
237
|
+
|
|
238
|
+
<!-- ALL COMPONENT HTML HERE — inline styles only -->
|
|
239
|
+
|
|
240
|
+
</div>
|
|
241
|
+
</body>
|
|
242
|
+
</html>
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## Rules for AI-generated HTML
|
|
248
|
+
|
|
249
|
+
### MUST follow
|
|
250
|
+
|
|
251
|
+
1. **Inline styles only** — no Tailwind, no Bootstrap, no class-based CSS frameworks
|
|
252
|
+
2. **All colors via `var(--kit-*)`** — never hardcode `#hex` or `rgb()` inside component HTML
|
|
253
|
+
3. **Semantic HTML** — use `<button>`, `<nav>`, `<header>`, `<a>`, `<ul>/<li>`, `<input>` correctly
|
|
254
|
+
4. **No JavaScript** — output is a static design preview, not an interactive app
|
|
255
|
+
5. **Placeholder images** — use `https://placehold.jp/{W}x{H}.png` for any images needed
|
|
256
|
+
6. **Single file** — everything in one `.html` file, zero external dependencies
|
|
257
|
+
7. **data-component** attribute on each component root element (for Pixeliro editor)
|
|
258
|
+
|
|
259
|
+
### Semantic HTML examples
|
|
260
|
+
|
|
261
|
+
```html
|
|
262
|
+
<!-- ❌ WRONG — div-soup -->
|
|
263
|
+
<div style="cursor:pointer; background:#6366F1; color:white;">Click me</div>
|
|
264
|
+
|
|
265
|
+
<!-- ✅ CORRECT — semantic -->
|
|
266
|
+
<button type="button" style="background:var(--kit-primary,#6366F1); color:var(--kit-primary-text,#FFF); ...">Click me</button>
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
```html
|
|
270
|
+
<!-- ❌ WRONG -->
|
|
271
|
+
<div style="font-size:24px; font-weight:700;">Dashboard</div>
|
|
272
|
+
|
|
273
|
+
<!-- ✅ CORRECT -->
|
|
274
|
+
<h1 style="font-size:var(--kit-text-2xl,24px); font-weight:700; color:var(--kit-text,#0F172A);">Dashboard</h1>
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### Layout patterns
|
|
278
|
+
|
|
279
|
+
#### Mobile screen layout
|
|
280
|
+
```html
|
|
281
|
+
<!-- Fixed top bar -->
|
|
282
|
+
<header data-component="Top App Bar" style="
|
|
283
|
+
position: sticky; top: 0; z-index: 100;
|
|
284
|
+
height: 56px; padding: 0 16px;
|
|
285
|
+
display: flex; align-items: center;
|
|
286
|
+
background: var(--kit-surface,#F8FAFC);
|
|
287
|
+
border-bottom: 1px solid var(--kit-border,#E2E8F0);
|
|
288
|
+
">
|
|
289
|
+
|
|
290
|
+
<!-- Scrollable content -->
|
|
291
|
+
<main style="
|
|
292
|
+
flex: 1; overflow-y: auto;
|
|
293
|
+
padding: 16px;
|
|
294
|
+
padding-bottom: 83px; /* tab bar height */
|
|
295
|
+
">
|
|
296
|
+
|
|
297
|
+
<!-- Fixed bottom tab bar -->
|
|
298
|
+
<nav data-component="Bottom Navigation" style="
|
|
299
|
+
position: fixed; bottom: 0; left: 0; right: 0;
|
|
300
|
+
height: 83px; /* 49px tabs + 34px safe area */
|
|
301
|
+
background: var(--kit-surface,#F8FAFC);
|
|
302
|
+
border-top: 1px solid var(--kit-border,#E2E8F0);
|
|
303
|
+
display: flex; align-items: center; justify-content: space-around;
|
|
304
|
+
padding-bottom: 34px; /* iOS home indicator safe area */
|
|
305
|
+
">
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
#### Web dashboard layout
|
|
309
|
+
```html
|
|
310
|
+
<div style="display:flex; height:100vh; background:var(--kit-bg,#FFF);">
|
|
311
|
+
<!-- Sidebar -->
|
|
312
|
+
<aside style="width:240px; flex-shrink:0; background:var(--kit-surface,#F8FAFC); border-right:1px solid var(--kit-border,#E2E8F0);">
|
|
313
|
+
...
|
|
314
|
+
</aside>
|
|
315
|
+
<!-- Main -->
|
|
316
|
+
<main style="flex:1; overflow-y:auto; padding:32px;">
|
|
317
|
+
...
|
|
318
|
+
</main>
|
|
319
|
+
</div>
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
## Token presets for different design moods
|
|
325
|
+
|
|
326
|
+
### Finance / Banking (dark, professional)
|
|
327
|
+
```css
|
|
328
|
+
--kit-primary: #6366F1; --kit-bg: #0A0E1A; --kit-surface: #141926;
|
|
329
|
+
--kit-surface-2: #1E2538; --kit-text: #F1F5F9; --kit-text-2: #94A3B8;
|
|
330
|
+
--kit-border: #1E2538; --kit-font: 'Inter', sans-serif;
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
### Health / Wellness (soft, calming)
|
|
334
|
+
```css
|
|
335
|
+
--kit-primary: #10B981; --kit-bg: #F0FDF4; --kit-surface: #FFFFFF;
|
|
336
|
+
--kit-text: #064E3B; --kit-text-2: #6EE7B7; --kit-accent: #34D399;
|
|
337
|
+
--kit-radius: 16px; --kit-font: 'Inter', sans-serif;
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
### E-commerce (energetic, orange)
|
|
341
|
+
```css
|
|
342
|
+
--kit-primary: #F97316; --kit-bg: #FFFFFF; --kit-surface: #FFF7ED;
|
|
343
|
+
--kit-text: #1C1917; --kit-accent: #EAB308; --kit-radius: 8px;
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
### SaaS / Productivity (clean, indigo)
|
|
347
|
+
```css
|
|
348
|
+
--kit-primary: #6366F1; --kit-bg: #FFFFFF; --kit-surface: #F8FAFC;
|
|
349
|
+
--kit-text: #0F172A; --kit-radius: 8px; --kit-font: 'Inter', sans-serif;
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
### Social / Dating (vibrant, pink)
|
|
353
|
+
```css
|
|
354
|
+
--kit-primary: #EC4899; --kit-secondary: #8B5CF6; --kit-accent: #F59E0B;
|
|
355
|
+
--kit-bg: #FFFFFF; --kit-surface: #FDF2F8; --kit-text: #1F2937;
|
|
356
|
+
--kit-radius: 20px; --kit-radius-full: 9999px;
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
### Travel (bold, blue-teal)
|
|
360
|
+
```css
|
|
361
|
+
--kit-primary: #0EA5E9; --kit-secondary: #14B8A6; --kit-accent: #F59E0B;
|
|
362
|
+
--kit-bg: #F0F9FF; --kit-surface: #FFFFFF; --kit-text: #0C4A6E;
|
|
363
|
+
--kit-radius: 12px;
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
### News / Editorial (neutral, classic)
|
|
367
|
+
```css
|
|
368
|
+
--kit-primary: #1D4ED8; --kit-bg: #FFFFFF; --kit-surface: #F9FAFB;
|
|
369
|
+
--kit-text: #111827; --kit-text-2: #6B7280; --kit-font: 'Georgia', serif;
|
|
370
|
+
--kit-radius: 4px; --kit-radius-lg: 8px;
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
---
|
|
374
|
+
|
|
375
|
+
## Component reference — copy-paste patterns
|
|
376
|
+
|
|
377
|
+
### Mobile status bar (iOS)
|
|
378
|
+
```html
|
|
379
|
+
<div data-component="iOS Status Bar" style="
|
|
380
|
+
height: 44px; padding: 14px 16px 0;
|
|
381
|
+
display: flex; justify-content: space-between; align-items: center;
|
|
382
|
+
background: var(--kit-surface, #F8FAFC);
|
|
383
|
+
">
|
|
384
|
+
<span style="font-size:15px; font-weight:600; color:var(--kit-text,#0F172A);">9:41</span>
|
|
385
|
+
<div style="display:flex; gap:6px; align-items:center;">
|
|
386
|
+
<svg width="17" height="12" viewBox="0 0 17 12" fill="none">
|
|
387
|
+
<rect x="0" y="3" width="3" height="9" rx="1" fill="var(--kit-text,#0F172A)"/>
|
|
388
|
+
<rect x="4.5" y="2" width="3" height="10" rx="1" fill="var(--kit-text,#0F172A)"/>
|
|
389
|
+
<rect x="9" y="0" width="3" height="12" rx="1" fill="var(--kit-text,#0F172A)"/>
|
|
390
|
+
<rect x="13.5" y="0" width="3" height="12" rx="1" fill="var(--kit-text,#0F172A)" opacity="0.3"/>
|
|
391
|
+
</svg>
|
|
392
|
+
<svg width="16" height="12" viewBox="0 0 16 12" fill="none">
|
|
393
|
+
<path d="M8 9.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3z" fill="var(--kit-text,#0F172A)"/>
|
|
394
|
+
<path d="M3.5 6.5A6.5 6.5 0 0 1 8 5a6.5 6.5 0 0 1 4.5 1.5" stroke="var(--kit-text,#0F172A)" stroke-width="1.5" stroke-linecap="round" fill="none"/>
|
|
395
|
+
<path d="M1 3.5A10 10 0 0 1 8 1a10 10 0 0 1 7 2.5" stroke="var(--kit-text,#0F172A)" stroke-width="1.5" stroke-linecap="round" fill="none" opacity="0.5"/>
|
|
396
|
+
</svg>
|
|
397
|
+
<svg width="25" height="12" viewBox="0 0 25 12" fill="none">
|
|
398
|
+
<rect x="0.5" y="0.5" width="21" height="11" rx="3.5" stroke="var(--kit-text,#0F172A)" stroke-opacity="0.35"/>
|
|
399
|
+
<rect x="2" y="2" width="16" height="8" rx="2" fill="var(--kit-text,#0F172A)"/>
|
|
400
|
+
<path d="M23 4v4a2 2 0 0 0 0-4z" fill="var(--kit-text,#0F172A)" opacity="0.4"/>
|
|
401
|
+
</svg>
|
|
402
|
+
</div>
|
|
403
|
+
</div>
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
### Gradient hero card
|
|
407
|
+
```html
|
|
408
|
+
<div data-component="Balance Card" style="
|
|
409
|
+
background: linear-gradient(135deg, var(--kit-primary,#6366F1), var(--kit-secondary,#8B5CF6));
|
|
410
|
+
border-radius: var(--kit-radius-xl, 20px);
|
|
411
|
+
padding: 24px;
|
|
412
|
+
color: var(--kit-primary-text, #FFFFFF);
|
|
413
|
+
box-shadow: 0 8px 32px rgba(99,102,241,0.3);
|
|
414
|
+
">
|
|
415
|
+
<div style="font-size:var(--kit-text-sm,13px); opacity:0.8; margin-bottom:8px;">Total Balance</div>
|
|
416
|
+
<div style="font-size:var(--kit-text-4xl,48px); font-weight:700; letter-spacing:-1px;">$12,450</div>
|
|
417
|
+
<div style="font-size:var(--kit-text-sm,13px); opacity:0.7; margin-top:4px;">↑ 12.5% from last month</div>
|
|
418
|
+
</div>
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
### Card
|
|
422
|
+
```html
|
|
423
|
+
<div data-component="Card" style="
|
|
424
|
+
background: var(--kit-surface, #FFFFFF);
|
|
425
|
+
border-radius: var(--kit-radius-lg, 14px);
|
|
426
|
+
padding: var(--kit-space-4, 16px);
|
|
427
|
+
box-shadow: var(--kit-shadow-sm, 0 1px 3px rgba(0,0,0,0.08));
|
|
428
|
+
border: 1px solid var(--kit-border, #E2E8F0);
|
|
429
|
+
">
|
|
430
|
+
</div>
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
### Web nav bar
|
|
434
|
+
```html
|
|
435
|
+
<nav data-component="Top Navigation" style="
|
|
436
|
+
height: 64px; padding: 0 32px;
|
|
437
|
+
display: flex; align-items: center; justify-content: space-between;
|
|
438
|
+
background: var(--kit-surface, #FFFFFF);
|
|
439
|
+
border-bottom: 1px solid var(--kit-border, #E2E8F0);
|
|
440
|
+
position: sticky; top: 0; z-index: 100;
|
|
441
|
+
">
|
|
442
|
+
<a href="#" style="font-size:18px;font-weight:700;color:var(--kit-primary,#6366F1);text-decoration:none;">Logo</a>
|
|
443
|
+
<ul style="display:flex;gap:32px;list-style:none;margin:0;padding:0;">
|
|
444
|
+
<li><a href="#" style="font-size:14px;font-weight:500;color:var(--kit-text,#0F172A);text-decoration:none;">Features</a></li>
|
|
445
|
+
<li><a href="#" style="font-size:14px;font-weight:500;color:var(--kit-text-2,#475569);text-decoration:none;">Pricing</a></li>
|
|
446
|
+
</ul>
|
|
447
|
+
<button type="button" style="height:38px;padding:0 20px;background:var(--kit-primary,#6366F1);color:var(--kit-primary-text,#FFF);border:none;border-radius:var(--kit-radius,10px);font-size:14px;font-weight:500;cursor:pointer;">Get Started</button>
|
|
448
|
+
</nav>
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
---
|
|
452
|
+
|
|
453
|
+
## Output checklist
|
|
454
|
+
|
|
455
|
+
Before responding, verify:
|
|
456
|
+
|
|
457
|
+
- [ ] Single `.html` file, opens in browser without internet
|
|
458
|
+
- [ ] `<!DOCTYPE html>` + proper `<head>` + viewport meta
|
|
459
|
+
- [ ] `:root` with ALL `--kit-*` tokens defined
|
|
460
|
+
- [ ] `box-sizing: border-box` reset
|
|
461
|
+
- [ ] All colors via `var(--kit-*)` — no hardcoded hex in component HTML
|
|
462
|
+
- [ ] Semantic HTML (`<nav>`, `<button>`, `<header>`, `<h1>`-`<h6>`, `<ul>/<li>`, `<a>`)
|
|
463
|
+
- [ ] No JavaScript
|
|
464
|
+
- [ ] Placeholder images via `https://placehold.jp/{W}x{H}.png`
|
|
465
|
+
- [ ] `data-component="..."` on each component root
|
|
466
|
+
- [ ] Looks complete and polished — not just skeleton markup
|
|
467
|
+
|
|
468
|
+
---
|
|
469
|
+
|
|
470
|
+
*Part of [DesignKit](../README.md) · See [skills/](../skills/) for framework conversion skills.*
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# Skill: Flutter (Dart)
|
|
2
|
+
|
|
3
|
+
Build, design, and convert DesignKit UI using Flutter.
|
|
4
|
+
|
|
5
|
+
## Your role
|
|
6
|
+
|
|
7
|
+
You are a Flutter developer with strong UI skills.
|
|
8
|
+
You can:
|
|
9
|
+
- **Design** a screen from scratch using the token system
|
|
10
|
+
- **Convert** a DesignKit HTML file to Flutter Widget tree
|
|
11
|
+
- **Build** a full feature (onboarding flow, tab navigation, list + detail, etc.)
|
|
12
|
+
|
|
13
|
+
Read the request and determine which mode applies.
|
|
14
|
+
|
|
15
|
+
## Token class (`lib/tokens.dart`)
|
|
16
|
+
|
|
17
|
+
```dart
|
|
18
|
+
import 'package:flutter/material.dart';
|
|
19
|
+
|
|
20
|
+
class T {
|
|
21
|
+
// Colors
|
|
22
|
+
static const primary = Color(0xFF6366F1);
|
|
23
|
+
static const primaryText = Color(0xFFFFFFFF);
|
|
24
|
+
static const secondary = Color(0xFF64748B);
|
|
25
|
+
static const accent = Color(0xFFF59E0B);
|
|
26
|
+
static const bg = Color(0xFFFFFFFF);
|
|
27
|
+
static const surface = Color(0xFFF8FAFC);
|
|
28
|
+
static const surface2 = Color(0xFFF1F5F9);
|
|
29
|
+
static const textPrimary = Color(0xFF0F172A);
|
|
30
|
+
static const text2 = Color(0xFF475569);
|
|
31
|
+
static const text3 = Color(0xFF94A3B8);
|
|
32
|
+
static const border = Color(0xFFE2E8F0);
|
|
33
|
+
static const success = Color(0xFF22C55E);
|
|
34
|
+
static const error = Color(0xFFEF4444);
|
|
35
|
+
static const warning = Color(0xFFF59E0B);
|
|
36
|
+
|
|
37
|
+
// Border radius
|
|
38
|
+
static const radiusSm = BorderRadius.all(Radius.circular(6));
|
|
39
|
+
static const radius = BorderRadius.all(Radius.circular(10));
|
|
40
|
+
static const radiusLg = BorderRadius.all(Radius.circular(14));
|
|
41
|
+
static const radiusXl = BorderRadius.all(Radius.circular(20));
|
|
42
|
+
static const radiusFull = BorderRadius.all(Radius.circular(9999));
|
|
43
|
+
|
|
44
|
+
// Spacing
|
|
45
|
+
static const space1 = 4.0;
|
|
46
|
+
static const space2 = 8.0;
|
|
47
|
+
static const space3 = 12.0;
|
|
48
|
+
static const space4 = 16.0;
|
|
49
|
+
static const space5 = 20.0;
|
|
50
|
+
static const space6 = 24.0;
|
|
51
|
+
static const space8 = 32.0;
|
|
52
|
+
|
|
53
|
+
// Shadows
|
|
54
|
+
static const shadowSm = [
|
|
55
|
+
BoxShadow(color: Color(0x14000000), blurRadius: 3, offset: Offset(0, 1))
|
|
56
|
+
];
|
|
57
|
+
static const shadow = [
|
|
58
|
+
BoxShadow(color: Color(0x1A000000), blurRadius: 12, offset: Offset(0, 4))
|
|
59
|
+
];
|
|
60
|
+
static const shadowLg = [
|
|
61
|
+
BoxShadow(color: Color(0x1F000000), blurRadius: 32, offset: Offset(0, 8))
|
|
62
|
+
];
|
|
63
|
+
|
|
64
|
+
// Typography
|
|
65
|
+
static const fontFamily = 'Inter';
|
|
66
|
+
static TextStyle textXs({Color? color, FontWeight? weight}) =>
|
|
67
|
+
TextStyle(fontSize: 11, fontFamily: fontFamily, color: color ?? textPrimary, fontWeight: weight);
|
|
68
|
+
static TextStyle textSm({Color? color, FontWeight? weight}) =>
|
|
69
|
+
TextStyle(fontSize: 13, fontFamily: fontFamily, color: color ?? textPrimary, fontWeight: weight);
|
|
70
|
+
static TextStyle textMd({Color? color, FontWeight? weight}) =>
|
|
71
|
+
TextStyle(fontSize: 15, fontFamily: fontFamily, color: color ?? textPrimary, fontWeight: weight);
|
|
72
|
+
static TextStyle textLg({Color? color, FontWeight? weight}) =>
|
|
73
|
+
TextStyle(fontSize: 17, fontFamily: fontFamily, color: color ?? textPrimary, fontWeight: weight);
|
|
74
|
+
static TextStyle textXl({Color? color, FontWeight? weight}) =>
|
|
75
|
+
TextStyle(fontSize: 20, fontFamily: fontFamily, color: color ?? textPrimary, fontWeight: weight);
|
|
76
|
+
static TextStyle text2xl({Color? color, FontWeight? weight}) =>
|
|
77
|
+
TextStyle(fontSize: 24, fontFamily: fontFamily, color: color ?? textPrimary, fontWeight: weight);
|
|
78
|
+
static TextStyle text3xl({Color? color, FontWeight? weight}) =>
|
|
79
|
+
TextStyle(fontSize: 32, fontFamily: fontFamily, color: color ?? textPrimary, fontWeight: weight);
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## HTML → Flutter mapping
|
|
84
|
+
|
|
85
|
+
| HTML | Flutter |
|
|
86
|
+
|------|---------|
|
|
87
|
+
| `<div style="display:flex">` | `Row()` |
|
|
88
|
+
| `<div style="display:flex; flex-direction:column">` | `Column()` |
|
|
89
|
+
| `<div style="position:relative">` | `Stack()` |
|
|
90
|
+
| `<div style="overflow-y:auto">` | `SingleChildScrollView()` or `ListView()` |
|
|
91
|
+
| `<div style="background:X; border-radius:Y; padding:Z">` | `Container(decoration: BoxDecoration(...), padding: ...)` |
|
|
92
|
+
| `<button>` | `ElevatedButton()` or `GestureDetector()` |
|
|
93
|
+
| `<input>` | `TextField()` |
|
|
94
|
+
| `<img>` | `Image.network()` or `Container(color: Colors.grey[200])` |
|
|
95
|
+
| `<span>` / `<p>` / `<h1>` | `Text()` |
|
|
96
|
+
| `gap: 8px` in flex | `SizedBox(width/height: 8)` or `mainAxisAlignment` |
|
|
97
|
+
|
|
98
|
+
## Output format
|
|
99
|
+
|
|
100
|
+
```dart
|
|
101
|
+
import 'package:flutter/material.dart';
|
|
102
|
+
import '../tokens.dart';
|
|
103
|
+
|
|
104
|
+
class ScreenName extends StatefulWidget {
|
|
105
|
+
const ScreenName({super.key});
|
|
106
|
+
|
|
107
|
+
@override
|
|
108
|
+
State<ScreenName> createState() => _ScreenNameState();
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
class _ScreenNameState extends State<ScreenName> {
|
|
112
|
+
// state here
|
|
113
|
+
|
|
114
|
+
@override
|
|
115
|
+
Widget build(BuildContext context) {
|
|
116
|
+
return Scaffold(
|
|
117
|
+
backgroundColor: T.bg,
|
|
118
|
+
body: SafeArea(
|
|
119
|
+
child: Column(
|
|
120
|
+
children: [
|
|
121
|
+
// widgets here
|
|
122
|
+
],
|
|
123
|
+
),
|
|
124
|
+
),
|
|
125
|
+
);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Rules
|
|
131
|
+
|
|
132
|
+
- **`T.*` tokens** — never hardcode Color(0xFF...)
|
|
133
|
+
- **`const`** constructors everywhere possible
|
|
134
|
+
- **`SafeArea`** wrapping body for iOS notch/bottom bar
|
|
135
|
+
- **`SizedBox`** for spacing — not `Padding` with one side
|
|
136
|
+
- **`StatefulWidget`** only when state is needed, otherwise `StatelessWidget`
|
|
137
|
+
- **Screen width** — use `MediaQuery.of(context).size.width`, not hardcoded 390
|
|
138
|
+
|
|
139
|
+
## Example prompt
|
|
140
|
+
|
|
141
|
+
```
|
|
142
|
+
Read AI-AGENT.md and skills/flutter.md, then:
|
|
143
|
+
|
|
144
|
+
Design and build a finance app home screen in Flutter:
|
|
145
|
+
- iOS status bar area (SafeArea)
|
|
146
|
+
- Top bar: greeting "Good morning, John" + notification bell
|
|
147
|
+
- Balance card: gradient indigo, large balance number, +12.5% label
|
|
148
|
+
- Quick actions: Send, Receive, Pay, More (2x2 or row)
|
|
149
|
+
- "Recent Transactions" header
|
|
150
|
+
- 4 transaction list items (icon, title, date, amount)
|
|
151
|
+
- Bottom navigation: 5 tabs
|
|
152
|
+
|
|
153
|
+
Output:
|
|
154
|
+
- lib/screens/home_screen.dart
|
|
155
|
+
- lib/tokens.dart
|
|
156
|
+
```
|