All Projects → solid → solid-ui

solid / solid-ui

Licence: MIT License
User Interface widgets and utilities for Solid

Programming Languages

typescript
32286 projects
javascript
184084 projects - #8 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to solid-ui

solid-panes
A set of core solid-compatible apps based on solid-ui
Stars: ✭ 97 (-17.09%)
Mutual labels:  running-code
solidos
The operating system for Solid
Stars: ✭ 88 (-24.79%)
Mutual labels:  running-code
solid-auth-client
A browser library for performing authenticated requests to Solid pods
Stars: ✭ 95 (-18.8%)
Mutual labels:  running-code
mashlib
Solid-compatible data mashup library and Data Browser
Stars: ✭ 67 (-42.74%)
Mutual labels:  running-code
solid-tutorial-rdflib.js
Tutorials for using rdflib.js
Stars: ✭ 34 (-70.94%)
Mutual labels:  running-code
Query-Solid
Simple access to data in Solid pods through LDflex expressions
Stars: ✭ 64 (-45.3%)
Mutual labels:  running-code
userguide
User guide for SolidOS Databrowser Frontend
Stars: ✭ 393 (+235.9%)
Mutual labels:  running-code
solid-client
Javascript client library for Solid applications
Stars: ✭ 76 (-35.04%)
Mutual labels:  running-code
solid-takeout-import
Import your Google Takeout (etc) data into your solid pod so you can keep it and use it with Solid apps
Stars: ✭ 37 (-68.38%)
Mutual labels:  running-code
Node Solid Server
Solid server on top of the file-system in NodeJS
Stars: ✭ 1,637 (+1299.15%)
Mutual labels:  running-code
solid-tutorial-angular
melvincarvalho.gitbooks.io/solid-tutorials/content/index.html
Stars: ✭ 15 (-87.18%)
Mutual labels:  running-code

solid-ui

NPM Package

User Interface widgets and utilities for Solid

These are HTML5 widgets which connect to a solid store. Building blocks for solid-based apps. Vanilla JS. Includes large widgets like chat, table, matrix, form fields, and small widgets.

Getting started

In npm-based projects

When including solid-ui in an npm-based project, you can use it with:

  import { ns, rdf,  acl, aclControl, authn, create, dom, icons, log, matrix, media,
  messageArea, infiniteMessageArea, pad, preferences, store, style, table, tabs, utils, widgets, versionInfo
} from 'solid-ui'

Directly in a webpage

Clone this repo, and in the repo root run:

  • npm install
  • npm run build

This will generate a lib/ folder containing, among other artifacts, lib/webpack-bundle.js. Now run npx serve and go to http://localhost:5000/examples/ with your browser to see some examples. See the 'examples' folder for the source code of those examples.

While viewing one of those examples, you can open the web console in your browser and for instance try how you can create a button:

const solidLogo = 'https://solidproject.org/assets/img/solid-emblem.svg'
const myButton = UI.widgets.button(document, solidLogo, 'test', () => window.alert('clicked!'))
UI.widgets.clearElement(document.body)
document.body.appendChild(myButton)

Or a chat widget:

const chatChannel = 'https://example-user.inrupt.net/public/example-chat/index.ttl#this'
const chat = UI.infiniteMessageArea(document, store, UI.rdf.namedNode(chatChannel))
document.body.appendChild(chat)

Or a full ACL Control Box:

const exampleFolder = 'https://example-user.inrupt.net/public/public-control/'
const aclControlBox = UI.aclControl.ACLControlBox5(UI.rdf.namedNode(exampleFolder), { dom: document }, '', store)
document.body.appendChild(aclControlBox)

Documentation

Overview

This has been a place to put any functionality from solid views which has been generalized to be usable in other views.

  • Authentication UI: manage the user's logged in/out state.

  • Discovery: finding the user's stuff, and leaving records of new things

  • Preferences: UI for managing a user's preferences with two axes of defaults

  • An Access Control List widget for Solid ACL system

  • Acess Control Logic

  • Create a new object from modules/extensions which have registered their ability to create things

  • A form system: Forms are defined in RDF, and create/edit RDF data, including form definitions

  • A collection of shortcut namespace objects for a selection of relevant RDF vocabularies.

  • Small atomic widgets (buttons etc) of which the others are constructed.

  • An error message panel

Some of the larger controls include:

  • A chat widget: add discussion to any object. Infinite scroll, embedded images, social reactions, etc etc
  • A people picker widget for choosing a set of people or an existing group
  • A general purpose table display with built-in faceted browsing
  • A two-dimentional matrix of editable live data that extends in both dimensions.
  • A notepad of shared notes for real-time collaboration
  • Drag and drop code for linking things and uploading files
  • A set of tabs for holding other widgets and arbitrary UI elements

The typical style of the widgets is to know what data it has been derived from, allow users to edit it, and to automatically sync with data as it changes in the future. To see how these are used, see the panes which use them within the data browser.

The level of support for this varies.

See also: A short introduction to the Form system

Contributions of bug fixes and new functionality, documentation, and tests are always appreciated.

Development

When developing a component in solid-ui you can test it in isolation using storybook

npm run build
npm run storybook

If there is no story for the component yet, add a new one to ./src/stories.

When you want to test the component within a solid-pane, you can use the development mode of solid-panes or mashlib-dev.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].