@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,49 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
A form field: a label, a control and an optional hint or error message, stacked in
|
|
3
|
+
`div.rkui-field`. The slot is the control. `class`, `style` and other attributes go on the div.
|
|
4
|
+
With no `label`, `hint` or `error` it renders just its slot, and those attributes have nothing to
|
|
5
|
+
go on.
|
|
6
|
+
|
|
7
|
+
Input, Textarea, Select, Stepper, Search, File and Range wrap themselves in a Field and take its
|
|
8
|
+
`label`, `hint` and `error` props, so a labelled form field is one tag. They also set the
|
|
9
|
+
control's `id`, `aria-describedby` and `aria-invalid`. Use Field itself to put another control
|
|
10
|
+
(your own markup) in the same frame. Then the control needs the `id` that `for` names, and
|
|
11
|
+
`aria-describedby` pointing at `${for}-message`, which is the message's id.
|
|
12
|
+
|
|
13
|
+
@example
|
|
14
|
+
<Field label="Volume" for="volume" hint="0 to 100">
|
|
15
|
+
<input id="volume" type="number" aria-describedby="volume-message" />
|
|
16
|
+
</Field>
|
|
17
|
+
-->
|
|
18
|
+
<script setup lang="ts">
|
|
19
|
+
interface Props {
|
|
20
|
+
/** The label text; no label when left out. */
|
|
21
|
+
label?: string
|
|
22
|
+
/** The id of the control the label belongs to. */
|
|
23
|
+
for?: string
|
|
24
|
+
/** A quiet line under the control; none when left out. */
|
|
25
|
+
hint?: string
|
|
26
|
+
/**
|
|
27
|
+
* An error line under the control, in the error colour; it replaces the hint; none when left
|
|
28
|
+
* out.
|
|
29
|
+
*/
|
|
30
|
+
error?: string
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const { label, for: controlId, hint, error } = defineProps<Props>()
|
|
34
|
+
</script>
|
|
35
|
+
|
|
36
|
+
<template>
|
|
37
|
+
<div v-if="label || error || hint" class="rkui-field">
|
|
38
|
+
<label v-if="label" :for="controlId">{{ label }}</label>
|
|
39
|
+
<slot />
|
|
40
|
+
<span
|
|
41
|
+
v-if="error || hint"
|
|
42
|
+
:class="['rkui-field-message', error && 'rkui-field-message--error']"
|
|
43
|
+
:id="controlId && `${controlId}-message`"
|
|
44
|
+
>
|
|
45
|
+
{{ error || hint }}
|
|
46
|
+
</span>
|
|
47
|
+
</div>
|
|
48
|
+
<slot v-else />
|
|
49
|
+
</template>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/* Form fields: .rkui-field stacks a label, its control and an optional message; .rkui-check is an
|
|
2
|
+
inline label for a checkbox, radio or switch. */
|
|
3
|
+
|
|
4
|
+
.rkui-field {
|
|
5
|
+
display: grid;
|
|
6
|
+
gap: var(--rkui-space-1);
|
|
7
|
+
justify-items: start;
|
|
8
|
+
font-weight: 600;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.rkui-field-message {
|
|
12
|
+
color: var(--rkui-muted);
|
|
13
|
+
font-size: var(--rkui-step--1);
|
|
14
|
+
font-weight: 400;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.rkui-field-message--error {
|
|
18
|
+
color: var(--rkui-coral-deep);
|
|
19
|
+
font-weight: 600;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.rkui-check {
|
|
23
|
+
display: inline-flex;
|
|
24
|
+
align-items: center;
|
|
25
|
+
gap: var(--rkui-space-2);
|
|
26
|
+
cursor: pointer;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.rkui-check:has(:disabled) {
|
|
30
|
+
cursor: not-allowed;
|
|
31
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/* Figure: an image, chart or widget with a caption under it and an optional source line.
|
|
2
|
+
|
|
3
|
+
<figure class="rkui-figure">
|
|
4
|
+
…image, chart or widget…
|
|
5
|
+
<figcaption class="rkui-figure-caption">
|
|
6
|
+
<span class="rkui-figure-label">Figure 1.</span> Caption text.
|
|
7
|
+
<span class="rkui-figure-source">Source: …</span>
|
|
8
|
+
</figcaption>
|
|
9
|
+
</figure> */
|
|
10
|
+
|
|
11
|
+
.rkui-figure {
|
|
12
|
+
display: grid;
|
|
13
|
+
gap: var(--rkui-space-3);
|
|
14
|
+
margin: var(--rkui-space-5) 0;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.rkui-figure-caption {
|
|
18
|
+
max-inline-size: 68ch;
|
|
19
|
+
font-size: var(--rkui-step--1);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.rkui-figure-label {
|
|
23
|
+
font-weight: 700;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.rkui-figure-source {
|
|
27
|
+
display: block;
|
|
28
|
+
margin-block-start: var(--rkui-space-1);
|
|
29
|
+
color: var(--rkui-muted);
|
|
30
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
A file input, in two variants, inside a Field. `class` and `style` go on the Field's div when
|
|
3
|
+
there is a label, hint or error, otherwise on the outer element (the input, or the drop panel's
|
|
4
|
+
label); other attributes (name, accept, multiple, disabled, ...) go on the input. Without a
|
|
5
|
+
label, give it an `aria-label`; the 'drop' variant is labelled by its own text. It has no
|
|
6
|
+
`v-model`, as a browser lets no script set a file input's files: read them in a `change`
|
|
7
|
+
handler. With `file-enhance.js` (in `@oneonefour/rkui/enhance.js`) the drop panel shows the
|
|
8
|
+
chosen files' names, joined with commas, and clears them when the form is reset; without it the
|
|
9
|
+
panel keeps showing its prompt. In Safari, the 'button' variant's "no file selected" sits right
|
|
10
|
+
against the button.
|
|
11
|
+
|
|
12
|
+
@example
|
|
13
|
+
<File variant="drop" name="upload" prompt="Choose a file or drop it here" />
|
|
14
|
+
-->
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { useAttrs } from 'vue'
|
|
17
|
+
import UploadIcon from '@oneonefour/rkui/icons/upload-simple.vue'
|
|
18
|
+
import Field from '../field/Field.vue'
|
|
19
|
+
import { useComponentId } from '../../shared/component-id'
|
|
20
|
+
import { controlAttrs } from '../../shared/split-attrs'
|
|
21
|
+
|
|
22
|
+
defineOptions({ inheritAttrs: false })
|
|
23
|
+
|
|
24
|
+
interface Props {
|
|
25
|
+
/**
|
|
26
|
+
* 'button' (A: the input frame with a small button and the filename) or 'drop' (B: a dashed
|
|
27
|
+
* panel that takes clicks and dropped files, and shows the chosen files' names when
|
|
28
|
+
* file-enhance.js is loaded); button when left out. Open, see DECISIONS ("Special inputs").
|
|
29
|
+
*/
|
|
30
|
+
variant?: 'button' | 'drop'
|
|
31
|
+
/**
|
|
32
|
+
* The drop panel's text, for the 'drop' variant; "Choose a file or drop it here" when left out.
|
|
33
|
+
*/
|
|
34
|
+
prompt?: string
|
|
35
|
+
/** The visible label; none when left out. */
|
|
36
|
+
label?: string
|
|
37
|
+
/** A quiet line under the input; none when left out. */
|
|
38
|
+
hint?: string
|
|
39
|
+
/** An error line under the input; it also marks the input invalid; none when left out. */
|
|
40
|
+
error?: string
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const {
|
|
44
|
+
variant = 'button',
|
|
45
|
+
prompt = 'Choose a file or drop it here',
|
|
46
|
+
label,
|
|
47
|
+
hint,
|
|
48
|
+
error,
|
|
49
|
+
} = defineProps<Props>()
|
|
50
|
+
|
|
51
|
+
const attrs = useAttrs()
|
|
52
|
+
const id = (attrs.id as string | undefined) ?? useComponentId('file')
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* The page's attributes: `class` and `style` for the Field's div when it draws a frame, otherwise
|
|
56
|
+
* for the outer element (the drop panel, or the input); the rest for the input.
|
|
57
|
+
*/
|
|
58
|
+
function pageAttrs() {
|
|
59
|
+
return controlAttrs(attrs, id, { label, hint, error })
|
|
60
|
+
}
|
|
61
|
+
</script>
|
|
62
|
+
|
|
63
|
+
<template>
|
|
64
|
+
<Field :label :for="id" :hint :error v-bind="pageAttrs().field">
|
|
65
|
+
<label v-if="variant === 'drop'" class="rkui-file-drop" v-bind="pageAttrs().wrapper">
|
|
66
|
+
<input type="file" v-bind="pageAttrs().wrappedControl" />
|
|
67
|
+
<UploadIcon class="rkui-icon" />
|
|
68
|
+
<span class="rkui-file-drop-prompt">{{ prompt }}</span>
|
|
69
|
+
<span class="rkui-file-drop-chosen"></span>
|
|
70
|
+
</label>
|
|
71
|
+
<input v-else class="rkui-input" type="file" v-bind="pageAttrs().control" />
|
|
72
|
+
</Field>
|
|
73
|
+
</template>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// Shows the chosen files' names, joined with commas, inside a file drop panel, after a choice or a
|
|
2
|
+
// drop, and clears them when the form is reset. Without this script the panel still picks and
|
|
3
|
+
// submits files; it just shows its prompt. Delegated listeners serve every panel, including ones
|
|
4
|
+
// added later.
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Writes the names of a panel's chosen files into it, each name in a span so a long list wraps
|
|
8
|
+
* between names, and marks the panel `data-rkui-chosen` while any are chosen.
|
|
9
|
+
* @param {Element} panel a `.rkui-file-drop` label
|
|
10
|
+
*/
|
|
11
|
+
function showChosen(panel) {
|
|
12
|
+
const input = panel.querySelector('input[type="file"]')
|
|
13
|
+
const chosen = panel.querySelector('.rkui-file-drop-chosen')
|
|
14
|
+
if (!(input instanceof HTMLInputElement) || !chosen) return
|
|
15
|
+
const names = [...(input.files ?? [])].map((file) => file.name)
|
|
16
|
+
const spans = names.map((name, index) => {
|
|
17
|
+
const span = document.createElement('span')
|
|
18
|
+
span.textContent = index < names.length - 1 ? `${name},` : name
|
|
19
|
+
return span
|
|
20
|
+
})
|
|
21
|
+
chosen.replaceChildren(...spans.flatMap((span, index) => (index ? [' ', span] : [span])))
|
|
22
|
+
panel.toggleAttribute('data-rkui-chosen', names.length > 0)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
document.addEventListener('change', (event) => {
|
|
26
|
+
const panel = /** @type {Element} */ (event.target).closest?.('.rkui-file-drop')
|
|
27
|
+
if (panel) showChosen(panel)
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
// The reset event comes before the form clears its inputs, so the panels are read once it has. A
|
|
31
|
+
// microtask is too soon when a reset button is clicked: it runs as soon as this listener returns.
|
|
32
|
+
document.addEventListener('reset', (event) => {
|
|
33
|
+
const form = /** @type {HTMLFormElement} */ (event.target)
|
|
34
|
+
setTimeout(() => form.querySelectorAll('.rkui-file-drop').forEach(showChosen))
|
|
35
|
+
})
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/* File inputs, in two variants (A, B).
|
|
2
|
+
|
|
3
|
+
File A: the input frame with a small filled button that pops, and the browser's filename text.
|
|
4
|
+
<input class="rkui-input" type="file">
|
|
5
|
+
|
|
6
|
+
File B: a dashed drop panel. The input is invisible but covers the panel, so clicks and dropped
|
|
7
|
+
files land on it with no script. file-enhance.js writes the chosen files' names, joined with
|
|
8
|
+
commas, in .rkui-file-drop-chosen and sets data-rkui-chosen on the label, which swaps the prompt
|
|
9
|
+
for them; without the script the prompt stays.
|
|
10
|
+
<label class="rkui-file-drop">
|
|
11
|
+
<input type="file">
|
|
12
|
+
<svg class="rkui-icon" aria-hidden="true">…</svg>
|
|
13
|
+
<span class="rkui-file-drop-prompt">Label</span>
|
|
14
|
+
<span class="rkui-file-drop-chosen"></span>
|
|
15
|
+
</label> */
|
|
16
|
+
|
|
17
|
+
/* File A */
|
|
18
|
+
|
|
19
|
+
.rkui-input[type='file'] {
|
|
20
|
+
cursor: pointer;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/* The button moves with relative offsets rather than translate, so the filename beside it stays
|
|
24
|
+
still in every browser. At rest it sits one press offset towards the light, so pressed in, it
|
|
25
|
+
is centred in the frame. */
|
|
26
|
+
.rkui-input[type='file']::file-selector-button {
|
|
27
|
+
position: relative;
|
|
28
|
+
inset-block-start: calc(-1 * var(--rkui-press-offset-y));
|
|
29
|
+
inset-inline-start: 0;
|
|
30
|
+
margin-inline-end: var(--rkui-space-4);
|
|
31
|
+
padding: var(--rkui-space-1) var(--rkui-space-3);
|
|
32
|
+
border: var(--rkui-outline-width) solid var(--rkui-line);
|
|
33
|
+
border-radius: var(--rkui-radius);
|
|
34
|
+
background: var(--rkui-yellow);
|
|
35
|
+
color: var(--rkui-on-fill);
|
|
36
|
+
box-shadow: var(--rkui-shadow);
|
|
37
|
+
font: inherit;
|
|
38
|
+
font-size: var(--rkui-step--1);
|
|
39
|
+
font-weight: 700;
|
|
40
|
+
cursor: pointer;
|
|
41
|
+
transition:
|
|
42
|
+
inset var(--rkui-duration-fast) ease,
|
|
43
|
+
box-shadow var(--rkui-duration-fast) ease;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@media (hover: hover) {
|
|
47
|
+
.rkui-input[type='file']:enabled:hover::file-selector-button {
|
|
48
|
+
box-shadow: var(--rkui-shadow-hover);
|
|
49
|
+
inset-block-start: calc(-1 * (var(--rkui-press-offset-y) + var(--rkui-lift-offset-y)));
|
|
50
|
+
inset-inline-start: calc(-1 * var(--rkui-lift-offset-x));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.rkui-input[type='file']:enabled:active::file-selector-button {
|
|
55
|
+
box-shadow: var(--rkui-shadow-pressed);
|
|
56
|
+
inset-block-start: 0;
|
|
57
|
+
inset-inline-start: var(--rkui-press-offset-x);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.rkui-input[type='file']:disabled::file-selector-button {
|
|
61
|
+
inset-block-start: 0;
|
|
62
|
+
box-shadow: none;
|
|
63
|
+
cursor: not-allowed;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/* File B */
|
|
67
|
+
|
|
68
|
+
.rkui-file-drop {
|
|
69
|
+
position: relative;
|
|
70
|
+
display: grid;
|
|
71
|
+
justify-items: center;
|
|
72
|
+
gap: var(--rkui-space-2);
|
|
73
|
+
inline-size: 100%;
|
|
74
|
+
max-inline-size: 30rem;
|
|
75
|
+
padding: var(--rkui-space-6) var(--rkui-space-4);
|
|
76
|
+
border: var(--rkui-outline-width) dashed var(--rkui-line-unfilled);
|
|
77
|
+
border-radius: var(--rkui-radius);
|
|
78
|
+
background: var(--rkui-raised);
|
|
79
|
+
color: var(--rkui-fg);
|
|
80
|
+
font-weight: 600;
|
|
81
|
+
text-align: center;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.rkui-file-drop-chosen,
|
|
85
|
+
.rkui-file-drop[data-rkui-chosen] .rkui-file-drop-prompt {
|
|
86
|
+
display: none;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.rkui-file-drop[data-rkui-chosen] .rkui-file-drop-chosen {
|
|
90
|
+
display: block;
|
|
91
|
+
max-inline-size: 100%;
|
|
92
|
+
overflow-wrap: anywhere;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/* Each name is one span, so a long list wraps between names, and inside one only if it is wider
|
|
96
|
+
than the panel. */
|
|
97
|
+
.rkui-file-drop-chosen > span {
|
|
98
|
+
display: inline-block;
|
|
99
|
+
max-inline-size: 100%;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.rkui-file-drop input {
|
|
103
|
+
position: absolute;
|
|
104
|
+
inset: 0;
|
|
105
|
+
opacity: 0;
|
|
106
|
+
cursor: pointer;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.rkui-file-drop:hover {
|
|
110
|
+
border-style: solid;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.rkui-file-drop:has(:focus-visible) {
|
|
114
|
+
outline: var(--rkui-focus-width) solid var(--rkui-focus);
|
|
115
|
+
outline-offset: var(--rkui-focus-offset);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.rkui-file-drop:has([aria-invalid='true']) {
|
|
119
|
+
border-color: var(--rkui-coral-deep);
|
|
120
|
+
background-color: var(--rkui-coral-tint);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.rkui-file-drop:has(:disabled) {
|
|
124
|
+
opacity: 0.45;
|
|
125
|
+
border-style: dashed;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.rkui-file-drop:has(:disabled) input {
|
|
129
|
+
cursor: not-allowed;
|
|
130
|
+
}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
A folder: tabs standing on a sheet, each with its own panel, with no JavaScript. The slot holds
|
|
3
|
+
its Tabs: each `Tab` is one tab, and its slot is that tab's panel. Each tab is a label around a
|
|
4
|
+
native radio, so clicking a tab or the arrow keys choose it, and CSS shows the chosen tab's panel.
|
|
5
|
+
The first tab marked `selected` starts chosen, or the first tab when none is. A Folder takes up to
|
|
6
|
+
20 tabs. `class`, `style` and other attributes go on the outer div.
|
|
7
|
+
|
|
8
|
+
The tabs stand on any side of the sheet (`placement`); on the left and right they stack down its
|
|
9
|
+
edge, as long as the sheet, with the foot of their letters towards it. They never wrap: when they
|
|
10
|
+
don't fit, the strip scrolls (`overflow="scroll"`), and folder-enhance.js shows a thin bar on its
|
|
11
|
+
outer side. With `overflow="collapse"`, folder-enhance.js shows as many tabs as fit: the first and
|
|
12
|
+
last, the chosen one and its neighbours, and more around it as there is room. On a narrow screen
|
|
13
|
+
the tabs go to their small size, then leave out the first and last: the chosen one between the ‹ ›
|
|
14
|
+
step tabs (`steps`), or with its neighbours when there are none, and as many around it as fit.
|
|
15
|
+
They scroll only if even that doesn't fit. Without the script the strip scrolls. Hidden tabs are
|
|
16
|
+
reached with the arrow keys or the step tabs, which choose the tab before or after.
|
|
17
|
+
|
|
18
|
+
In a `.vue` file, `v-model` is the chosen tab's index, counting from 0, so the widget can read
|
|
19
|
+
and switch the tab; an index past either end chooses the nearest tab. With `v-model`, the
|
|
20
|
+
parent's value is the starting value unless it is undefined; then `selected` applies, on the
|
|
21
|
+
server too, and is handed to the parent on mount. In an Astro or MDX page it gets no `client:`
|
|
22
|
+
directive and ships no JavaScript; the widget that holds a Folder with `v-model` gets
|
|
23
|
+
`client:visible`, and until then its tabs switch as they do without JavaScript.
|
|
24
|
+
|
|
25
|
+
Inside a `<form>`, the radios are form fields: the form sends `rkui-folder-…=<index>` for the
|
|
26
|
+
chosen tab, and resetting the form goes back to the tab that started chosen.
|
|
27
|
+
|
|
28
|
+
@example
|
|
29
|
+
<Folder label="Topics">
|
|
30
|
+
<Tab label="One"><p>First panel.</p></Tab>
|
|
31
|
+
<Tab label="Two"><p>Second panel.</p></Tab>
|
|
32
|
+
</Folder>
|
|
33
|
+
<Folder v-model="step" label="Steps" placement="left" steps>…</Folder>
|
|
34
|
+
-->
|
|
35
|
+
<script setup lang="ts">
|
|
36
|
+
import { computed, onBeforeUnmount, onMounted, useSlots, useTemplateRef, watch } from 'vue'
|
|
37
|
+
import CaretLeftIcon from '@oneonefour/rkui/icons/caret-left.vue'
|
|
38
|
+
import CaretRightIcon from '@oneonefour/rkui/icons/caret-right.vue'
|
|
39
|
+
import { useComponentId } from '../../shared/component-id'
|
|
40
|
+
import { vLiveChecked } from '../../shared/live-value'
|
|
41
|
+
import { modelWithStart } from '../../shared/model-start'
|
|
42
|
+
import { strayContent } from './tab-items'
|
|
43
|
+
import { readSlotTabs } from './tab-slot'
|
|
44
|
+
|
|
45
|
+
interface Props {
|
|
46
|
+
/** The group's accessible name. */
|
|
47
|
+
label: string
|
|
48
|
+
/** A sheet in the selected tint; the raised surface when left out. */
|
|
49
|
+
tinted?: boolean
|
|
50
|
+
/** The side of the sheet the tabs stand on; 'top' when left out. */
|
|
51
|
+
placement?: 'top' | 'bottom' | 'left' | 'right'
|
|
52
|
+
/**
|
|
53
|
+
* When the tabs don't fit: 'scroll' (a strip that scrolls, every tab in reach) or 'collapse'
|
|
54
|
+
* (as many tabs as fit around the chosen one); 'scroll' when left out.
|
|
55
|
+
*/
|
|
56
|
+
overflow?: 'scroll' | 'collapse'
|
|
57
|
+
/** ‹ › step tabs at the strip's ends, choosing the tab before or after; none when left out. */
|
|
58
|
+
steps?: boolean
|
|
59
|
+
/**
|
|
60
|
+
* The look of the dots at the ends of a strip of tabs that scrolls (on the top or the bottom),
|
|
61
|
+
* written as `data-rkui-dots` on the outer div: 'plain', or 'pill' for dots in a raised pill; the
|
|
62
|
+
* page's setting when left out.
|
|
63
|
+
*/
|
|
64
|
+
dots?: 'plain' | 'pill'
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const { label, tinted, placement = 'top', overflow = 'scroll', steps, dots } = defineProps<Props>()
|
|
68
|
+
|
|
69
|
+
/** The chosen tab's index, from 0 (`v-model`); the tab marked `selected`, or 0, when left out. */
|
|
70
|
+
const model = defineModel<number>()
|
|
71
|
+
|
|
72
|
+
/** The most tabs a Folder takes: folder.css matches each tab to its panel by number. */
|
|
73
|
+
const MOST_TABS = 20
|
|
74
|
+
|
|
75
|
+
const slots = useSlots()
|
|
76
|
+
// Read while rendering, as Vue asks of slots, not once in setup.
|
|
77
|
+
const tabs = computed(() => {
|
|
78
|
+
const { tabs, outside, outsideHtml } = readSlotTabs(slots.default?.() ?? [])
|
|
79
|
+
const stray = strayContent(outsideHtml)
|
|
80
|
+
if (outside.length > 0 || stray) {
|
|
81
|
+
throw new Error(`Folder: put everything inside a Tab. Found outside one: ${stray.slice(0, 80)}`)
|
|
82
|
+
}
|
|
83
|
+
if (tabs.length > MOST_TABS) {
|
|
84
|
+
throw new Error(`Folder takes up to ${MOST_TABS} tabs; "${label}" has ${tabs.length}.`)
|
|
85
|
+
}
|
|
86
|
+
return tabs
|
|
87
|
+
})
|
|
88
|
+
const selection = modelWithStart(model, () => tabs.value.findIndex((tab) => tab.selected))
|
|
89
|
+
/** The chosen tab's index, kept within the tabs there are. */
|
|
90
|
+
const chosen = computed({
|
|
91
|
+
get: () => Math.min(Math.max(selection.value, 0), tabs.value.length - 1),
|
|
92
|
+
set: (index) => {
|
|
93
|
+
selection.value = index
|
|
94
|
+
},
|
|
95
|
+
})
|
|
96
|
+
// The radios' name, and the start of each tab's and radio's id.
|
|
97
|
+
const base = useComponentId('folder')
|
|
98
|
+
|
|
99
|
+
/** Below and right of the sheet, the strip comes after the panels, as it is read. */
|
|
100
|
+
const parts = computed(() =>
|
|
101
|
+
placement === 'bottom' || placement === 'right' ? ['content', 'strip'] : ['strip', 'content'],
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
/** The tab chosen when the Folder first renders, whose radio a form reset goes back to. */
|
|
105
|
+
let start: number | undefined
|
|
106
|
+
function isStart(index: number): boolean {
|
|
107
|
+
start ??= chosen.value
|
|
108
|
+
return index === start
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const root = useTemplateRef<HTMLElement>('root')
|
|
112
|
+
let form: HTMLFormElement | null = null
|
|
113
|
+
/** After a form reset has put the radios back, tells the model which tab is chosen. */
|
|
114
|
+
function onReset() {
|
|
115
|
+
// The reset event comes before the reset itself.
|
|
116
|
+
setTimeout(() => {
|
|
117
|
+
const radios = [
|
|
118
|
+
...(root.value?.querySelectorAll<HTMLInputElement>(
|
|
119
|
+
':scope > .rkui-folder-strip input[type="radio"]',
|
|
120
|
+
) ?? []),
|
|
121
|
+
]
|
|
122
|
+
model.value = radios.findIndex((radio) => radio.checked)
|
|
123
|
+
})
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
onMounted(() => {
|
|
127
|
+
form = root.value?.closest('form') ?? null
|
|
128
|
+
form?.addEventListener('reset', onReset)
|
|
129
|
+
})
|
|
130
|
+
|
|
131
|
+
// Vue checks the radio without a change event when the widget switches the tab, so the strip
|
|
132
|
+
// says so itself, for folder-enhance.js to show the tabs around the new one.
|
|
133
|
+
watch(
|
|
134
|
+
chosen,
|
|
135
|
+
() => {
|
|
136
|
+
const strip = root.value?.querySelector(':scope > .rkui-folder-strip > .rkui-folder-tabs')
|
|
137
|
+
strip?.dispatchEvent(new Event('change', { bubbles: true }))
|
|
138
|
+
},
|
|
139
|
+
{ flush: 'post' },
|
|
140
|
+
)
|
|
141
|
+
onBeforeUnmount(() => form?.removeEventListener('reset', onReset))
|
|
142
|
+
</script>
|
|
143
|
+
|
|
144
|
+
<template>
|
|
145
|
+
<div
|
|
146
|
+
ref="root"
|
|
147
|
+
:class="[
|
|
148
|
+
'rkui-folder',
|
|
149
|
+
'rkui-folder--tabs',
|
|
150
|
+
`rkui-folder--${overflow}`,
|
|
151
|
+
{ [`rkui-folder--${placement}`]: placement !== 'top', 'rkui-folder--tinted': tinted },
|
|
152
|
+
]"
|
|
153
|
+
role="group"
|
|
154
|
+
:aria-label="label"
|
|
155
|
+
:data-rkui-dots="dots"
|
|
156
|
+
>
|
|
157
|
+
<template v-for="part in parts" :key="part">
|
|
158
|
+
<div v-if="part === 'strip'" class="rkui-folder-strip">
|
|
159
|
+
<div
|
|
160
|
+
class="rkui-folder-scrollbar rkui-scroll rkui-scroll--bar"
|
|
161
|
+
aria-hidden="true"
|
|
162
|
+
tabindex="-1"
|
|
163
|
+
hidden
|
|
164
|
+
>
|
|
165
|
+
<div></div>
|
|
166
|
+
</div>
|
|
167
|
+
<div
|
|
168
|
+
:class="[
|
|
169
|
+
'rkui-folder-tabs',
|
|
170
|
+
'rkui-scroll',
|
|
171
|
+
{ 'rkui-scroll--bar': placement === 'left' || placement === 'right' },
|
|
172
|
+
]"
|
|
173
|
+
>
|
|
174
|
+
<span v-for="(tab, i) in tabs" :key="i" class="rkui-strip-item">
|
|
175
|
+
<span
|
|
176
|
+
v-if="overflow === 'collapse' && i > 1 && i === tabs.length - 1"
|
|
177
|
+
class="rkui-strip-gap"
|
|
178
|
+
>…</span
|
|
179
|
+
>
|
|
180
|
+
<label class="rkui-folder-tab" :id="`${base}-tab-${i}`">
|
|
181
|
+
<input
|
|
182
|
+
v-live-checked
|
|
183
|
+
v-model="chosen"
|
|
184
|
+
type="radio"
|
|
185
|
+
:id="`${base}-${i}`"
|
|
186
|
+
:name="base"
|
|
187
|
+
:value="i"
|
|
188
|
+
:checked.attr="isStart(i) || undefined"
|
|
189
|
+
/>
|
|
190
|
+
<span class="rkui-folder-label">{{ tab.label }}</span>
|
|
191
|
+
</label>
|
|
192
|
+
<span
|
|
193
|
+
v-if="overflow === 'collapse' && i === 0 && tabs.length > 2"
|
|
194
|
+
class="rkui-strip-gap"
|
|
195
|
+
>…</span
|
|
196
|
+
>
|
|
197
|
+
<template v-if="steps">
|
|
198
|
+
<span class="rkui-folder-step rkui-folder-step--previous" aria-hidden="true">
|
|
199
|
+
<label
|
|
200
|
+
:class="['rkui-folder-tab', { 'rkui-folder-tab--off': i === 0 }]"
|
|
201
|
+
:for="i > 0 ? `${base}-${i - 1}` : undefined"
|
|
202
|
+
>
|
|
203
|
+
<CaretLeftIcon class="rkui-icon rkui-icon--small" />
|
|
204
|
+
</label>
|
|
205
|
+
</span>
|
|
206
|
+
<span class="rkui-folder-step rkui-folder-step--next" aria-hidden="true">
|
|
207
|
+
<label
|
|
208
|
+
:class="['rkui-folder-tab', { 'rkui-folder-tab--off': i === tabs.length - 1 }]"
|
|
209
|
+
:for="i < tabs.length - 1 ? `${base}-${i + 1}` : undefined"
|
|
210
|
+
>
|
|
211
|
+
<CaretRightIcon class="rkui-icon rkui-icon--small" />
|
|
212
|
+
</label>
|
|
213
|
+
</span>
|
|
214
|
+
</template>
|
|
215
|
+
</span>
|
|
216
|
+
</div>
|
|
217
|
+
</div>
|
|
218
|
+
<template v-else>
|
|
219
|
+
<template v-for="(tab, i) in tabs" :key="i">
|
|
220
|
+
<div
|
|
221
|
+
v-if="tab.panel"
|
|
222
|
+
class="rkui-folder-sheet"
|
|
223
|
+
role="group"
|
|
224
|
+
:aria-labelledby="`${base}-tab-${i}`"
|
|
225
|
+
tabindex="0"
|
|
226
|
+
>
|
|
227
|
+
<component :is="tab.panel" />
|
|
228
|
+
</div>
|
|
229
|
+
<div
|
|
230
|
+
v-else
|
|
231
|
+
class="rkui-folder-sheet"
|
|
232
|
+
role="group"
|
|
233
|
+
:aria-labelledby="`${base}-tab-${i}`"
|
|
234
|
+
tabindex="0"
|
|
235
|
+
v-html="tab.html"
|
|
236
|
+
/>
|
|
237
|
+
</template>
|
|
238
|
+
</template>
|
|
239
|
+
</template>
|
|
240
|
+
</div>
|
|
241
|
+
</template>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
One tab of a `Folder`, directly inside it. Its slot is the tab's panel. The Folder builds the tab
|
|
3
|
+
and its panel from this tab's props and slot (see tab-slot.ts), so a Tab takes no other
|
|
4
|
+
attributes: `class`, `id` and the rest are dropped.
|
|
5
|
+
|
|
6
|
+
@example
|
|
7
|
+
<Tab label="Two" selected><p>Panel two.</p></Tab>
|
|
8
|
+
-->
|
|
9
|
+
<script setup lang="ts">
|
|
10
|
+
import { tabData } from './tab-items'
|
|
11
|
+
|
|
12
|
+
interface Props {
|
|
13
|
+
/** The tab's text. */
|
|
14
|
+
label: string
|
|
15
|
+
/** The tab that starts selected; the group's first tab when none is. */
|
|
16
|
+
selected?: boolean
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const { label, selected } = defineProps<Props>()
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<template>
|
|
23
|
+
<!-- Rendered only when Astro renders a Tab by itself (in MDX or .astro), for its group to read. -->
|
|
24
|
+
<component is="rkui-tab-item" :data-tab="tabData(label, selected)"><slot /></component>
|
|
25
|
+
</template>
|