Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Progress Indicators visually display the completion status of a task or process, helping users understand how much has been completed and how much remains.
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
This project has adopted the Contributor Covenant in version 2.0 as our code of conduct. All contributors must abide by the code of conduct.
We always welcome and encourage contributions and feedback. For more information on how to contribute, the project structure, as well as additional information, see our Contribution Guidelines. By participating in this project, you agree to abide by its Code of Conduct at all times.
Our commitment to open source means that we are enabling all interested parties to contribute and become part of its developer community.
@dubai-design-system/components-js
Web components
@dubai-design-system/components-react
Wrapper package for React (autogenerated)
@dubai-design-system/components-vue
Wrapper package for Vue (autogenerated)
@dubai-design-system/components-angular
Wrapper package for Angular (autogenerated)
To ensure prop types and descriptions are viewable on hover:
Make sure you are using TypeScript for prop declarations in Stencil components.
Enable TypeScript IntelliSense by verifying that TypeScript > Hover is turned on in VS Code settings..
Restart VS Code if prop type declarations are not displaying immediately on hover.
Following these steps will set up your development environment for building, testing, and deploying the project.
The Font used in a digital product represents a piece of the brand’s values and hence we made sure that you would be able to easily apply your font to your application.
By just adding a simple style tag you can ensure that your brand font is reflected across your application in a cohesive manner.
1.0.1
21 Feb 2024
Added descriptions to component props for developers
1.0.0
15 Nov 2024
Design System (Phase 3)
We are excited to announce the launch of a unified design system developed specifically for all government entities. This design system provides a flexible, cohesive framework that ensures consistency across platforms while allowing each entity the customization they need to meet their unique objectives and user needs.
Consistency Across Platforms: By using standardized components, colors, typography, and layouts, we ensure a cohesive look and feel across all government digital interfaces, reinforcing trust and recognition for users.
Customizable and Flexible: The design system is built to be adaptable. Each entity can modify and personalize components as needed, ensuring that the system supports your specific content, users, and objectives without sacrificing overall visual harmony.
Accessibility and Usability: All components in the design system are designed with accessibility standards in mind, ensuring compliance with WCAG guidelines. This makes it easier to create accessible, user-friendly content for all citizens, residents, and tourists.
Efficiency in Development: The design system includes ready-made components and templates, reducing the time and resources required for design and development. This allows teams to focus more on content and functionality rather than creating new designs from scratch.
The design system is available to all entities as a downloadable file and can be accessed in the Downloads section. GitBook includes detailed documentation covering each component's usage, anatomy, and dos and don’ts.
Note: Figma does not currently support automatic library updates to external teams.
For access to the Figma file, please contact us at saleh.lootah@digitaldubai.ae
After downloading the library, you must then upload the .fig file into your team's projects. To do this, open Figma (in-app or browser) and drag the file into the Figma window. Alternatively, you may click on the "Import File" button and select the correct file from your local directory. Once imported, you should publish the library within your team.
Due to the above-noted limitation of Figma, updates to the library must be manually accomplished. Please routinely check this page for future updates to the UI Library. Additionally, we will notify you of any updates to the library.
To update your library, repeat steps 1 & 2 with the latest version of the library. Once the updated version is added to your team, use the swap libraries feature in Figma, which will allow you to replace the old library with the latest one without disconnecting any instances of the library you may have used in your designs.
For DubaiAI design guidelines and the logo, please refer back to the Figma file.
URLs for DubaiAI Chatbot Landing Page:
Entities can use the following URLs to access the DubaiAI chatbot landing page. Each entity should append their unique code at the end of the URL to direct users to their specific landing pages:
English (EN):
https://chat.dubai.ae/?lang=en-US&mode=modal&source= [entity code]
Arabic (AR):
https://chat.dubai.ae/?lang=ar-SA&mode=modal&source= [entity code]
For example, for MBRHE, the URLs would be:
English (EN):
Arabic (AR):
Entities should replace "[entity code]" in the URLs with their specific identifier. If you don't know what your identifier is, please refer back to the Excel sheet attached to ensure users are directed to the appropriate landing page within the DubaiAI chatbot platform.
Happiness Meter Web Widget Integration and Development Guide : A document that outlines and explains the required development activities for departments to integrate with the Happiness Meter on the web.
Happiness Meter .Net Sample Web Guide: Example implementation of the happiness widget on the web using .Net language.
Happiness Meter Java Sample Web Guide: Example implementation of the happiness widget on the web using Java language.
Happiness Web Test Cases Guide: A list of test cases that departments need to execute and share with Digital Dubai Government Establishment to certify the web implementation.
Happiness Meter Inquiry Service Specification Guide: A document describing the “Happiness Index Vote Inquiry” Web Service specification, designed to enable departments to inquire about the votes.
Happiness Meter Mobile App Integration and Development Guide: A document that describes and explains the necessary development activities for departments to integrate with the Happiness Meter on mobile apps.
Happiness Meter iOS Sample App Guide: Example iOS application of happiness widget on Mobile in iOS language.
Happiness Meter Android Sample App Guide: Sample Android application of happiness widget on mobile in Android language.
Happiness Mobile Test Cases Guide: A list of test cases that departments need to execute and share with Digital Dubai Government to certify the implementation on mobile apps.
New Service Centers Request Form Guide: A form to be filled out with the service center details where the Happiness Meter will be implemented.
Happiness Meter iOS Tablet Sample App Guide: Example iOS application of the happiness widget on tablets using iOS language.
Happiness Meter Android Tablet Sample App Guide: Sample Android application of happiness widget on Tablets in Android language.
This is a step-by-step guide to use vanilla web components.
First, import the package script:
Next, add the material-icons package which is the icon package used by DDA:
Start by adding the material-icons package inside the <head>
tag
You should now be able to use DDA components:
Expectation Levels Progress Bar visually represents stages of achievement or quality standards, helping users track their progress toward meeting defined goals.
The Expectation Levels Progress Bar visually represents a user's progression toward specific achievement levels or benchmarks. It provides feedback on current progress, motivating users and guiding them toward completing all steps or reaching all set goals.
Use the Expectation Levels Progress Bar in applications where tracking progress toward specific milestones or goals is important, such as completing onboarding tasks, reaching skill levels, or meeting performance benchmarks. It’s ideal for interfaces that encourage users to reach incremental achievements.
The Expectation Levels Progress Bar displays progress through segmented levels or stages, with each segment representing a specific milestone. As users advance, the bar fills up to show their proximity to the next level or the completion of all stages. This component enhances user engagement by offering a clear visual of goals and progress, motivating users to achieve each level.
Label: Displays the status or expectation level of the progress. In this example, it is labeled as "Met Expectation," indicating the status being represented.
Filled Bar: Shows the portion of the bar that has been completed or that meets the specified expectations. The filled sections indicate achieved progress or met criteria.
Unfilled Bar: Represents the remaining portion of the bar that has not yet been reached or that does not meet the specified expectations. It shows what is left to achieve.
This is a step-by-step guide to use the DDA components in Angular.
Next, add the material-icons package which is the icon package used by DDA:
Start by adding the material-icons package inside the <head>
tag
Import and add the following to your app.module.ts
file
You should now be able to use DDA components inside your app.component.html
file:
Our component library supports Right-to-Left (RTL) layouts, but RTL handling should be implemented on your side as a developer. To enable RTL, you need to set the dir="rtl"
attribute on the <body>
or relevant container element programmatically in your project.
First, install the package
Use clear labels or tooltips to describe each level, helping users understand their progress.
Don’t overcrowd the progress bar with excessive details; keep it simple and easy to read.
Ensure the progress bar has a smooth animation for progress changes to enhance visual feedback.
Don’t update progress abruptly or without visual cues, as this can confuse users.
Use a distinct color or style to highlight completed levels and the current level.
Don’t rely solely on color to indicate progress; add text labels for accessibility.
Core colors are used to support user interface design by calling attention to specific elements, such as buttons, callouts, icons, etc.
You can use the DDS Color Generation Figma Plugin to generate custom color palettes for this design system.
Our component library supports Dark Mode and Light Mode Layouts with Light Mode as the default Option, but the handling should be implemented on your side as a developer. To enable Dark Mode, you need to set the data-theme="dark"
attribute on the <body>
or relevant container element programmatically in your project.
Designers should prioritize clarity and readability by using a balanced type scale to create a clear visual hierarchy. Avoid relying on color for emphasis; instead, use type size and weight to guide u
To present a unified we recommend using the Dubai font for both the Arabic and English languages.
Type Scales create a structured and effective visual hierarchy, guiding users through content with clarity and purpose. Each style serves a unique role in presenting information.
We recommend the Minor Third (1.2) type scale.
Font should switch from Default to Large at >=1024px
Default typescale
The default typecale should be used for screen sizes >1024px
Display
57px (3.563 rem)
120%
0
Regular
H1
48px (3 rem)
120%
0
Regular
H2
40px (2.5 rem
120%
0
Regular
H3
33px (2.063 rem)
120%
0
Regular
H4
28px (1.75 rem)
120%
0
Regular
H5
23px (1.438 rem)
120%
0
Regular
H6
19px (1.188 rem)
120%
0
Medium
Body
16px (1 rem)
120%
0
Regular
Caption
13px (0.812 rem)
120%
0
Regular
Label
11px (0.688 rem)
120%
0
Regular
Large typescale
The large typescale should be used for screen sizes >=1024px
Display
64 px (3.556rem)
120%
0
Regular
H1
54 px (3rem)
120%
0
Regular
H2
45 px (2.5rem)
120%
0
Regular
H3
37 px (2.056rem)
120%
0
Regular
H4
31 px (1.722rem)
120%
0
Regular
H5
26 px (1.444 rem)
120%
0
Regular
H6
22 px (1.222 rem)
120%
0
Medium
Body
18 px (1 rem)
120%
0
Regular
Caption
15 px (0.833 rem)
120%
0
Regular
Label
12 px (0.687 rem)
120%
0
Regular
Designers should emphasize clarity and readability by using a balanced type scale to establish a clear visual hierarchy. Instead of relying on color for emphasis, type size and weight should guide users through the content.
Use distinct headline levels (e.g., H1, H2, H3) with progressively smaller sizes as levels deepen. Consistent spacing between text elements reinforces this hierarchy; for example, ensure that headline-to-body spacing is larger than body-to-caption spacing. For optimal readability, apply bold weights to titles and headlines, while keeping body text and labels lighter for balanced visuals.
Ensure that headings follow a proper hierarchical order: H1 first, then H2, followed by H3, etc. This structure enhances accessibility by assisting screen readers and search engines in understanding the content layout, making navigation logical and efficient. Refer to WCAG recommendation.
For optimal readability and visual consistency, avoid altering line height to maintain proper vertical spacing and alignment. Limit line length to 80 characters or fewer, enhancing readability while allowing for occasional exceptions. Use left alignment or centering as standard practice, reserving right alignment for Arabic text. Adjust font weights strategically to create emphasis and establish a clear content hierarchy. Ensure letter spacing remains consistent across products, with body text spacing and minor increases applied to larger headlines to improve clarity without overcrowding. Refer to WCAG.
Contrast Ratios: Text should have a minimum contrast ratio of 4.5:1 against its background for regular text and 3:1 for large text (over 24px or bold text above 19px).
Accessible Color Choices: Ensure text on colored backgrounds meets appropriate contrast ratios, verified through a contrast checker.
Interactive Elements: Buttons, links, and other interactive elements should meet contrast standards and provide visual feedback on focus and hover states.
The W3C's Web Content Accessibility Guidelines (WCAG) 2.1 include Success Criterion 1.4.12, which focuses on text spacing to enhance readability for users with visual or cognitive disabilities. This criterion ensures that content remains functional and readable when users adjust text spacing. The key requirements are:
Line Height (Line Spacing): At least 1.5 times the font size.
Spacing After Paragraphs: At least 2 times the font size.
Letter Spacing (Tracking): At least 0.12 times the font size.
Word Spacing: At least 0.16 times the font size.
Authors are not required to set these exact spacings but must ensure that their content can adapt to these settings without loss of content or functionality. This adaptability allows users to modify text spacing according to their needs, improving their reading experience.
Responsive Typography: To ensure scalability across different screen sizes, use relative units like rem or em rather than fixed px units for a seamless, adaptive experience.
Mobile Scaling: For smaller screens, use appropriately scaled-down versions of display or headline fonts while maintaining legibility. Avoid reducing body text below 14px for secondary content to ensure readability on mobile devices.
The below is an example of the base tonal palette generated with the DDA blue primary color as the seed color. A seed color is the color provided to the material color generator on which it bases the palette on.
Key colors are the core colors selected from the tonal palette that serve as the foundational hues for an interface.
IMPORTANT NOTE Primary and Secondary colors should follow the entity’s color guidelines to ensure a cohesive and recognizable brand identity across the design.
The main colors are prominently used for key elements like icons, headers, and primary action buttons, representing the core of the brand and its identity. This primary color signifies core interactions, appearing on primary buttons for actions like "Submit" or "Next," encouraging user focus and reinforcing brand presence. Variants of this color are applied to hover, focus, and pressed states to enhance interactive feedback and maintain consistency across the interface.
The complementary color in the primary palette adds flexibility and depth, enhancing visual interest without overshadowing the primary brand elements. It is used for secondary buttons, like "Back" or "Learn More," and serves as an accent for highlights within content. This color also appears in navigation elements, such as tabs, icons, and links, to guide users through supplementary interactions. Supporting the primary colors, the secondary palette offers contrast for backgrounds, secondary buttons, and icons, adding layered sophistication to the interface.
This color provides informational messages or highlights additional details. It is used for info messages, including notification backgrounds and icons with helpful or instructional content. Tooltips and help text also use this color to distinguish them from primary or secondary content, as well as for non-critical icons or informational links.
This color signals errors or critical issues that require user attention. It is used for error messages, including backgrounds or text in error notifications, tooltips, and alert boxes. It indicates invalid input fields with borders or icons and is applied to critical buttons for actions that may result in data loss or deletion, such as “Delete Account”.
This color cautions users about non-critical issues or potential risks. It is used for warning messages, alert backgrounds, and icons. Form warnings use this color to indicate fields requiring attention but are not strictly errors, and it appears in notification badges for cautionary but non-critical alerts.
This color represents positive actions and feedback, used in backgrounds for success messages, like "Action completed successfully." It also highlights valid input in form validation and serves as a status indicator, marking completion statuses or achievement badges.
The surface colors in the palette establish a balanced foundation, providing structure and depth without competing with the primary brand elements. These colors are used for background layers, defining areas such as cards, modals, and section dividers to create a cohesive and organized interface. They subtly support primary and secondary colors by ensuring interactive elements and key content stand out clearly. Applied across different layers, surface colors enhance readability and separation, adding a refined visual hierarchy that contributes to a polished and sophisticated design experience.
The disabled colors in the palette provide subtlety and restraint, ensuring that inactive elements remain visible without drawing attention away from active content. These colors are used for elements like disabled buttons, text fields, and icons, signaling non-interactivity in a clear yet understated manner. By blending seamlessly with primary and secondary colors, disabled tones maintain a consistent visual language while gently fading into the background. Applied across various components, disabled colors enhance usability by distinguishing interactive from non-interactive elements, contributing to a cohesive and refined interface that respects user focus and intention.
Material’s color system provides standard tone values and measurements that can be used to meet accessible contrast ratios.
Material’s tonal system corresponds to Web color contrast standards as follows:
Colors that are at least 40 steps apart in tonal value achieve a contrast ratio of at least 3:1
Colors that are at least 50 steps apart in tonal value achieve a contrast ratio of at least 4.5:1
Colors that are at least 70 steps apart in tonal value achieve a contrast ratio of at least 7:1
To ensure accessibility across tonal palettes, follow specific contrast guidelines to maintain readability and usability.
40-step difference: Use this for elements needing a 3:1 contrast ratio, such as large text and secondary UI elements.
50-step difference: Use this for essential text and interactive elements that need a 4.5:1 contrast ratio.
70-step difference: Reserve this for small or critical text that requires a 7:1 contrast ratio.
50-step difference: Ensure readability for general alerts and feedback.
70-step difference: Use for high-priority messages that need higher visibility.
50-step difference: Necessary for readable text with a 4.5:1 contrast ratio.
40-step difference: Suitable for subtle separations, such as backgrounds and dividers, with a 3:1 contrast ratio.
70-step difference: Use for focus indicators and interactive elements where high contrast is required.
By following these tonal palette guidelines, you create a cohesive and accessible visual experience across UI components and interaction states.
We have chosen to utlize the Material Design 3 Color system. You may read more .
Breakpoints are predefined screen widths that dictate how a responsive layout adapts to different devices. At each breakpoint, CSS rules change to optimize the design for that screen size, ensuring a seamless and user-friendly experience across desktops, tablets, and mobile devices. We have selected the following 5 breakpoints based on the most common screen resolutions:
Small (sm)
640px
Medium (md)
768px
Large (lg)
1024px
Extra Large (xl)
1280px
2 Extra Large (2xl)
1536px
Define container widths based on each breakpoint to keep content visually balanced:
Small (sm): 100% width with minimum 8px padding.
Medium (md): Max width 720px.
Large (lg): Max width 960px.
Extra Large (xl): Max width 1140px.
2XL (2xl): Max width 1280px.
Gutter Width: 16px between columns, ensuring consistent spacing.
Outer Margins: 112px on both left and right edges for a contained look on desktop screens.
Alignment and Balance: Ensure content aligns with columns, maintaining balance and structure. Adjust columns if needed to keep gutters and margins consistent.
Spacing is a crucial tool for enhancing clarity and usability in design. GWU follows a structured approach:
Up to the base font size (1rem
), spacing increases in 2px
increments.
Beyond 1rem
, spacing increments increase by 4px
up to a maximum of 48px
.
Header & Footer: Keep headers and footers consistent across breakpoints, with a compact version for smaller screens.
Sidebar Navigation: Display sidebars with fixed positioning on larger screens if needed.
One-Column Layout: For narrow screens, focusing on vertical scrolling.
Two-Column Layout: Adds a secondary column at the medium breakpoint.
Three-Column Layout: Available at larger breakpoints, ideal for data-heavy pages or dashboards.
Adaptive Images: Serve different image sizes based on breakpoints for optimized loading times and quality.
Techniques: Use srcset
or CSS to ensure images adapt effectively to varying screen resolutions.
Testing on Devices: Test layouts on multiple devices to confirm that breakpoints provide a consistent experience.
Accessibility Considerations: Ensure layouts are keyboard navigable and compatible with screen readers. Confirm that text and interactive elements resize appropriately for users who adjust browser zoom settings.
This is a step-by-step guide to use the DDA components in React.
First, install the package @dubai-design-system/componts-react
Next, add the material-icons package which is the icon package used by DDA:
Start by adding the material-icons package inside the <head>
tag
You should now be able to use DDA components:
This is a step-by-step guide to use the DDA components in Vue.
First, install the package @dubai-design-system/components-vue
Next, install the font-awesome package which is the icon package used by DDA:
Start by adding the material-icons package inside the <head>
tag
In your main.js file, import your component library plugin and use it:
Class
Description
.dda-container
Defines default container with padding and margin.
.dda-container-fluid
Full-width container without fixed size.
.dda-container-xxl
Container for extra-large screens, max-width 1320px.
.dda-container-xl
Container for large screens, max-width 1140px.
.dda-container-lg
Container for medium-large screens, max-width 960px.
.dda-container-md
Container for medium screens, max-width 720px.
.dda-container-sm
Container for small screens, max-width 540px.
.dda-row
Row layout with gutter spacing and wrapping.
.dda-col
Flexible column with 100% width.
.dda-col-auto
Column with automatic width.
.dda-col-[1-12]
Columns with specific widths (from 8.33% to 100%).
.dda-col-sm-[1-12]
Columns for small screens with specific widths.
.dda-col-md-[1-12]
Columns for medium screens with specific widths.
.dda-col-lg-[1-12]
Columns for large screens with specific widths.
.dda-col-xl-[1-12]
Columns for extra-large screens with specific widths.
.dda-col-xxl-[1-12]
Columns for extra-extra-large screens with specific widths.
.d-inline
Displays element inline.
.d-inline-block
Displays element as inline-block.
.d-block
Displays element as block.
.d-grid
Displays element as grid.
.d-inline-grid
Displays element as inline-grid.
.d-table
Displays element as a table.
.d-table-row
Displays element as a table row.
.d-table-cell
Displays element as a table cell.
.d-flex
Displays element as a flex container.
.d-inline-flex
Displays element as inline flex container.
.d-none
Hides element (display: none).
.flex-fill
Makes flex item fill available space.
.flex-row
Flex container with horizontal row direction.
.flex-column
Flex container with vertical column direction.
.flex-row-reverse
Flex container with reversed horizontal direction.
.flex-wrap
Enables wrapping for flex items.
.flex-nowrap
Prevents wrapping of flex items.
.flex-wrap-reverse
Reverses the wrapping direction of flex items.
.m-[0-5]
Margin utility classes (from 0 to 3rem).
.m-auto
Centers element with auto margin.
.mx-[0-5]
Horizontal margin utility (left and right).
.my-[0-5]
Vertical margin utility (top and bottom).
.mt-[0-5]
Margin-top utility (0 to 3rem).
.me-[0-5]
Margin-right utility (0 to 3rem).
.mb-[0-5]
Margin-bottom utility (0 to 3rem).
.ms-[0-5]
Margin-left utility (0 to 3rem).
.p-[0-5]
Padding utility classes (from 0 to 3rem).
.px-[0-5]
Horizontal padding utility (left and right).
.py-[0-5]
Vertical padding utility (top and bottom).
.pt-[0-5]
Padding-top utility (0 to 3rem).
.pe-[0-5]
Padding-right utility (0 to 3rem).
Class Name
Description
h1, .dda-h1
Font size and weight for h1 headers
h2, .dda-h2
Font size and weight for h2 headers
h3, .dda-h3
Font size and weight for h3 headers
h4, .dda-h4
Font size and weight for h4 headers
h5, .dda-h5
Font size and weight for h5 headers
h6, .dda-h6
Font size and weight for h6 headers
.dda-title
Font size and weight for titles
.dda-body
Font size and weight for body text
.dda-caption
Font size and weight for captions
.dda-label
Font size and weight for labels
a, a:hover
Removes underline from links and defines hover style
button
Applies pointer cursor to buttons
ul
Removes list styling (bullets and padding)
.dda-bg-primary
Primary background color
.dda-bg-secondary
Secondary background color
.dda-color-black
Applies black text color
.dda-rounded-sm
Small border radius
.dda-rounded-md
Medium border radius
.dda-rounded-lg
Large border radius
.dda-rounded-circle
Circular border radius
.dda-gap-16
4rem gap between flex items
.dda-gap-12
3rem gap between flex items
.dda-gap-10
2.5rem gap between flex items
.dda-gap-8
2rem gap between flex items
.dda-gap-6
1.5rem gap between flex items
.dda-gap-5
1.25rem gap between flex items
.dda-gap-4
1rem gap between flex items
.dda-gap-3
0.75rem gap between flex items
.dda-gap-2
0.5rem gap between flex items
.dda-gap-1
0.375rem gap between flex items
::-ms-input-placeholder
Placeholder text color for Internet Explorer
::placeholder
Placeholder text color for other browsers
.dda-flex
Flex container display
.dda-flex-column
Flex direction set to column
.dda-inline-flex
Inline flex container display
.dda-align-center
Centers items along the cross-axis
.dda-justify-space
Distributes items with space between them
.dda-justify-center
Centers items along the main axis
.m-0
Removes margin from element
.p-0
Removes padding from element
.py-0
Removes vertical padding from element
.border-right
Adds a right border to the element
.visually-hidden
Hides element visually but keeps it accessible
Accordions are used to organize content into collapsible sections, allowing users to expand and collapse sections as needed.
Accordions are used to manage large amounts of content by dividing it into sections that can be expanded or collapsed. They are suitable for FAQs, content-heavy pages, or any interface where space is limited, and users need to access different sections of content without overwhelming them with too much information at once.
An accordion component typically includes a series of sections, each with a header that, when clicked, expands or collapses the section's content. Optional elements like icons can indicate the expanded or collapsed state. The accordion can be configured to display one section at a time or allow multiple sections to be expanded simultaneously.
design
Determines the visual style of the accordion.
'bg-border'
(default): Displays the accordion with a background and border.
'no-border'
: Displays the accordion without a background or border.
"bg-border" | "no-border"
header_text
The text displayed in the accordion header. Defaults to 'Accordion Header'
.
string
body_description
The text content inside the accordion body. Defaults to 'This is the accordion body content.'
.
string
custom_class
Allows the user to pass additional CSS classes to customize the accordion's appearance. Defaults to an empty string.
string
component_mode
Provides an optional mode for additional customization (e.g., dark mode or variant styles).
string
Lead-Icon: An icon positioned at the start of the accordion title, providing visual context or indicating the type of content.
Title: The main text that describes the section of the accordion and prompts users to expand for more details.
Dropdown Icon: An icon that indicates the expandable and collapsible nature of the accordion, usually changing direction when clicked.
Use accordions to manage and organize large amounts of content.
Don't use accordions for single pieces of content that do not require collapsing.
Label each accordion section clearly to indicate its content.
Avoid using ambiguous or unclear labels for accordion sections.
Ensure accordion headers are large enough to be easily tappable or clickable.
Don't make accordion headers too small to interact with comfortably.
Provide visual feedback to indicate the expanded or collapsed state.
Don't leave users guessing whether a section is expanded or collapsed.
Use consistent styling and spacing across all accordion sections in the application.
Don't use inconsistent styles that may confuse users.
Update the state of the accordion in real-time as sections are expanded or collapsed.
Don't use accordions if you cannot provide real-time updates.
Alert banners are used to convey important information or warnings to users.
Alert banners are used to communicate critical information, warnings, or updates that require the user’s attention. They are ideal for displaying system messages, error notifications, success confirmations, and other significant alerts.
An alert banner component typically includes a message and may also feature optional elements like icons, titles, and action buttons. Alert banners are usually displayed prominently at the top of the interface or within a designated alert area to ensure visibility. They can appear in different states—such as success, warning, error, or information—to reflect the nature of the message.
button_text
Text for a button inside the alert
string
clickHandler
A custom click event handler for the close button.
(event: MouseEvent) => void
component_id
An optional identifier for the component, useful for tracking or debugging.
string
component_mode
Provides a way to define specific component behavior or appearance (e.g., dark mode or compact mode).
string
custom_class
Allows adding a custom CSS class for additional styling.
string
description
A short description or message displayed in the alert.
string
first_link
URL for the first action button inside the alert. (Optional)
string
second_link
URL for the second action button inside the alert. (optional)
string
title_text
The main title or heading displayed in the alert.
string
type
Defines the primary or secondary style variation of the alert.
"primary" | "secondary"
variation
Specifies the alert type, which affects the visual styling.
"error" | "info" | "success" | "warning"
Lead Icon: Positioned to the left of the alert title, the lead icon provides a visual cue about the nature of the alert (e.g., information, warning, or error). This icon helps users quickly recognize the alert type, enhancing clarity.
Title: The main label for the alert, summarizing the purpose of the message. It provides a clear and concise headline, drawing attention to the alert's content.
Message Body: Located below the title, the message body contains additional information or details about the alert. This text provides context, helping users understand the specifics of the alert.
Close Icon: Positioned in the top right corner, the close icon allows users to dismiss the alert. This feature provides users with control over the visibility of the alert, making it dismissible when no longer needed.
Primary Button: A prominent action button within the alert, often used for the main call-to-action related to the alert. It encourages users to take the primary action required by the alert message.
Secondary Button: A secondary action button that offers an alternative choice or a less critical action. Positioned next to the primary button, it gives users an additional option for interaction.
Use alert banners to display important messages that require immediate user attention.
Don't use alert banners for non-critical information that doesn't require immediate action.
Label the alert banner clearly to indicate its purpose.
Avoid using ambiguous or unclear labels for alert banners.
Include an icon to visually represent the type of alert (e.g., error, warning, success).
Don't overcrowd the alert banner with too many elements.
Ensure the alert banner is large enough to be easily noticeable.
Don't make the alert banner too small or easy to overlook.
Provide clear action buttons if the alert requires user interaction.
Don't include action buttons if the alert does not require any user action.
Use appropriate colors to differentiate between types of alerts.
Don't rely solely on color to convey the message; include text as well.
Ensure alert banners are dismissible if they are not critical.
Don't force users to dismiss critical alerts manually.
Keep consistent styling and spacing across all alert banners in the application.
Don't use inconsistent styles that may confuse users.
Avatar visually represents a user through a profile image or initials, helping to identify individuals within the interface.
Avatars are used in user interfaces to visually represent individuals, groups, or objects. They are ideal for user profiles, messaging apps, social media, dashboards, and any interface requiring visual identification of users or entities.
An avatar component displays a graphical representation, such as a photo, icon, or text (e.g., initials), within a shape (typically a circle or rounded square). Avatars can also include status indicators to show user status (e.g., online, verified). The component is configurable to display various sizes and styles based on the application’s needs.
aria_label
ARIA label for accessibility and screen readers.
string
button_id
Unique ID assigned to the dropdown button.
string
component_mode
Defines a special mode (dark
, light
).
string
custom_class
Adds custom CSS classes for extra styling.
string
design
Determines the avatar design (default
, status
, verified
, story
, notification
).
"default" | "notification" | "status" | "story" | "verified"
icon
CSS class for the icon in icon
type avatars.
string
notification_number
Number displayed in the notification badge.
number
options
JSON string containing dropdown options.
string
rounded
Specifies the avatar shape as square
or circle
.
"circle" | "square"
selected
Stores the currently selected dropdown option.
string
size
Sets the avatar size (xs
, sm
, md
, lg
, xl
, xxl
).
"lg" | "md" | "sm" | "xl" | "xs" | "xxl"
src
Image URL for photo
type avatars.
string
text
Text displayed for text
type avatars.
string
type
Defines the avatar type (photo
, icon
, or text
).
"icon" | "photo" | "text"
Image: Displays the user’s profile picture, icon or text, providing visual identification. It helps users quickly recognize the individual represented.
Badge: Positioned in the top right corner of the avatar, the badge displays a notification count or status, such as "20+." This provides users with information at a glance, such as unread messages or notifications related to the user.
Status Icon: Positioned at the bottom of the avatar, the status icon indicates the user’s current status (e.g., online, offline, busy). It is often color-coded, enhancing visibility and making it easy to understand the user’s availability.
Use avatars to visually represent users or objects.
Don't use avatars for text-heavy content.
Ensure avatars are large enough to be easily recognizable.
Don't make avatars too small to identify.
Label avatars clearly if additional context is needed.
Avoid using ambiguous or unclear avatars without context.
Provide status indicators to show user status when relevant.
Don't overload avatars with too many status indicators.
Use consistent styling and spacing across all avatars in the application.
Don't use inconsistent styles that may confuse users.
Update avatar images in real-time if they change.
Don't use outdated or incorrect images.
Breadcrumbs provide a navigation aid that shows users their current location within a site's hierarchy, allowing them to trace their path back to previous pages easily.
Breadcrumbs are used in websites and applications to provide users with a navigational trail from the current page back to the homepage or root of the content hierarchy. They are ideal for complex structures with multiple levels of navigation, helping users understand their current position and navigate easily.
A breadcrumb component typically displays a series of links representing the path from the homepage to the current page. Each link corresponds to a level in the hierarchy, enabling users to navigate back to previous levels. Breadcrumbs can feature icons, text, or a combination of both to represent each level, with dividers visually separating the links for clarity.
component_mode
Defines an optional mode/class for additional styling or behavior customization.
string
custom_class
Allows the user to add custom CSS classes to the breadcrumb navigation for additional styling.
string
design
Defines the appearance of breadcrumb items.
'text'
: Displays only text.
'icon-text'
: Displays both an icon and text.
'icon'
: Displays only an icon.
"icon" | "icon-text" | "text"
separator
Determines the icon used as the separator between breadcrumb items.
"chevron_right" | "pen_size_2"
Lead Icon: Positioned at the beginning of the breadcrumb trail, the lead icon (e.g., a home icon) visually represents the starting point or main category in the navigation path. It provides a quick visual cue for users to identify the home or root page.
Label: Each label in the breadcrumb trail represents a level or section within the navigation hierarchy, showing users their current location relative to previous pages. Labels guide users through the navigation path, helping them understand how they reached the current page.
Trail Icon: Positioned at the end of the breadcrumb trail, the trail icon represents the final destination or current page within the navigation path. This icon provides a visual indicator of the endpoint, helping users identify the active or last section in the breadcrumb sequence.
Use breadcrumbs to show the user's location within the content hierarchy.
Don't use breadcrumbs for single-level navigation.
Label each breadcrumb link clearly to indicate its destination.
Avoid using ambiguous or unclear labels for breadcrumb links.
Ensure breadcrumb links are large enough to be easily tappable or clickable.
Don't make breadcrumb links too small to interact with comfortably.
Use consistent styling and spacing across all breadcrumbs in the application.
Don't use inconsistent styles that may confuse users.
Provide clear visual feedback when a breadcrumb link is hovered over or clicked.
Don't leave users guessing whether their interaction was successful.
Use appropriate dividers to separate breadcrumb links visually.
Don't overcrowd breadcrumbs with too many elements.
Attach file fields are used to allow users to upload files from their device.
Attach file fields are used in forms or other input scenarios where users need to provide files, such as documents, images, or other file types. They are ideal for applications that require file uploads as part of processes like submitting forms, attaching documents, or uploading images.
An attach file field component typically includes a label, a button to open the file picker dialog, and a display area to show the selected file name. Optional elements, such as placeholder text and helper text, can provide guidance to the user. The component can also display various states to reflect its status (e.g., focused, filled, error). The attach file field ensures users can easily select and upload files.
aria_label
The accessible label for the file input field.
string
button_aria_label
The accessible label for the remove file button.
string
button_id
The unique identifier for the remove file button.
string
component_mode
Defines a mode for component behavior
string
custom_class
Additional CSS classes to apply for custom styling.
string
error_message
An error message displayed if validation fails.
string
helper_text
A small helper message displayed below the file input for additional guidance.
string
input_id
The unique identifier for the file input field.
string
input_type
Specifies the type of input field styling (if applicable).
string
label
The label text displayed above the file input field.
string
size
Specifies the size of the input field.
string
validation_type
Determines the validation styling applied to the input (e.g., 'error'
, 'success'
).
string
Label: Positioned above the file selection area, the label indicates the purpose of the component, prompting users to attach a file. It provides context for the file input field.
Status Text: Displays the current status of the file selection, such as "No File Selected" when no file has been chosen. This text updates to show the selected file name, helping users confirm their selection.
Lead Icon: Positioned to the left of the helper or footer text, the lead icon provides an additional visual cue, often indicating information or help related to the file attachment process.
Caption: Positioned below the file selection area, the caption provides additional information, instructions, or tips regarding the file upload, guiding users as they interact with the component.
Button: The main action button labeled "Choose File" initiates the file selection dialog. This button allows users to browse and select a file from their device for attachment.
Use attach file fields to allow users to upload files in a standardized format.
Don't use attach file fields for text inputs or other non-file inputs.
Label the attach file field clearly to indicate its purpose.
Avoid using ambiguous or unclear labels for attach file fields.
Include placeholder text to guide users on the expected file format.
Don't rely solely on placeholder text for essential instructions.
Provide helper text to explain any specific file requirements or limitations.
Don't overload the attach file field with too much information.
Ensure the attach file button is large enough to be easily tappable or clickable.
Avoid making the attach file button too small to interact with comfortably.
Validate the uploaded file and provide clear error messages when the file format or size is incorrect.
Don't provide generic error messages that don't help users understand the issue.
Keep consistent styling and spacing across all attach file fields in the application.
Don't use inconsistent styles that may confuse users.
Social Media Login Buttons enable quick login or signup using social media accounts, offering a convenient authentication option.
Social Media Login Buttons are ideal for providing users with a quick, familiar login option via their social media accounts. They are commonly used on login or signup pages, offering a seamless alternative to traditional email or password-based authentication.
A Social Media Login Button enables users to authenticate by connecting their social media account with a single click or tap. Each button displays the logo of the corresponding social media platform, ensuring instant recognition and a clear understanding of the login method.
Brand Logo: Positioned to the left of the button text, the brand logo (e.g., the Apple logo, Google, Facebook) represents the social media or service provider associated with the login. This logo provides quick brand recognition, helping users identify the service they’re using for authentication.
Text: The main label of the button, such as "Sign in with Apple," describes the action that will be taken when the button is clicked. This text clarifies the login method, making it easy for users to understand the purpose of the button.
A Link Button is styled as a button but acts like a hyperlink, guiding users to other pages or resources. It’s commonly used for navigational actions such as "Learn More" or "Download".
Link buttons facilitate straightforward navigation, using text to direct users to different pages or resources. They are perfect for contexts like footers or menu items where clear labeling is crucial. Typically used for actions such as "View More" or "Sign Up", they guide users effectively through a digital environment.
A Link Button consists of clear, concise text within a button outline, designed to direct users with straightforward language. It optimizes navigation by clearly stating its function, such as "Learn More" or "Register." Link Buttons feature distinct visual states (hover, active, disabled) and can be styled to match the design hierarchy, facilitating easy user interaction and guidance through different sections or pages.
Lead Icon: Positioned at the beginning, the lead icon primes the user on the button's function, offering a visual cue that enhances recognition and usability.
Text: The central text on the button conveys the action or intent clearly and directly, guiding the user with explicit instructions or labels.
Trail Action: A secondary icon or element at the end, providing additional interaction options or indicating further actions, such as navigation arrows or dropdown indicators.
Icon Button is used to perform an action with an icon, without requiring a text label. It is often used for actions like editing, deleting, or navigating.
Icon buttons allow users to perform quick actions using only an icon, making them ideal for spaces like toolbars, headers, or mobile interfaces where space is limited. They’re best suited for familiar actions (e.g., "edit," "delete") .
An icon button consists of a single icon within a button shape, designed to convey its purpose through the icon alone. Icon buttons enhance usability by providing efficient, space-saving interactions. Each button has distinct visual states (hover, active, disabled) and can be styled to indicate hierarchy or function, supporting user navigation and interaction.
Icon: The central element of the button, the icon visually represents the action associated with the button. It allows users to quickly understand the button's purpose, especially in interfaces where space is limited. The icon itself is the primary visual cue, making the button intuitive and easy to recognize.
Checkboxes allow users to select multiple options from a set of predefined options.
Checkboxes are used when users need to select one or more options from a list. They are ideal for forms, settings, and any interface where multiple selections are allowed or required. Common use cases include selecting multiple interests, choosing preferences, or marking tasks as complete.
Checkboxes are typically presented in groups, with each box representing a different option that users can check or uncheck independently. Each checkbox includes a square box and a label, with optional elements like subtitles or trailing icons for additional context or emphasis.
Checkbox Icon: The visual checkbox element that indicates the selection state. Users can check or uncheck this icon to select or deselect an option.
Checkbox Label: The main label associated with the checkbox, providing a brief description of the option or action related to the checkbox.
Subtitle: Positioned below the checkbox title, the subtitle offers additional context or supporting information about the checkbox option, helping users understand the checkbox's purpose.
Ensure high-resolution images with 72 DPI for web. Use PNG, JPEG, or SVG formats. Optimize images for web to reduce load time without quality loss. Images must be sharp, well-lit, and free from pixelation.
Use standard sizes with a 3:2 aspect ratio for banners, featuring scenic or context-specific imagery. Maintain consistent aspect ratios to avoid distortion. Provide multiple sizes for different devices to ensure optimized display across various screen sizes.
Follow a style aligned with the brand identity, whether minimalistic, vibrant, or otherwise, to ensure consistency. Each image should have a clear focal point, with clean backgrounds, especially for icons and standalone objects. Maintain neutral lighting and consistent color tones across all images.
Adhere to the brand's color scheme, adjusting saturation and brightness as needed to maintain color consistency. Include tonal variations, such as light, medium, and dark tones, where relevant. Ensure color contrast meets accessibility standards, especially for overlays, to support readability.
Select context-specific images that align with the content's purpose and reflect the entity's mission, such as landscapes for tourism or tech hubs for business. Position overlay text and icons on less busy sections of the image to enhance readability and ensure legibility.
Entities should choose images that align with their purpose or mission, reinforcing the brand’s relevance and message.
Use vibrant images of Dubai landmarks, such as the Burj Khalifa, Palm Jumeirah, or Dubai Frame, to highlight Dubai's unique attractions and appeal to tourists.
Focus on images of Dubai’s infrastructure, like Sheikh Zayed Road, metro stations, or buses, to convey efficient transport options and promote public transportation.
Use images of health facilities, medical staff, and community wellness, such as hospitals, clinics, or preventative health services, to emphasize Dubai’s healthcare standards.
Ensure all images are legally sourced, whether through licensed stock or original photography. Include attribution where required to acknowledge image sources. Avoid using copyrighted images without permission, opting for generic representations if necessary to stay within legal guidelines.
Add descriptive alt text to each image, conveying content and purpose for non-sighted users. For complex visuals like infographics, add a detailed description or link to one on the page. Decorative images without informational value should use an empty alt attribute (alt=""
) so screen readers skip them.
For icons or images functioning as interactive elements, the alt text should describe their action or function. For instance, an icon for submission should use alt text like "Submit" instead of a visual description like "Arrow icon."
Avoid using images as the only means to convey essential information; add text-based explanations as support to assist visually impaired users.
Ensure images scale appropriately across devices without losing quality. They should not become pixelated or distorted when zoomed or resized.
For images with text, maintain sufficient contrast between text and background, meeting minimum accessibility standards, such as a 4.5:1 contrast ratio.
Provide captions for images when they offer information that complements the main text. For complex visuals, such as charts, include links to detailed text descriptions for further accessibility.
When using interactive or dynamic images, employ ARIA attributes like aria-labelledby
and aria-describedby
to associate images with labels or descriptions, enhancing context for screen reader users.
Text button is used to initiate actions on a page or form.
Buttons enable users to initiate an action or command with a click or tap. They are used to start actions, apply functions to selected objects, and activate or deactivate features. Buttons typically trigger an immediate response and can be placed within dialogs, forms, modal windows, and other containers.
A button’s label or text description clearly conveys its purpose, guiding users in performing actions such as starting an application or saving information. Buttons serve as a fundamental building block of our products. While the secondary button variant is most commonly used, other variants are available to indicate different levels of hierarchy or specific functionalities.
Lead Icon: Positioned to the left of the button text, the lead icon visually represents the action or purpose of the button. It provides a quick visual cue that helps users understand the button's function at a glance.
Text: The main label of the button, describing the action that will be performed when the button is clicked. Clear and concise text improves usability by indicating the button’s purpose.
Trail Action: Positioned to the right of the button text, the trail action (such as an arrow) further emphasizes the direction or nature of the action. It visually reinforces the button’s function, often indicating forward movement or progression.
The recommended typeface may be substituted with an alternative that better aligns with the reader's established brand identity, if deemed necessary. This adjustment should be made with careful consideration to maintain consistency with the intended tone and legibility standards outlined in these guidelines and the Web Content Accessibility Guidelines.
Use official logos and colors of each social media platform for brand consistency.
Don’t alter the colors or logos, as this may reduce recognizability and violate brand guidelines.
Ensure clear labeling or tooltip if the icon alone may not be obvious to all users.
Don’t use social media login buttons as the only login option if users might not have those accounts.
Place Social Media Login Buttons in a prominent area on the login or signup page.
Don’t overcrowd the page with too many social media options; limit to popular platforms.
Provide a visual focus state for keyboard navigation to meet accessibility standards.
Don’t neglect accessibility—ensure buttons are usable with keyboard and screen readers.
aria_label
A string that defines the accessible label for the button. It helps with accessibility, especially for screen readers.
string
button_color
Defines the color theme of the button. Common values could be 'primary'
, 'error'
, or any custom color class.
string
button_id
A string that sets the id
attribute of the button, allowing for unique identification in the DOM.
string
button_shape
A string to define the shape of the button, like 'round'
, 'square'
, or any custom class for shaping.
string
component_mode
A string that can be used to define the mode of the component, for example, a theme or variation of the button.
string
custom_class
A string that allows for a custom CSS class to be applied to the button. Useful for additional styling beyond the predefined options.
string
disabled
A boolean that controls whether the button is disabled. If set to true
, the button will not be interactive.
boolean
end_icon
A string representing the icon class to be displayed at the end of the button (after any text). It uses material icon classes by default.
string
gap
A number that defines the spacing between the button content (like text and icons). It adjusts the gap between the start and end icons and any content in the middle.
number
href
A string that defines the link for the button. This makes the button behave like an anchor tag (<a>
). Defaults to "#"
if not specified.
string
icon_button_shape
Similar to button_shape
, this prop defines the shape of the icon button (if the button is primarily for an icon).
string
size
A string that defines the size of the button. Possible values could include 'sm'
(small), 'md'
(medium), or 'lg'
(large).
string
start_icon
A string representing the icon class to be displayed at the start of the button (before any text). It uses material icon classes by default.
string
type
Specifies the type of the button. This can be set to 'button'
, 'submit'
, or other valid HTML button types. Default is 'button'
.
string
Dos
Don'ts
Use descriptive text that clearly indicates where the link will lead, such as "View Account Details" or "Read More About Our Services".
Avoid using generic text like "Click Here"; use phrases that explain the result of the interaction.
Ensure Link Buttons are easy to locate and visually stand out as clickable elements, enhancing navigation.
Do not saturate your interface with Link Buttons; use them sparingly and strategically to guide users without overwhelming them.
Provide adequate spacing with enough padding and margin around each button to make them easily clickable, especially on mobile devices.
Avoid inconsistencies in style; ensure that Link Buttons are consistent with the rest of your website or app to keep the user interface cohesive.
Highlight interaction by changing the appearance (e.g., underline, color change) on hover or focus to indicate that the text is interactive.
Do not rely solely on color to differentiate link buttons; consider adding icons or different styles for better distinction.
Maintain accessibility by using appropriate ARIA roles and properties, and ensure text has high contrast against its background for visibility.
Prevent accessibility issues by not using small font sizes or low-contrast text that can be hard to read for those with visual impairments.
Dos
Don'ts
Use clear and recognizable icons that represent the action effectively.
Don’t overcrowd the interface with too many Icon Buttons; prioritize actions.
Ensure the button is easily tappable or clickable, with sufficient spacing around it.
Avoid using ambiguous or unclear icons.
Provide tooltips or ARIA labels for icons that might not be universally understood.
Don’t rely solely on color to indicate different button states; use shapes and icons as well.
Use appropriate variants to indicate the button's importance or state.
Don’t use icons without providing textual alternatives for accessibility purposes.
Ensure icons have sufficient contrast against their background.
Avoid inconsistent usage of icon button styles across similar actions.
aria_label
Provides an accessible label for screen readers when a visible text label is not available.
string
checkbox_status
Applies a status-based CSS class to the checkbox, such as 'disabled' or 'error'.
string
checked
Determines whether the checkbox is checked (true
) or unchecked (false
) by default.
boolean
component_mode
Determines the mode or theme of the component, if applicable.
string
custom_class
Additional custom CSS classes to apply to the checkbox container.
string
group_name
The name attribute of the checkbox, useful for grouping multiple checkboxes together.
string
input_id
The unique identifier for the checkbox input, used to associate the <label>
with the input.
string
size
Defines the size of the checkbox. Possible values could be 'sm'
, 'md'
, or 'lg'
.
string
style_type
Specifies the visual style of the checkbox. Defaults to 'square'
, but can be customized with other styles.
string
supporting
Additional supporting text displayed below the main title.
string
title_text
The main text label displayed next to the checkbox.
string
Use checkboxes when users need to select multiple options from a set.
Don't use checkboxes for single selection; use radio buttons for that purpose.
Label each checkbox clearly to indicate the option it represents.
Avoid using ambiguous or unclear labels for checkboxes.
Group related checkboxes together visually and logically.
Don't scatter related checkboxes throughout different parts of the UI.
Ensure checkboxes are large enough to be easily tappable or clickable.
Avoid making checkboxes too small to interact with comfortably.
Use consistent spacing between checkboxes in the same group.
Don't place checkboxes too close together or too far apart, which can hinder usability.
Provide a clear visual indication of the checked state.
Don't leave users guessing which options are currently selected.
Include appropriate aria-labels for accessibility.
Don't neglect accessibility requirements such as focus states and keyboard navigation.
Ensure each checkbox has sufficient contrast against its background.
Avoid using low contrast that can make the checkboxes difficult to see.
Product Image:
Image Description: A photo of a red running shoe with white soles.
Good Alt Text: "Red running shoe with white soles."
Why: Descriptive enough to inform the user about the product, including key details.
Bad Alt Text: "Shoe" or "Image of a product."
Why: Too vague; does not provide enough detail for users to understand what the product is.
Button Icon:
Image Description: A magnifying glass icon that opens a search field.
Good Alt Text: "Search"
Why: It conveys the function of the icon (initiating a search) rather than describing the image itself.
Bad Alt Text: "Magnifying glass icon"
Why: This does not describe the action or purpose, making it harder for users to know what it does.
Decorative Image:
Image Description: A decorative flourish or pattern used to separate sections of a webpage.
Good Alt Text: alt=""
(empty alt attribute)
Why: Since the image is decorative, it does not add meaningful content, so screen readers should skip it.
Bad Alt Text: "Decorative line to separate sections."
Why: This is unnecessary information, adding clutter for screen reader users.
aria_label
Accessibility label for screen readers.
string
button_color
Defines the button color variant. Example values: 'primary'
, 'error'
, 'success'
, etc.
string
button_id
Unique identifier for the button element.
string
button_shape
Defines the button's shape. Example values: 'rounded'
, 'square'
, 'pill'
.
string
clickHandler
Function to be executed when the button is clicked.
(event: MouseEvent) => void
component_mode
Used for setting a mode-related styling or behavior.
string
custom_class
Allows adding a custom CSS class to the button for additional styling.
string
disabled
Determines if the button should be disabled.
boolean
end_icon
The name of the icon to display at the end of the button. Uses Material Icons.
string
gap
Specifies the spacing between elements inside the button.
number
icon_button_shape
Defines the shape of an icon-only button.
string
size
cifies the button size. Example values: 'sm'
, 'md'
, 'lg'
.
string
start_icon
The name of the icon to display at the start of the button. Uses Material Icons.
string
type
Specifies the button type. Common values: "button"
, "submit"
, "reset".
string
Use text buttons for less prominent actions or secondary actions.
Don't use text buttons for primary actions or actions that require high visibility.
Ensure text buttons have sufficient touch target size and padding for accessibility.
Don't use text buttons in tight spaces where they might be difficult to interact with.
Use clear, descriptive text that indicates the action of the button.
Avoid using generic labels like "Click Here" or "Submit" that don't provide specific context.
Ensure text buttons meet color contrast requirements for readability and accessibility.
Don't rely solely on color to indicate the button's state or importance; consider using additional visual cues.
Use text buttons in contexts where minimal visual emphasis is needed, such as in toolbars or inline actions.
Don't use text buttons in contexts where visual prominence and strong call-to-action are required.
Provide adequate spacing around text buttons to avoid accidental clicks on adjacent elements.
Avoid placing text buttons too close to other interactive elements, which can cause usability issues.
Use consistent styling for text buttons to maintain a cohesive design system.
Don't use inconsistent styles for text buttons across different parts of the application.
Consider the text length and avoid truncation or wrapping of button text.
Don't use overly long text that might not fit within the button's design constraints.
Buttons are fundamental interactive elements used in user interfaces to trigger actions, submit forms, and navigate through different parts of an application
Consistency is key; use a unified style (e.g., line, filled, flat, or outlined) to ensure visual harmony. Keep icons minimalistic with clean lines for easy recognition and scalability. Icons should be vector-based (SVG format) to maintain clarity at various sizes. Match the icon style to the brand’s tone (e.g., modern for tech brands, classic for traditional sectors). Entities have the option to use their own custom icons or to choose Material Icons, which we recommend as a standard option.
Define standard sizes for specific use cases. Small: 16x16px, ideal for dense UI elements like toolbars or status indicators. Medium: 24x24px, suitable for navigation icons or primary action buttons. Large: 32x32px, best for prominent areas, such as section headers or feature icons. Use increments that maintain balance and proportion, ensuring readability and clarity at each size.
Use primary or secondary brand colors consistently in icons, reserving additional colors for emphasis or interactive states (e.g., hover, active). Ensure contrast for visibility, especially for overlays on different backgrounds, and meet WCAG color contrast guidelines. Assign distinct colors for icons representing specific categories (e.g., health, transportation) to aid quick recognition.
Maintain equal padding around each icon to ensure visual balance. Icons should align consistently within the grid or layout, respecting margins and other visual elements. Group related icons to indicate relationships, with consistent spacing to improve readability.
Use icons that intuitively convey their function or category (e.g., a heart for health, a bus for transportation). Use icons selectively to avoid visual clutter, reserving them for interactive elements, navigation, or key content indicators. Accompany icons with labels where necessary, especially when the icon alone may not be universally understood.
Use purpose-driven illustrations that directly enhance content, like simple illustrations for explanatory text, or visuals that align with the subject matter (e.g., scenic illustrations for tourism). Consider overlay icons to provide additional context (e.g., a pin overlay on a map icon for location-based services). Visuals should reflect the brand’s tone, whether dynamic, professional, or friendly.
To ensure accessibility, icons should include alt text if they convey essential information, while purely decorative icons should be marked to be ignored by screen readers. Icons must meet a minimum contrast ratio of 3:1 and should not rely on color alone for meaning, supporting users with low vision or color blindness. Consistent icon usage reduces cognitive load, making it easier for users to recognize functions at a glance. For complex icons, adding text labels or accessible names helps clarify their purpose, especially for screen reader users.
Icons should be responsive, scaling smoothly for readability up to 200% and adapting across devices. These best practices ensure icons are clear, usable, and accessible for everyone.
Credit card visualizations are used to display key information about a credit card in a visually appealing format.
Credit card visualizations are used in financial applications and dashboards to display essential information like card number, cardholder name, balance, and other relevant details. They are ideal for account overviews, payment details, or any interface where users need to view or manage their credit card information.
A credit card visualization component presents key credit card information in a design resembling a physical card, typically displaying details such as the card number, cardholder name, and balance. It may include various visual styles to represent different types of cards, enhancing the user’s understanding and organization of their financial information.
balance
Represents the current balance displayed on the credit card.
Example: "AED 50,000"
or "$200.00"
string
card_number
The full card number, but only the last four digits are displayed for security.
Example: "1234567812345678"
(will display as **** 5678
)
string
card_type
A URL or path to the card type icon/image (e.g., Visa, MasterCard, etc.).
Example: "/assets/icons/visa.png"
string
component_mode
Represents different modes/styles of the component, possibly controlled dynamically.
string
custom_class
Allows users to apply additional custom CSS classes to the component.
string
design
Specifies the design theme of the card, used for adding specific styling classes.
string
name
Displays the cardholder's name.
Example: "John Doe"
string
Card Header: Displays the header text, such as "Current Balance," indicating the purpose or type of information presented on the card.
Card Balance: Shows the current balance amount, providing the user with financial information at a glance.
Cardholder's Name: Displays the name of the cardholder, confirming ownership and identity on the card.
Card Number: Shows a partially masked card number for security, typically showing only the last four digits to help the user identify the card.
Contactless Symbol: Positioned in the upper right corner, this symbol indicates that the card supports contactless payments.
Brand Logo: Displays the logo of the card provider (e.g., Mastercard), adding visual identification of the issuing brand.
Use credit card visualizations to display key information about credit cards clearly and concisely.
Don't overload the card with too much information that can clutter the view.
Ensure the card number is partially masked for security.
Don't display the full card number unless absolutely necessary and secure.
Label the fields clearly to indicate what each piece of information represents.
Avoid using ambiguous or unclear labels for card details.
Provide visual feedback when the card information is updated.
Don't leave users guessing whether their information has been updated.
Use consistent styling and spacing across all credit card visualizations in the application.
Don't use inconsistent styles that may confuse users.
Ensure the design is responsive and looks good on all device sizes.
Don't design the card visualization for a specific device only.
Headers play a crucial role in structuring content, providing clear navigation and enhancing readability by organizing information into distinct, easily digestible sections for users.
The header component should be used on all pages of the website to provide a consistent navigation experience for users. It serves as a central hub for accessing key sections of the site, ensuring users can easily locate important features or content regardless of their current location within the website.
The header component typically includes three key sections: a branding area, navigation tabs, and interactive controls. The branding area prominently features logos for clear organizational identity. Navigation tabs provide quick access to different sections, with a visual indicator for the active tab. Interactive controls include a search bar for content discovery, an accessibility icon for usability features, a language toggle for switching between languages, and a login button for user authentication. The header is designed to adapt fluidly to different screen sizes, ensuring clarity, usability, and accessibility across devices.
firstLogoAlt
Alternative text for the primary logo for accessibility purposes.
string
firstLogoSrc
URL of the primary logo displayed in the header.
string
loginLink
URL for the login page, allowing users to navigate to the authentication screen.
string
quickLinks
JSON string representing an array of quick link items, used in the mega menu for fast navigation.
string
readSpeakerLink
URL for the ReadSpeaker integration, allowing users to listen to page content.
string
secondLogoAlt
Alternative text for the secondary logo for accessibility purposes.
string
secondLogoSrc
URL of the secondary logo, typically displayed in a different theme or color variation.
string
sideMenuItems
JSON string representing an array of side menu items, including links and potential submenus.
string
languageSwitch
Triggered when the user selects the language switch option.
smTextSize
Triggered when the user decreases the text size.
baseTextSize
Triggered when the user selects the default text size.
lgTextSize
Triggered when the user increases the text size.
normalContrast
Triggered when the user selects the normal contrast setting.
blindContrast
Triggered when the user selects the contrast setting for color blindness.
redContrast
Triggered when the user selects the contrast setting for red weakness.
greenContrast
Triggered when the user selects the contrast setting for green weakness.
Logo Bar: Logos are placed on both ends of the header. The Government of Dubai logo is positioned on the left, while the Digital Dubai logo is on the right, ensuring prominent branding and organizational representation.
Navigation Tabs: A horizontal row of tabs located in the center, providing quick access to different sections of the platform. The active tab is visually highlighted to indicate the user’s current location.
Search: A magnifying glass icon located in the interactive controls area, accompanied by placeholder text ("Search...") to enable quick content discovery.
Accessibility Icon: An icon representing accessibility options, allowing users to adjust settings for better usability, such as increased font size or contrast.
Language Toggle: A button labeled "العربية" to enable language switching between Arabic and English for bilingual support.
Login Button: A circular icon with "Login" text, allowing users to authenticate and access personalized features or accounts.
Hamburger Icon: A collapsible menu icon located on the far left, offering a compact navigation solution for smaller screens or alternative layouts.
The header component turns to mobile view @ the 1024 breakpoint
The top center area is reserved for initiatives logos/banners.
Don't add any links to the logo bar center area.
Always use a black shadow overlay on high-quality hero images for the transparent header.
Don't use bright, crowded, or low-quality hero images for the transparent header.
Use high-quality logos in the logo bar.
Don't use low-quality logos, make sure to maintain the logo ratio, don't change the brand colors.
All logos, links, and Icons should be in white color if a transparent header is used.
Don't Use colored logos, text, or icons on the transparent header.
Interactive banners use dynamic elements like animations and clickable features to capture attention and encourage actions, enhancing the user experience with flexible content presentation.
Interactive banners are ideal for grabbing user attention and promoting key actions or content. They are commonly used to showcase announcements, campaigns, or featured content in a visually engaging and interactive manner.
Interactive banners combine dynamic elements such as animations, videos, clickable features, carousel indicators, and multifunctional cards. These components work together to present information flexibly, encourage user interaction, and drive engagement, ensuring an enhanced and immersive user experience.
Hero Image/Video: A visually striking background element featuring a high-quality image or video, setting the tone and context of the banner content.
Banner Content: Section containing the primary message or call-to-action text, such as "Our objective is to digitalize life in Dubai," designed to grab user attention.
Search Field: A prominent search bar allowing users to quickly locate services or information, enhancing functionality and usability.
Gradient Overlay: A subtle gradient applied over the hero image/video, improving text readability by creating contrast and a visually pleasing effect.
Multifunctional Cards: Interactive cards displayed below the main content, each featuring an icon, a title, and a short description, providing direct access to specific services or features.
Carousel Indicator: Small dots or markers below the search field indicating the presence of additional slides or content that can be navigated through.
Scroll Indicator: A visual cue prompting users to scroll down for more content, encouraging exploration of the page.
Maintain a consistent icon style (sharp, round, filled, or outlined) across all multifunctional cards.
Don’t use inconsistent icons, such as sharp, round, filled, or outlined.
Ensure each card contains a minimum of one word of text.
Be aware of the padding between the multifunctional cards.
Display a minimum of three multifunctional cards and up to five cards, with optional options for six or seven cards featuring smaller service cards.
Limit the number of multifunctional cards to a maximum of seven; don't exceed this limit.
In case additional service card are needed, the last card should be labeled as "See All Services" which, when clicked, will redirect the user to a new page containing the related information.
Ensure that the transparency level of the black color is not set higher than 40% for the specified design element.
Ensure that the maximum text width does not exceed 232px, and it should stay within the 12px vertical padding on both sides.
The maximum text width should never exceed 232px and the 12px vertical padding on both sides.
Chips are small, interactive components used to display information, filter content, or trigger actions.
Chips are used to represent information, filter options, or initiate actions in a compact format. They are suitable for displaying tags, categories, contacts, and other small content items. Chips can be used individually or in groups, offering an efficient way to show content or actions in limited space.
A chip typically includes a label and may feature optional elements like icons or buttons for additional actions. Chips can be interactive, allowing users to click or tap them to trigger actions (e.g., filtering content or selecting options), or static, simply displaying information without interaction.
bg_color
Specifies the background color of the chip. It can be predefined colors such as 'success'
, 'danger'
, 'warning'
, etc.
string
clickHandler
A callback function triggered when the close icon is clicked. Accepts a MouseEvent
parameter.
(event: MouseEvent) => void
component_mode
Enables different modes for the component, potentially changing its appearance or behavior.
string
custom_class
Allows users to pass additional CSS classes for custom styling.
string
icon
The name of a Material Icon to be displayed at the beginning of the chip.
string
rounded
Defines the roundness of the chip's edges. Accepts values like 'sm'
, 'md'
, 'lg'
for different border-radius levels.
string
show_close_icon
Determines whether a close (✕) icon should appear inside the chip, allowing users to remove it.
boolean
size
Defines the size of the chip. Expected values are 'sm'
, 'md'
, or 'lg'
.
string
Lead Icon: Positioned on the left side of the chip, the lead icon provides a visual representation related to the chip’s content or purpose, helping users quickly identify the context.
Label: The main text of the chip, indicating its content or purpose. It provides a brief, clear description to make the chip's function easily understandable.
Trail Icon: Positioned on the right side of the chip, the trail icon allows users to interact with the chip.
Use chips to represent information, filter options, or trigger actions.
Don't use chips for large blocks of text or complex interactions.
Label chips clearly to indicate their purpose.
Avoid using ambiguous or unclear labels for chips.
Ensure chips are large enough to be easily tappable or clickable.
Don't make chips too small to interact with comfortably.
Use consistent styling and spacing across all chips in the application.
Don't use inconsistent styles that may confuse users.
Include icons or buttons in chips when additional actions are needed.
Don't overcrowd chips with too many elements.
Provide clear visual feedback when chips are interacted with.
Don't leave users guessing whether their interaction was successful.
Number Input Field allows users to enter numeric values with precision, ideal for fields requiring quantities, amounts, or other numerical data.
Number inputs are used in forms and other input scenarios where users need to enter numeric values, such as quantities, amounts, or measurements. They ensure consistent formatting, making it easier to validate and process the numeric data accurately.
A number input component typically includes a label, a number-formatted input area, and optional elements like placeholder text, helper text, and a stepper for incrementing or decrementing the value. It may have different states to indicate its status, such as focused, filled, or error, ensuring that the numeric input is entered correctly and within the expected range.
aria_label
An optional string for defining an accessible label for the input field, used by screen readers.
string
component_mode
A string that can be used to define different modes of the component (e.g., readonly
, disabled
).
string
currencies
A string containing a JSON array of currency options to display in the dropdown.
string
custom_class
An optional string for adding custom CSS classes to the component for styling purposes.
string
error_message
A string that displays an error message below the input field if there's an issue with the entered data (e.g., validation failure).
string
helper_text
A string that provides additional helper text below the input field, typically used to give guidance on acceptable input.
string
input_id
A unique string identifier for the input element, used for labeling and accessibility.
string
input_status
A string (in JSON format) that contains any status information related to the input (e.g., could be used for showing "loading" or "disabled" states).
string
label
A string that provides the label text for the input field, typically displayed above the input box.
string
placeholder
A string that defines the placeholder text shown inside the input field when it is empty.
string
selected_currency
A string representing the currency currently selected from the dropdown. Default is 'USD'.
string
size
A string that controls the size of the input field (e.g., small
, medium
, large
).
string
validation_type
A string that represents the type of validation being applied to the input (e.g., required
, numeric
, etc.).
string
value
A string that holds the value of the input field.
string
Label: Positioned above the input field, the label ("Amount") indicates the purpose of the field, guiding users to input a specific monetary value.
Placeholder: The placeholder text within the input field provides an example format or prompt.
Lead Icon: Positioned to the left of the helper text, the lead icon provides a visual cue that can offer additional information or help related to the amount input.
Caption: Positioned below the input field, the caption provides additional instructions or context, such as "Helper or footer text," to assist users with the input.
Stepper: Positioned on the left within the input field, the stepper allows users to increase or decrease the amount by tapping up or down arrows, offering a quick way to adjust the input.
Currency Dropdown: Positioned to the right of the input field, the currency dropdown lets users select the desired currency, ensuring clarity in financial transactions.
Use number inputs to collect numeric values in a standardized format.
Don't use number inputs for non-numeric inputs.
Label the number input clearly to indicate its purpose.
Avoid using ambiguous or unclear labels for number inputs.
Include placeholder text to show the expected numeric format.
Don't rely solely on placeholder text for essential instructions.
Provide helper text to explain any specific formatting or range requirements.
Don't overload the number input with too much information.
Ensure the number input is large enough to be easily tappable or clickable.
Avoid making the number input too small to interact with comfortably.
Use the stepper for inputs that require incremental adjustments.
Don't use steppers if precise values are required without increments.
Validate input and provide clear error messages when the numeric format or range is incorrect.
Don't provide generic error messages that don't help users understand the issue.
Keep consistent styling and spacing across all number inputs in the application.
Don't use inconsistent styles that may confuse users.
Credit Card Input Field enables users to input and verify their card information.
Credit card fields are used in forms and input scenarios where users need to enter their credit card information for transactions. They ensure a consistent format for input, making it easier to validate and process the credit card number accurately.
A credit card field component typically includes a label, an input area formatted specifically for credit card numbers, and optional elements like placeholder text or helper text to guide the user. It may have different states to reflect its status, such as focused, filled, or error. This component helps users enter credit card information in the correct format, improving both accuracy and ease of use.
aria_label
An optional aria-label
attribute for improved accessibility, helping screen readers describe the input field to users with visual impairments.
string
card_icon
The path to the image representing the card icon, such as a credit card or payment method logo, that will be displayed next to the input field.
string
component_mode
A string representing a specific mode for the component, which can be used for styling or behavior modifications, such as 'edit' or 'view'.
string
custom_class
An optional custom CSS class that can be applied to the input field or the surrounding container for additional styling.
string
disabled
A boolean flag that determines if the input field should be disabled. If true
, the user won't be able to interact with the field.
boolean
error_message
A message that will be displayed if there is an error related to the credit card input, such as an invalid card number.
string
helper_text
Additional descriptive text or guidance that will be shown below the input field, typically providing hints to the user.
string
input_id
The unique identifier (id
) for the input field, which is useful for labeling, accessibility, and DOM manipulation.
string
input_type
A string that defines the type of the input field. For example, this could control the appearance or behavior of the input (e.g., 'password' for obscuring text).
string
label
The label text associated with the input field. This is typically used to describe the input field's purpose.
string
placeholder
The placeholder text to be displayed in the input field when it is empty.
string
restrict_input
A boolean flag that, when set to true
, limits the input field's length to 100 characters. If false
, it allows a maximum of 25 characters.
boolean
size
A string that determines the size of the input field. It could be values like 'small', 'medium', or 'large', which adjusts the styling of the input field.
string
validation_type
A string used to specify the validation style for the input field, such as 'required', 'invalid', or any custom validation type.
string
value
The current value of the credit card input. It is used to set and update the value of the input programmatically.
string
Label: Positioned above the input field, the label ("Card Number") indicates the purpose of the field, guiding users to enter their card number.
Placeholder: The placeholder text inside the input field ("0000 - 0000 - 0000 - 0000") provides a visual example of the expected card number format, helping users understand how to enter the information.
Lead Icon: Positioned to the left of the helper text, the lead icon provides an additional visual cue, often indicating information or help related to the input field.
Caption: Positioned below the input field, the caption provides additional instructions or context, such as "Helper or footer text," to assist users with the input.
Use credit card fields to collect users' credit card numbers in a standardized format.
Don't use credit card fields for non-credit card number inputs.
Label the credit card field clearly to indicate its purpose.
Avoid using ambiguous or unclear labels for credit card fields.
Include placeholder text to show the expected credit card number format.
Don't rely solely on placeholder text for essential instructions.
Provide helper text to explain any specific formatting requirements.
Don't overload the credit card field with too much information.
Ensure the credit card field is large enough to be easily tappable or clickable.
Avoid making the credit card field too small to interact with comfortably.
Validate input and provide clear error messages when the credit card number format is incorrect.
Don't provide generic error messages that don't help users understand the issue.
Keep consistent styling and spacing across all credit card fields in the application.
Don't use inconsistent styles that may confuse users.
Progress semi-circles are used to visually represent the completion status of a task or process in a semi-circular format.
Progress semi-circles are used in interfaces to indicate the completion status of ongoing tasks or processes, such as loading sequences, file uploads, or progress toward goals. They offer a quick, visual representation of progress in a compact, visually distinct format that differs from traditional linear progress bars.
A progress semi-circle component displays a semi-circular indicator that fills as the task progresses. It may include optional elements like labels for additional context. The progress semi-circle can be customized to show different values, label visibility, and sizes, providing flexibility to fit various design needs.
Progress Fill: The arc or filled section that visually indicates the proportion of the task that has been completed. It grows as progress increases.
Label: A short descriptor positioned next to or inside the progress indicator, giving context about the tracked metric.
Percentage Label: Located within the center of the circle, this label displays the exact progress as a percentage.
Background: The unfilled part of the circular path that contrasts with the Progress Fill, representing the remaining portion of the task.
Progress circle are used to visually represent the completion status of a task or process in a circular format.
Progress circles are used in interfaces to indicate the completion status of ongoing tasks or processes, such as loading sequences, file uploads, or progress toward goals. They offer a quick, visual representation of progress in a compact and visually appealing format.
A progress circle component displays a circular indicator that gradually fills as the task progresses. It may include optional elements like labels to provide context. The progress circle can be customized to reflect different values, label visibility, and sizes to suit various design needs.
Progress Fill: The filled portion of the circular bar that visually represents the percentage of the task completed. It fills proportionally to indicate progress.
Background: The unfilled section of the circular path, providing a contrast to the Progress Fill and representing the remaining portion of the task.
Percentage Label: Centered within the circle, this label displays the completion percentage in numerical format, giving users an exact measure of progress.
Progress bars are used to visually indicate the progression of a task or process.
Progress bars are used in interfaces to indicate the completion status of a task or process, such as file uploads, form submissions, or loading sequences. They offer immediate visual feedback, helping users understand the current progress and how much remains to be completed.
A progress bar component displays a visual indicator, typically a horizontal bar that fills as the task advances. It may include optional elements, like labels, to add context about the progress. The progress bar can be customized with different themes, label positions, and progress values to suit the application's needs.
Progress Fill: Represents the portion of the task or service status that has been completed, filled proportionally to the progress made. It visually indicates the extent of completion in the process.
Background Bar: The unfilled part of the progress bar that provides a reference for the remaining progress. It contrasts with the progress fill to show the current status effectively.
Percentage Label: Displays the exact percentage of the progress, providing users with a clear numerical representation of completion.
Phone Input Field allows users to enter and validate phone numbers in a standardized format, often with options for country code selection.
Phone fields are used in forms and input scenarios where users need to enter their phone number. They help maintain a consistent format, making it easier to validate and utilize the phone number for communication purposes.
A phone field component typically includes a label, a phone number-formatted input area, and optional elements like placeholder text and helper text to assist the user. It may also display different states, such as focused, filled, or error, to reflect its current status. The phone field ensures that the phone number is entered accurately and in the correct format.
Label: Describes the field as "Phone Number" to clarify the purpose for the user.
Flag Icon: Displays the country flag, indicating the selected country code. Provides a visual representation to assist users in identifying the region.
Country Dropdown: Allows users to select or change the country code. This is helpful for international phone numbers, ensuring accurate dialing codes.
Placeholder: Guides users on the input format for the phone number.
Lead-Icon: Positioned to the left of the helper text, the lead icon provides a visual cue that can offer additional information or help related to the entered input.
Caption: Additional helper or footer text that provides guidance or context, typically used for validation messages or tips.
Pagination divides content into discrete pages, allowing users to navigate through large sets of information easily and maintain an organized viewing experience.
Use the Pagination component in interfaces where content is divided across multiple pages and users need to navigate through it sequentially. It’s ideal for content feeds, search results, product listings, and any scenario where users browse content across pages.
The Pagination component provides navigation options, typically displaying the current page, total pages, and navigation buttons like "Previous" and "Next." Users can click these buttons to move between pages. The component can be customized to show additional navigation controls, depending on the application’s requirements.
Icon: Positioned on either side of the navigation controls (e.g., "Prev" and "Next"), the icon provides a directional cue for moving between pages, using left and right arrows.
Label: Used to indicate previous or next steps, this text label enhances clarity, allowing users to intuitively navigate between pages.
Page Indicator: Displays the current page range (e.g., "Page 1 to 8"), offering users context on their position within the sequence of pages and total pages available.
Use progress semi-circles to show the completion status of ongoing tasks in a semi-circular format.
Don't use progress semi-circles for tasks that do not involve progressive completion.
Ensure the progress semi-circle is large enough to be easily noticeable.
Don't make the progress semi-circle too small or difficult to see.
Label the progress semi-circle clearly to indicate what it is tracking.
Avoid using ambiguous or unclear labels for progress semi-circles.
Provide clear visual feedback as the progress semi-circle fills.
Don't leave users guessing about the status of the task.
Use consistent styling and spacing across all progress semi-circles in the application.
Don't use inconsistent styles that may confuse users.
Update the progress semi-circle in real-time as the task progresses.
Don't use progress semi-circles if you cannot provide real-time updates.
Use progress circles to show the completion status of ongoing tasks in a circular format.
Don't use progress circles for tasks that do not involve progressive completion.
Ensure the progress circle is large enough to be easily noticeable.
Don't make the progress circle too small or difficult to see.
Label the progress circle clearly to indicate what it is tracking.
Avoid using ambiguous or unclear labels for progress circles.
Provide clear visual feedback as the progress circle fills.
Don't leave users guessing about the status of the task.
Use consistent styling and spacing across all progress circles in the application.
Don't use inconsistent styles that may confuse users.
Update the progress circle in real-time as the task progresses.
Don't use progress circles if you cannot provide real-time updates.
component_mode
An optional prop that can be used to apply a specific mode or style to the progress bar. It allows for dynamic changes to the appearance or behavior of the component based on the mode.
string
custom_class
A string of one or more CSS classes to apply to the outer container of the progress bar. This allows for easy customization and styling of the component.
string
progress
This prop controls the progress percentage of the progress bar. It expects a number between 0 and 100, representing the current completion level of the progress bar.
number
show_percentage_text
If set to true
, the percentage text will be displayed within the progress bar, showing the current progress value as text.
boolean
tooltip
Determines whether to show a tooltip with the progress percentage on hover. If set to true
, a tooltip will appear displaying the current progress percentage.
boolean
tooltip_position
Specifies the position of the tooltip relative to the progress bar. It can be either 'top'
(above the progress bar) or 'bottom'
(below the progress bar).
"bottom" | "top"
Use progress bars to show the completion status of ongoing tasks.
Don't use progress bars for static or non-progressive tasks.
Ensure the progress bar is large enough to be easily noticeable.
Don't make the progress bar too small or easy to overlook.
Label the progress bar clearly to indicate what it is tracking.
Avoid using ambiguous or unclear labels for progress bars.
Provide clear visual feedback as the progress bar fills.
Don't leave users guessing about the status of the task.
Use consistent styling and spacing across all progress bars in the application.
Don't use inconsistent styles that may confuse users.
Update the progress bar in real-time as the task progresses.
Don't use progress bars if you cannot provide real-time updates.
aria_label
The aria-label for accessibility, describing the input field's function to screen readers.
string
button_aria_label
The aria-label for the dropdown button, providing context for screen readers.
string
button_id
The ID for the dropdown button, useful for styling or testing purposes.
string
component_mode
Defines the mode of the component, which can be used to customize its behavior or appearance
string
custom_class
A custom CSS class that can be added to the component’s root element for additional styling.
string
disabled
Determines if the input field is disabled or not. When true
, the field is uneditable and grayed out.
boolean
error_message
An error message that is shown when the input is invalid or does not meet the validation criteria.
string
helper_text
Optional helper text displayed below the input field, providing extra information to the user about what should be entered.
string
input_id
The ID of the input field, useful for labeling and referencing the field in a form or when styling.
string
label
The label text that will be displayed next to the input field to describe the expected value (e.g., "Phone Number").
string
placeholder
A placeholder text that appears in the input field when it's empty, guiding the user on what to enter (e.g., "Enter phone number").
string
size
Specifies the size of the input field, e.g., "small", "medium", or "large". It adjusts the size of the input box accordingly.
string
validation_type
A type of validation to apply to the input field. This could trigger specific styling or validation behavior (e.g., "required", "email", etc.).
string
country_code
The default country code to be displayed in the input field, such as +1
for the US or +44
for the UK.
string
country_flag
The URL of the flag image associated with the default country. This is displayed alongside the country code.
string
phone_number
The value of the phone number entered by the user.
string
is_focused
A boolean that tracks whether the input field is currently focused by the user.
boolean
dropdown_open
A boolean indicating whether the country code dropdown is open or closed.
boolean
countries
A list of countries with their respective country codes and flag image URLs. This is used to populate the country selector dropdown.
Use phone fields to collect users' phone numbers in a standardized format.
Don't use phone fields for non-phone number inputs.
Label the phone field clearly to indicate its purpose.
Avoid using ambiguous or unclear labels for phone fields.
Include placeholder text to show the expected phone number format.
Don't rely solely on placeholder text for essential instructions.
Provide helper text to explain any specific formatting requirements.
Don't overload the phone field with too much information.
Ensure the phone field is large enough to be easily tappable or clickable.
Avoid making the phone field too small to interact with comfortably.
Validate input and provide clear error messages when the phone number format is incorrect.
Don't provide generic error messages that don't help users understand the issue.
Keep consistent styling and spacing across all phone fields in the application.
Don't use inconsistent styles that may confuse users.
component_mode
An optional property that can be used to specify a mode for the pagination component, which may affect its behavior or styling depending on the use case.
string
current_page
The currently active page in the pagination. This defines the page that will be highlighted or considered as the "current" page.
number
custom_class
Custom CSS class(es) that can be applied to the pagination component for additional styling or customization.
string
total_pages
The total number of pages available for pagination. This determines how many pages are displayed in the pagination control.
number
type
The pagination style to be used. Different values adjust the layout and behavior of the pagination control.
'simple-slider'
: Displays a simple slider with previous and next buttons.
'buttons'
: Displays previous, next, and page buttons.
'text'
: Displays page numbers in a text format with previous and next buttons.
'text-pages'
: Displays page buttons with previous and next buttons in a text format.
'button-text'
: Displays previous and next buttons along with page buttons, in a button-text format.
'buttons-pages'
: Displays only the previous and next buttons.
'full'
: Displays all page buttons without previous/next buttons.
"button-text" | "buttons" | "buttons-pages" | "full" | "simple-slider" | "text" | "text-pages"
Use the Pagination component when you need to divide large amounts of content across multiple pages.
Avoid using pagination if content can be displayed on a single page without impacting performance or UX.
Ensure clear labeling for each button to make navigation intuitive.
Do not clutter the pagination controls with excessive styling; keep it simple and focused on navigation.
Provide a clear visual indication of the current page to help users understand their position.
Avoid using pagination if a continuous scroll would enhance user experience in a particular context.
Test the Pagination component for keyboard accessibility to ensure it is fully navigable.
Don't hide important information in pagination if users need easy access to all items within the dataset.
Radio Input is used to allow users to select a single option from a set of mutually exclusive choices.
Radio inputs are used when a user needs to select a single option from a list. They are ideal for scenarios where only one choice is allowed, such as in forms, surveys, and settings where users must choose one option among several.
Radio inputs are presented in groups, with each input representing a unique option. Users can select one input from the group, and choosing a new option will automatically deselect any previously selected option within that group. Each radio input includes a visible circle, a label, and may feature additional elements like subtitles or trailing icons for added context.
aria_label
The aria-label for the radio button input. This is used for accessibility purposes, allowing screen readers to describe the radio button when it does not have a visible label.
string
checked
Indicates whether the radio button is selected or not. This prop controls the checked state of the radio button.
boolean
component_mode
A mode for the radio button component, which can be used to define specific functionality or appearance based on different modes (e.g., "edit", "view", etc.).
string
custom_class
A custom CSS class that will be added to the radio button container. This allows for additional customization and styling beyond the default styles.
string
group_name
The name of the radio button group. This is used to group multiple radio buttons together, allowing only one selection within the group.
string
input_id
The ID for the input element (radio button). This prop is used to associate the <label>
with the corresponding <input>
element for accessibility and form functionality.
string
radio_status
The status of the radio button, such as "disabled" or other custom states. This prop can be used to apply different styles or behavior depending on the radio button's status.
string
size
The size of the radio button. Possible values can be 'sm', 'md', or 'lg', where 'sm' is small, 'md' is medium, and 'lg' is large. This prop adjusts the size of the radio button.
string
supporting
Additional supporting text that can be displayed alongside the title. This prop is optional and is used for any extra information or description related to the radio button option.
string
title_text
The main label text that will appear next to the radio button. This is a required prop that provides a title for the radio button option.
string
variants
The variant of the radio button. Similar to size, it can be used to define different visual appearances, such as different shapes, borders, or colors.
string
Radio Button Icon: Represents the selectable option within the radio button group. When selected, it indicates the chosen option.
Radio Button Label: The main title or descriptor of the radio button option, providing a summary of what the option represents.
Supporting Text: Additional text that provides context or information related to the radio button option, helping users understand its purpose.
Subtitle: A more detailed description or supplementary information associated with the radio button option.
Use radio inputs when the user needs to select only one option from a set.
Don't use radio inputs for multiple selections; use checkboxes for that purpose.
Label each radio input clearly to indicate the option it represents.
Avoid using ambiguous or unclear labels for radio inputs.
Group related radio inputs together visually and logically.
Don't scatter related radio inputs throughout different parts of the UI.
Ensure radio inputs are large enough to be easily tappable or clickable.
Avoid making radio inputs too small to interact with comfortably.
Use consistent spacing between radio inputs in the same group.
Don't place radio inputs too close together or too far apart, which can hinder usability.
Provide a clear visual indication of the selected state.
Don't leave users guessing which option is currently selected.
Include appropriate aria-labels for accessibility.
Don't neglect accessibility requirements such as focus states and keyboard navigation.
Ensure each radio input has sufficient contrast against its background.
Avoid using low contrast that can make the radio inputs difficult to see.
Segmented Controls are used for areas of the UI that require simple configuration options in a compact manner
Segmented controls are ideal when users need to choose between a few distinct options, such as in settings panels, toolbars, or other interfaces requiring quick configuration changes. They work well for toggling between related options where only one selection is allowed at a time.
Segmented controls present a series of related options in a compact, unified interface. Users select one option, which updates the control’s state to reflect their choice. Each segment displays different states—such as selected or unselected—providing clear visual feedback on the current configuration.
component_mode
Optional parameter that defines a specific mode or variant of the component. options are 'light' or 'dark'.
string
custom_class
Additional CSS class(es) to be applied to the segmented tabs container. Allows for custom styling and modifications.
string
items
A JSON string that will be parsed into an array of strings. Each string represents a tab item. If an item starts with 'fo', it will be rendered as a Material Icons icon; otherwise, it will be rendered as text.
Example: '["Home", "fohouse", "Settings"]'
string
radius_type
Determines the border radius styling of the segmented tabs group. Applied as a CSS class to the container element.
Example: 'rounded'
or 'square'
string
Lead-Icon: Positioned at the start of the segmented control to provide a visual cue related to the content.
Segment Label: Describes the segment, indicating different sections within the control (e.g., "All," "Recent," "Saved").
Divider: Separates the segments visually, creating clear boundaries between each selectable option.
Trail-Icon: Positioned at the end of the segmented control, providing an additional visual element for context or functionality.
Dos
Don'ts
Use segmented controls to group related options that are mutually exclusive.
Don't use segmented controls for actions that can be performed simultaneously.
Label each segment clearly to indicate its purpose.
Avoid using vague or unclear labels for segments.
Ensure each segment is large enough to be easily tapped or clicked.
Don't make segments too small to interact with comfortably.
Use segmented controls in contexts where quick and frequent configuration changes are needed.
Avoid using segmented controls for complex configurations that require detailed input.
Provide visual feedback to indicate the selected segment.
Don't leave the user guessing which segment is currently selected.
Keep the number of segments manageable to avoid overwhelming the user.
Don't use too many segments, which can reduce usability and clarity.
Select Input Field allows users to choose an option from a predefined list, making it easy to select a specific value while ensuring data consistency.
Select fields are used in forms and other input scenarios where users need to choose from a predefined list of options. They are especially useful in situations with many options, as a dropdown list conserves space and simplifies the selection process.
A select field component typically includes a label, a dropdown list of options, and optional elements like placeholder text and helper text to assist users. It can display different states, such as focused, filled, or error, to indicate its current status. The select field can be configured to allow single or multiple selections, depending on the specific requirement.
aria_label
Provides an accessible label for screen readers. It helps improve accessibility by describing the button's purpose for users with disabilities.
string
button_id
The id
attribute of the select button. It helps uniquely identify the button and is typically used for accessibility purposes or styling.
string
component_mode
A mode or state that can be used to modify the component’s behavior or appearance based on different configurations, such as ‘read-only’ or ‘edit’.
string
custom_class
A custom CSS class to be applied to the component for additional styling customization.
string
disabled
If set to true
, the select dropdown will be disabled, preventing user interaction.
boolean
error
A string that determines if there is an error related to the select input. This value can be used to apply specific styling or logic for error states.
string
error_message
A message that will be displayed when the error
prop is set, typically used to display validation errors.
string
helper_text
Additional text that provides guidance or hints to the user, usually displayed below the select input field.
string
label
The text that will be displayed as the label for the select input. It provides a description or instruction for the user about the input field.
string
options
A JSON string representing an array of options to be displayed in the dropdown. Each option is displayed as a clickable item. Ensure the string is valid JSON formatted like ["Option1", "Option2", "Option3"]
.
string
selected
The currently selected option from the dropdown. This value is displayed on the button as the selected option.
string
size
Specifies the size of the input field (e.g., small
, medium
, large
). This can be used to apply different sizing classes.
string
Label: Indicates the purpose of the dropdown, labeled as "Select" in this example.
Placeholder: Provides guidance on the action, displaying text like "Select Option" within the dropdown box before any option is selected.
Lead-Icon: Positioned at the beginning of the dropdown, offering a visual cue related to the dropdown’s function.
Dropdown Icon: A visual indicator (typically a down arrow) showing that additional options are available upon interaction.
Caption: Additional helper or footer text below the dropdown, offering more details or context for the user.
Use select fields to present users with a list of options to choose from.
Don't use select fields for inputs that are better suited to other input types, like text fields or radio buttons.
Label the select field clearly to indicate its purpose.
Avoid using ambiguous or unclear labels for select fields.
Include placeholder text to guide users on what to select.
Don't rely solely on placeholder text for essential instructions.
Provide helper text to explain any specific instructions or requirements.
Don't overload the select field with too much information.
Ensure the select field is large enough to be easily tappable or clickable.
Avoid making the select field too small to interact with comfortably.
Use multiple select option when users need to select more than one option.
Don't force users to use a single select field when multiple selections are needed.
Validate input and provide clear error messages when the selection is incorrect.
Don't provide generic error messages that don't help users understand the issue.
Keep consistent styling and spacing across all select fields in the application.
Don't use inconsistent styles that may confuse users.
Quick Select components are used to provide users with a fast way to choose from a list of predefined options.
Quick Select components are ideal for scenarios where users need to choose an option swiftly from a list, such as in navigation menus, settings, or any interface requiring quick access to options. This component can be styled as a button, icon, link, or a combination, depending on the context and design needs.
A Quick Select component includes a visible trigger (such as a button, icon, or link) that opens a dropdown list of options when clicked. Users select an option from the list, and the component updates to reflect the chosen item. Optional elements like leading icons, labels, or titles can be added to provide further context or functionality, enhancing the user experience.
aria_label
An optional aria-label for better accessibility, providing a label for screen readers.
string
button_id
The unique ID of the dropdown button, used for accessibility and form submission purposes.
string
component_mode
A custom mode for the component that allows for further customization or style variations.
string
custom_class
An optional custom class to apply additional styling to the dropdown component.
string
disabled
Disables the dropdown, preventing the user from interacting
boolean
error
Displays an error message below the dropdown when provided. Used for validation or feedback.
string
helper_text
Additional information or a hint that appears below the dropdown to assist the user.
string
icon_mode
When true
, it activates an icon-based mode where the dropdown options are visually represented by icons instead of text.
boolean
label
The label displayed above the dropdown, indicating the purpose of the field.
string
options
A JSON string representing an array of options to display in the dropdown. The string is parsed into an array.
string
selected
The currently selected option from the dropdown. If no option is selected, it can be an empty string.
string
size
Defines the size of the dropdown, allowing it to be either small or medium.
"medium" | "small"
type
Defines the background style for the dropdown, either transparent or white.
"bg-transparent" | "bg-white"
Label: Provides a title or description for the dropdown, helping users understand the purpose of the selection.
Lead-Icon: Positioned before the dropdown text, visually indicating the context or category of the options within the dropdown.
Placeholder: Displays default or prompt text within the dropdown, guiding users on what to select.
Dropdown Icon: Positioned at the right of the dropdown, indicating that there are additional options available.
Use Quick Select components for fast access to a list of options.
Don't use Quick Select components for complex forms or multi-step processes.
Label the Quick Select component clearly to indicate its purpose.
Avoid using ambiguous or unclear labels for Quick Select components.
Ensure the trigger element is large enough to be easily tappable or clickable.
Don't make the trigger element too small to interact with comfortably.
Provide clear visual feedback when an option is selected.
Don't leave users guessing whether their selection was successful.
Use consistent styling and spacing across all Quick Select components in the application.
Don't use inconsistent styles that may confuse users.
Validate input and provide clear error messages when necessary.
Don't provide generic error messages that don't help users understand the issue.
Include appropriate aria-labels for accessibility.
Don't neglect accessibility requirements such as focus states and keyboard navigation.
Ensure each Quick Select component has sufficient contrast against its background.
Avoid using low contrast that can make the component difficult to see.
Search Input Field is used to allow users to enter search queries and filter through content.
Search fields are used in applications where users need to search for information, such as on websites, in databases, or in content-heavy applications. They are ideal for scenarios requiring quick and efficient information retrieval.
A search field component typically includes a label, an input area for entering search queries, and optional elements like a clear button and helper text for guidance. It may also feature different states, such as focused, filled, or error, to reflect its current status. Search fields enable users to quickly locate specific information by entering keywords or phrases, streamlining their search experience.
aria_label
The aria-label
attribute for the search input element, used to enhance accessibility by providing a textual description.
string
button_aria_label
The aria-label
attribute for the buttons in the component, which helps provide a clear description for screen readers.
string
button_id
The ID to be assigned to the button elements for accessibility and targeting purposes.
string
component_mode
An optional property for specifying a particular mode or variant of the component, which can be used to alter its appearance or behavior based on the context.
string
custom_class
A string of additional custom CSS classes that can be applied to the input container for further styling customization.
string
error_message
Custom error message displayed when the input field has an error. Appears below the input if has_error
is true
.
string
has_error
A boolean flag indicating whether the input field has an error. If true
, it triggers error styling and the error message display.
boolean
helper_text
Text displayed below the input field to assist users, such as instructions or tips.
string
input_status
Specifies the status of the input field, e.g., "valid" or "invalid". This can be used to apply custom styling based on the field’s state.
string
label
The label text for the search input. This label is displayed above the input field.
string
placeholder
The placeholder text to be displayed inside the input field when it is empty. Default is "Search".
string
show_button
A boolean flag to control the visibility of the "Search" button. If true
, the button is shown; otherwise, it is hidden.
boolean
size
Specifies the size of the input field. Default is 'sm' (small). Can be adjusted to other sizes like 'md' (medium) or 'lg' (large) depending on the desired appearance.
string
Label: Describes the function or purpose of the search field, here labeled as "Search."
Lead-Icon: An icon placed at the beginning of the input field, usually representing the action or purpose, like a magnifying glass for search.
Placeholder: Text that appears within the input field when it’s empty, providing a hint or example for what to type, such as "Search."
Button: A clickable element labeled "Search" that initiates the search action when pressed.
Caption: Additional helper or footer text below the field, providing more context or instructions to the user.
Use search fields to allow users to quickly find specific information.
Don't use search fields for inputs that are not related to search or query purposes.
Label the search field clearly to indicate its purpose.
Avoid using ambiguous or unclear labels for search fields.
Include a placeholder text to guide users on what to search for.
Don't rely solely on placeholder text for essential instructions.
Provide a clear button to allow users to quickly clear the search input.
Don't omit the clear button if the search input field is long or complex.
Ensure the search field is large enough to be easily tappable or clickable.
Avoid making the search field too small to interact with comfortably.
Use helper text to provide additional context or instructions, if necessary.
Don't overload the search field with too much information.
Validate input and provide clear error messages when necessary.
Don't provide generic error messages that don't help users understand the issue.
Keep consistent styling and spacing across all search fields in the application.
Don't use inconsistent styles that may confuse users.
Sliders are used to allow users to select a value from a range by dragging a handle along a track.
Sliders are used in interfaces where users need to select a value or range within a defined limit. They are ideal for adjustable settings like volume control, brightness, price ranges, or any interactive element requiring a range input.
A slider component consists of a track and a draggable handle that users can move to select a specific value, which is visually indicated along the track. Sliders can be customized to display labels in various positions and to show different value ranges, providing flexibility in presentation and functionality.
component_mode
Defines the mode of the component (e.g., dark
, light
). Used to apply specific styles or behaviors based on the mode.
string
custom_class
A custom CSS class that can be added to the component for additional styling or theming.
string
min
The minimum value of the range slider. Defaults to 0.
number
max
The maximum value of the range slider. Defaults to 100.
number
step
The increment step between each value in the range slider. Defaults to 1.
number
initial_min
The initial minimum value when the component is first rendered. Defaults to 0.
number
initial_max
The initial maximum value when the component is first rendered. Defaults to 100.
number
size
Specifies the size of the range slider (e.g., small
, medium
, large
). This prop can be used for custom styling
string
tooltip_position
Specifies the position of the tooltip relative to the range slider (e.g., top
, bottom
, left
, right
). Used to position the tooltip on the slider
string
left_input_id
The unique identifier for the left (min) input element. This ID is used for the label’s htmlFor
attribute and can be useful for accessibility.
string
right_input_id
The unique identifier for the right (max) input element. This ID is used for the label’s htmlFor
attribute and can be useful for accessibility.
string
left_aria_label
The ARIA label for the left (min) input element. Provides an accessible description for screen readers.
string
right_aria_label
The ARIA label for the right (max) input element. Provides an accessible description for screen readers.
string
Handles: These are interactive elements that users can drag along the slider's track to adjust the values.
Track: This is the line that represents the range of values available on the slider, guiding the movement of the handles.
Tooltip: This displays the selected value directly above the handle, providing real-time feedback as the handle is adjusted.
Percentage Label: Indicates the current selected value in percentage form, offering a clear visual reference for the slider's position on the scale.
Use sliders for selecting values within a range.
Don't use sliders for selecting discrete, non-sequential values.
Label the slider clearly to indicate its purpose.
Avoid using ambiguous or unclear labels for sliders.
Ensure the slider is large enough to be easily draggable.
Don't make the slider handle too small to interact with comfortably.
Provide visual feedback to indicate the selected value.
Don't leave users guessing about the current value.
Use consistent styling and spacing across all sliders in the application.
Don't use inconsistent styles that may confuse users.
Update the slider in real-time as the handle is dragged.
Don't use sliders if you cannot provide real-time updates.
Toggle Switch is used to turn a setting on or off. It provides a clear visual indication of the current state.
Toggle switches are used when users need to make a binary choice, such as turning a feature on or off. They are ideal for settings where changes take immediate effect without requiring additional actions, like a submit button. Common use cases include enabling or disabling notifications, switching between dark and light modes, or toggling application modes.
A toggle switch is visualized as a sliding switch that moves between two states, usually labeled "on" and "off." The switch’s position clearly indicates the current state. Toggle switches may also include optional elements like subtitles or icons to add context or functionality, enhancing user understanding of the toggle’s purpose.
Toggle Switch: The main component that allows users to switch between two states.
Knob: The circular element that moves to indicate the toggle state.
Toggle Label: The primary label that describes the purpose of the toggle.
Subtitle: Additional information or description to clarify the function of the toggle.
Text Field allows users to input text into a UI. It is commonly used in forms and dialogs.
Text fields are used in forms and input scenarios where users need to provide information such as names, addresses, passwords, or search queries. They are versatile and can be applied in various contexts, including modal windows, standalone forms, and inline editing.
A text field component typically includes a label, an input area, and optional helper or placeholder text to guide the user. It can display different states—such as focused, filled, or error—to indicate its current status. Text fields are a core interactive element, designed to capture user input accurately and efficiently.
Label: The descriptive text indicating the purpose of the input field.
Placeholder: Temporary text within the input field that gives a hint about the expected input format or content.
Lead-Icon: An optional icon before the input field that provides additional context or helps identify the type of input.
Caption: Additional helper or instructional text below the input field to guide the user.
Trail-Text: Text at the end of the input field that often shows a character count, limit, or related information.
Label: Indicates whether the text field should have a visible label. Labels help users understand what information is expected.
Value: The actual text input by the user or the default value displayed in the text field.
Placeholder: Text displayed inside the text field when it is empty, providing a hint to the user about the expected input.
HelperText: Additional text that provides more information or instructions about the text field.
Unfilled: Default state when the text field is empty and not focused.
Focused-Filled: State when the text field is filled and focused.
Filled: State when the text field is filled but not focused.
Error: State indicating that there is an error with the input.
Disabled: State indicating that the text field is not interactive.
Focused-Unfilled: State when the text field is empty but focused.
Default: Standard size for most use cases.
Small: Smaller variant for compact spaces or less prominent input fields.
No: Default state with no background.
Yes: Background enabled for additional emphasis or aesthetic purposes.
Text Area is a multi-line text input component used to capture long-form user input.
Text area fields are used in forms and input scenarios where users need to provide larger amounts of text, such as comments, descriptions, or messages. They are ideal for situations requiring more space than a standard text field, enabling users to input detailed information.
A text area field component typically includes a label, a multi-line input area, and optional elements like helper or placeholder text for user guidance. It can display different states, such as focused, filled, or error, indicating its current status. Text area fields are essential interactive elements in forms and interfaces where extensive user input is needed.
Label: A title or descriptor for the input field, guiding users on what information to enter.
Lead-Icon: An optional icon that provides additional context or represents the type of input required.
Placeholder: Sample text displayed within the input field that hints at the expected input format or content.
Caption: Helper or footer text that offers further instructions or clarifications for the input.
Trail-Text: A counter or indicator often used to show the number of characters entered or remaining, providing feedback on input limits.
A sticky bar is a fixed navigation element that provides continuous access to essential actions, links, or tools as users scroll through a page.
Sticky bars are used to provide persistent access to key actions, notifications, or navigation options as users scroll through a page. They are ideal for pages with extensive content or long scrollable areas, ensuring critical elements remain accessible without interrupting the user’s workflow.
A sticky bar remains fixed at the top, bottom, or edge of the screen as users scroll through the content. It typically includes interactive elements like buttons, links, or icons that enable quick actions or navigation. Optional features such as collapsibility or auto-hide can be configured to enhance the user experience by maximizing screen space when the bar is not actively needed. The sticky bar can adapt to different screen sizes and layouts, maintaining usability across devices.
Divider Lines: Thin vertical lines used to visually separate sections and group related elements, enhancing clarity and organization.
Services Icon and Label: A grid icon paired with a "Services" label, providing a direct link to a centralized service hub.
Shotcuts: A sequence of links provides easy access, redirecting users to pages based on the content and the selected link.
Navigation Links:
Locations: A pin icon with the "Locations" label for accessing physical locations or map-related services.
Newsroom: A document icon with the "Newsroom" label, linking to news or updates.
Contact Us: A mail icon paired with "Contact Us," offering a way to connect with support or service teams.
Chat Icon: A speech bubble icon for initiating live chat or accessing FAQs.
External Links and Tools:
Dubai.ae: A text link for accessing the main government portal.
DubaAI Icon: A circular icon with "AI," likely linking to artificial intelligence-based services or tools.
04 - Voice of customer: A unified platform for Dubai entities to connect with customers and gather their feedback (suggestions, complaints, comments).
Happiness Meter: Representing user satisfaction or feedback, providing quick access to a feedback feature.
The stickybar component turns to mobile view @ the 1024 breakpoint
Tabs organize content into separate sections within the same interface, allowing users to switch between views without navigating away from the page.
Use Tabs to organize related content that is too complex to display all at once. They are ideal for settings panels, dashboards, product information pages, and any interface where users need to toggle between multiple sections within a single view.
Tabs are arranged in a row, with each tab representing a different content section. When a tab is selected, it becomes visually highlighted, and the associated content is displayed below. Only one tab's content is visible at a time, which helps keep the interface clean and manageable.
Active Tab: The currently selected tab, visually distinct to indicate that it is in focus or currently being viewed.
Inactive Tab: Tabs that are not selected, styled to show that they are not active, often with a more muted appearance.
Badge: A small label, often numerical, indicating additional information related to the tab, such as notifications or counts.
Lead-Icon: An icon placed before the tab text to visually represent the content or functionality associated with the tab.
Label: The text descriptor of the tab, providing a clear indication of the tab's purpose or content.
aria_label
Defines an accessible label for screen readers, providing additional context for users with assistive technologies.
string
checked
Determines whether the toggle switch is initially checked (on) or not (off).
boolean
component_mode
A mode or variant setting that might be used to apply different styles or behaviors based on predefined themes or configurations.
string
custom_class
Allows adding custom CSS classes to modify the appearance of the toggle. Defaults to an empty string.
string
group_name
Specifies the name attribute for the input, which is useful when grouping multiple toggle buttons together (e.g., in a radio group).
string
input_id
Sets the id
attribute for the input element, allowing it to be uniquely identified in the DOM.
string
size
Defines the size of the toggle switch. Possible values could be 'sm'
, 'md'
, or 'lg'
.
string
Use toggle switches for settings that can be turned on or off.
Don't use toggle switches for actions that require multiple steps or confirmation.
Label each toggle switch clearly to indicate its function.
Avoid using ambiguous or unclear labels for toggle switches.
Ensure toggle switches are large enough to be easily tappable or clickable.
Don't make toggle switches too small to interact with comfortably.
Provide a clear visual indication of the toggle switch's state.
Don't leave users guessing whether a feature is enabled or disabled.
Group related toggle switches together visually and logically.
Don't scatter related toggle switches throughout different parts of the UI.
Use consistent spacing between toggle switches in the same group.
Don't place toggle switches too close together or too far apart, which can hinder usability.
Include appropriate aria-labels for accessibility.
Don't neglect accessibility requirements such as focus states and keyboard navigation.
Ensure each toggle switch has sufficient contrast against its background.
Avoid using low contrast that can make the toggle switches difficult to see.
aria_label
The ARIA label for accessibility. It provides a textual description of the input field for screen readers to improve accessibility for users with disabilities.
string
component_mode
Defines the mode in which the component should behave (e.g., 'edit'
, 'view'
). This can be used for switching between different states or appearances.
string
custom_class
A custom CSS class that can be applied to the input container for further customization of the component's styling.
string
error_message
The message displayed when the input has a validation error, informing the user what went wrong.
string
helper_text
Additional text that can be shown below the input field, often used to provide helpful information or guidance to the user.
string
input_id
The unique identifier for the input field. It is used for associating the label with the input and can also be used for targeting the field programmatically.
string
input_status
Indicates the status of the input field, such as 'valid'
, 'invalid'
, 'disabled'
, etc., which affects the field's styling or interaction.
string
label
The label text displayed for the input field. It helps users understand the purpose of the input.
string
placeholder
The placeholder text that appears in the input field when it is empty. This provides a hint for what type of input is expected.
string
size
Specifies the size of the input field, typically values like 'small'
, 'medium'
, or 'large'
. This adjusts the width or height of the input to fit the design.
string
type
Specifies the type of input, such as 'text'
, 'password'
, 'email'
, etc. It determines the input field's behavior and appearance.
string
validation_type
Defines the type of validation applied to the input field (e.g., 'required', 'email', 'minLength', etc.). It is used to determine the visual style or validation behavior.
string
value
The current value of the input field. It represents what the user has entered or is displayed in the field.
string
Use clear and concise labels that describe the expected input.
Don't use ambiguous or unclear labels.
Provide placeholder text to give users an example of the expected input format.
Don't rely solely on placeholder text for essential instructions.
Ensure text fields are large enough to be easily tappable or clickable.
Avoid making text fields too small to interact with comfortably.
Use helper text to provide additional context or instructions.
Don't overload the text field with too much information.
Ensure text fields have a visible focus state to aid keyboard navigation.
Don't ignore accessibility requirements, such as contrast and focus indicators.
Validate input and provide clear error messages when necessary.
Don't provide generic error messages that don't help users understand the issue.
Keep consistent styling and spacing across all text fields in the application.
Don't use inconsistent styles that may confuse users.
aria_label
An optional string that provides an accessible label for the input field, improving accessibility for screen readers. It helps users with visual impairments understand the purpose of the input field.
string
component_mode
An optional string that can be used to apply a specific mode or variation of the component, such as a 'light' or 'dark' state, for customization.
string
custom_class
A string that allows you to pass custom CSS classes to further customize the styling of the input container.
string
enable_rich_editor
A boolean value that determines whether to enable a rich text editor (using the Quill library). If true
, the Quill editor is rendered; if false
, a standard textarea is displayed.
boolean
error_message
A string containing an error message to be displayed when the input validation fails. This will appear below the input field when an error occurs.
string
helper_text
A string providing additional guidance or information about the input field. It can be displayed below the input to assist the user.
string
input_id
A unique string identifier for the input field. This is used to link the label with the input and for accessibility purposes.
string
input_status
A string that allows customization of the input’s visual appearance depending on its status (e.g., active, disabled, etc.). This is used for styling purposes.
string
label
A string that sets the label text for the textarea or rich text editor. This is displayed above the input field to provide context or instructions.
string
max_characters
A number specifying the maximum allowed characters in the input field. This is used to restrict the user’s input and is displayed in the helper or error message.
number
placeholder
A string that sets the placeholder text inside the textarea or rich text editor when it is empty.
string
validation_type
An optional string that defines the type of validation applied to the input. It could affect the styling or behavior based on different validation scenarios.
string
value
The initial value of the textarea or rich text editor. It will bind to the content inside the input and can be used to set its initial state.
string
Use text area fields for inputs that require multiple lines of text.
Don't use text area fields for short or single-line inputs; use standard text fields for those.
Provide a clear and concise label that describes the expected input.
Avoid using ambiguous or unclear labels for text area fields.
Include placeholder text to give users an example of the expected input format.
Don't rely solely on placeholder text for essential instructions.
Ensure text area fields are large enough to be easily tappable or clickable.
Avoid making text area fields too small to interact with comfortably.
Use helper text to provide additional context or instructions.
Don't overload the text area field with too much information.
Validate input and provide clear error messages when necessary.
Don't provide generic error messages that don't help users understand the issue.
Keep consistent styling and spacing across all text area fields in the application.
Don't use inconsistent styles that may confuse users.
accessibilityIconAlt
Alternative text for the accessibility icon for accessibility
string
accessibilityIconHref
URL destination for the accessibility icon link
string
accessibilityIconSrc
Source URL for the accessibility icon image
string
accessibilityIconTooltip
Tooltip text that appears when hovering over the accessibility icon
string
aiIconAlt
Alternative text for the AI icon for accessibility
string
aiIconHref
URL destination for the AI icon link
string
aiIconSrc
Source URL for the AI icon image
string
aiIconTooltip
Tooltip text that appears when hovering over the AI icon
string
chatIconAlt
Alternative text for the chat icon for accessibility
string
chatIconHref
URL destination for the chat icon link
string
chatIconSrc
Source URL for the chat icon image
string
chatIconTooltip
Tooltip text that appears when hovering over the chat icon
string
firstLogoAlt
Alternative text for the first logo for accessibility
string
firstLogoHref
URL destination for the first logo link
string
firstLogoSrc
Source URL for the first logo image
string
firstLogoTooltip
Tooltip text that appears when hovering over the first logo
string
happinessIconAlt
Alternative text for the happiness icon for
string
happinessIconHref
URL destination for the happiness icon link
string
happinessIconSrc
Source URL for the happiness icon image
string
happinessIconTooltip
Tooltip text that appears when hovering over the happiness icon
string
locationButtonHref
URL destination for the location button link
string
locationButtonIcon
Icon name/class to be displayed at the start of the location button
string
locationButtonText
Text label displayed on the location button
string
newsButtonHref
URL destination for the news button link
string
newsButtonIcon
Icon name/class to be displayed at the start of the news button
string
newsButtonText
Text label displayed on the news button
string
secondLogoAlt
Alternative text for the second logo for accessibility
string
secondLogoHref
URL destination for the second logo link
string
secondLogoSrc
Source URL for the second logo image
string
secondLogoTooltip
Tooltip text that appears when hovering over the second logo
string
servicesIconAlt
Alternative text for the services icon for accessibility
string
servicesIconHref
URL destination for the services icon link
string
servicesIconSrc
Source URL for the services icon image
string
servicesIconText
Optional text label displayed below the services icon
string
servicesIconTooltip
Tooltip text that appears when hovering over the services icon
string
thirdLogoAlt
Alternative text for the third logo for accessibility
string
thirdLogoHref
URL destination for the third logo link
string
thirdLogoSrc
Source URL for the third logo image
string
thirdLogoTooltip
Tooltip text that appears when hovering over the third logo
string
Use step indicators to guide users through multi-step processes.
Don't use step indicators for single-step processes.
Label each step clearly to indicate its purpose.
Avoid using ambiguous or unclear labels for steps.
Ensure step indicators are large enough to be easily noticeable.
Don't make step indicators too small or difficult to see.
Provide visual feedback to indicate the current, completed, and upcoming steps.
Don't leave users guessing which step they are on.
Use consistent styling and spacing across all step indicators in the application.
Don't use inconsistent styles that may confuse users.
Update the step indicator in real-time as the user progresses through the steps.
Don't use step indicators if you cannot provide real-time updates.
Use clear, concise labels for each tab to improve user understanding.
Don’t overload the interface with too many tabs; keep it manageable, ideally with 4-6 tabs or fewer.
Ensure a distinct visual indicator for the active tab, such as a color or underline.
Don’t rely solely on color to indicate the active tab; consider adding an underline for accessibility.
Keep tabs within the same content category or closely related topics.
Don’t use tabs to display drastically different content types that may confuse users.
Place tabs at the top of the content section so they’re easily accessible.
Don’t place tabs where users must scroll to see them; ensure they are visible without extra effort.
Step indicators are used to show users their current position within a sequence of steps.
Step indicators are used in multi-step processes to guide users through each stage, making them ideal for forms, checkout processes, and workflows. They visually represent progress, helping users understand which steps are completed, which are current, and which are remaining.
A step indicator component typically shows a series of steps represented by numbers, icons, or labels. The current step is highlighted, while completed and upcoming steps have distinct visual markers. The component can be configured to display steps horizontally or vertically, and may include optional text labels to provide additional context for each step.
Complete: Indicates a completed step in the process, typically shown with a checkmark or a specific color to signify completion.
Current: Highlights the step currently in progress or being viewed, providing a visual indication of the active step.
Dashed Lines: Connects steps to indicate progression. Dashed styling suggests steps that are yet to be completed.
Default: Represents steps that are pending, often displayed with a neutral or inactive style to indicate future actions.
Use step indicators to guide users through multi-step processes.
Don't use step indicators for single-step processes.
Label each step clearly to indicate its purpose.
Avoid using ambiguous or unclear labels for steps.
Ensure step indicators are large enough to be easily noticeable.
Don't make step indicators too small or difficult to see.
Provide visual feedback to indicate the current, completed, and upcoming steps.
Don't leave users guessing which step they are on.
Use consistent styling and spacing across all step indicators in the application.
Don't use inconsistent styles that may confuse users.
Update the step indicator in real-time as the user progresses through the steps.
Don't use step indicators if you cannot provide real-time updates.
Tooltips are used to provide additional information when users hover over, focus on, or tap an element.
Tooltips are used to provide contextual information or explanations about an element when users interact with it. They are ideal for offering hints, definitions, or additional details that may not be immediately visible, enhancing the user experience by providing on-demand assistance without adding clutter to the interface.
A tooltip component appears as a small box with text when a user hovers over, focuses on, or taps an element. It typically displays a brief description or hint related to the element. Tooltips can be positioned in various directions relative to the element and may include headers for structured information when needed.
component_mode
Can be used to apply specific styles or behavior to the tooltip based on different UI modes. Example: Light mode, dark mode, or any other custom mode that affects appearance.
string
custom_class
Allows adding a custom CSS class to the tooltip container for additional styling.
string
description
A brief explanatory text shown inside the tooltip along with the title.
string
position
Determines where the tooltip appears relative to the element it is attached to.
'top'
: Tooltip appears above the element.
'bottom'
: Tooltip appears below the element.
'left'
: Tooltip appears to the left of the element.
'right'
: Tooltip appears to the right of the element.
"bottom" | "left" | "right" | "top"
title_text
The title of the tooltip that appears when the user hovers over the component. It is displayed in bold.
string
Label: The text or content inside the tooltip that provides information or guidance to the user.
Container: The box that surrounds the label, giving it a distinct background to stand out from the rest of the interface.
Pointer: A small triangular element that visually links the tooltip container to the element it describes or provides context for.
Use tooltips to provide additional information or context.
Don't use tooltips for essential information that must always be visible.
Keep tooltip text concise and to the point.
Avoid long paragraphs or overly detailed information in tooltips.
Ensure tooltips are easily visible and readable.
Don't place tooltips in positions where they might be obscured or difficult to see.
Use consistent styling for all tooltips in the application.
Don't use inconsistent styles that may confuse users.
Provide clear visual indicators for elements that have tooltips.
Don't leave users guessing whether an element has a tooltip or not.
Ensure tooltips are accessible via keyboard navigation.
Don't make tooltips accessible only via mouse interactions.
type
Defines the style of the tab. It can either be text
(just the text of the tab) or text-icon
(a combination of text and an icon next to the text). Defaults to 'text'
.
string
hover_style
Specifies the hover style for the tabs. Options include different background or border styles that change when a tab is hovered over. Defaults to 'dda-tab-default'
.
'dda-tab-default' | 'dda-tab-filed' | 'dda-tab-underline' | 'dda-tab-underline-filled'
border_bottom
Determines whether a border is shown at the bottom of the tab. Defaults to false
, meaning no border is added.
boolean
custom_class
Allows the user to apply custom CSS classes to the tabs container for additional styling. Defaults to an empty string (no custom class).
string
component_mode
Optionally defines a mode for the component ('light' or 'dark'), which could be used for conditional styling or behavior. Defaults to 'light'
.
string
button_id
An optional ID that can be applied to the button elements of the tabs. Useful for targeting the tabs with specific JavaScript or CSS.
string
aria_label
Defines an accessible label for the tab buttons, improving accessibility by describing the purpose of the buttons for screen readers.
string
type
Defines the style of the tab. It can either be text
(just the text of the tab) or text-icon
(a combination of text and an icon next to the text). Defaults to 'text'
.
string
hover_style
Specifies the hover style for the tabs. Options include different background or border styles that change when a tab is hovered over. Defaults to 'dda-tab-default'
.
'dda-tab-default' | 'dda-tab-filed' | 'dda-tab-underline' | 'dda-tab-underline-filled'
border_bottom
Determines whether a border is shown at the bottom of the tab. Defaults to false
, meaning no border is added.
boolean
custom_class
Allows the user to apply custom CSS classes to the tabs container for additional styling. Defaults to an empty string (no custom class).
string
component_mode
Optionally defines a mode for the component ('light' or 'dark'), which could be used for conditional styling or behavior. Defaults to 'light'
.
string
button_id
An optional ID that can be applied to the button elements of the tabs. Useful for targeting the tabs with specific JavaScript or CSS.
string
aria_label
Defines an accessible label for the tab buttons, improving accessibility by describing the purpose of the buttons for screen readers.
string
Primary
Primary Variant
On-Primary
On-Primary Variant
Primary
On-Primary
Primary Variant
On-Primary Variant
Secondary
Secondary Variant
On-Secondary
On-Secondary Variant
Secondary
On-Secondary
Secondary Variant
On-Secondary Variant
Info Variants
Error Variants
Warning Variants
Success Variants
Surface
Surface Variant
On Surface
On Surface Variant
Surface
Surface Variant
On Surface
On Surface Variant
Disabled
On-Disabled
Disabled
On-Disabled