Toolkit with accessible components, styles, and examples for your next web app

Ariakit retweeted
Testing an animated custom select widget using VoiceOver on iOS. In the first half of the video, you can see that VO doesn't move its virtual cursor to the popup in response to DOM focus. We must wait for the animation to complete before moving DOM focus (second half).
1
2
12
Ariakit retweeted
Testing various Ariakit components with different compositions and CSS transitions. Can you spot all the details here?

ALT Screencast of a menu button labeled "Add to list". It shows the available lists and a "Create list" option when opened. When this option is activated, a dialog opens with a form to create a new list. The dialog has a "Learn more about lists" button that opens another dialog.

2
3
25
Ariakit retweeted
I'm impressed with how easy it is to set up a remote code environment in the browser these days. Here is VSCode running in the browser with terminal panels running install, dev, and test commands in parallel. Everything you need to work on Ariakit by just clicking on a link 🤯

ALT Clicking on a link labeled "Open the project in Gitpod" in a GitHub document navigates to the Gitpod page with VSCode configured and ready to work with the project.

1
3
37
Ariakit retweeted
Virtualized list with keyboard navigation built with Ariakit (work in progress):

ALT Navigating through messages in a chat-like UI using arrow keys.

2
2
32
Appreciation tweet to @diegohaz for the amazing DX he poured into the @ariakitjs codebase. Just TRY IT. It's amazing. The examples files are the source of truth for live playground and the generated codesandboxes + storybook like experience but faster.
2
3
41
Ariakit retweeted
Using the @ariakitjs Menu, Dialog, and Form components with CSS transitions:

ALT A screencast showing a menu button with the label "Add to list", and a badge next to it with the number of selected lists. The menu button gets clicked, opening a menu popup with an "X" item focused. The "X" item gets clicked, closing the menu and moving focus back to the menu button. The menu button gets clicked again, and the items "Future ideas" and "My stack" are selected and deselected. The last item "Create list" is clicked, opening a dialog. Closing the dialog moves focus back to the menu button with the menu popup closed. Trying to submit the dialog without entering a list name shows an error. Submitting a valid name closes the dialog and opens the menu popup again with the newly created list menuitem focused.

1
6
116
Ariakit retweeted
I went a bit further with the dialog example using <details><summary> The dialog can be opened by the user BEFORE JavaScript has finished loading. Once JS loads, the state is synced, and all dialog features are restored (focus management, portal, etc.).

ALT A screencast showing a Google Chrome window with the DevTools open on the network tab: The loaded page has a "View details" button. The button is clicked before JS is loaded, opening a dialog. Once JS loads, the dismiss button in the dialog receives focus.

2
3
25
Ariakit retweeted
Here's a little React trick we use in Ariakit to execute some logic when the Dialog is closed, either by passing a prop or unmounting the component. Complete code in the thread.
2
5
85
Ariakit retweeted
Syncing the Ariakit Dialog state with the URL using React Router. Code example in the thread.

ALT Browser page with a "Log In" button. Clicking on the button opens a dialog and changes the URL. Closing the dialog changes the URL back. Manually changing the URL also opens the dialog.

1
2
25
Ariakit retweeted
Built with Ariakit ✨

ALT Selecting text in a paragraph with the mouse. When the selection is done, it shows a popover above the highlighted text with the buttons "Bookmark", "Edit", and "Share".

2
2
24
Ariakit retweeted
I just published an example of the Ariakit Dialog built with <details><summary>. One cool thing I found: in Google Chrome, you can search the dialog's contents, which automatically expands the details.

ALT Using the browser search to search for "app". A dialog with the title "Apples" automatically opens, highlighting part of the title. The Escape key is pressed to close the search, which moves focus to the dialog. The Tab key is pressed to move focus to the dismiss button. Clicking the dismiss button closes the dialog.

4
4
80
Ariakit retweeted
Published an example of the Dialog component using <details>: ariakit.org/examples/dialog-… As I said, it's not really accessible without JavaScript enabled, but at least it's not entirely unusable.
2
1
3
Ariakit retweeted
Rendering the Ariakit Popover component as <details>

ALT A screencast where an existing React Popover implementation is updated to use the HTML details element.

2
5
79
Shoutout to @diegohaz, using @ariakitjs even without docs is such a nice experience. The code is very well commented and easy to implement based on the dozens of examples seriously, look at this codesandbox.io/s/ratio-selec…
2
5
18
Coming back here to show how easy it is to build a modal with a smooth transition and still respecting accessibility. @ariakitjs it's really good 🥰
4
3
23
Ariakit retweeted
Just updated the Ariakit contribution guide. This is written as a tutorial and covers all the important aspects of the project workflow. I've actually made UX tests (!) with real people on calls to see if this worked, and the feedback was positive. 👉 github.com/ariakit/ariakit/b…
2
2
26
In a few minutes I made this animated popover with @ariakitjs + @stitchesjs. It's amazing how easy it is to animate these elements, with just a few lines of css. #buildinpublic
1
1
10
Ariakit retweeted
Running ariakit-test-utils in the browser to interact with this custom select component. Click, type, press, and hover. All done through code. ✨

ALT Screencast of a custom select widget being controlled by code.

1
8
100
hi @diegohaz 👋
Testing a component with Jest, React Testing Library, and Ariakit Test Utils.

ALT Writing code to test a textarea field with suggestion popups and showing how the UI would respond to that.

1
1
8
Custom checkbox - a11y + animation with @ariakitjs + @stitchesjs 😍
1
2
19