@oneonefour/rkui 0.0.0-stage → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +67 -2
- package/THIRD_PARTY_NOTICES.md +60 -0
- package/astro/index.d.ts +14 -0
- package/astro/index.js +153 -0
- package/dist/colors.d.ts +74 -0
- package/dist/colors.js +263 -0
- package/dist/fonts/jetbrains-mono/OFL.txt +93 -0
- package/dist/fonts/jetbrains-mono/jetbrains-mono-greek.woff2 +0 -0
- package/dist/fonts/jetbrains-mono/jetbrains-mono-italic-greek.woff2 +0 -0
- package/dist/fonts/jetbrains-mono/jetbrains-mono-italic-latin.woff2 +0 -0
- package/dist/fonts/jetbrains-mono/jetbrains-mono-italic-symbols.woff2 +0 -0
- package/dist/fonts/jetbrains-mono/jetbrains-mono-latin.woff2 +0 -0
- package/dist/fonts/jetbrains-mono/jetbrains-mono-symbols.woff2 +0 -0
- package/dist/fonts/roboto-slab/LICENSE.txt +202 -0
- package/dist/fonts/roboto-slab/roboto-slab-greek.woff2 +0 -0
- package/dist/fonts/roboto-slab/roboto-slab-latin.woff2 +0 -0
- package/dist/fonts/roboto-slab/roboto-slab-symbols.woff2 +0 -0
- package/dist/fonts/xmind/OFL.txt +93 -0
- package/dist/fonts/xmind/xmind-greek.woff2 +0 -0
- package/dist/fonts/xmind/xmind-italic-greek.woff2 +0 -0
- package/dist/fonts/xmind/xmind-italic-latin.woff2 +0 -0
- package/dist/fonts/xmind/xmind-italic-symbols.woff2 +0 -0
- package/dist/fonts/xmind/xmind-latin.woff2 +0 -0
- package/dist/fonts/xmind/xmind-symbols.woff2 +0 -0
- package/dist/icons/LICENSE-phosphor.txt +21 -0
- package/dist/icons/LICENSE-tabler.txt +21 -0
- package/dist/icons/acorn.svg +1 -0
- package/dist/icons/acorn.vue +1 -0
- package/dist/icons/air-traffic-control.svg +1 -0
- package/dist/icons/air-traffic-control.vue +1 -0
- package/dist/icons/airplane-in-flight.svg +1 -0
- package/dist/icons/airplane-in-flight.vue +1 -0
- package/dist/icons/airplane-landing.svg +1 -0
- package/dist/icons/airplane-landing.vue +1 -0
- package/dist/icons/airplane-takeoff.svg +1 -0
- package/dist/icons/airplane-takeoff.vue +1 -0
- package/dist/icons/airplane-taxiing.svg +1 -0
- package/dist/icons/airplane-taxiing.vue +1 -0
- package/dist/icons/airplane-tilt.svg +1 -0
- package/dist/icons/airplane-tilt.vue +1 -0
- package/dist/icons/airplane.svg +1 -0
- package/dist/icons/airplane.vue +1 -0
- package/dist/icons/ambulance.svg +1 -0
- package/dist/icons/ambulance.vue +1 -0
- package/dist/icons/anchor-simple.svg +1 -0
- package/dist/icons/anchor-simple.vue +1 -0
- package/dist/icons/anchor.svg +1 -0
- package/dist/icons/anchor.vue +1 -0
- package/dist/icons/angle.svg +1 -0
- package/dist/icons/angle.vue +1 -0
- package/dist/icons/aperture.svg +1 -0
- package/dist/icons/aperture.vue +1 -0
- package/dist/icons/app-window.svg +1 -0
- package/dist/icons/app-window.vue +1 -0
- package/dist/icons/approximate-equals.svg +1 -0
- package/dist/icons/approximate-equals.vue +1 -0
- package/dist/icons/arrow-counter-clockwise.svg +1 -0
- package/dist/icons/arrow-counter-clockwise.vue +1 -0
- package/dist/icons/arrow-left.svg +1 -0
- package/dist/icons/arrow-left.vue +1 -0
- package/dist/icons/arrow-right.svg +1 -0
- package/dist/icons/arrow-right.vue +1 -0
- package/dist/icons/arrow-square-out.svg +1 -0
- package/dist/icons/arrow-square-out.vue +1 -0
- package/dist/icons/arrow-up.svg +1 -0
- package/dist/icons/arrow-up.vue +1 -0
- package/dist/icons/arrows-out.svg +1 -0
- package/dist/icons/arrows-out.vue +1 -0
- package/dist/icons/atom.svg +1 -0
- package/dist/icons/atom.vue +1 -0
- package/dist/icons/bank.svg +1 -0
- package/dist/icons/bank.vue +1 -0
- package/dist/icons/barn.svg +1 -0
- package/dist/icons/barn.vue +1 -0
- package/dist/icons/barricade.svg +1 -0
- package/dist/icons/barricade.vue +1 -0
- package/dist/icons/battery-charging.svg +1 -0
- package/dist/icons/battery-charging.vue +1 -0
- package/dist/icons/bezier-curve.svg +1 -0
- package/dist/icons/bezier-curve.vue +1 -0
- package/dist/icons/bicycle.svg +1 -0
- package/dist/icons/bicycle.vue +1 -0
- package/dist/icons/binary.svg +1 -0
- package/dist/icons/binary.vue +1 -0
- package/dist/icons/binoculars.svg +1 -0
- package/dist/icons/binoculars.vue +1 -0
- package/dist/icons/biohazard.svg +1 -0
- package/dist/icons/biohazard.vue +1 -0
- package/dist/icons/bird.svg +1 -0
- package/dist/icons/bird.vue +1 -0
- package/dist/icons/blueprint.svg +1 -0
- package/dist/icons/blueprint.vue +1 -0
- package/dist/icons/boat.svg +1 -0
- package/dist/icons/boat.vue +1 -0
- package/dist/icons/book-open-text.svg +1 -0
- package/dist/icons/book-open-text.vue +1 -0
- package/dist/icons/bounding-box.svg +1 -0
- package/dist/icons/bounding-box.vue +1 -0
- package/dist/icons/brackets-angle.svg +1 -0
- package/dist/icons/brackets-angle.vue +1 -0
- package/dist/icons/brackets-curly.svg +1 -0
- package/dist/icons/brackets-curly.vue +1 -0
- package/dist/icons/brackets-round.svg +1 -0
- package/dist/icons/brackets-round.vue +1 -0
- package/dist/icons/brackets-square.svg +1 -0
- package/dist/icons/brackets-square.vue +1 -0
- package/dist/icons/brain.svg +1 -0
- package/dist/icons/brain.vue +1 -0
- package/dist/icons/bridge.svg +1 -0
- package/dist/icons/bridge.vue +1 -0
- package/dist/icons/briefcase.svg +1 -0
- package/dist/icons/briefcase.vue +1 -0
- package/dist/icons/browser.svg +1 -0
- package/dist/icons/browser.vue +1 -0
- package/dist/icons/bug-beetle.svg +1 -0
- package/dist/icons/bug-beetle.vue +1 -0
- package/dist/icons/bug.svg +1 -0
- package/dist/icons/bug.vue +1 -0
- package/dist/icons/building-apartment.svg +1 -0
- package/dist/icons/building-apartment.vue +1 -0
- package/dist/icons/building-office.svg +1 -0
- package/dist/icons/building-office.vue +1 -0
- package/dist/icons/building.svg +1 -0
- package/dist/icons/building.vue +1 -0
- package/dist/icons/buildings.svg +1 -0
- package/dist/icons/buildings.vue +1 -0
- package/dist/icons/bulldozer.svg +1 -0
- package/dist/icons/bulldozer.vue +1 -0
- package/dist/icons/bus.svg +1 -0
- package/dist/icons/bus.vue +1 -0
- package/dist/icons/butterfly.svg +1 -0
- package/dist/icons/butterfly.vue +1 -0
- package/dist/icons/cable-car.svg +1 -0
- package/dist/icons/cable-car.vue +1 -0
- package/dist/icons/cactus.svg +1 -0
- package/dist/icons/cactus.vue +1 -0
- package/dist/icons/calculator.svg +1 -0
- package/dist/icons/calculator.vue +1 -0
- package/dist/icons/calendar-blank.svg +1 -0
- package/dist/icons/calendar-blank.vue +1 -0
- package/dist/icons/camera.svg +1 -0
- package/dist/icons/camera.vue +1 -0
- package/dist/icons/campfire.svg +1 -0
- package/dist/icons/campfire.vue +1 -0
- package/dist/icons/car-battery.svg +1 -0
- package/dist/icons/car-battery.vue +1 -0
- package/dist/icons/car-profile.svg +1 -0
- package/dist/icons/car-profile.vue +1 -0
- package/dist/icons/car-simple.svg +1 -0
- package/dist/icons/car-simple.vue +1 -0
- package/dist/icons/car.svg +1 -0
- package/dist/icons/car.vue +1 -0
- package/dist/icons/caret-down.svg +1 -0
- package/dist/icons/caret-down.vue +1 -0
- package/dist/icons/caret-left.svg +1 -0
- package/dist/icons/caret-left.vue +1 -0
- package/dist/icons/caret-right.svg +1 -0
- package/dist/icons/caret-right.vue +1 -0
- package/dist/icons/caret-up.svg +1 -0
- package/dist/icons/caret-up.vue +1 -0
- package/dist/icons/cell-tower.svg +1 -0
- package/dist/icons/cell-tower.vue +1 -0
- package/dist/icons/chalkboard-teacher.svg +1 -0
- package/dist/icons/chalkboard-teacher.vue +1 -0
- package/dist/icons/charging-station.svg +1 -0
- package/dist/icons/charging-station.vue +1 -0
- package/dist/icons/chart-bar-horizontal.svg +1 -0
- package/dist/icons/chart-bar-horizontal.vue +1 -0
- package/dist/icons/chart-bar.svg +1 -0
- package/dist/icons/chart-bar.vue +1 -0
- package/dist/icons/chart-donut.svg +1 -0
- package/dist/icons/chart-donut.vue +1 -0
- package/dist/icons/chart-line-down.svg +1 -0
- package/dist/icons/chart-line-down.vue +1 -0
- package/dist/icons/chart-line-up.svg +1 -0
- package/dist/icons/chart-line-up.vue +1 -0
- package/dist/icons/chart-line.svg +1 -0
- package/dist/icons/chart-line.vue +1 -0
- package/dist/icons/chart-pie-slice.svg +1 -0
- package/dist/icons/chart-pie-slice.vue +1 -0
- package/dist/icons/chart-pie.svg +1 -0
- package/dist/icons/chart-pie.vue +1 -0
- package/dist/icons/chart-polar.svg +1 -0
- package/dist/icons/chart-polar.vue +1 -0
- package/dist/icons/chart-scatter.svg +1 -0
- package/dist/icons/chart-scatter.vue +1 -0
- package/dist/icons/check-circle.svg +1 -0
- package/dist/icons/check-circle.vue +1 -0
- package/dist/icons/check.svg +1 -0
- package/dist/icons/check.vue +1 -0
- package/dist/icons/circle-half.svg +1 -0
- package/dist/icons/circle-half.vue +1 -0
- package/dist/icons/circle-notch.svg +1 -0
- package/dist/icons/circle-notch.vue +1 -0
- package/dist/icons/circuitry.svg +1 -0
- package/dist/icons/circuitry.vue +1 -0
- package/dist/icons/city.svg +1 -0
- package/dist/icons/city.vue +1 -0
- package/dist/icons/clock.svg +1 -0
- package/dist/icons/clock.vue +1 -0
- package/dist/icons/closed-captioning.svg +1 -0
- package/dist/icons/closed-captioning.vue +1 -0
- package/dist/icons/cloud-arrow-down.svg +1 -0
- package/dist/icons/cloud-arrow-down.vue +1 -0
- package/dist/icons/cloud-arrow-up.svg +1 -0
- package/dist/icons/cloud-arrow-up.vue +1 -0
- package/dist/icons/cloud-check.svg +1 -0
- package/dist/icons/cloud-check.vue +1 -0
- package/dist/icons/cloud-fog.svg +1 -0
- package/dist/icons/cloud-fog.vue +1 -0
- package/dist/icons/cloud-lightning.svg +1 -0
- package/dist/icons/cloud-lightning.vue +1 -0
- package/dist/icons/cloud-moon.svg +1 -0
- package/dist/icons/cloud-moon.vue +1 -0
- package/dist/icons/cloud-rain.svg +1 -0
- package/dist/icons/cloud-rain.vue +1 -0
- package/dist/icons/cloud-slash.svg +1 -0
- package/dist/icons/cloud-slash.vue +1 -0
- package/dist/icons/cloud-snow.svg +1 -0
- package/dist/icons/cloud-snow.vue +1 -0
- package/dist/icons/cloud-sun.svg +1 -0
- package/dist/icons/cloud-sun.vue +1 -0
- package/dist/icons/cloud-warning.svg +1 -0
- package/dist/icons/cloud-warning.vue +1 -0
- package/dist/icons/cloud-x.svg +1 -0
- package/dist/icons/cloud-x.vue +1 -0
- package/dist/icons/cloud.svg +1 -0
- package/dist/icons/cloud.vue +1 -0
- package/dist/icons/clover.svg +1 -0
- package/dist/icons/clover.vue +1 -0
- package/dist/icons/code-block.svg +1 -0
- package/dist/icons/code-block.vue +1 -0
- package/dist/icons/code-simple.svg +1 -0
- package/dist/icons/code-simple.vue +1 -0
- package/dist/icons/code.svg +1 -0
- package/dist/icons/code.vue +1 -0
- package/dist/icons/columns.svg +1 -0
- package/dist/icons/columns.vue +1 -0
- package/dist/icons/command.svg +1 -0
- package/dist/icons/command.vue +1 -0
- package/dist/icons/compass-rose.svg +1 -0
- package/dist/icons/compass-rose.vue +1 -0
- package/dist/icons/compass-tool.svg +1 -0
- package/dist/icons/compass-tool.vue +1 -0
- package/dist/icons/compass.svg +1 -0
- package/dist/icons/compass.vue +1 -0
- package/dist/icons/computer-tower.svg +1 -0
- package/dist/icons/computer-tower.vue +1 -0
- package/dist/icons/copy.svg +1 -0
- package/dist/icons/copy.vue +1 -0
- package/dist/icons/cow.svg +1 -0
- package/dist/icons/cow.vue +1 -0
- package/dist/icons/cpu.svg +1 -0
- package/dist/icons/cpu.vue +1 -0
- package/dist/icons/crane-tower.svg +1 -0
- package/dist/icons/crane-tower.vue +1 -0
- package/dist/icons/crane.svg +1 -0
- package/dist/icons/crane.vue +1 -0
- package/dist/icons/cube-focus.svg +1 -0
- package/dist/icons/cube-focus.vue +1 -0
- package/dist/icons/cube-transparent.svg +1 -0
- package/dist/icons/cube-transparent.vue +1 -0
- package/dist/icons/cube.svg +1 -0
- package/dist/icons/cube.vue +1 -0
- package/dist/icons/cylinder.svg +1 -0
- package/dist/icons/cylinder.vue +1 -0
- package/dist/icons/database.svg +1 -0
- package/dist/icons/database.vue +1 -0
- package/dist/icons/desktop-tower.svg +1 -0
- package/dist/icons/desktop-tower.vue +1 -0
- package/dist/icons/desktop.svg +1 -0
- package/dist/icons/desktop.vue +1 -0
- package/dist/icons/dice-five.svg +1 -0
- package/dist/icons/dice-five.vue +1 -0
- package/dist/icons/divide.svg +1 -0
- package/dist/icons/divide.vue +1 -0
- package/dist/icons/dna.svg +1 -0
- package/dist/icons/dna.vue +1 -0
- package/dist/icons/download-simple.svg +1 -0
- package/dist/icons/download-simple.vue +1 -0
- package/dist/icons/drone.svg +1 -0
- package/dist/icons/drone.vue +1 -0
- package/dist/icons/drop-half-bottom.svg +1 -0
- package/dist/icons/drop-half-bottom.vue +1 -0
- package/dist/icons/drop-half.svg +1 -0
- package/dist/icons/drop-half.vue +1 -0
- package/dist/icons/drop-simple.svg +1 -0
- package/dist/icons/drop-simple.vue +1 -0
- package/dist/icons/drop-slash.svg +1 -0
- package/dist/icons/drop-slash.vue +1 -0
- package/dist/icons/drop.svg +1 -0
- package/dist/icons/drop.vue +1 -0
- package/dist/icons/engine.svg +1 -0
- package/dist/icons/engine.vue +1 -0
- package/dist/icons/envelope-simple.svg +1 -0
- package/dist/icons/envelope-simple.vue +1 -0
- package/dist/icons/equals.svg +1 -0
- package/dist/icons/equals.vue +1 -0
- package/dist/icons/eye-slash.svg +1 -0
- package/dist/icons/eye-slash.vue +1 -0
- package/dist/icons/eye.svg +1 -0
- package/dist/icons/eye.vue +1 -0
- package/dist/icons/face-mask.svg +1 -0
- package/dist/icons/face-mask.vue +1 -0
- package/dist/icons/factory.svg +1 -0
- package/dist/icons/factory.vue +1 -0
- package/dist/icons/farm.svg +1 -0
- package/dist/icons/farm.vue +1 -0
- package/dist/icons/file-archive.svg +1 -0
- package/dist/icons/file-archive.vue +1 -0
- package/dist/icons/file-arrow-down.svg +1 -0
- package/dist/icons/file-arrow-down.vue +1 -0
- package/dist/icons/file-c-sharp.svg +1 -0
- package/dist/icons/file-c-sharp.vue +1 -0
- package/dist/icons/file-c.svg +1 -0
- package/dist/icons/file-c.vue +1 -0
- package/dist/icons/file-cloud.svg +1 -0
- package/dist/icons/file-cloud.vue +1 -0
- package/dist/icons/file-code.svg +1 -0
- package/dist/icons/file-code.vue +1 -0
- package/dist/icons/file-cpp.svg +1 -0
- package/dist/icons/file-cpp.vue +1 -0
- package/dist/icons/file-css.svg +1 -0
- package/dist/icons/file-css.vue +1 -0
- package/dist/icons/file-csv.svg +1 -0
- package/dist/icons/file-csv.vue +1 -0
- package/dist/icons/file-html.svg +1 -0
- package/dist/icons/file-html.vue +1 -0
- package/dist/icons/file-image.svg +1 -0
- package/dist/icons/file-image.vue +1 -0
- package/dist/icons/file-ini.svg +1 -0
- package/dist/icons/file-ini.vue +1 -0
- package/dist/icons/file-js.svg +1 -0
- package/dist/icons/file-js.vue +1 -0
- package/dist/icons/file-jsx.svg +1 -0
- package/dist/icons/file-jsx.vue +1 -0
- package/dist/icons/file-md.svg +1 -0
- package/dist/icons/file-md.vue +1 -0
- package/dist/icons/file-pdf.svg +1 -0
- package/dist/icons/file-pdf.vue +1 -0
- package/dist/icons/file-py.svg +1 -0
- package/dist/icons/file-py.vue +1 -0
- package/dist/icons/file-rs.svg +1 -0
- package/dist/icons/file-rs.vue +1 -0
- package/dist/icons/file-sql.svg +1 -0
- package/dist/icons/file-sql.vue +1 -0
- package/dist/icons/file-svg.svg +1 -0
- package/dist/icons/file-svg.vue +1 -0
- package/dist/icons/file-text.svg +1 -0
- package/dist/icons/file-text.vue +1 -0
- package/dist/icons/file-ts.svg +1 -0
- package/dist/icons/file-ts.vue +1 -0
- package/dist/icons/file-tsx.svg +1 -0
- package/dist/icons/file-tsx.vue +1 -0
- package/dist/icons/file-txt.svg +1 -0
- package/dist/icons/file-txt.vue +1 -0
- package/dist/icons/file-vue.svg +1 -0
- package/dist/icons/file-vue.vue +1 -0
- package/dist/icons/file-xls.svg +1 -0
- package/dist/icons/file-xls.vue +1 -0
- package/dist/icons/file-zip.svg +1 -0
- package/dist/icons/file-zip.vue +1 -0
- package/dist/icons/fire-simple.svg +1 -0
- package/dist/icons/fire-simple.vue +1 -0
- package/dist/icons/fire-truck.svg +1 -0
- package/dist/icons/fire-truck.vue +1 -0
- package/dist/icons/fire.svg +1 -0
- package/dist/icons/fire.vue +1 -0
- package/dist/icons/fish-simple.svg +1 -0
- package/dist/icons/fish-simple.vue +1 -0
- package/dist/icons/fish.svg +1 -0
- package/dist/icons/fish.vue +1 -0
- package/dist/icons/flame.svg +1 -0
- package/dist/icons/flame.vue +1 -0
- package/dist/icons/flask.svg +1 -0
- package/dist/icons/flask.vue +1 -0
- package/dist/icons/flow-arrow.svg +1 -0
- package/dist/icons/flow-arrow.vue +1 -0
- package/dist/icons/flower-lotus.svg +1 -0
- package/dist/icons/flower-lotus.vue +1 -0
- package/dist/icons/flower-tulip.svg +1 -0
- package/dist/icons/flower-tulip.vue +1 -0
- package/dist/icons/flower.svg +1 -0
- package/dist/icons/flower.vue +1 -0
- package/dist/icons/footprints.svg +1 -0
- package/dist/icons/footprints.vue +1 -0
- package/dist/icons/function.svg +1 -0
- package/dist/icons/function.vue +1 -0
- package/dist/icons/funnel.svg +1 -0
- package/dist/icons/funnel.vue +1 -0
- package/dist/icons/garage.svg +1 -0
- package/dist/icons/garage.vue +1 -0
- package/dist/icons/gas-can.svg +1 -0
- package/dist/icons/gas-can.vue +1 -0
- package/dist/icons/gas-pump.svg +1 -0
- package/dist/icons/gas-pump.vue +1 -0
- package/dist/icons/gauge.svg +1 -0
- package/dist/icons/gauge.vue +1 -0
- package/dist/icons/gear-fine.svg +1 -0
- package/dist/icons/gear-fine.vue +1 -0
- package/dist/icons/gear-six.svg +1 -0
- package/dist/icons/gear-six.vue +1 -0
- package/dist/icons/gear.svg +1 -0
- package/dist/icons/gear.vue +1 -0
- package/dist/icons/git-branch.svg +1 -0
- package/dist/icons/git-branch.vue +1 -0
- package/dist/icons/git-commit.svg +1 -0
- package/dist/icons/git-commit.vue +1 -0
- package/dist/icons/git-diff.svg +1 -0
- package/dist/icons/git-diff.vue +1 -0
- package/dist/icons/git-fork.svg +1 -0
- package/dist/icons/git-fork.vue +1 -0
- package/dist/icons/git-merge.svg +1 -0
- package/dist/icons/git-merge.vue +1 -0
- package/dist/icons/git-pull-request.svg +1 -0
- package/dist/icons/git-pull-request.vue +1 -0
- package/dist/icons/globe-hemisphere-east.svg +1 -0
- package/dist/icons/globe-hemisphere-east.vue +1 -0
- package/dist/icons/globe-hemisphere-west.svg +1 -0
- package/dist/icons/globe-hemisphere-west.vue +1 -0
- package/dist/icons/globe-simple.svg +1 -0
- package/dist/icons/globe-simple.vue +1 -0
- package/dist/icons/globe-stand.svg +1 -0
- package/dist/icons/globe-stand.vue +1 -0
- package/dist/icons/globe.svg +1 -0
- package/dist/icons/globe.vue +1 -0
- package/dist/icons/gps-fix.svg +1 -0
- package/dist/icons/gps-fix.vue +1 -0
- package/dist/icons/gps.svg +1 -0
- package/dist/icons/gps.vue +1 -0
- package/dist/icons/gradient.svg +1 -0
- package/dist/icons/gradient.vue +1 -0
- package/dist/icons/graduation-cap.svg +1 -0
- package/dist/icons/graduation-cap.vue +1 -0
- package/dist/icons/grains-slash.svg +1 -0
- package/dist/icons/grains-slash.vue +1 -0
- package/dist/icons/grains.svg +1 -0
- package/dist/icons/grains.vue +1 -0
- package/dist/icons/graph.svg +1 -0
- package/dist/icons/graph.vue +1 -0
- package/dist/icons/graphics-card.svg +1 -0
- package/dist/icons/graphics-card.vue +1 -0
- package/dist/icons/greater-than-or-equal.svg +1 -0
- package/dist/icons/greater-than-or-equal.vue +1 -0
- package/dist/icons/greater-than.svg +1 -0
- package/dist/icons/greater-than.vue +1 -0
- package/dist/icons/grid-four.svg +1 -0
- package/dist/icons/grid-four.vue +1 -0
- package/dist/icons/grid-nine.svg +1 -0
- package/dist/icons/grid-nine.vue +1 -0
- package/dist/icons/hammer.svg +1 -0
- package/dist/icons/hammer.vue +1 -0
- package/dist/icons/hand-waving.svg +1 -0
- package/dist/icons/hand-waving.vue +1 -0
- package/dist/icons/hard-drive.svg +1 -0
- package/dist/icons/hard-drive.vue +1 -0
- package/dist/icons/hard-drives.svg +1 -0
- package/dist/icons/hard-drives.vue +1 -0
- package/dist/icons/hard-hat.svg +1 -0
- package/dist/icons/hard-hat.vue +1 -0
- package/dist/icons/head-circuit.svg +1 -0
- package/dist/icons/head-circuit.vue +1 -0
- package/dist/icons/hospital.svg +1 -0
- package/dist/icons/hospital.vue +1 -0
- package/dist/icons/house-line.svg +1 -0
- package/dist/icons/house-line.vue +1 -0
- package/dist/icons/house-simple.svg +1 -0
- package/dist/icons/house-simple.vue +1 -0
- package/dist/icons/house.svg +1 -0
- package/dist/icons/house.vue +1 -0
- package/dist/icons/hurricane.svg +1 -0
- package/dist/icons/hurricane.vue +1 -0
- package/dist/icons/identification-card.svg +1 -0
- package/dist/icons/identification-card.vue +1 -0
- package/dist/icons/image.svg +1 -0
- package/dist/icons/image.vue +1 -0
- package/dist/icons/images.svg +1 -0
- package/dist/icons/images.vue +1 -0
- package/dist/icons/infinity.svg +1 -0
- package/dist/icons/infinity.vue +1 -0
- package/dist/icons/info.svg +1 -0
- package/dist/icons/info.vue +1 -0
- package/dist/icons/intersect-three.svg +1 -0
- package/dist/icons/intersect-three.vue +1 -0
- package/dist/icons/intersection.svg +1 -0
- package/dist/icons/intersection.vue +1 -0
- package/dist/icons/island.svg +1 -0
- package/dist/icons/island.vue +1 -0
- package/dist/icons/jeep.svg +1 -0
- package/dist/icons/jeep.vue +1 -0
- package/dist/icons/kanban.svg +1 -0
- package/dist/icons/kanban.vue +1 -0
- package/dist/icons/keyboard.svg +1 -0
- package/dist/icons/keyboard.vue +1 -0
- package/dist/icons/laptop.svg +1 -0
- package/dist/icons/laptop.vue +1 -0
- package/dist/icons/leaf.svg +1 -0
- package/dist/icons/leaf.vue +1 -0
- package/dist/icons/less-than-or-equal.svg +1 -0
- package/dist/icons/less-than-or-equal.vue +1 -0
- package/dist/icons/less-than.svg +1 -0
- package/dist/icons/less-than.vue +1 -0
- package/dist/icons/lightbulb.svg +1 -0
- package/dist/icons/lightbulb.vue +1 -0
- package/dist/icons/lighthouse.svg +1 -0
- package/dist/icons/lighthouse.vue +1 -0
- package/dist/icons/lightning-slash.svg +1 -0
- package/dist/icons/lightning-slash.vue +1 -0
- package/dist/icons/lightning.svg +1 -0
- package/dist/icons/lightning.vue +1 -0
- package/dist/icons/line-segment.svg +1 -0
- package/dist/icons/line-segment.vue +1 -0
- package/dist/icons/line-segments.svg +1 -0
- package/dist/icons/line-segments.vue +1 -0
- package/dist/icons/link.svg +1 -0
- package/dist/icons/link.vue +1 -0
- package/dist/icons/list-bullets.svg +1 -0
- package/dist/icons/list-bullets.vue +1 -0
- package/dist/icons/list.svg +1 -0
- package/dist/icons/list.vue +1 -0
- package/dist/icons/magic-wand.svg +1 -0
- package/dist/icons/magic-wand.vue +1 -0
- package/dist/icons/magnet-straight.svg +1 -0
- package/dist/icons/magnet-straight.vue +1 -0
- package/dist/icons/magnet.svg +1 -0
- package/dist/icons/magnet.vue +1 -0
- package/dist/icons/magnifying-glass-minus.svg +1 -0
- package/dist/icons/magnifying-glass-minus.vue +1 -0
- package/dist/icons/magnifying-glass-plus.svg +1 -0
- package/dist/icons/magnifying-glass-plus.vue +1 -0
- package/dist/icons/magnifying-glass.svg +1 -0
- package/dist/icons/magnifying-glass.vue +1 -0
- package/dist/icons/map-pin-area.svg +1 -0
- package/dist/icons/map-pin-area.vue +1 -0
- package/dist/icons/map-pin-line.svg +1 -0
- package/dist/icons/map-pin-line.vue +1 -0
- package/dist/icons/map-pin-simple-area.svg +1 -0
- package/dist/icons/map-pin-simple-area.vue +1 -0
- package/dist/icons/map-pin-simple-line.svg +1 -0
- package/dist/icons/map-pin-simple-line.vue +1 -0
- package/dist/icons/map-pin-simple.svg +1 -0
- package/dist/icons/map-pin-simple.vue +1 -0
- package/dist/icons/map-pin.svg +1 -0
- package/dist/icons/map-pin.vue +1 -0
- package/dist/icons/map-trifold.svg +1 -0
- package/dist/icons/map-trifold.vue +1 -0
- package/dist/icons/math-operations.svg +1 -0
- package/dist/icons/math-operations.vue +1 -0
- package/dist/icons/member-of.svg +1 -0
- package/dist/icons/member-of.vue +1 -0
- package/dist/icons/memory.svg +1 -0
- package/dist/icons/memory.vue +1 -0
- package/dist/icons/meteor.svg +1 -0
- package/dist/icons/meteor.vue +1 -0
- package/dist/icons/microscope.svg +1 -0
- package/dist/icons/microscope.vue +1 -0
- package/dist/icons/minus.svg +1 -0
- package/dist/icons/minus.vue +1 -0
- package/dist/icons/monitor.svg +1 -0
- package/dist/icons/monitor.vue +1 -0
- package/dist/icons/moon-stars.svg +1 -0
- package/dist/icons/moon-stars.vue +1 -0
- package/dist/icons/moon.svg +1 -0
- package/dist/icons/moon.vue +1 -0
- package/dist/icons/moped-front.svg +1 -0
- package/dist/icons/moped-front.vue +1 -0
- package/dist/icons/moped.svg +1 -0
- package/dist/icons/moped.vue +1 -0
- package/dist/icons/motorcycle.svg +1 -0
- package/dist/icons/motorcycle.vue +1 -0
- package/dist/icons/mountains.svg +1 -0
- package/dist/icons/mountains.vue +1 -0
- package/dist/icons/navigation-arrow.svg +1 -0
- package/dist/icons/navigation-arrow.vue +1 -0
- package/dist/icons/network.svg +1 -0
- package/dist/icons/network.vue +1 -0
- package/dist/icons/newspaper-clipping.svg +1 -0
- package/dist/icons/newspaper-clipping.vue +1 -0
- package/dist/icons/not-equals.svg +1 -0
- package/dist/icons/not-equals.vue +1 -0
- package/dist/icons/not-member-of.svg +1 -0
- package/dist/icons/not-member-of.vue +1 -0
- package/dist/icons/not-subset-of.svg +1 -0
- package/dist/icons/not-subset-of.vue +1 -0
- package/dist/icons/not-superset-of.svg +1 -0
- package/dist/icons/not-superset-of.vue +1 -0
- package/dist/icons/notebook.svg +1 -0
- package/dist/icons/notebook.vue +1 -0
- package/dist/icons/nuclear-plant.svg +1 -0
- package/dist/icons/nuclear-plant.vue +1 -0
- package/dist/icons/package.svg +1 -0
- package/dist/icons/package.vue +1 -0
- package/dist/icons/paint-brush.svg +1 -0
- package/dist/icons/paint-brush.vue +1 -0
- package/dist/icons/palette.svg +1 -0
- package/dist/icons/palette.vue +1 -0
- package/dist/icons/park.svg +1 -0
- package/dist/icons/park.vue +1 -0
- package/dist/icons/path.svg +1 -0
- package/dist/icons/path.vue +1 -0
- package/dist/icons/pause.svg +1 -0
- package/dist/icons/pause.vue +1 -0
- package/dist/icons/pen-nib.svg +1 -0
- package/dist/icons/pen-nib.vue +1 -0
- package/dist/icons/percent.svg +1 -0
- package/dist/icons/percent.vue +1 -0
- package/dist/icons/person-simple-bike.svg +1 -0
- package/dist/icons/person-simple-bike.vue +1 -0
- package/dist/icons/person-simple-circle.svg +1 -0
- package/dist/icons/person-simple-circle.vue +1 -0
- package/dist/icons/person-simple-hike.svg +1 -0
- package/dist/icons/person-simple-hike.vue +1 -0
- package/dist/icons/person-simple-walk.svg +1 -0
- package/dist/icons/person-simple-walk.vue +1 -0
- package/dist/icons/pi.svg +1 -0
- package/dist/icons/pi.vue +1 -0
- package/dist/icons/picnic-table.svg +1 -0
- package/dist/icons/picnic-table.vue +1 -0
- package/dist/icons/planet.svg +1 -0
- package/dist/icons/planet.vue +1 -0
- package/dist/icons/plant.svg +1 -0
- package/dist/icons/plant.vue +1 -0
- package/dist/icons/play.svg +1 -0
- package/dist/icons/play.vue +1 -0
- package/dist/icons/plug-charging.svg +1 -0
- package/dist/icons/plug-charging.vue +1 -0
- package/dist/icons/plug.svg +1 -0
- package/dist/icons/plug.vue +1 -0
- package/dist/icons/plus-minus.svg +1 -0
- package/dist/icons/plus-minus.vue +1 -0
- package/dist/icons/plus.svg +1 -0
- package/dist/icons/plus.vue +1 -0
- package/dist/icons/police-car.svg +1 -0
- package/dist/icons/police-car.vue +1 -0
- package/dist/icons/potted-plant.svg +1 -0
- package/dist/icons/potted-plant.vue +1 -0
- package/dist/icons/presentation-chart.svg +1 -0
- package/dist/icons/presentation-chart.vue +1 -0
- package/dist/icons/printer.svg +1 -0
- package/dist/icons/printer.vue +1 -0
- package/dist/icons/pulse.svg +1 -0
- package/dist/icons/pulse.vue +1 -0
- package/dist/icons/puzzle-piece.svg +1 -0
- package/dist/icons/puzzle-piece.vue +1 -0
- package/dist/icons/question.svg +1 -0
- package/dist/icons/question.vue +1 -0
- package/dist/icons/quotes.svg +1 -0
- package/dist/icons/quotes.vue +1 -0
- package/dist/icons/radical.svg +1 -0
- package/dist/icons/radical.vue +1 -0
- package/dist/icons/radioactive.svg +1 -0
- package/dist/icons/radioactive.vue +1 -0
- package/dist/icons/rainbow-cloud.svg +1 -0
- package/dist/icons/rainbow-cloud.vue +1 -0
- package/dist/icons/rainbow.svg +1 -0
- package/dist/icons/rainbow.vue +1 -0
- package/dist/icons/recycle.svg +1 -0
- package/dist/icons/recycle.vue +1 -0
- package/dist/icons/road-horizon.svg +1 -0
- package/dist/icons/road-horizon.vue +1 -0
- package/dist/icons/robot.svg +1 -0
- package/dist/icons/robot.vue +1 -0
- package/dist/icons/rocket-launch.svg +1 -0
- package/dist/icons/rocket-launch.vue +1 -0
- package/dist/icons/rocket.svg +1 -0
- package/dist/icons/rocket.vue +1 -0
- package/dist/icons/rows.svg +1 -0
- package/dist/icons/rows.vue +1 -0
- package/dist/icons/rss.svg +1 -0
- package/dist/icons/rss.vue +1 -0
- package/dist/icons/ruler.svg +1 -0
- package/dist/icons/ruler.vue +1 -0
- package/dist/icons/sailboat.svg +1 -0
- package/dist/icons/sailboat.vue +1 -0
- package/dist/icons/satellite.svg +1 -0
- package/dist/icons/satellite.vue +1 -0
- package/dist/icons/scales.svg +1 -0
- package/dist/icons/scales.vue +1 -0
- package/dist/icons/scooter.svg +1 -0
- package/dist/icons/scooter.vue +1 -0
- package/dist/icons/screwdriver.svg +1 -0
- package/dist/icons/screwdriver.vue +1 -0
- package/dist/icons/seal-check.svg +1 -0
- package/dist/icons/seal-check.vue +1 -0
- package/dist/icons/share-network.svg +1 -0
- package/dist/icons/share-network.vue +1 -0
- package/dist/icons/shipping-container.svg +1 -0
- package/dist/icons/shipping-container.vue +1 -0
- package/dist/icons/shooting-star.svg +1 -0
- package/dist/icons/shooting-star.vue +1 -0
- package/dist/icons/shovel.svg +1 -0
- package/dist/icons/shovel.vue +1 -0
- package/dist/icons/shuffle.svg +1 -0
- package/dist/icons/shuffle.vue +1 -0
- package/dist/icons/sigma.svg +1 -0
- package/dist/icons/sigma.vue +1 -0
- package/dist/icons/signpost.svg +1 -0
- package/dist/icons/signpost.vue +1 -0
- package/dist/icons/sliders-horizontal.svg +1 -0
- package/dist/icons/sliders-horizontal.vue +1 -0
- package/dist/icons/snowflake.svg +1 -0
- package/dist/icons/snowflake.vue +1 -0
- package/dist/icons/solar-panel.svg +1 -0
- package/dist/icons/solar-panel.vue +1 -0
- package/dist/icons/solar-roof.svg +1 -0
- package/dist/icons/solar-roof.vue +1 -0
- package/dist/icons/sparkle.svg +1 -0
- package/dist/icons/sparkle.vue +1 -0
- package/dist/icons/speaker-high.svg +1 -0
- package/dist/icons/speaker-high.vue +1 -0
- package/dist/icons/speaker-slash.svg +1 -0
- package/dist/icons/speaker-slash.vue +1 -0
- package/dist/icons/speedometer.svg +1 -0
- package/dist/icons/speedometer.vue +1 -0
- package/dist/icons/sphere.svg +1 -0
- package/dist/icons/sphere.vue +1 -0
- package/dist/icons/sprite.svg +418 -0
- package/dist/icons/stack-simple.svg +1 -0
- package/dist/icons/stack-simple.vue +1 -0
- package/dist/icons/stack.svg +1 -0
- package/dist/icons/stack.vue +1 -0
- package/dist/icons/star-four.svg +1 -0
- package/dist/icons/star-four.vue +1 -0
- package/dist/icons/star.svg +1 -0
- package/dist/icons/star.vue +1 -0
- package/dist/icons/steering-wheel.svg +1 -0
- package/dist/icons/steering-wheel.vue +1 -0
- package/dist/icons/stop.svg +1 -0
- package/dist/icons/stop.vue +1 -0
- package/dist/icons/storefront.svg +1 -0
- package/dist/icons/storefront.vue +1 -0
- package/dist/icons/subset-of.svg +1 -0
- package/dist/icons/subset-of.vue +1 -0
- package/dist/icons/subset-proper-of.svg +1 -0
- package/dist/icons/subset-proper-of.vue +1 -0
- package/dist/icons/subway.svg +1 -0
- package/dist/icons/subway.vue +1 -0
- package/dist/icons/sun-dim.svg +1 -0
- package/dist/icons/sun-dim.vue +1 -0
- package/dist/icons/sun-horizon.svg +1 -0
- package/dist/icons/sun-horizon.vue +1 -0
- package/dist/icons/sun.svg +1 -0
- package/dist/icons/sun.vue +1 -0
- package/dist/icons/superset-of.svg +1 -0
- package/dist/icons/superset-of.vue +1 -0
- package/dist/icons/superset-proper-of.svg +1 -0
- package/dist/icons/superset-proper-of.vue +1 -0
- package/dist/icons/table.svg +1 -0
- package/dist/icons/table.vue +1 -0
- package/dist/icons/tag.svg +1 -0
- package/dist/icons/tag.vue +1 -0
- package/dist/icons/taxi.svg +1 -0
- package/dist/icons/taxi.vue +1 -0
- package/dist/icons/tent.svg +1 -0
- package/dist/icons/tent.vue +1 -0
- package/dist/icons/terminal-window.svg +1 -0
- package/dist/icons/terminal-window.vue +1 -0
- package/dist/icons/terminal.svg +1 -0
- package/dist/icons/terminal.vue +1 -0
- package/dist/icons/test-tube.svg +1 -0
- package/dist/icons/test-tube.vue +1 -0
- package/dist/icons/thermometer-cold.svg +1 -0
- package/dist/icons/thermometer-cold.vue +1 -0
- package/dist/icons/thermometer-hot.svg +1 -0
- package/dist/icons/thermometer-hot.vue +1 -0
- package/dist/icons/thermometer-simple.svg +1 -0
- package/dist/icons/thermometer-simple.vue +1 -0
- package/dist/icons/thermometer.svg +1 -0
- package/dist/icons/thermometer.vue +1 -0
- package/dist/icons/tire.svg +1 -0
- package/dist/icons/tire.vue +1 -0
- package/dist/icons/toolbox.svg +1 -0
- package/dist/icons/toolbox.vue +1 -0
- package/dist/icons/tornado.svg +1 -0
- package/dist/icons/tornado.vue +1 -0
- package/dist/icons/tractor.svg +1 -0
- package/dist/icons/tractor.vue +1 -0
- package/dist/icons/traffic-cone.svg +1 -0
- package/dist/icons/traffic-cone.vue +1 -0
- package/dist/icons/traffic-sign.svg +1 -0
- package/dist/icons/traffic-sign.vue +1 -0
- package/dist/icons/traffic-signal.svg +1 -0
- package/dist/icons/traffic-signal.vue +1 -0
- package/dist/icons/train-regional.svg +1 -0
- package/dist/icons/train-regional.vue +1 -0
- package/dist/icons/train-simple.svg +1 -0
- package/dist/icons/train-simple.vue +1 -0
- package/dist/icons/train.svg +1 -0
- package/dist/icons/train.vue +1 -0
- package/dist/icons/tram.svg +1 -0
- package/dist/icons/tram.vue +1 -0
- package/dist/icons/translate.svg +1 -0
- package/dist/icons/translate.vue +1 -0
- package/dist/icons/tree-evergreen.svg +1 -0
- package/dist/icons/tree-evergreen.vue +1 -0
- package/dist/icons/tree-palm.svg +1 -0
- package/dist/icons/tree-palm.vue +1 -0
- package/dist/icons/tree-structure.svg +1 -0
- package/dist/icons/tree-structure.vue +1 -0
- package/dist/icons/tree-view.svg +1 -0
- package/dist/icons/tree-view.vue +1 -0
- package/dist/icons/tree.svg +1 -0
- package/dist/icons/tree.vue +1 -0
- package/dist/icons/trend-down.svg +1 -0
- package/dist/icons/trend-down.vue +1 -0
- package/dist/icons/trend-up.svg +1 -0
- package/dist/icons/trend-up.vue +1 -0
- package/dist/icons/trophy.svg +1 -0
- package/dist/icons/trophy.vue +1 -0
- package/dist/icons/truck-trailer.svg +1 -0
- package/dist/icons/truck-trailer.vue +1 -0
- package/dist/icons/truck.svg +1 -0
- package/dist/icons/truck.vue +1 -0
- package/dist/icons/umbrella-simple.svg +1 -0
- package/dist/icons/umbrella-simple.vue +1 -0
- package/dist/icons/umbrella.svg +1 -0
- package/dist/icons/umbrella.vue +1 -0
- package/dist/icons/union.svg +1 -0
- package/dist/icons/union.vue +1 -0
- package/dist/icons/upload-simple.svg +1 -0
- package/dist/icons/upload-simple.vue +1 -0
- package/dist/icons/users.svg +1 -0
- package/dist/icons/users.vue +1 -0
- package/dist/icons/van.svg +1 -0
- package/dist/icons/van.vue +1 -0
- package/dist/icons/vector-three.svg +1 -0
- package/dist/icons/vector-three.vue +1 -0
- package/dist/icons/vector-two.svg +1 -0
- package/dist/icons/vector-two.vue +1 -0
- package/dist/icons/video.svg +1 -0
- package/dist/icons/video.vue +1 -0
- package/dist/icons/virus.svg +1 -0
- package/dist/icons/virus.vue +1 -0
- package/dist/icons/warehouse.svg +1 -0
- package/dist/icons/warehouse.vue +1 -0
- package/dist/icons/warning.svg +1 -0
- package/dist/icons/warning.vue +1 -0
- package/dist/icons/wave-sawtooth.svg +1 -0
- package/dist/icons/wave-sawtooth.vue +1 -0
- package/dist/icons/wave-sine.svg +1 -0
- package/dist/icons/wave-sine.vue +1 -0
- package/dist/icons/wave-square.svg +1 -0
- package/dist/icons/wave-square.vue +1 -0
- package/dist/icons/wave-triangle.svg +1 -0
- package/dist/icons/wave-triangle.vue +1 -0
- package/dist/icons/waveform.svg +1 -0
- package/dist/icons/waveform.vue +1 -0
- package/dist/icons/waves.svg +1 -0
- package/dist/icons/waves.vue +1 -0
- package/dist/icons/wind.svg +1 -0
- package/dist/icons/wind.vue +1 -0
- package/dist/icons/windmill.svg +1 -0
- package/dist/icons/windmill.vue +1 -0
- package/dist/icons/wrench.svg +1 -0
- package/dist/icons/wrench.vue +1 -0
- package/dist/icons/x-circle.svg +1 -0
- package/dist/icons/x-circle.vue +1 -0
- package/dist/icons/x.svg +1 -0
- package/dist/icons/x.vue +1 -0
- package/dist/rkui.css +1 -0
- package/dist/rkui.js +41 -0
- package/dist/types/components/alert/alert-enhance.d.ts +0 -0
- package/dist/types/components/code/highlight.d.ts +9 -0
- package/dist/types/components/drawer/drawer-enhance.d.ts +21 -0
- package/dist/types/components/file/file-enhance.d.ts +6 -0
- package/dist/types/components/folder/folder-enhance.d.ts +1 -0
- package/dist/types/components/overflow/overflow-enhance.d.ts +1 -0
- package/dist/types/components/quote/quote-enhance.d.ts +1 -0
- package/dist/types/components/sidebar/sidebar-enhance.d.ts +1 -0
- package/dist/types/components/table/table-enhance.d.ts +1 -0
- package/dist/types/components/tooltip/tooltip-enhance.d.ts +7 -0
- package/dist/types/shared/after-slide.d.ts +10 -0
- package/dist/types/shared/clock-face.d.ts +93 -0
- package/dist/types/shared/dial-face.d.ts +58 -0
- package/dist/types/shared/dial-geometry.d.ts +66 -0
- package/dist/types/shared/each-element.d.ts +9 -0
- package/dist/types/shared/light-angle.d.ts +22 -0
- package/package.json +100 -4
- package/src/base/base.css +144 -0
- package/src/base/fonts.css +158 -0
- package/src/base/type.css +17 -0
- package/src/components/alert/Alert.vue +66 -0
- package/src/components/alert/alert-enhance.js +43 -0
- package/src/components/alert/alert.css +125 -0
- package/src/components/badge/Badge.vue +74 -0
- package/src/components/badge/BadgeHost.vue +24 -0
- package/src/components/badge/badge.css +142 -0
- package/src/components/ballot/Ballot.vue +71 -0
- package/src/components/ballot/BallotOption.vue +83 -0
- package/src/components/ballot/ballot.css +208 -0
- package/src/components/breadcrumbs/Breadcrumbs.vue +47 -0
- package/src/components/breadcrumbs/breadcrumbs.css +104 -0
- package/src/components/button/Button.vue +130 -0
- package/src/components/button/button.css +93 -0
- package/src/components/callout/Callout.vue +31 -0
- package/src/components/callout/callout.css +39 -0
- package/src/components/card/Card.vue +59 -0
- package/src/components/card/card.css +117 -0
- package/src/components/checkbox/Checkbox.vue +50 -0
- package/src/components/checkbox/Radio.vue +51 -0
- package/src/components/checkbox/checkbox.css +82 -0
- package/src/components/chip/Chip.vue +60 -0
- package/src/components/chip/ChipGroup.vue +59 -0
- package/src/components/chip/chip.css +73 -0
- package/src/components/clock/Clock.vue +200 -0
- package/src/components/clock/clock-element.ts +6 -0
- package/src/components/clock/clock.css +258 -0
- package/src/components/code/CodeBlock.vue +210 -0
- package/src/components/code/code.css +185 -0
- package/src/components/code/highlight.js +46 -0
- package/src/components/color-picker/ColorInput.vue +54 -0
- package/src/components/color-picker/ColorPicker.vue +110 -0
- package/src/components/color-picker/ColorTile.vue +28 -0
- package/src/components/color-picker/color-picker-element.ts +7 -0
- package/src/components/color-picker/color-picker.css +219 -0
- package/src/components/date-time/date-time.css +53 -0
- package/src/components/dial/Dial.vue +247 -0
- package/src/components/dial/dial-element.ts +6 -0
- package/src/components/dial/dial.css +299 -0
- package/src/components/drawer/Cabinet.vue +67 -0
- package/src/components/drawer/Drawer.vue +155 -0
- package/src/components/drawer/drawer-enhance.js +123 -0
- package/src/components/drawer/drawer.css +889 -0
- package/src/components/field/Field.vue +49 -0
- package/src/components/field/field.css +31 -0
- package/src/components/figure/figure.css +30 -0
- package/src/components/file/File.vue +73 -0
- package/src/components/file/file-enhance.js +35 -0
- package/src/components/file/file.css +130 -0
- package/src/components/folder/Folder.vue +241 -0
- package/src/components/folder/Tab.vue +25 -0
- package/src/components/folder/folder-enhance.js +231 -0
- package/src/components/folder/folder.css +582 -0
- package/src/components/folder/tab-items.ts +67 -0
- package/src/components/folder/tab-slot.ts +80 -0
- package/src/components/header-band/HeaderBand.vue +52 -0
- package/src/components/header-band/header-band.css +54 -0
- package/src/components/icon/icon.css +20 -0
- package/src/components/input/Input.vue +69 -0
- package/src/components/input/Textarea.vue +68 -0
- package/src/components/input/input.css +66 -0
- package/src/components/light-direction/LightDirection.vue +64 -0
- package/src/components/light-direction/light-direction-element.ts +6 -0
- package/src/components/loader/Loader.vue +39 -0
- package/src/components/loader/loader.css +132 -0
- package/src/components/logo/Logo.vue +128 -0
- package/src/components/logo/logo.css +233 -0
- package/src/components/maths/Equation.vue +64 -0
- package/src/components/maths/EquationReference.vue +31 -0
- package/src/components/maths/Maths.vue +32 -0
- package/src/components/maths/maths.css +220 -0
- package/src/components/maths/render-maths.ts +45 -0
- package/src/components/motion/Motion.vue +23 -0
- package/src/components/motion/motion.css +19 -0
- package/src/components/number/Stepper.vue +138 -0
- package/src/components/number/number.css +116 -0
- package/src/components/number/stepper-element.ts +6 -0
- package/src/components/overflow/Scroll.vue +43 -0
- package/src/components/overflow/overflow-enhance.js +45 -0
- package/src/components/overflow/overflow.css +397 -0
- package/src/components/pagination/Pagination.vue +254 -0
- package/src/components/pagination/pagination.css +87 -0
- package/src/components/popup/Popup.vue +26 -0
- package/src/components/popup/popup.css +53 -0
- package/src/components/progress/Progress.vue +47 -0
- package/src/components/progress/progress.css +170 -0
- package/src/components/quote/Quote.vue +48 -0
- package/src/components/quote/quote-enhance.js +70 -0
- package/src/components/quote/quote.css +73 -0
- package/src/components/range/Range.vue +169 -0
- package/src/components/range/range-element.ts +8 -0
- package/src/components/range/range.css +315 -0
- package/src/components/range-ticks/range-ticks.css +29 -0
- package/src/components/search/Search.vue +113 -0
- package/src/components/search/search.css +138 -0
- package/src/components/segmented/Segmented.vue +46 -0
- package/src/components/segmented/SegmentedOption.vue +61 -0
- package/src/components/segmented/segmented.css +181 -0
- package/src/components/select/Select.vue +181 -0
- package/src/components/select/select.css +93 -0
- package/src/components/sidebar/Sidebar.vue +79 -0
- package/src/components/sidebar/SidebarGroup.vue +29 -0
- package/src/components/sidebar/SidebarLink.vue +46 -0
- package/src/components/sidebar/sidebar-enhance.js +26 -0
- package/src/components/sidebar/sidebar.css +543 -0
- package/src/components/spinner/Spinner.vue +36 -0
- package/src/components/spinner/spinner.css +147 -0
- package/src/components/spinner-dots/Dots.vue +48 -0
- package/src/components/spinner-dots/spinner-dots.css +167 -0
- package/src/components/sticky-note/StickyNote.vue +104 -0
- package/src/components/sticky-note/sticky-note.css +206 -0
- package/src/components/switch/Switch.vue +52 -0
- package/src/components/switch/switch.css +73 -0
- package/src/components/table/Table.vue +142 -0
- package/src/components/table/table-enhance.js +58 -0
- package/src/components/table/table.css +622 -0
- package/src/components/theme-toggle/ThemeToggle.vue +114 -0
- package/src/components/theme-toggle/theme-toggle-element.ts +6 -0
- package/src/components/theme-toggle/theme-toggle.css +7 -0
- package/src/components/tiles/Tile.vue +90 -0
- package/src/components/tiles/Tiles.vue +45 -0
- package/src/components/tiles/tiles.css +93 -0
- package/src/components/tooltip/Tooltip.vue +31 -0
- package/src/components/tooltip/tooltip-enhance.js +42 -0
- package/src/components/tooltip/tooltip.css +118 -0
- package/src/components/topbar/BackToTop.vue +18 -0
- package/src/components/topbar/TopBar.vue +25 -0
- package/src/components/topbar/topbar.css +127 -0
- package/src/components/water/Flask.vue +44 -0
- package/src/components/water/Pending.vue +32 -0
- package/src/components/water/water.css +262 -0
- package/src/components/widget-frame/WidgetFrame.vue +31 -0
- package/src/components/widget-frame/widget-frame.css +46 -0
- package/src/enhance.js +13 -0
- package/src/fonts/jetbrains-mono/OFL.txt +93 -0
- package/src/fonts/jetbrains-mono/jetbrains-mono-greek.woff2 +0 -0
- package/src/fonts/jetbrains-mono/jetbrains-mono-italic-greek.woff2 +0 -0
- package/src/fonts/jetbrains-mono/jetbrains-mono-italic-latin.woff2 +0 -0
- package/src/fonts/jetbrains-mono/jetbrains-mono-italic-symbols.woff2 +0 -0
- package/src/fonts/jetbrains-mono/jetbrains-mono-latin.woff2 +0 -0
- package/src/fonts/jetbrains-mono/jetbrains-mono-symbols.woff2 +0 -0
- package/src/fonts/roboto-slab/LICENSE.txt +202 -0
- package/src/fonts/roboto-slab/roboto-slab-greek.woff2 +0 -0
- package/src/fonts/roboto-slab/roboto-slab-latin.woff2 +0 -0
- package/src/fonts/roboto-slab/roboto-slab-symbols.woff2 +0 -0
- package/src/fonts/xmind/OFL.txt +93 -0
- package/src/fonts/xmind/xmind-greek.woff2 +0 -0
- package/src/fonts/xmind/xmind-italic-greek.woff2 +0 -0
- package/src/fonts/xmind/xmind-italic-latin.woff2 +0 -0
- package/src/fonts/xmind/xmind-italic-symbols.woff2 +0 -0
- package/src/fonts/xmind/xmind-latin.woff2 +0 -0
- package/src/fonts/xmind/xmind-symbols.woff2 +0 -0
- package/src/head-scripts/table-init.js +9 -0
- package/src/head-scripts/theme-init.js +10 -0
- package/src/icons/LICENSE-phosphor.txt +21 -0
- package/src/icons/LICENSE-tabler.txt +21 -0
- package/src/icons/icon-set.js +715 -0
- package/src/icons/sources/satellite-duotone.svg +2 -0
- package/src/index.css +64 -0
- package/src/interactive-enhance.js +22 -0
- package/src/interactive.css +239 -0
- package/src/shared/after-slide.js +14 -0
- package/src/shared/astro-attributes.d.ts +58 -0
- package/src/shared/clock-face.js +148 -0
- package/src/shared/component-id.ts +17 -0
- package/src/shared/define-element.ts +51 -0
- package/src/shared/dial-face.js +111 -0
- package/src/shared/dial-geometry.js +96 -0
- package/src/shared/each-element.js +38 -0
- package/src/shared/field-attrs.ts +32 -0
- package/src/shared/hues.ts +111 -0
- package/src/shared/light-angle.js +49 -0
- package/src/shared/live-value.ts +142 -0
- package/src/shared/model-start.ts +23 -0
- package/src/shared/option-group.ts +19 -0
- package/src/shared/option-slot.ts +97 -0
- package/src/shared/slot-html.ts +53 -0
- package/src/shared/split-attrs.ts +64 -0
- package/src/shared/starting-option.ts +14 -0
- package/src/tokens/colors.css +122 -0
- package/src/tokens/fallback.css +67 -0
- package/src/tokens/motion.css +31 -0
- package/src/tokens/palettes.css +36 -0
- package/src/tokens/shadow-color.css +178 -0
- package/src/tokens/shadows.css +127 -0
- package/src/tokens/space.css +20 -0
- package/src/tsconfig.json +19 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { arcPath, polarToCartesian, percentOfFace, radialLine } from './dial-geometry.js'
|
|
2
|
+
|
|
3
|
+
/** Degrees of travel, centred on 12 o'clock, leaving a gap at the bottom. */
|
|
4
|
+
const SWEEP = 270
|
|
5
|
+
export const START_ANGLE = -SWEEP / 2
|
|
6
|
+
export const END_ANGLE = SWEEP / 2
|
|
7
|
+
|
|
8
|
+
const TICK_COUNT = 11
|
|
9
|
+
const TICK_INNER_RADIUS = 84
|
|
10
|
+
const TICK_OUTER_RADIUS = 94
|
|
11
|
+
export const TRACK_RADIUS = 84
|
|
12
|
+
const LIMIT_RADIUS = 86
|
|
13
|
+
const LIMIT_ANGLE = 158
|
|
14
|
+
const RAMP_BLOCK_COUNT = 18
|
|
15
|
+
/** Degrees left empty between neighbouring ramp blocks */
|
|
16
|
+
const RAMP_BLOCK_GAP = 3
|
|
17
|
+
const RAMP_INNER_RADIUS = 74
|
|
18
|
+
const RAMP_OUTER_RADIUS = 94
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @param {number} value
|
|
22
|
+
* @param {number} min
|
|
23
|
+
* @param {number} max
|
|
24
|
+
* @returns {number} the angle that shows `value` on the dial
|
|
25
|
+
*/
|
|
26
|
+
export function valueToAngle(value, min, max) {
|
|
27
|
+
return START_ANGLE + ((value - min) / (max - min)) * SWEEP
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @param {number} angle an angle within the dial's travel
|
|
32
|
+
* @param {number} min
|
|
33
|
+
* @param {number} max
|
|
34
|
+
* @returns {number} the value at `angle`, not yet snapped to a step
|
|
35
|
+
*/
|
|
36
|
+
export function angleToValue(angle, min, max) {
|
|
37
|
+
return min + ((angle - START_ANGLE) / SWEEP) * (max - min)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* @param {number} index which ramp block, from 0
|
|
42
|
+
* @param {number} fraction how far round the dial the value is, from 0 to 1
|
|
43
|
+
* @returns {boolean} whether the block is lit: once the value reaches its middle
|
|
44
|
+
*/
|
|
45
|
+
export function isBlockLit(index, fraction) {
|
|
46
|
+
return (index + 0.5) / RAMP_BLOCK_COUNT <= fraction
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* @param {number} angle where the dial points
|
|
51
|
+
* @returns {string} inline CSS for the face element: the knob's angle, and the point of the track
|
|
52
|
+
* where the arc's thumb sits
|
|
53
|
+
*/
|
|
54
|
+
export function faceStyle(angle) {
|
|
55
|
+
const { x, y } = percentOfFace(TRACK_RADIUS, angle)
|
|
56
|
+
return `--rkui-dial-angle: ${angle}deg; --rkui-dial-thumb-x: ${x}%; --rkui-dial-thumb-y: ${y}%`
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/** Where the min label sits, in SVG units, left of the gap at the bottom. */
|
|
60
|
+
export const MIN_LABEL = polarToCartesian(LIMIT_RADIUS, -LIMIT_ANGLE)
|
|
61
|
+
/** Where the max label sits, in SVG units, right of the gap at the bottom. */
|
|
62
|
+
export const MAX_LABEL = polarToCartesian(LIMIT_RADIUS, LIMIT_ANGLE)
|
|
63
|
+
|
|
64
|
+
/** Evenly spaced tick marks around the dial's travel, as the ends of SVG lines. */
|
|
65
|
+
export const TICKS = Array.from({ length: TICK_COUNT }, (_, index) =>
|
|
66
|
+
radialLine(
|
|
67
|
+
TICK_INNER_RADIUS,
|
|
68
|
+
TICK_OUTER_RADIUS,
|
|
69
|
+
START_ANGLE + (index * SWEEP) / (TICK_COUNT - 1),
|
|
70
|
+
),
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
/** SVG path data for the arc's track, round the whole of the dial's travel. */
|
|
74
|
+
export const TRACK = arcPath(TRACK_RADIUS, START_ANGLE, END_ANGLE)
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* @param {number} fromAngle
|
|
78
|
+
* @param {number} toAngle
|
|
79
|
+
* @returns {string} SVG path data for a block of the ramp's ring, between the two angles
|
|
80
|
+
*/
|
|
81
|
+
function blockPath(fromAngle, toAngle) {
|
|
82
|
+
const outerStart = polarToCartesian(RAMP_OUTER_RADIUS, fromAngle)
|
|
83
|
+
const outerEnd = polarToCartesian(RAMP_OUTER_RADIUS, toAngle)
|
|
84
|
+
const innerEnd = polarToCartesian(RAMP_INNER_RADIUS, toAngle)
|
|
85
|
+
const innerStart = polarToCartesian(RAMP_INNER_RADIUS, fromAngle)
|
|
86
|
+
return [
|
|
87
|
+
`M ${outerStart.x} ${outerStart.y}`,
|
|
88
|
+
`A ${RAMP_OUTER_RADIUS} ${RAMP_OUTER_RADIUS} 0 0 1 ${outerEnd.x} ${outerEnd.y}`,
|
|
89
|
+
`L ${innerEnd.x} ${innerEnd.y}`,
|
|
90
|
+
`A ${RAMP_INNER_RADIUS} ${RAMP_INNER_RADIUS} 0 0 0 ${innerStart.x} ${innerStart.y}`,
|
|
91
|
+
'Z',
|
|
92
|
+
].join(' ')
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* @param {number} stepCount how many colours the ramp has
|
|
97
|
+
* @returns {{ d: string, fill: string }[]} the ramp's blocks around the dial's travel: each one's
|
|
98
|
+
* SVG path data, and its colour, `--rkui-dial-ramp-1` to `--rkui-dial-ramp-<stepCount>` in
|
|
99
|
+
* equal runs
|
|
100
|
+
*/
|
|
101
|
+
export function rampBlocks(stepCount) {
|
|
102
|
+
const width = SWEEP / RAMP_BLOCK_COUNT
|
|
103
|
+
return Array.from({ length: RAMP_BLOCK_COUNT }, (_, index) => {
|
|
104
|
+
const from = START_ANGLE + index * width + RAMP_BLOCK_GAP / 2
|
|
105
|
+
const step = Math.floor((index * stepCount) / RAMP_BLOCK_COUNT) + 1
|
|
106
|
+
return {
|
|
107
|
+
d: blockPath(from, from + width - RAMP_BLOCK_GAP),
|
|
108
|
+
fill: `var(--rkui-dial-ramp-${step})`,
|
|
109
|
+
}
|
|
110
|
+
})
|
|
111
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Geometry shared by the clock and dial faces, which Clock.vue and Dial.vue draw. No DOM: every
|
|
3
|
+
* function takes numbers and returns numbers, strings or plain objects. Angles are degrees
|
|
4
|
+
* clockwise from 12 o'clock.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/** A face's SVG is drawn in a square of this many units, centred on (CENTRE, CENTRE). */
|
|
8
|
+
export const VIEWBOX = 200
|
|
9
|
+
export const CENTRE = VIEWBOX / 2
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @param {number} value
|
|
13
|
+
* @param {number} divisor
|
|
14
|
+
* @returns {number} `value` modulo `divisor`, never negative
|
|
15
|
+
*/
|
|
16
|
+
export function wrap(value, divisor) {
|
|
17
|
+
return ((value % divisor) + divisor) % divisor
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @param {number} previous the angle a hand points at now, which may be past 360 or below 0
|
|
22
|
+
* @param {number} angle the way it should point next, from 0 to 360
|
|
23
|
+
* @returns {number} the angle nearest `previous` that points the same way as `angle`, so the
|
|
24
|
+
* hand takes the short way round instead of spinning back past 12
|
|
25
|
+
*/
|
|
26
|
+
export function nearestTurn(previous, angle) {
|
|
27
|
+
return previous + wrap(angle - previous + 180, 360) - 180
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @param {number} value
|
|
32
|
+
* @returns {number} the value to a thousandth of an SVG unit. The server and the browser can
|
|
33
|
+
* differ in a sine's last digit; rounded, they write the same markup.
|
|
34
|
+
*/
|
|
35
|
+
function round(value) {
|
|
36
|
+
return Math.round(value * 1000) / 1000
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @param {number} radius
|
|
41
|
+
* @param {number} angle
|
|
42
|
+
* @returns {{ x: number, y: number }} the point in the SVG at `radius` and `angle` from the centre
|
|
43
|
+
*/
|
|
44
|
+
export function polarToCartesian(radius, angle) {
|
|
45
|
+
const radians = (angle * Math.PI) / 180
|
|
46
|
+
return {
|
|
47
|
+
x: round(CENTRE + radius * Math.sin(radians)),
|
|
48
|
+
y: round(CENTRE - radius * Math.cos(radians)),
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* @param {number} radius
|
|
54
|
+
* @param {number} angle
|
|
55
|
+
* @returns {{ x: number, y: number }} the same point as a percentage of the face's width and
|
|
56
|
+
* height, for CSS to centre an element on it
|
|
57
|
+
*/
|
|
58
|
+
export function percentOfFace(radius, angle) {
|
|
59
|
+
const { x, y } = polarToCartesian(radius, angle)
|
|
60
|
+
return { x: (x * 100) / VIEWBOX, y: (y * 100) / VIEWBOX }
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* @param {number} radius
|
|
65
|
+
* @param {number} fromAngle
|
|
66
|
+
* @param {number} toAngle
|
|
67
|
+
* @returns {string} SVG path data for a clockwise arc
|
|
68
|
+
*/
|
|
69
|
+
export function arcPath(radius, fromAngle, toAngle) {
|
|
70
|
+
const start = polarToCartesian(radius, fromAngle)
|
|
71
|
+
const end = polarToCartesian(radius, toAngle)
|
|
72
|
+
const largeArc = toAngle - fromAngle > 180 ? 1 : 0
|
|
73
|
+
return `M ${start.x} ${start.y} A ${radius} ${radius} 0 ${largeArc} 1 ${end.x} ${end.y}`
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* @param {number} innerRadius
|
|
78
|
+
* @param {number} outerRadius
|
|
79
|
+
* @param {number} angle
|
|
80
|
+
* @returns {{ x1: number, y1: number, x2: number, y2: number }} the ends of an SVG `<line>`
|
|
81
|
+
* pointing out from the centre, between the two radii
|
|
82
|
+
*/
|
|
83
|
+
export function radialLine(innerRadius, outerRadius, angle) {
|
|
84
|
+
const inner = polarToCartesian(innerRadius, angle)
|
|
85
|
+
const outer = polarToCartesian(outerRadius, angle)
|
|
86
|
+
return { x1: inner.x, y1: inner.y, x2: outer.x, y2: outer.y }
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* @param {number} dx distance right of the centre
|
|
91
|
+
* @param {number} dy distance below the centre
|
|
92
|
+
* @returns {number} the angle of that point, from -180 to 180
|
|
93
|
+
*/
|
|
94
|
+
export function pointToAngle(dx, dy) {
|
|
95
|
+
return (Math.atan2(dx, -dy) * 180) / Math.PI
|
|
96
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// Finds elements for the enhance scripts, including ones a Vue app or a page script adds after the
|
|
2
|
+
// scripts have run. One MutationObserver serves every script.
|
|
3
|
+
|
|
4
|
+
/** @type {((root: Element) => void)[]} */
|
|
5
|
+
const watchers = []
|
|
6
|
+
/** @type {MutationObserver | undefined} */
|
|
7
|
+
let observer
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Calls `setUp` once for each element that matches `selector`, now and whenever one is added to
|
|
11
|
+
* the page later. Each element it sets up gets the attribute `mark`, so none is set up twice, even
|
|
12
|
+
* by a second copy of the script.
|
|
13
|
+
* @param {string} selector
|
|
14
|
+
* @param {string} mark an attribute name, e.g. 'data-rkui-bar'
|
|
15
|
+
* @param {(element: HTMLElement) => void} setUp
|
|
16
|
+
*/
|
|
17
|
+
export function eachElement(selector, mark, setUp) {
|
|
18
|
+
/** @param {Element} root */
|
|
19
|
+
const watch = (root) => {
|
|
20
|
+
const found = [...(root.matches(selector) ? [root] : []), ...root.querySelectorAll(selector)]
|
|
21
|
+
for (const element of found) {
|
|
22
|
+
if (element.hasAttribute(mark)) continue
|
|
23
|
+
element.setAttribute(mark, '')
|
|
24
|
+
setUp(/** @type {HTMLElement} */ (element))
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
watch(document.documentElement)
|
|
28
|
+
watchers.push(watch)
|
|
29
|
+
if (observer) return
|
|
30
|
+
observer = new MutationObserver((records) => {
|
|
31
|
+
for (const { addedNodes } of records) {
|
|
32
|
+
for (const node of addedNodes) {
|
|
33
|
+
if (node instanceof Element) for (const each of watchers) each(node)
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
})
|
|
37
|
+
observer.observe(document.documentElement, { childList: true, subtree: true })
|
|
38
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** The props every control shares for its Field's message. */
|
|
2
|
+
interface FieldProps {
|
|
3
|
+
hint?: string
|
|
4
|
+
error?: string
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
/** The attributes a page may already have set that a Field also writes. */
|
|
8
|
+
interface LinkedAttrs {
|
|
9
|
+
'aria-describedby'?: string | null
|
|
10
|
+
'aria-invalid'?: string | boolean | null
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Returns the control's attributes with its `id` and the link to its Field's message: the message's
|
|
15
|
+
* id (`${id}-message`) is joined onto any `aria-describedby` the page set, and `aria-invalid` is
|
|
16
|
+
* `true` while there is an error.
|
|
17
|
+
*/
|
|
18
|
+
export function fieldAttrs<T extends LinkedAttrs>(
|
|
19
|
+
id: string,
|
|
20
|
+
{ hint, error }: FieldProps,
|
|
21
|
+
attrs: T,
|
|
22
|
+
) {
|
|
23
|
+
const message = hint || error ? `${id}-message` : undefined
|
|
24
|
+
const describedby = [attrs['aria-describedby'], message].filter(Boolean).join(' ')
|
|
25
|
+
return {
|
|
26
|
+
...attrs,
|
|
27
|
+
id,
|
|
28
|
+
'aria-describedby': describedby || undefined,
|
|
29
|
+
// `as const` keeps the literal type the HTML attribute types ask for.
|
|
30
|
+
'aria-invalid': error ? ('true' as const) : attrs['aria-invalid'],
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { colors } from '../../dist/colors.js'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The palette's hues, for every component's `hue` prop: the core hues, then the auxiliary ones.
|
|
5
|
+
* Each has a `--rkui-<hue>` fill token and `-deep` and `-tint` steps in src/tokens/colors.css. A
|
|
6
|
+
* component that supports fewer hues picks from this list.
|
|
7
|
+
*/
|
|
8
|
+
export const HUES = [
|
|
9
|
+
'navy',
|
|
10
|
+
'teal',
|
|
11
|
+
'coral',
|
|
12
|
+
'yellow',
|
|
13
|
+
'green',
|
|
14
|
+
'sky',
|
|
15
|
+
'grape',
|
|
16
|
+
'tangerine',
|
|
17
|
+
'lilac',
|
|
18
|
+
'apricot',
|
|
19
|
+
] as const
|
|
20
|
+
|
|
21
|
+
/** One of the palette's hues, e.g. 'teal'. (Read from the list above, so the two can't drift.) */
|
|
22
|
+
export type Hue = (typeof HUES)[number]
|
|
23
|
+
|
|
24
|
+
/** A component's `hue`: a palette hue, e.g. 'teal', or a hex code, e.g. '#ff8800'. */
|
|
25
|
+
export type HueOrHex = Hue | `#${string}`
|
|
26
|
+
|
|
27
|
+
/** The hues whose fill carries its own text colour (`--rkui-on-<hue>`); the rest take ink. */
|
|
28
|
+
const HUES_WITH_OWN_TEXT: Hue[] = ['navy', 'coral', 'grape']
|
|
29
|
+
|
|
30
|
+
/** The text token for text on a `hue` fill, e.g. `--rkui-on-navy`, or `--rkui-on-fill` (ink). */
|
|
31
|
+
export function onHue(hue: Hue): string {
|
|
32
|
+
return HUES_WITH_OWN_TEXT.includes(hue) ? `--rkui-on-${hue}` : '--rkui-on-fill'
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** Whether `hue` is a hex code rather than a palette hue. */
|
|
36
|
+
export function isHex(hue: string | undefined): hue is `#${string}` {
|
|
37
|
+
return hue?.startsWith('#') ?? false
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** The custom properties a component paints with, each set from its `hue`. */
|
|
41
|
+
export interface HueProperties {
|
|
42
|
+
/** Takes the fill. */
|
|
43
|
+
fill?: string
|
|
44
|
+
/** Takes the colour of text and icons on the fill. */
|
|
45
|
+
text?: string
|
|
46
|
+
/** Takes the tint: a pale panel that carries `--rkui-fg` text. */
|
|
47
|
+
tint?: string
|
|
48
|
+
/** The fill carries small text, so coral takes `--rkui-coral-solid`. */
|
|
49
|
+
solid?: boolean
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* The style that paints a component in `hue`, for its `vars`: each of `properties` set to the
|
|
54
|
+
* hue's token, or for a hex code to the code and the colours worked out from it (DESIGN.md,
|
|
55
|
+
* "Shading"). Empty when `hue` is left out.
|
|
56
|
+
*/
|
|
57
|
+
export function hueVars(
|
|
58
|
+
hue: HueOrHex | undefined,
|
|
59
|
+
properties: HueProperties,
|
|
60
|
+
): Record<string, string> {
|
|
61
|
+
if (!hue) return {}
|
|
62
|
+
const { fill, text, tint, solid } = properties
|
|
63
|
+
const style: Record<string, string> = {}
|
|
64
|
+
if (isHex(hue)) {
|
|
65
|
+
if (fill) style[fill] = hue
|
|
66
|
+
if (text) style[text] = `var(${textOn(hue)})`
|
|
67
|
+
if (tint) style[tint] = tintOf(hue)
|
|
68
|
+
} else {
|
|
69
|
+
if (fill) style[fill] = `var(--rkui-${solid && hue === 'coral' ? 'coral-solid' : hue})`
|
|
70
|
+
if (text) style[text] = `var(${onHue(hue)})`
|
|
71
|
+
if (tint) style[tint] = `var(--rkui-${hue}-tint)`
|
|
72
|
+
}
|
|
73
|
+
return style
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** A hex code's tint: 35% of it over `--rkui-raised` in light mode, 25% in dark mode. */
|
|
77
|
+
function tintOf(hex: string): string {
|
|
78
|
+
const mix = (share: string) => `color-mix(in srgb, ${hex} ${share}, var(--rkui-raised))`
|
|
79
|
+
return `light-dark(${mix('35%')}, ${mix('25%')})`
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* The text token for a hex fill: ink (`--rkui-on-fill`), unless `--rkui-on-ink` has more contrast
|
|
84
|
+
* on it in both themes.
|
|
85
|
+
*/
|
|
86
|
+
function textOn(hex: string): string {
|
|
87
|
+
const fill = luminance(hex)
|
|
88
|
+
const ink = contrast(fill, luminance(colors.onFill.light))
|
|
89
|
+
const light = Math.min(
|
|
90
|
+
contrast(fill, luminance(colors.onInk.light)),
|
|
91
|
+
contrast(fill, luminance(colors.onInk.dark)),
|
|
92
|
+
)
|
|
93
|
+
return light > ink ? '--rkui-on-ink' : '--rkui-on-fill'
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/** The WCAG contrast ratio of two relative luminances. */
|
|
97
|
+
function contrast(a: number, b: number): number {
|
|
98
|
+
return (Math.max(a, b) + 0.05) / (Math.min(a, b) + 0.05)
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/** The WCAG relative luminance of a hex code (#rgb, #rgba, #rrggbb or #rrggbbaa); alpha is ignored. */
|
|
102
|
+
function luminance(hex: string): number {
|
|
103
|
+
const digits = hex.slice(1)
|
|
104
|
+
const short = digits.length <= 4
|
|
105
|
+
const channels = [0, 1, 2].map((i) => {
|
|
106
|
+
const pair = short ? digits[i] + digits[i] : digits.slice(i * 2, i * 2 + 2)
|
|
107
|
+
const value = parseInt(pair, 16) / 255
|
|
108
|
+
return value <= 0.04045 ? value / 12.92 : ((value + 0.055) / 1.055) ** 2.4
|
|
109
|
+
})
|
|
110
|
+
return 0.2126 * channels[0] + 0.7152 * channels[1] + 0.0722 * channels[2]
|
|
111
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The maths behind LightDirection. No DOM. Angles are in degrees, clockwise from 12 o'clock, and
|
|
3
|
+
* name where the light comes from.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/** Where the light comes from by default: the top left. */
|
|
7
|
+
export const DEFAULT_ANGLE = 315
|
|
8
|
+
|
|
9
|
+
/** At the default angle this gives --rkui-shadow-dx and --rkui-shadow-dy of exactly 1. */
|
|
10
|
+
const SHADOW_LENGTH = Math.SQRT2
|
|
11
|
+
|
|
12
|
+
const SUNRISE_HOUR = 6
|
|
13
|
+
const SUNSET_HOUR = 18
|
|
14
|
+
/** The sun rises on the left, at 9 o'clock. */
|
|
15
|
+
const SUNRISE_ANGLE = 270
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @param {number} value
|
|
19
|
+
* @returns {string} `value` rounded to three decimals, so the default angle gives exactly 1
|
|
20
|
+
*/
|
|
21
|
+
function toToken(value) {
|
|
22
|
+
return String(Math.round(value * 1000) / 1000)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* The shadow direction that points away from a light at `angle`.
|
|
27
|
+
* @param {number} angle where the light comes from
|
|
28
|
+
* @returns {{ dx: string, dy: string }} the values for --rkui-shadow-dx and --rkui-shadow-dy
|
|
29
|
+
*/
|
|
30
|
+
export function shadowOffsets(angle) {
|
|
31
|
+
const radians = (angle * Math.PI) / 180
|
|
32
|
+
return {
|
|
33
|
+
dx: toToken(-SHADOW_LENGTH * Math.sin(radians)),
|
|
34
|
+
dy: toToken(SHADOW_LENGTH * Math.cos(radians)),
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* The sun rises on the left at 6:00, is overhead at noon and sets on the right at 18:00, so 9:00
|
|
40
|
+
* gives the default angle. At night the light goes back to the default.
|
|
41
|
+
* @param {Date} time
|
|
42
|
+
* @returns {number} the light angle at `time`
|
|
43
|
+
*/
|
|
44
|
+
export function sunAngle(time) {
|
|
45
|
+
const hour = time.getHours() + time.getMinutes() / 60
|
|
46
|
+
const dayFraction = (hour - SUNRISE_HOUR) / (SUNSET_HOUR - SUNRISE_HOUR)
|
|
47
|
+
if (dayFraction < 0 || dayFraction > 1) return DEFAULT_ANGLE
|
|
48
|
+
return (SUNRISE_ANGLE + 180 * dayFraction) % 360
|
|
49
|
+
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
// A form control's value as the browser has it when its component starts, for every form control
|
|
2
|
+
// with a `v-model` (inputs, textareas and selects), and a radio or checkbox's checked state. Each
|
|
3
|
+
// directive goes on the control before its `v-model`: the first read must come before Vue's
|
|
4
|
+
// v-model writes to it, which for a radio is as soon as it is created.
|
|
5
|
+
|
|
6
|
+
import { startingIndex } from './starting-option'
|
|
7
|
+
|
|
8
|
+
/** A form control that holds a value: an input, a textarea or a select. */
|
|
9
|
+
type ValueControl = HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* What each control held before Vue's `v-model` first wrote to it, when the reader or the browser
|
|
13
|
+
* had changed it: its value, or a select's chosen options.
|
|
14
|
+
*/
|
|
15
|
+
const changedValues = new WeakMap<ValueControl, string | HTMLOptionElement[]>()
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The value an input's markup alone gives it, as the browser cleans it up: a colour in lower case,
|
|
19
|
+
* a range's value kept within its `min`, `max` and `step`.
|
|
20
|
+
*/
|
|
21
|
+
function markupValue(input: HTMLInputElement): string {
|
|
22
|
+
const fresh = document.createElement('input')
|
|
23
|
+
for (const { name, value } of input.attributes) fresh.setAttribute(name, value)
|
|
24
|
+
return fresh.value
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** The options a select's markup alone chooses. */
|
|
28
|
+
function markupOptions(select: HTMLSelectElement): HTMLOptionElement[] {
|
|
29
|
+
const options = [...select.options]
|
|
30
|
+
if (select.multiple) return options.filter((option) => option.defaultSelected)
|
|
31
|
+
const marks = options.map((option) => ({
|
|
32
|
+
selected: option.defaultSelected,
|
|
33
|
+
disabled: option.disabled,
|
|
34
|
+
}))
|
|
35
|
+
const start = options[startingIndex(marks)]
|
|
36
|
+
return start ? [start] : []
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/** What the control holds now, if the reader or the browser changed it from its markup. */
|
|
40
|
+
function changedInBrowser(control: ValueControl): string | HTMLOptionElement[] | undefined {
|
|
41
|
+
if (control instanceof HTMLSelectElement) {
|
|
42
|
+
const chosen = [...control.selectedOptions]
|
|
43
|
+
const start = markupOptions(control)
|
|
44
|
+
const same = chosen.length === start.length && chosen.every((option, i) => option === start[i])
|
|
45
|
+
return same ? undefined : chosen
|
|
46
|
+
}
|
|
47
|
+
const start = control instanceof HTMLInputElement ? markupValue(control) : control.defaultValue
|
|
48
|
+
return control.value === start ? undefined : control.value
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/** Puts back what the control held before `v-model` wrote over it. */
|
|
52
|
+
function restore(control: ValueControl, changed: string | HTMLOptionElement[]) {
|
|
53
|
+
if (typeof changed === 'string') {
|
|
54
|
+
control.value = changed
|
|
55
|
+
return
|
|
56
|
+
}
|
|
57
|
+
// A list of options comes only from a select. Choosing one unchooses the others, unless it is
|
|
58
|
+
// a multiple select.
|
|
59
|
+
const select = control as HTMLSelectElement
|
|
60
|
+
for (const option of select.options) {
|
|
61
|
+
if (changed.includes(option)) option.selected = true
|
|
62
|
+
else if (select.multiple) option.selected = false
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* A directive that keeps what the browser holds in an input, a textarea or a select over the
|
|
68
|
+
* model's starting value: what was typed or chosen before the component woke up
|
|
69
|
+
* (`client:visible`), or a form the browser restored on going back. A range's model also follows
|
|
70
|
+
* a starting value the browser kept within its `min`, `max` and `step`. Otherwise the model stays
|
|
71
|
+
* exactly as the parent gave it. `const vLiveValue = useLiveValue(model)`, then
|
|
72
|
+
* `<input v-live-value v-model="model">`. It hands the value on with the event `v-model` listens
|
|
73
|
+
* for, as typing would, so `v-model` casts it as usual (a number for `type="number"`).
|
|
74
|
+
*/
|
|
75
|
+
export function useLiveValue(model: { value: unknown }) {
|
|
76
|
+
return {
|
|
77
|
+
// Before v-model writes the model's value over it. A control already on the page came from
|
|
78
|
+
// the server; if it differs from its markup, it was changed in the browser.
|
|
79
|
+
beforeMount(control: ValueControl) {
|
|
80
|
+
if (!control.isConnected) return
|
|
81
|
+
const changed = changedInBrowser(control)
|
|
82
|
+
if (changed !== undefined) changedValues.set(control, changed)
|
|
83
|
+
},
|
|
84
|
+
// Once the mount is over, after v-model and the parent's starting value have had their say.
|
|
85
|
+
mounted(control: ValueControl) {
|
|
86
|
+
queueMicrotask(() => {
|
|
87
|
+
const changed = changedValues.get(control)
|
|
88
|
+
if (changed !== undefined) restore(control, changed)
|
|
89
|
+
const clamped = control.type === 'range' && control.value !== String(model.value)
|
|
90
|
+
if (changed === undefined && !clamped) return
|
|
91
|
+
const event = control instanceof HTMLSelectElement ? 'change' : 'input'
|
|
92
|
+
control.dispatchEvent(new Event(event, { bubbles: true }))
|
|
93
|
+
})
|
|
94
|
+
},
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/** The radios and checkboxes changed in the browser before their component woke up: checked or not. */
|
|
99
|
+
const changedChecks = new WeakMap<HTMLInputElement, boolean>()
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* The radios that share `input`'s name on its page, as one group, or just `input` when it is a
|
|
103
|
+
* checkbox or has no name.
|
|
104
|
+
*/
|
|
105
|
+
function radioGroup(input: HTMLInputElement): HTMLInputElement[] {
|
|
106
|
+
if (input.type !== 'radio' || !input.name) return [input]
|
|
107
|
+
const root = input.getRootNode() as Document | ShadowRoot
|
|
108
|
+
return [...root.querySelectorAll<HTMLInputElement>(`input[type="radio"]`)].filter(
|
|
109
|
+
(radio) => radio.name === input.name,
|
|
110
|
+
)
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* A directive that keeps a radio's or checkbox's checked state from the browser: what was clicked
|
|
115
|
+
* before the component woke up (`client:visible`), or a form the browser restored on going back.
|
|
116
|
+
* Write `v-live-checked` on the input before its `v-model`. It hands the state to the `v-model` with a `change` event, so
|
|
117
|
+
* any model works: a radio group's value, a checkbox's boolean, a list of values.
|
|
118
|
+
*/
|
|
119
|
+
export const vLiveChecked = {
|
|
120
|
+
// Before any v-model in the group writes to it. A whole radio group is read at once, since the
|
|
121
|
+
// first radio's v-model unchecks the one the reader chose.
|
|
122
|
+
created(input: HTMLInputElement) {
|
|
123
|
+
if (!input.isConnected) return
|
|
124
|
+
for (const box of radioGroup(input)) {
|
|
125
|
+
if (box.checked !== box.defaultChecked && !changedChecks.has(box)) {
|
|
126
|
+
changedChecks.set(box, box.checked)
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
// Once the mount is over, after v-model has its list and the parent its starting value.
|
|
131
|
+
mounted(input: HTMLInputElement) {
|
|
132
|
+
const checked = changedChecks.get(input)
|
|
133
|
+
if (checked === undefined) return
|
|
134
|
+
queueMicrotask(() => {
|
|
135
|
+
input.checked = checked
|
|
136
|
+
// An unchecked radio says nothing: the radio checked in its place tells the model.
|
|
137
|
+
if (checked || input.type === 'checkbox') {
|
|
138
|
+
input.dispatchEvent(new Event('change', { bubbles: true }))
|
|
139
|
+
}
|
|
140
|
+
})
|
|
141
|
+
},
|
|
142
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { computed, onMounted, type Ref, type WritableComputedRef } from 'vue'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A component's `v-model` that, while the model is unset, follows `start()`, a value read from its
|
|
5
|
+
* slot. On mount the starting value is handed to the parent's `v-model`. The slot is read when the
|
|
6
|
+
* template reads the model, in render. Read in setup, Vue warns that the slot is invoked outside
|
|
7
|
+
* the render function.
|
|
8
|
+
*/
|
|
9
|
+
export function modelWithStart<T>(
|
|
10
|
+
model: Ref<T | undefined>,
|
|
11
|
+
start: () => T,
|
|
12
|
+
): WritableComputedRef<T> {
|
|
13
|
+
const selection = computed({
|
|
14
|
+
get: () => model.value ?? start(),
|
|
15
|
+
set: (value) => {
|
|
16
|
+
model.value = value
|
|
17
|
+
},
|
|
18
|
+
})
|
|
19
|
+
onMounted(() => {
|
|
20
|
+
if (model.value === undefined) model.value = selection.value
|
|
21
|
+
})
|
|
22
|
+
return selection
|
|
23
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** What an option renders as its input's `name` when the page gives it none. */
|
|
2
|
+
export const NAME_PLACEHOLDER = 'rkui-option-name'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Fills a group's `name` (and radio or checkbox type) into the options it has rendered, so the page
|
|
6
|
+
* writes them once. An option with no `name` of its own renders `NAME_PLACEHOLDER`, and an input
|
|
7
|
+
* with that name is a checkbox until the group says otherwise. An option given its own `name` is
|
|
8
|
+
* left as it is.
|
|
9
|
+
*/
|
|
10
|
+
export function fillOptions(html: string, name: string, multiple: boolean): string {
|
|
11
|
+
const type = multiple ? 'checkbox' : 'radio'
|
|
12
|
+
const safeName = name.replaceAll('"', '"')
|
|
13
|
+
return html
|
|
14
|
+
.replaceAll(
|
|
15
|
+
`type="checkbox" name="${NAME_PLACEHOLDER}"`,
|
|
16
|
+
() => `type="${type}" name="${safeName}"`,
|
|
17
|
+
)
|
|
18
|
+
.replaceAll(`name="${NAME_PLACEHOLDER}"`, () => `name="${safeName}"`)
|
|
19
|
+
}
|