From b30fec150ce90a2d8a659f3d05f4751862385285 Mon Sep 17 00:00:00 2001 From: HolgerHatGarKeineNode Date: Fri, 23 Jan 2026 23:00:02 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20Add=20new=20Flux=20icons:=20impl?= =?UTF-8?q?ement=20multiple=20reusable=20icon=20components=20(e.g.,=20hand?= =?UTF-8?q?-raised,=20hand-thumb-up,=20heart,=20hashtag,=20home)=20with=20?= =?UTF-8?q?variant=20support=20for=20improved=20UI=20consistency.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 - design.pen | 2075 + docker-compose.yml | 10 - resources/css/app.css | 279 +- resources/views/flux/accent.blade.php | 38 + .../views/flux/accordion/content.blade.php | 23 + .../views/flux/accordion/heading.blade.php | 33 + resources/views/flux/accordion/icon.blade.php | 17 + .../views/flux/accordion/index.blade.php | 9 + resources/views/flux/accordion/item.blade.php | 42 + resources/views/flux/aside.blade.php | 21 + .../views/flux/autocomplete/index.blade.php | 15 + .../views/flux/autocomplete/item.blade.php | 14 + .../views/flux/autocomplete/items.blade.php | 17 + resources/views/flux/avatar/group.blade.php | 13 + resources/views/flux/avatar/index.blade.php | 189 + resources/views/flux/badge/close.blade.php | 25 + resources/views/flux/badge/index.blade.php | 98 + resources/views/flux/brand.blade.php | 63 + .../views/flux/breadcrumbs/index.blade.php | 5 + .../views/flux/breadcrumbs/item.blade.php | 69 + resources/views/flux/button/group.blade.php | 47 + resources/views/flux/button/index.blade.php | 202 + resources/views/flux/calendar/index.blade.php | 222 + .../views/flux/callout/heading.blade.php | 29 + resources/views/flux/callout/index.blade.php | 222 + resources/views/flux/callout/link.blade.php | 15 + resources/views/flux/callout/text.blade.php | 5 + resources/views/flux/card/index.blade.php | 20 + resources/views/flux/chart/area.blade.php | 9 + .../views/flux/chart/axis/grid.blade.php | 21 + .../views/flux/chart/axis/index.blade.php | 25 + .../views/flux/chart/axis/line.blade.php | 23 + .../views/flux/chart/axis/mark.blade.php | 31 + .../views/flux/chart/axis/tick.blade.php | 35 + resources/views/flux/chart/cursor.blade.php | 11 + resources/views/flux/chart/index.blade.php | 18 + .../views/flux/chart/legend/index.blade.php | 21 + .../flux/chart/legend/indicator.blade.php | 3 + resources/views/flux/chart/line.blade.php | 15 + resources/views/flux/chart/point.blade.php | 13 + .../views/flux/chart/summary/index.blade.php | 7 + .../views/flux/chart/summary/value.blade.php | 15 + resources/views/flux/chart/svg.blade.php | 11 + .../flux/chart/tooltip/heading.blade.php | 17 + .../views/flux/chart/tooltip/index.blade.php | 19 + .../views/flux/chart/tooltip/value.blade.php | 27 + resources/views/flux/chart/value.blade.php | 14 + resources/views/flux/chart/viewport.blade.php | 5 + .../views/flux/chart/zero-line.blade.php | 15 + resources/views/flux/checkbox/all.blade.php | 2 + .../views/flux/checkbox/group/index.blade.php | 5 + .../checkbox/group/variants/buttons.blade.php | 25 + .../checkbox/group/variants/cards.blade.php | 25 + .../checkbox/group/variants/default.blade.php | 22 + .../checkbox/group/variants/pills.blade.php | 25 + resources/views/flux/checkbox/index.blade.php | 16 + .../views/flux/checkbox/indicator.blade.php | 32 + .../flux/checkbox/variants/buttons.blade.php | 67 + .../flux/checkbox/variants/cards.blade.php | 78 + .../flux/checkbox/variants/default.blade.php | 25 + .../flux/checkbox/variants/pills.blade.php | 29 + resources/views/flux/command/empty.blade.php | 9 + resources/views/flux/command/index.blade.php | 16 + resources/views/flux/command/input.blade.php | 51 + resources/views/flux/command/item.blade.php | 38 + resources/views/flux/command/items.blade.php | 15 + resources/views/flux/composer/index.blade.php | 77 + resources/views/flux/container.blade.php | 11 + resources/views/flux/context.blade.php | 20 + .../views/flux/date-picker/button.blade.php | 56 + .../views/flux/date-picker/index.blade.php | 297 + .../views/flux/date-picker/input.blade.php | 27 + .../views/flux/date-picker/selected.blade.php | 17 + resources/views/flux/description.blade.php | 18 + resources/views/flux/dropdown.blade.php | 21 + resources/views/flux/editor/align.blade.php | 35 + .../views/flux/editor/blockquote.blade.php | 11 + resources/views/flux/editor/bold.blade.php | 11 + resources/views/flux/editor/bullet.blade.php | 11 + resources/views/flux/editor/button.blade.php | 36 + resources/views/flux/editor/code.blade.php | 11 + resources/views/flux/editor/content.blade.php | 3 + resources/views/flux/editor/heading.blade.php | 40 + .../views/flux/editor/highlight.blade.php | 11 + resources/views/flux/editor/index.blade.php | 52 + resources/views/flux/editor/italic.blade.php | 11 + resources/views/flux/editor/link.blade.php | 33 + resources/views/flux/editor/option.blade.php | 5 + resources/views/flux/editor/ordered.blade.php | 11 + resources/views/flux/editor/redo.blade.php | 11 + resources/views/flux/editor/scripts.blade.php | 2 + .../views/flux/editor/separator.blade.php | 3 + resources/views/flux/editor/spacer.blade.php | 3 + resources/views/flux/editor/strike.blade.php | 11 + resources/views/flux/editor/styles.blade.php | 2 + .../views/flux/editor/subscript.blade.php | 11 + .../views/flux/editor/superscript.blade.php | 11 + resources/views/flux/editor/toolbar.blade.php | 50 + .../views/flux/editor/underline.blade.php | 11 + resources/views/flux/editor/undo.blade.php | 11 + resources/views/flux/error.blade.php | 29 + resources/views/flux/field.blade.php | 42 + resources/views/flux/fieldset.blade.php | 40 + .../views/flux/file-item/index.blade.php | 87 + .../views/flux/file-item/remove.blade.php | 12 + .../flux/file-upload/dropzone/index.blade.php | 79 + .../views/flux/file-upload/index.blade.php | 27 + resources/views/flux/footer.blade.php | 13 + resources/views/flux/header.blade.php | 30 + resources/views/flux/heading.blade.php | 42 + .../views/flux/icon/academic-cap.blade.php | 50 + .../icon/adjustments-horizontal.blade.php | 47 + .../flux/icon/adjustments-vertical.blade.php | 47 + .../icon/archive-box-arrow-down.blade.php | 49 + .../flux/icon/archive-box-x-mark.blade.php | 50 + .../views/flux/icon/archive-box.blade.php | 50 + .../flux/icon/arrow-down-circle.blade.php | 47 + .../views/flux/icon/arrow-down-left.blade.php | 47 + .../icon/arrow-down-on-square-stack.blade.php | 49 + .../flux/icon/arrow-down-on-square.blade.php | 47 + .../flux/icon/arrow-down-right.blade.php | 47 + .../views/flux/icon/arrow-down-tray.blade.php | 49 + .../views/flux/icon/arrow-down.blade.php | 47 + .../flux/icon/arrow-left-circle.blade.php | 47 + .../arrow-left-end-on-rectangle.blade.php | 49 + .../arrow-left-start-on-rectangle.blade.php | 48 + .../views/flux/icon/arrow-left.blade.php | 47 + .../views/flux/icon/arrow-long-down.blade.php | 47 + .../views/flux/icon/arrow-long-left.blade.php | 47 + .../flux/icon/arrow-long-right.blade.php | 47 + .../views/flux/icon/arrow-long-up.blade.php | 47 + .../icon/arrow-path-rounded-square.blade.php | 47 + .../views/flux/icon/arrow-path.blade.php | 47 + .../flux/icon/arrow-right-circle.blade.php | 47 + .../arrow-right-end-on-rectangle.blade.php | 49 + .../arrow-right-start-on-rectangle.blade.php | 48 + .../views/flux/icon/arrow-right.blade.php | 47 + .../icon/arrow-top-right-on-square.blade.php | 49 + .../flux/icon/arrow-trending-down.blade.php | 47 + .../flux/icon/arrow-trending-up.blade.php | 47 + .../flux/icon/arrow-turn-down-left.blade.php | 47 + .../flux/icon/arrow-turn-down-right.blade.php | 47 + .../flux/icon/arrow-turn-left-down.blade.php | 47 + .../flux/icon/arrow-turn-left-up.blade.php | 47 + .../flux/icon/arrow-turn-right-down.blade.php | 47 + .../flux/icon/arrow-turn-right-up.blade.php | 47 + .../flux/icon/arrow-turn-up-left.blade.php | 47 + .../flux/icon/arrow-turn-up-right.blade.php | 47 + .../views/flux/icon/arrow-up-circle.blade.php | 47 + .../views/flux/icon/arrow-up-left.blade.php | 47 + .../icon/arrow-up-on-square-stack.blade.php | 49 + .../flux/icon/arrow-up-on-square.blade.php | 47 + .../views/flux/icon/arrow-up-right.blade.php | 47 + .../views/flux/icon/arrow-up-tray.blade.php | 49 + resources/views/flux/icon/arrow-up.blade.php | 47 + .../flux/icon/arrow-uturn-down.blade.php | 47 + .../flux/icon/arrow-uturn-left.blade.php | 47 + .../flux/icon/arrow-uturn-right.blade.php | 47 + .../views/flux/icon/arrow-uturn-up.blade.php | 47 + .../flux/icon/arrows-pointing-in.blade.php | 47 + .../flux/icon/arrows-pointing-out.blade.php | 47 + .../flux/icon/arrows-right-left.blade.php | 47 + .../views/flux/icon/arrows-up-down.blade.php | 47 + resources/views/flux/icon/at-symbol.blade.php | 47 + resources/views/flux/icon/backspace.blade.php | 47 + resources/views/flux/icon/backward.blade.php | 47 + resources/views/flux/icon/banknotes.blade.php | 50 + resources/views/flux/icon/bars-2.blade.php | 47 + .../flux/icon/bars-3-bottom-left.blade.php | 47 + .../flux/icon/bars-3-bottom-right.blade.php | 47 + .../flux/icon/bars-3-center-left.blade.php | 47 + resources/views/flux/icon/bars-3.blade.php | 47 + resources/views/flux/icon/bars-4.blade.php | 47 + .../views/flux/icon/bars-arrow-down.blade.php | 47 + .../views/flux/icon/bars-arrow-up.blade.php | 47 + resources/views/flux/icon/battery-0.blade.php | 47 + .../views/flux/icon/battery-100.blade.php | 49 + .../views/flux/icon/battery-50.blade.php | 50 + resources/views/flux/icon/beaker.blade.php | 47 + .../views/flux/icon/bell-alert.blade.php | 50 + .../views/flux/icon/bell-slash.blade.php | 49 + .../views/flux/icon/bell-snooze.blade.php | 47 + resources/views/flux/icon/bell.blade.php | 47 + resources/views/flux/icon/bold.blade.php | 47 + .../views/flux/icon/bolt-slash.blade.php | 48 + resources/views/flux/icon/bolt.blade.php | 47 + resources/views/flux/icon/book-open.blade.php | 47 + .../views/flux/icon/bookmark-slash.blade.php | 47 + .../views/flux/icon/bookmark-square.blade.php | 47 + resources/views/flux/icon/bookmark.blade.php | 47 + resources/views/flux/icon/briefcase.blade.php | 50 + resources/views/flux/icon/bug-ant.blade.php | 47 + .../flux/icon/building-library.blade.php | 49 + .../flux/icon/building-office-2.blade.php | 47 + .../views/flux/icon/building-office.blade.php | 47 + .../flux/icon/building-storefront.blade.php | 48 + resources/views/flux/icon/cake.blade.php | 47 + .../views/flux/icon/calculator.blade.php | 47 + .../flux/icon/calendar-date-range.blade.php | 50 + .../views/flux/icon/calendar-days.blade.php | 50 + resources/views/flux/icon/calendar.blade.php | 47 + resources/views/flux/icon/camera.blade.php | 50 + .../flux/icon/chart-bar-square.blade.php | 47 + resources/views/flux/icon/chart-bar.blade.php | 47 + resources/views/flux/icon/chart-pie.blade.php | 51 + .../chat-bubble-bottom-center-text.blade.php | 47 + .../icon/chat-bubble-bottom-center.blade.php | 47 + .../icon/chat-bubble-left-ellipsis.blade.php | 47 + .../icon/chat-bubble-left-right.blade.php | 50 + .../flux/icon/chat-bubble-left.blade.php | 47 + .../chat-bubble-oval-left-ellipsis.blade.php | 47 + .../flux/icon/chat-bubble-oval-left.blade.php | 47 + .../views/flux/icon/check-badge.blade.php | 47 + .../views/flux/icon/check-circle.blade.php | 47 + resources/views/flux/icon/check.blade.php | 47 + .../flux/icon/chevron-double-down.blade.php | 48 + .../flux/icon/chevron-double-left.blade.php | 48 + .../flux/icon/chevron-double-right.blade.php | 48 + .../flux/icon/chevron-double-up.blade.php | 49 + .../views/flux/icon/chevron-down.blade.php | 47 + .../views/flux/icon/chevron-left.blade.php | 47 + .../views/flux/icon/chevron-right.blade.php | 47 + .../views/flux/icon/chevron-up-down.blade.php | 47 + .../views/flux/icon/chevron-up.blade.php | 47 + .../views/flux/icon/circle-stack.blade.php | 52 + .../icon/clipboard-document-check.blade.php | 50 + .../icon/clipboard-document-list.blade.php | 50 + .../flux/icon/clipboard-document.blade.php | 51 + resources/views/flux/icon/clipboard.blade.php | 47 + resources/views/flux/icon/clock.blade.php | 47 + .../flux/icon/cloud-arrow-down.blade.php | 47 + .../views/flux/icon/cloud-arrow-up.blade.php | 47 + resources/views/flux/icon/cloud.blade.php | 47 + .../flux/icon/code-bracket-square.blade.php | 47 + .../views/flux/icon/code-bracket.blade.php | 47 + .../views/flux/icon/cog-6-tooth.blade.php | 48 + .../views/flux/icon/cog-8-tooth.blade.php | 48 + resources/views/flux/icon/cog.blade.php | 49 + .../views/flux/icon/command-line.blade.php | 47 + .../flux/icon/computer-desktop.blade.php | 47 + resources/views/flux/icon/cpu-chip.blade.php | 50 + .../views/flux/icon/credit-card.blade.php | 49 + .../flux/icon/cube-transparent.blade.php | 47 + resources/views/flux/icon/cube.blade.php | 47 + .../flux/icon/currency-bangladeshi.blade.php | 47 + .../views/flux/icon/currency-dollar.blade.php | 50 + .../views/flux/icon/currency-euro.blade.php | 47 + .../views/flux/icon/currency-pound.blade.php | 47 + .../views/flux/icon/currency-rupee.blade.php | 47 + .../views/flux/icon/currency-yen.blade.php | 47 + .../flux/icon/cursor-arrow-rays.blade.php | 47 + .../flux/icon/cursor-arrow-ripple.blade.php | 51 + .../flux/icon/device-phone-mobile.blade.php | 50 + .../views/flux/icon/device-tablet.blade.php | 49 + resources/views/flux/icon/divide.blade.php | 48 + .../flux/icon/document-arrow-down.blade.php | 48 + .../flux/icon/document-arrow-up.blade.php | 48 + .../flux/icon/document-chart-bar.blade.php | 48 + .../views/flux/icon/document-check.blade.php | 48 + .../document-currency-bangladeshi.blade.php | 47 + .../icon/document-currency-dollar.blade.php | 48 + .../icon/document-currency-euro.blade.php | 48 + .../icon/document-currency-pound.blade.php | 47 + .../icon/document-currency-rupee.blade.php | 47 + .../flux/icon/document-currency-yen.blade.php | 47 + .../flux/icon/document-duplicate.blade.php | 50 + .../icon/document-magnifying-glass.blade.php | 51 + .../views/flux/icon/document-minus.blade.php | 48 + .../views/flux/icon/document-plus.blade.php | 48 + .../views/flux/icon/document-text.blade.php | 48 + resources/views/flux/icon/document.blade.php | 48 + .../icon/ellipsis-horizontal-circle.blade.php | 47 + .../flux/icon/ellipsis-horizontal.blade.php | 47 + .../flux/icon/ellipsis-vertical.blade.php | 47 + .../views/flux/icon/envelope-open.blade.php | 48 + resources/views/flux/icon/envelope.blade.php | 50 + resources/views/flux/icon/equals.blade.php | 47 + .../flux/icon/exclamation-circle.blade.php | 47 + .../flux/icon/exclamation-triangle.blade.php | 47 + .../views/flux/icon/eye-dropper.blade.php | 47 + resources/views/flux/icon/eye-slash.blade.php | 51 + resources/views/flux/icon/eye.blade.php | 51 + .../views/flux/icon/face-frown.blade.php | 47 + .../views/flux/icon/face-smile.blade.php | 47 + resources/views/flux/icon/film.blade.php | 47 + .../views/flux/icon/finger-print.blade.php | 47 + resources/views/flux/icon/fire.blade.php | 48 + resources/views/flux/icon/flag.blade.php | 47 + .../flux/icon/folder-arrow-down.blade.php | 47 + .../views/flux/icon/folder-minus.blade.php | 47 + .../views/flux/icon/folder-open.blade.php | 47 + .../views/flux/icon/folder-plus.blade.php | 47 + resources/views/flux/icon/folder.blade.php | 47 + resources/views/flux/icon/forward.blade.php | 47 + resources/views/flux/icon/funnel.blade.php | 47 + resources/views/flux/icon/gif.blade.php | 47 + resources/views/flux/icon/gift-top.blade.php | 49 + resources/views/flux/icon/gift.blade.php | 49 + resources/views/flux/icon/globe-alt.blade.php | 47 + .../views/flux/icon/globe-americas.blade.php | 47 + .../flux/icon/globe-asia-australia.blade.php | 48 + .../flux/icon/globe-europe-africa.blade.php | 47 + resources/views/flux/icon/h1.blade.php | 47 + resources/views/flux/icon/h2.blade.php | 47 + resources/views/flux/icon/h3.blade.php | 47 + .../views/flux/icon/hand-raised.blade.php | 47 + .../views/flux/icon/hand-thumb-down.blade.php | 47 + .../views/flux/icon/hand-thumb-up.blade.php | 47 + resources/views/flux/icon/hashtag.blade.php | 47 + resources/views/flux/icon/heart.blade.php | 47 + .../views/flux/icon/home-modern.blade.php | 48 + resources/views/flux/icon/home.blade.php | 48 + .../views/flux/icon/identification.blade.php | 47 + .../flux/icon/inbox-arrow-down.blade.php | 50 + .../views/flux/icon/inbox-stack.blade.php | 50 + resources/views/flux/icon/inbox.blade.php | 47 + resources/views/flux/icon/index.blade.php | 14 + .../flux/icon/information-circle.blade.php | 47 + resources/views/flux/icon/italic.blade.php | 47 + resources/views/flux/icon/key.blade.php | 47 + resources/views/flux/icon/language.blade.php | 48 + resources/views/flux/icon/lifebuoy.blade.php | 47 + .../views/flux/icon/light-bulb.blade.php | 48 + .../views/flux/icon/link-slash.blade.php | 47 + resources/views/flux/icon/link.blade.php | 49 + .../views/flux/icon/list-bullet.blade.php | 47 + resources/views/flux/icon/loading.blade.php | 47 + .../views/flux/icon/lock-closed.blade.php | 47 + resources/views/flux/icon/lock-open.blade.php | 47 + .../icon/magnifying-glass-circle.blade.php | 50 + .../icon/magnifying-glass-minus.blade.php | 49 + .../flux/icon/magnifying-glass-plus.blade.php | 49 + .../flux/icon/magnifying-glass.blade.php | 47 + resources/views/flux/icon/map-pin.blade.php | 48 + resources/views/flux/icon/map.blade.php | 47 + resources/views/flux/icon/megaphone.blade.php | 47 + .../views/flux/icon/microphone.blade.php | 50 + .../views/flux/icon/minus-circle.blade.php | 47 + resources/views/flux/icon/minus.blade.php | 47 + resources/views/flux/icon/moon.blade.php | 47 + .../views/flux/icon/musical-note.blade.php | 47 + resources/views/flux/icon/newspaper.blade.php | 50 + resources/views/flux/icon/no-symbol.blade.php | 47 + .../views/flux/icon/numbered-list.blade.php | 47 + .../views/flux/icon/paint-brush.blade.php | 47 + .../views/flux/icon/paper-airplane.blade.php | 47 + .../views/flux/icon/paper-clip.blade.php | 47 + .../views/flux/icon/pause-circle.blade.php | 47 + resources/views/flux/icon/pause.blade.php | 47 + .../views/flux/icon/pencil-square.blade.php | 50 + resources/views/flux/icon/pencil.blade.php | 47 + .../views/flux/icon/percent-badge.blade.php | 47 + .../flux/icon/phone-arrow-down-left.blade.php | 49 + .../flux/icon/phone-arrow-up-right.blade.php | 49 + .../views/flux/icon/phone-x-mark.blade.php | 48 + resources/views/flux/icon/phone.blade.php | 47 + resources/views/flux/icon/photo.blade.php | 47 + .../views/flux/icon/play-circle.blade.php | 48 + .../views/flux/icon/play-pause.blade.php | 47 + resources/views/flux/icon/play.blade.php | 47 + .../views/flux/icon/plus-circle.blade.php | 47 + resources/views/flux/icon/plus.blade.php | 47 + resources/views/flux/icon/power.blade.php | 47 + .../icon/presentation-chart-bar.blade.php | 47 + .../icon/presentation-chart-line.blade.php | 47 + resources/views/flux/icon/printer.blade.php | 47 + .../views/flux/icon/puzzle-piece.blade.php | 47 + resources/views/flux/icon/qr-code.blade.php | 54 + .../flux/icon/question-mark-circle.blade.php | 47 + .../views/flux/icon/queue-list.blade.php | 47 + resources/views/flux/icon/radio.blade.php | 47 + .../views/flux/icon/receipt-percent.blade.php | 47 + .../views/flux/icon/receipt-refund.blade.php | 47 + .../views/flux/icon/rectangle-group.blade.php | 47 + .../views/flux/icon/rectangle-stack.blade.php | 47 + .../views/flux/icon/rocket-launch.blade.php | 50 + resources/views/flux/icon/rss.blade.php | 48 + resources/views/flux/icon/scale.blade.php | 47 + resources/views/flux/icon/scissors.blade.php | 50 + .../views/flux/icon/server-stack.blade.php | 50 + resources/views/flux/icon/server.blade.php | 50 + resources/views/flux/icon/share.blade.php | 47 + .../views/flux/icon/shield-check.blade.php | 47 + .../flux/icon/shield-exclamation.blade.php | 47 + .../views/flux/icon/shopping-bag.blade.php | 47 + .../views/flux/icon/shopping-cart.blade.php | 47 + .../views/flux/icon/signal-slash.blade.php | 47 + resources/views/flux/icon/signal.blade.php | 50 + resources/views/flux/icon/slash.blade.php | 47 + resources/views/flux/icon/sparkles.blade.php | 47 + .../views/flux/icon/speaker-wave.blade.php | 50 + .../views/flux/icon/speaker-x-mark.blade.php | 47 + .../views/flux/icon/square-2-stack.blade.php | 50 + .../flux/icon/square-3-stack-3d.blade.php | 53 + .../views/flux/icon/squares-2x2.blade.php | 47 + .../views/flux/icon/squares-plus.blade.php | 47 + resources/views/flux/icon/star.blade.php | 47 + .../views/flux/icon/stop-circle.blade.php | 48 + resources/views/flux/icon/stop.blade.php | 47 + .../views/flux/icon/strikethrough.blade.php | 47 + resources/views/flux/icon/sun.blade.php | 47 + resources/views/flux/icon/swatch.blade.php | 49 + .../views/flux/icon/table-cells.blade.php | 47 + resources/views/flux/icon/tag.blade.php | 48 + resources/views/flux/icon/ticket.blade.php | 47 + resources/views/flux/icon/trash.blade.php | 47 + resources/views/flux/icon/trophy.blade.php | 47 + resources/views/flux/icon/truck.blade.php | 52 + resources/views/flux/icon/tv.blade.php | 50 + resources/views/flux/icon/underline.blade.php | 47 + .../views/flux/icon/user-circle.blade.php | 47 + .../views/flux/icon/user-group.blade.php | 48 + .../views/flux/icon/user-minus.blade.php | 47 + resources/views/flux/icon/user-plus.blade.php | 47 + resources/views/flux/icon/user.blade.php | 47 + resources/views/flux/icon/users.blade.php | 47 + resources/views/flux/icon/variable.blade.php | 47 + .../flux/icon/video-camera-slash.blade.php | 47 + .../views/flux/icon/video-camera.blade.php | 47 + .../views/flux/icon/view-columns.blade.php | 47 + .../flux/icon/viewfinder-circle.blade.php | 47 + resources/views/flux/icon/wallet.blade.php | 47 + resources/views/flux/icon/wifi.blade.php | 47 + resources/views/flux/icon/window.blade.php | 47 + .../flux/icon/wrench-screwdriver.blade.php | 51 + resources/views/flux/icon/wrench.blade.php | 48 + resources/views/flux/icon/x-circle.blade.php | 47 + resources/views/flux/icon/x-mark.blade.php | 47 + .../views/flux/input/clearable.blade.php | 22 + resources/views/flux/input/copyable.blade.php | 22 + .../views/flux/input/expandable.blade.php | 18 + resources/views/flux/input/file.blade.php | 79 + .../views/flux/input/group/affix.blade.php | 15 + .../views/flux/input/group/index.blade.php | 52 + .../views/flux/input/group/prefix.blade.php | 16 + .../views/flux/input/group/suffix.blade.php | 16 + resources/views/flux/input/index.blade.php | 233 + resources/views/flux/input/viewable.blade.php | 37 + resources/views/flux/kanban/card.blade.php | 55 + .../views/flux/kanban/column/cards.blade.php | 15 + .../views/flux/kanban/column/footer.blade.php | 15 + .../views/flux/kanban/column/header.blade.php | 46 + .../views/flux/kanban/column/index.blade.php | 18 + resources/views/flux/kanban/index.blade.php | 5 + resources/views/flux/label.blade.php | 46 + resources/views/flux/legend.blade.php | 5 + resources/views/flux/link.blade.php | 31 + resources/views/flux/main.blade.php | 17 + .../views/flux/menu/checkbox/group.blade.php | 5 + .../views/flux/menu/checkbox/index.blade.php | 62 + resources/views/flux/menu/group.blade.php | 24 + resources/views/flux/menu/heading.blade.php | 16 + resources/views/flux/menu/index.blade.php | 19 + resources/views/flux/menu/item.blade.php | 81 + .../views/flux/menu/radio/group.blade.php | 5 + .../views/flux/menu/radio/index.blade.php | 62 + resources/views/flux/menu/separator.blade.php | 5 + resources/views/flux/menu/submenu.blade.php | 40 + resources/views/flux/modal/close.blade.php | 5 + resources/views/flux/modal/index.blade.php | 118 + resources/views/flux/modal/trigger.blade.php | 18 + resources/views/flux/navbar/badge.blade.php | 56 + resources/views/flux/navbar/index.blade.php | 17 + resources/views/flux/navbar/item.blade.php | 81 + resources/views/flux/navlist/badge.blade.php | 56 + resources/views/flux/navlist/group.blade.php | 40 + resources/views/flux/navlist/index.blade.php | 16 + resources/views/flux/navlist/item.blade.php | 90 + resources/views/flux/navmenu/index.blade.php | 14 + resources/views/flux/navmenu/item.blade.php | 77 + .../views/flux/navmenu/separator.blade.php | 5 + resources/views/flux/otp/group.blade.php | 3 + resources/views/flux/otp/index.blade.php | 28 + resources/views/flux/otp/input.blade.php | 21 + resources/views/flux/otp/separator.blade.php | 1 + resources/views/flux/pagination.blade.php | 137 + resources/views/flux/pillbox/empty.blade.php | 4 + resources/views/flux/pillbox/index.blade.php | 7 + .../views/flux/pillbox/indicator.blade.php | 3 + resources/views/flux/pillbox/input.blade.php | 30 + resources/views/flux/pillbox/option.blade.php | 45 + .../flux/pillbox/option/create.blade.php | 32 + .../views/flux/pillbox/option/empty.blade.php | 12 + .../views/flux/pillbox/options.blade.php | 51 + resources/views/flux/pillbox/search.blade.php | 81 + .../views/flux/pillbox/selected.blade.php | 64 + .../views/flux/pillbox/trigger.blade.php | 62 + .../flux/pillbox/variants/combobox.blade.php | 73 + .../flux/pillbox/variants/default.blade.php | 51 + resources/views/flux/popover/index.blade.php | 22 + resources/views/flux/profile.blade.php | 54 + .../views/flux/radio/group/index.blade.php | 5 + .../radio/group/variants/buttons.blade.php | 25 + .../flux/radio/group/variants/cards.blade.php | 25 + .../radio/group/variants/default.blade.php | 26 + .../flux/radio/group/variants/pills.blade.php | 25 + .../radio/group/variants/segmented.blade.php | 28 + resources/views/flux/radio/index.blade.php | 16 + .../views/flux/radio/indicator.blade.php | 28 + .../flux/radio/variants/buttons.blade.php | 67 + .../views/flux/radio/variants/cards.blade.php | 79 + .../flux/radio/variants/default.blade.php | 14 + .../views/flux/radio/variants/pills.blade.php | 29 + .../flux/radio/variants/segmented.blade.php | 54 + resources/views/flux/select/button.blade.php | 58 + resources/views/flux/select/empty.blade.php | 4 + resources/views/flux/select/index.blade.php | 7 + .../flux/select/indicator/index.blade.php | 14 + .../select/indicator/variants/check.blade.php | 3 + .../indicator/variants/checkbox.blade.php | 28 + .../select/indicator/variants/radio.blade.php | 27 + resources/views/flux/select/input.blade.php | 43 + .../views/flux/select/option/create.blade.php | 33 + .../views/flux/select/option/empty.blade.php | 14 + .../views/flux/select/option/index.blade.php | 14 + .../select/option/variants/custom.blade.php | 46 + .../select/option/variants/default.blade.php | 11 + resources/views/flux/select/options.blade.php | 47 + resources/views/flux/select/search.blade.php | 75 + .../views/flux/select/selected.blade.php | 25 + .../flux/select/variants/combobox.blade.php | 56 + .../flux/select/variants/custom.blade.php | 33 + .../flux/select/variants/default.blade.php | 50 + .../flux/select/variants/listbox.blade.php | 52 + resources/views/flux/separator.blade.php | 36 + .../views/flux/sidebar/backdrop.blade.php | 10 + resources/views/flux/sidebar/brand.blade.php | 65 + .../views/flux/sidebar/collapse.blade.php | 39 + resources/views/flux/sidebar/group.blade.php | 101 + resources/views/flux/sidebar/header.blade.php | 5 + resources/views/flux/sidebar/index.blade.php | 55 + resources/views/flux/sidebar/item.blade.php | 92 + resources/views/flux/sidebar/nav.blade.php | 5 + .../views/flux/sidebar/profile.blade.php | 54 + resources/views/flux/sidebar/search.blade.php | 56 + resources/views/flux/sidebar/spacer.blade.php | 3 + resources/views/flux/sidebar/toggle.blade.php | 11 + resources/views/flux/skeleton/group.blade.php | 9 + resources/views/flux/skeleton/index.blade.php | 29 + resources/views/flux/skeleton/line.blade.php | 34 + resources/views/flux/slider/index.blade.php | 64 + resources/views/flux/slider/tick.blade.php | 20 + resources/views/flux/spacer.blade.php | 3 + resources/views/flux/subheading.blade.php | 21 + resources/views/flux/switch.blade.php | 49 + resources/views/flux/tab/group.blade.php | 5 + resources/views/flux/tab/index.blade.php | 89 + resources/views/flux/tab/panel.blade.php | 23 + resources/views/flux/table/cell.blade.php | 36 + resources/views/flux/table/column.blade.php | 48 + resources/views/flux/table/columns.blade.php | 17 + resources/views/flux/table/index.blade.php | 33 + resources/views/flux/table/row.blade.php | 16 + resources/views/flux/table/rows.blade.php | 5 + resources/views/flux/table/sortable.blade.php | 33 + resources/views/flux/tabs.blade.php | 67 + resources/views/flux/text.blade.php | 44 + resources/views/flux/textarea.blade.php | 38 + .../views/flux/time-picker/button.blade.php | 54 + .../views/flux/time-picker/index.blade.php | 96 + .../views/flux/time-picker/input.blade.php | 88 + .../views/flux/time-picker/selected.blade.php | 17 + resources/views/flux/toast/group.blade.php | 8 + resources/views/flux/toast/index.blade.php | 51 + .../views/flux/tooltip/content.blade.php | 23 + resources/views/flux/tooltip/index.blade.php | 39 + resources/views/layouts/app.blade.php | 6 +- .../livewire/association/profile.blade.php | 166 +- .../skills/remotion-best-practices/SKILL.md | 43 + .../remotion-best-practices/rules/3d.md | 86 + .../rules/animations.md | 29 + .../remotion-best-practices/rules/assets.md | 78 + .../rules/assets/charts-bar-chart.tsx | 173 + .../assets/text-animations-typewriter.tsx | 100 + .../assets/text-animations-word-highlight.tsx | 108 + .../remotion-best-practices/rules/audio.md | 172 + .../rules/calculate-metadata.md | 104 + .../rules/can-decode.md | 75 + .../remotion-best-practices/rules/charts.md | 58 + .../rules/compositions.md | 146 + .../rules/display-captions.md | 126 + .../rules/extract-frames.md | 229 + .../remotion-best-practices/rules/fonts.md | 152 + .../rules/get-audio-duration.md | 58 + .../rules/get-video-dimensions.md | 68 + .../rules/get-video-duration.md | 58 + .../remotion-best-practices/rules/gifs.md | 138 + .../remotion-best-practices/rules/images.md | 130 + .../rules/import-srt-captions.md | 67 + .../remotion-best-practices/rules/lottie.md | 68 + .../rules/measuring-dom-nodes.md | 35 + .../rules/measuring-text.md | 143 + .../rules/sequencing.md | 106 + .../remotion-best-practices/rules/tailwind.md | 11 + .../rules/text-animations.md | 20 + .../remotion-best-practices/rules/timing.md | 179 + .../rules/transcribe-captions.md | 19 + .../rules/transitions.md | 122 + .../remotion-best-practices/rules/trimming.md | 53 + .../remotion-best-practices/rules/videos.md | 171 + .../skills/remotion-best-practices/SKILL.md | 43 + .../remotion-best-practices/rules/3d.md | 86 + .../rules/animations.md | 29 + .../remotion-best-practices/rules/assets.md | 78 + .../rules/assets/charts-bar-chart.tsx | 173 + .../assets/text-animations-typewriter.tsx | 100 + .../assets/text-animations-word-highlight.tsx | 108 + .../remotion-best-practices/rules/audio.md | 172 + .../rules/calculate-metadata.md | 104 + .../rules/can-decode.md | 75 + .../remotion-best-practices/rules/charts.md | 58 + .../rules/compositions.md | 146 + .../rules/display-captions.md | 126 + .../rules/extract-frames.md | 229 + .../remotion-best-practices/rules/fonts.md | 152 + .../rules/get-audio-duration.md | 58 + .../rules/get-video-dimensions.md | 68 + .../rules/get-video-duration.md | 58 + .../remotion-best-practices/rules/gifs.md | 138 + .../remotion-best-practices/rules/images.md | 130 + .../rules/import-srt-captions.md | 67 + .../remotion-best-practices/rules/lottie.md | 68 + .../rules/measuring-dom-nodes.md | 35 + .../rules/measuring-text.md | 143 + .../rules/sequencing.md | 106 + .../remotion-best-practices/rules/tailwind.md | 11 + .../rules/text-animations.md | 20 + .../remotion-best-practices/rules/timing.md | 179 + .../rules/transcribe-captions.md | 19 + .../rules/transitions.md | 122 + .../remotion-best-practices/rules/trimming.md | 53 + .../remotion-best-practices/rules/videos.md | 171 + .../skills/remotion-best-practices/SKILL.md | 43 + .../remotion-best-practices/rules/3d.md | 86 + .../rules/animations.md | 29 + .../remotion-best-practices/rules/assets.md | 78 + .../rules/assets/charts-bar-chart.tsx | 173 + .../assets/text-animations-typewriter.tsx | 100 + .../assets/text-animations-word-highlight.tsx | 108 + .../remotion-best-practices/rules/audio.md | 172 + .../rules/calculate-metadata.md | 104 + .../rules/can-decode.md | 75 + .../remotion-best-practices/rules/charts.md | 58 + .../rules/compositions.md | 146 + .../rules/display-captions.md | 126 + .../rules/extract-frames.md | 229 + .../remotion-best-practices/rules/fonts.md | 152 + .../rules/get-audio-duration.md | 58 + .../rules/get-video-dimensions.md | 68 + .../rules/get-video-duration.md | 58 + .../remotion-best-practices/rules/gifs.md | 138 + .../remotion-best-practices/rules/images.md | 130 + .../rules/import-srt-captions.md | 67 + .../remotion-best-practices/rules/lottie.md | 68 + .../rules/measuring-dom-nodes.md | 35 + .../rules/measuring-text.md | 143 + .../rules/sequencing.md | 106 + .../remotion-best-practices/rules/tailwind.md | 11 + .../rules/text-animations.md | 20 + .../remotion-best-practices/rules/timing.md | 179 + .../rules/transcribe-captions.md | 19 + .../rules/transitions.md | 122 + .../remotion-best-practices/rules/trimming.md | 53 + .../remotion-best-practices/rules/videos.md | 171 + videos/.gitignore | 7 + .../skills/remotion-best-practices/SKILL.md | 43 + .../remotion-best-practices/rules/3d.md | 86 + .../rules/animations.md | 29 + .../remotion-best-practices/rules/assets.md | 78 + .../rules/assets/charts-bar-chart.tsx | 173 + .../assets/text-animations-typewriter.tsx | 100 + .../assets/text-animations-word-highlight.tsx | 108 + .../remotion-best-practices/rules/audio.md | 172 + .../rules/calculate-metadata.md | 104 + .../rules/can-decode.md | 75 + .../remotion-best-practices/rules/charts.md | 58 + .../rules/compositions.md | 146 + .../rules/display-captions.md | 126 + .../rules/extract-frames.md | 229 + .../remotion-best-practices/rules/fonts.md | 152 + .../rules/get-audio-duration.md | 58 + .../rules/get-video-dimensions.md | 68 + .../rules/get-video-duration.md | 58 + .../remotion-best-practices/rules/gifs.md | 138 + .../remotion-best-practices/rules/images.md | 130 + .../rules/import-srt-captions.md | 67 + .../remotion-best-practices/rules/lottie.md | 68 + .../rules/measuring-dom-nodes.md | 35 + .../rules/measuring-text.md | 143 + .../rules/sequencing.md | 106 + .../remotion-best-practices/rules/tailwind.md | 11 + .../rules/text-animations.md | 20 + .../remotion-best-practices/rules/timing.md | 179 + .../rules/transcribe-captions.md | 19 + .../rules/transitions.md | 122 + .../remotion-best-practices/rules/trimming.md | 53 + .../remotion-best-practices/rules/videos.md | 171 + videos/.prettierrc | 5 + videos/AUDIO_GUIDE.md | 323 + videos/AUDIO_README.md | 228 + videos/NIP05-TUTORIAL-README.md | 244 + videos/README.md | 54 + videos/build/129.bundle.js | 907 + videos/build/129.bundle.js.map | 1 + videos/build/280.bundle.js | 7942 + videos/build/280.bundle.js.map | 1 + videos/build/476.bundle.js | 4129 + videos/build/476.bundle.js.map | 1 + videos/build/537.bundle.js | 102325 +++++++++++ videos/build/537.bundle.js.map | 1 + videos/build/702.bundle.js | 145 + videos/build/702.bundle.js.map | 1 + videos/build/761.bundle.js | 64 + videos/build/761.bundle.js.map | 1 + videos/build/bundle.js | 142597 +++++++++++++++ videos/build/bundle.js.map | 1 + videos/build/favicon.ico | Bin 0 -> 104640 bytes videos/build/index.html | 48 + .../einundzwanzig-horizontal-inverted.svg | 1 + .../public/einundzwanzig-square-inverted.svg | 1 + .../build/public/einundzwanzig-wallpaper.png | Bin 0 -> 941531 bytes videos/build/public/music/README.md | 8 + .../build/public/music/background-music.mp3 | Bin 0 -> 3129617 bytes videos/build/public/sfx/README.md | 22 + videos/build/public/sfx/badge-appear.mp3 | Bin 0 -> 17633 bytes videos/build/public/sfx/button-click.mp3 | Bin 0 -> 3177 bytes videos/build/public/sfx/button-hover.mp3 | Bin 0 -> 6939 bytes videos/build/public/sfx/card-slide.mp3 | Bin 0 -> 7566 bytes videos/build/public/sfx/checkmark-pop.mp3 | Bin 0 -> 11328 bytes videos/build/public/sfx/final-chime.mp3 | Bin 0 -> 5058 bytes videos/build/public/sfx/logo-reveal.mp3 | Bin 0 -> 4431 bytes videos/build/public/sfx/logo-whoosh.mp3 | Bin 0 -> 127355 bytes videos/build/public/sfx/outro-entrance.mp3 | Bin 0 -> 127355 bytes videos/build/public/sfx/slide-in.mp3 | Bin 0 -> 10701 bytes videos/build/public/sfx/success-chime.mp3 | Bin 0 -> 14462 bytes videos/build/public/sfx/success-fanfare.mp3 | Bin 0 -> 65152 bytes videos/build/public/sfx/typing.mp3 | Bin 0 -> 291051 bytes videos/build/public/sfx/ui-appear.mp3 | Bin 0 -> 4431 bytes videos/build/public/sfx/url-emphasis.mp3 | Bin 0 -> 5058 bytes videos/build/source-map-helper.wasm | Bin 0 -> 48693 bytes videos/eslint.config.mjs | 3 + videos/package-lock.json | 6937 + videos/package.json | 39 + videos/postcss.config.mjs | 5 + videos/public/bitcoin-logo.svg | 4 + .../einundzwanzig-horizontal-inverted.svg | 1 + .../public/einundzwanzig-square-inverted.svg | 1 + videos/public/einundzwanzig-wallpaper.png | Bin 0 -> 941531 bytes videos/public/music/README.md | 8 + videos/public/music/background-music.mp3 | Bin 0 -> 3129617 bytes videos/public/sfx/README.md | 22 + videos/public/sfx/badge-appear.mp3 | Bin 0 -> 17633 bytes videos/public/sfx/button-click.mp3 | Bin 0 -> 3177 bytes videos/public/sfx/button-hover.mp3 | Bin 0 -> 6939 bytes videos/public/sfx/card-slide.mp3 | Bin 0 -> 7566 bytes videos/public/sfx/checkmark-pop.mp3 | Bin 0 -> 11328 bytes videos/public/sfx/final-chime.mp3 | Bin 0 -> 5058 bytes videos/public/sfx/logo-reveal.mp3 | Bin 0 -> 4431 bytes videos/public/sfx/logo-whoosh.mp3 | Bin 0 -> 127355 bytes videos/public/sfx/outro-entrance.mp3 | Bin 0 -> 127355 bytes videos/public/sfx/slide-in.mp3 | Bin 0 -> 10701 bytes videos/public/sfx/success-chime.mp3 | Bin 0 -> 14462 bytes videos/public/sfx/success-fanfare.mp3 | Bin 0 -> 65152 bytes videos/public/sfx/typing.mp3 | Bin 0 -> 291051 bytes videos/public/sfx/ui-appear.mp3 | Bin 0 -> 4431 bytes videos/public/sfx/url-emphasis.mp3 | Bin 0 -> 5058 bytes videos/remotion.config.ts | 13 + videos/setup-audio.sh | 61 + videos/src/Composition.tsx | 3 + videos/src/Nip05Tutorial.tsx | 50 + videos/src/Nip05TutorialMobile.tsx | 50 + videos/src/Root.tsx | 36 + videos/src/components/AnimatedLogo.tsx | 181 + videos/src/components/AudioManager.tsx | 182 + videos/src/components/BitcoinEffect.tsx | 70 + videos/src/fonts/inconsolata.ts | 6 + videos/src/index.css | 6 + videos/src/index.ts | 4 + videos/src/scenes/InputDemoScene.tsx | 128 + videos/src/scenes/IntroScene.tsx | 330 + videos/src/scenes/OutroScene.tsx | 154 + videos/src/scenes/SaveButtonScene.tsx | 128 + videos/src/scenes/UIShowcaseScene.tsx | 114 + videos/src/scenes/VerificationScene.tsx | 125 + .../scenes/mobile/InputDemoSceneMobile.tsx | 134 + videos/src/scenes/mobile/IntroSceneMobile.tsx | 324 + videos/src/scenes/mobile/OutroSceneMobile.tsx | 161 + .../scenes/mobile/SaveButtonSceneMobile.tsx | 134 + .../scenes/mobile/UIShowcaseSceneMobile.tsx | 99 + .../scenes/mobile/VerificationSceneMobile.tsx | 147 + videos/tsconfig.json | 15 + 792 files changed, 307541 insertions(+), 117 deletions(-) create mode 100644 design.pen create mode 100644 resources/views/flux/accent.blade.php create mode 100644 resources/views/flux/accordion/content.blade.php create mode 100644 resources/views/flux/accordion/heading.blade.php create mode 100644 resources/views/flux/accordion/icon.blade.php create mode 100644 resources/views/flux/accordion/index.blade.php create mode 100644 resources/views/flux/accordion/item.blade.php create mode 100644 resources/views/flux/aside.blade.php create mode 100644 resources/views/flux/autocomplete/index.blade.php create mode 100644 resources/views/flux/autocomplete/item.blade.php create mode 100644 resources/views/flux/autocomplete/items.blade.php create mode 100644 resources/views/flux/avatar/group.blade.php create mode 100644 resources/views/flux/avatar/index.blade.php create mode 100644 resources/views/flux/badge/close.blade.php create mode 100644 resources/views/flux/badge/index.blade.php create mode 100644 resources/views/flux/brand.blade.php create mode 100644 resources/views/flux/breadcrumbs/index.blade.php create mode 100644 resources/views/flux/breadcrumbs/item.blade.php create mode 100644 resources/views/flux/button/group.blade.php create mode 100644 resources/views/flux/button/index.blade.php create mode 100644 resources/views/flux/calendar/index.blade.php create mode 100644 resources/views/flux/callout/heading.blade.php create mode 100644 resources/views/flux/callout/index.blade.php create mode 100644 resources/views/flux/callout/link.blade.php create mode 100644 resources/views/flux/callout/text.blade.php create mode 100644 resources/views/flux/card/index.blade.php create mode 100644 resources/views/flux/chart/area.blade.php create mode 100644 resources/views/flux/chart/axis/grid.blade.php create mode 100644 resources/views/flux/chart/axis/index.blade.php create mode 100644 resources/views/flux/chart/axis/line.blade.php create mode 100644 resources/views/flux/chart/axis/mark.blade.php create mode 100644 resources/views/flux/chart/axis/tick.blade.php create mode 100644 resources/views/flux/chart/cursor.blade.php create mode 100644 resources/views/flux/chart/index.blade.php create mode 100644 resources/views/flux/chart/legend/index.blade.php create mode 100644 resources/views/flux/chart/legend/indicator.blade.php create mode 100644 resources/views/flux/chart/line.blade.php create mode 100644 resources/views/flux/chart/point.blade.php create mode 100644 resources/views/flux/chart/summary/index.blade.php create mode 100644 resources/views/flux/chart/summary/value.blade.php create mode 100644 resources/views/flux/chart/svg.blade.php create mode 100644 resources/views/flux/chart/tooltip/heading.blade.php create mode 100644 resources/views/flux/chart/tooltip/index.blade.php create mode 100644 resources/views/flux/chart/tooltip/value.blade.php create mode 100644 resources/views/flux/chart/value.blade.php create mode 100644 resources/views/flux/chart/viewport.blade.php create mode 100644 resources/views/flux/chart/zero-line.blade.php create mode 100644 resources/views/flux/checkbox/all.blade.php create mode 100644 resources/views/flux/checkbox/group/index.blade.php create mode 100644 resources/views/flux/checkbox/group/variants/buttons.blade.php create mode 100644 resources/views/flux/checkbox/group/variants/cards.blade.php create mode 100644 resources/views/flux/checkbox/group/variants/default.blade.php create mode 100644 resources/views/flux/checkbox/group/variants/pills.blade.php create mode 100644 resources/views/flux/checkbox/index.blade.php create mode 100644 resources/views/flux/checkbox/indicator.blade.php create mode 100644 resources/views/flux/checkbox/variants/buttons.blade.php create mode 100644 resources/views/flux/checkbox/variants/cards.blade.php create mode 100644 resources/views/flux/checkbox/variants/default.blade.php create mode 100644 resources/views/flux/checkbox/variants/pills.blade.php create mode 100644 resources/views/flux/command/empty.blade.php create mode 100644 resources/views/flux/command/index.blade.php create mode 100644 resources/views/flux/command/input.blade.php create mode 100644 resources/views/flux/command/item.blade.php create mode 100644 resources/views/flux/command/items.blade.php create mode 100644 resources/views/flux/composer/index.blade.php create mode 100644 resources/views/flux/container.blade.php create mode 100644 resources/views/flux/context.blade.php create mode 100644 resources/views/flux/date-picker/button.blade.php create mode 100644 resources/views/flux/date-picker/index.blade.php create mode 100644 resources/views/flux/date-picker/input.blade.php create mode 100644 resources/views/flux/date-picker/selected.blade.php create mode 100644 resources/views/flux/description.blade.php create mode 100644 resources/views/flux/dropdown.blade.php create mode 100644 resources/views/flux/editor/align.blade.php create mode 100644 resources/views/flux/editor/blockquote.blade.php create mode 100644 resources/views/flux/editor/bold.blade.php create mode 100644 resources/views/flux/editor/bullet.blade.php create mode 100644 resources/views/flux/editor/button.blade.php create mode 100644 resources/views/flux/editor/code.blade.php create mode 100644 resources/views/flux/editor/content.blade.php create mode 100644 resources/views/flux/editor/heading.blade.php create mode 100644 resources/views/flux/editor/highlight.blade.php create mode 100644 resources/views/flux/editor/index.blade.php create mode 100644 resources/views/flux/editor/italic.blade.php create mode 100644 resources/views/flux/editor/link.blade.php create mode 100644 resources/views/flux/editor/option.blade.php create mode 100644 resources/views/flux/editor/ordered.blade.php create mode 100644 resources/views/flux/editor/redo.blade.php create mode 100644 resources/views/flux/editor/scripts.blade.php create mode 100644 resources/views/flux/editor/separator.blade.php create mode 100644 resources/views/flux/editor/spacer.blade.php create mode 100644 resources/views/flux/editor/strike.blade.php create mode 100644 resources/views/flux/editor/styles.blade.php create mode 100644 resources/views/flux/editor/subscript.blade.php create mode 100644 resources/views/flux/editor/superscript.blade.php create mode 100644 resources/views/flux/editor/toolbar.blade.php create mode 100644 resources/views/flux/editor/underline.blade.php create mode 100644 resources/views/flux/editor/undo.blade.php create mode 100644 resources/views/flux/error.blade.php create mode 100644 resources/views/flux/field.blade.php create mode 100644 resources/views/flux/fieldset.blade.php create mode 100644 resources/views/flux/file-item/index.blade.php create mode 100644 resources/views/flux/file-item/remove.blade.php create mode 100644 resources/views/flux/file-upload/dropzone/index.blade.php create mode 100644 resources/views/flux/file-upload/index.blade.php create mode 100644 resources/views/flux/footer.blade.php create mode 100644 resources/views/flux/header.blade.php create mode 100644 resources/views/flux/heading.blade.php create mode 100644 resources/views/flux/icon/academic-cap.blade.php create mode 100644 resources/views/flux/icon/adjustments-horizontal.blade.php create mode 100644 resources/views/flux/icon/adjustments-vertical.blade.php create mode 100644 resources/views/flux/icon/archive-box-arrow-down.blade.php create mode 100644 resources/views/flux/icon/archive-box-x-mark.blade.php create mode 100644 resources/views/flux/icon/archive-box.blade.php create mode 100644 resources/views/flux/icon/arrow-down-circle.blade.php create mode 100644 resources/views/flux/icon/arrow-down-left.blade.php create mode 100644 resources/views/flux/icon/arrow-down-on-square-stack.blade.php create mode 100644 resources/views/flux/icon/arrow-down-on-square.blade.php create mode 100644 resources/views/flux/icon/arrow-down-right.blade.php create mode 100644 resources/views/flux/icon/arrow-down-tray.blade.php create mode 100644 resources/views/flux/icon/arrow-down.blade.php create mode 100644 resources/views/flux/icon/arrow-left-circle.blade.php create mode 100644 resources/views/flux/icon/arrow-left-end-on-rectangle.blade.php create mode 100644 resources/views/flux/icon/arrow-left-start-on-rectangle.blade.php create mode 100644 resources/views/flux/icon/arrow-left.blade.php create mode 100644 resources/views/flux/icon/arrow-long-down.blade.php create mode 100644 resources/views/flux/icon/arrow-long-left.blade.php create mode 100644 resources/views/flux/icon/arrow-long-right.blade.php create mode 100644 resources/views/flux/icon/arrow-long-up.blade.php create mode 100644 resources/views/flux/icon/arrow-path-rounded-square.blade.php create mode 100644 resources/views/flux/icon/arrow-path.blade.php create mode 100644 resources/views/flux/icon/arrow-right-circle.blade.php create mode 100644 resources/views/flux/icon/arrow-right-end-on-rectangle.blade.php create mode 100644 resources/views/flux/icon/arrow-right-start-on-rectangle.blade.php create mode 100644 resources/views/flux/icon/arrow-right.blade.php create mode 100644 resources/views/flux/icon/arrow-top-right-on-square.blade.php create mode 100644 resources/views/flux/icon/arrow-trending-down.blade.php create mode 100644 resources/views/flux/icon/arrow-trending-up.blade.php create mode 100644 resources/views/flux/icon/arrow-turn-down-left.blade.php create mode 100644 resources/views/flux/icon/arrow-turn-down-right.blade.php create mode 100644 resources/views/flux/icon/arrow-turn-left-down.blade.php create mode 100644 resources/views/flux/icon/arrow-turn-left-up.blade.php create mode 100644 resources/views/flux/icon/arrow-turn-right-down.blade.php create mode 100644 resources/views/flux/icon/arrow-turn-right-up.blade.php create mode 100644 resources/views/flux/icon/arrow-turn-up-left.blade.php create mode 100644 resources/views/flux/icon/arrow-turn-up-right.blade.php create mode 100644 resources/views/flux/icon/arrow-up-circle.blade.php create mode 100644 resources/views/flux/icon/arrow-up-left.blade.php create mode 100644 resources/views/flux/icon/arrow-up-on-square-stack.blade.php create mode 100644 resources/views/flux/icon/arrow-up-on-square.blade.php create mode 100644 resources/views/flux/icon/arrow-up-right.blade.php create mode 100644 resources/views/flux/icon/arrow-up-tray.blade.php create mode 100644 resources/views/flux/icon/arrow-up.blade.php create mode 100644 resources/views/flux/icon/arrow-uturn-down.blade.php create mode 100644 resources/views/flux/icon/arrow-uturn-left.blade.php create mode 100644 resources/views/flux/icon/arrow-uturn-right.blade.php create mode 100644 resources/views/flux/icon/arrow-uturn-up.blade.php create mode 100644 resources/views/flux/icon/arrows-pointing-in.blade.php create mode 100644 resources/views/flux/icon/arrows-pointing-out.blade.php create mode 100644 resources/views/flux/icon/arrows-right-left.blade.php create mode 100644 resources/views/flux/icon/arrows-up-down.blade.php create mode 100644 resources/views/flux/icon/at-symbol.blade.php create mode 100644 resources/views/flux/icon/backspace.blade.php create mode 100644 resources/views/flux/icon/backward.blade.php create mode 100644 resources/views/flux/icon/banknotes.blade.php create mode 100644 resources/views/flux/icon/bars-2.blade.php create mode 100644 resources/views/flux/icon/bars-3-bottom-left.blade.php create mode 100644 resources/views/flux/icon/bars-3-bottom-right.blade.php create mode 100644 resources/views/flux/icon/bars-3-center-left.blade.php create mode 100644 resources/views/flux/icon/bars-3.blade.php create mode 100644 resources/views/flux/icon/bars-4.blade.php create mode 100644 resources/views/flux/icon/bars-arrow-down.blade.php create mode 100644 resources/views/flux/icon/bars-arrow-up.blade.php create mode 100644 resources/views/flux/icon/battery-0.blade.php create mode 100644 resources/views/flux/icon/battery-100.blade.php create mode 100644 resources/views/flux/icon/battery-50.blade.php create mode 100644 resources/views/flux/icon/beaker.blade.php create mode 100644 resources/views/flux/icon/bell-alert.blade.php create mode 100644 resources/views/flux/icon/bell-slash.blade.php create mode 100644 resources/views/flux/icon/bell-snooze.blade.php create mode 100644 resources/views/flux/icon/bell.blade.php create mode 100644 resources/views/flux/icon/bold.blade.php create mode 100644 resources/views/flux/icon/bolt-slash.blade.php create mode 100644 resources/views/flux/icon/bolt.blade.php create mode 100644 resources/views/flux/icon/book-open.blade.php create mode 100644 resources/views/flux/icon/bookmark-slash.blade.php create mode 100644 resources/views/flux/icon/bookmark-square.blade.php create mode 100644 resources/views/flux/icon/bookmark.blade.php create mode 100644 resources/views/flux/icon/briefcase.blade.php create mode 100644 resources/views/flux/icon/bug-ant.blade.php create mode 100644 resources/views/flux/icon/building-library.blade.php create mode 100644 resources/views/flux/icon/building-office-2.blade.php create mode 100644 resources/views/flux/icon/building-office.blade.php create mode 100644 resources/views/flux/icon/building-storefront.blade.php create mode 100644 resources/views/flux/icon/cake.blade.php create mode 100644 resources/views/flux/icon/calculator.blade.php create mode 100644 resources/views/flux/icon/calendar-date-range.blade.php create mode 100644 resources/views/flux/icon/calendar-days.blade.php create mode 100644 resources/views/flux/icon/calendar.blade.php create mode 100644 resources/views/flux/icon/camera.blade.php create mode 100644 resources/views/flux/icon/chart-bar-square.blade.php create mode 100644 resources/views/flux/icon/chart-bar.blade.php create mode 100644 resources/views/flux/icon/chart-pie.blade.php create mode 100644 resources/views/flux/icon/chat-bubble-bottom-center-text.blade.php create mode 100644 resources/views/flux/icon/chat-bubble-bottom-center.blade.php create mode 100644 resources/views/flux/icon/chat-bubble-left-ellipsis.blade.php create mode 100644 resources/views/flux/icon/chat-bubble-left-right.blade.php create mode 100644 resources/views/flux/icon/chat-bubble-left.blade.php create mode 100644 resources/views/flux/icon/chat-bubble-oval-left-ellipsis.blade.php create mode 100644 resources/views/flux/icon/chat-bubble-oval-left.blade.php create mode 100644 resources/views/flux/icon/check-badge.blade.php create mode 100644 resources/views/flux/icon/check-circle.blade.php create mode 100644 resources/views/flux/icon/check.blade.php create mode 100644 resources/views/flux/icon/chevron-double-down.blade.php create mode 100644 resources/views/flux/icon/chevron-double-left.blade.php create mode 100644 resources/views/flux/icon/chevron-double-right.blade.php create mode 100644 resources/views/flux/icon/chevron-double-up.blade.php create mode 100644 resources/views/flux/icon/chevron-down.blade.php create mode 100644 resources/views/flux/icon/chevron-left.blade.php create mode 100644 resources/views/flux/icon/chevron-right.blade.php create mode 100644 resources/views/flux/icon/chevron-up-down.blade.php create mode 100644 resources/views/flux/icon/chevron-up.blade.php create mode 100644 resources/views/flux/icon/circle-stack.blade.php create mode 100644 resources/views/flux/icon/clipboard-document-check.blade.php create mode 100644 resources/views/flux/icon/clipboard-document-list.blade.php create mode 100644 resources/views/flux/icon/clipboard-document.blade.php create mode 100644 resources/views/flux/icon/clipboard.blade.php create mode 100644 resources/views/flux/icon/clock.blade.php create mode 100644 resources/views/flux/icon/cloud-arrow-down.blade.php create mode 100644 resources/views/flux/icon/cloud-arrow-up.blade.php create mode 100644 resources/views/flux/icon/cloud.blade.php create mode 100644 resources/views/flux/icon/code-bracket-square.blade.php create mode 100644 resources/views/flux/icon/code-bracket.blade.php create mode 100644 resources/views/flux/icon/cog-6-tooth.blade.php create mode 100644 resources/views/flux/icon/cog-8-tooth.blade.php create mode 100644 resources/views/flux/icon/cog.blade.php create mode 100644 resources/views/flux/icon/command-line.blade.php create mode 100644 resources/views/flux/icon/computer-desktop.blade.php create mode 100644 resources/views/flux/icon/cpu-chip.blade.php create mode 100644 resources/views/flux/icon/credit-card.blade.php create mode 100644 resources/views/flux/icon/cube-transparent.blade.php create mode 100644 resources/views/flux/icon/cube.blade.php create mode 100644 resources/views/flux/icon/currency-bangladeshi.blade.php create mode 100644 resources/views/flux/icon/currency-dollar.blade.php create mode 100644 resources/views/flux/icon/currency-euro.blade.php create mode 100644 resources/views/flux/icon/currency-pound.blade.php create mode 100644 resources/views/flux/icon/currency-rupee.blade.php create mode 100644 resources/views/flux/icon/currency-yen.blade.php create mode 100644 resources/views/flux/icon/cursor-arrow-rays.blade.php create mode 100644 resources/views/flux/icon/cursor-arrow-ripple.blade.php create mode 100644 resources/views/flux/icon/device-phone-mobile.blade.php create mode 100644 resources/views/flux/icon/device-tablet.blade.php create mode 100644 resources/views/flux/icon/divide.blade.php create mode 100644 resources/views/flux/icon/document-arrow-down.blade.php create mode 100644 resources/views/flux/icon/document-arrow-up.blade.php create mode 100644 resources/views/flux/icon/document-chart-bar.blade.php create mode 100644 resources/views/flux/icon/document-check.blade.php create mode 100644 resources/views/flux/icon/document-currency-bangladeshi.blade.php create mode 100644 resources/views/flux/icon/document-currency-dollar.blade.php create mode 100644 resources/views/flux/icon/document-currency-euro.blade.php create mode 100644 resources/views/flux/icon/document-currency-pound.blade.php create mode 100644 resources/views/flux/icon/document-currency-rupee.blade.php create mode 100644 resources/views/flux/icon/document-currency-yen.blade.php create mode 100644 resources/views/flux/icon/document-duplicate.blade.php create mode 100644 resources/views/flux/icon/document-magnifying-glass.blade.php create mode 100644 resources/views/flux/icon/document-minus.blade.php create mode 100644 resources/views/flux/icon/document-plus.blade.php create mode 100644 resources/views/flux/icon/document-text.blade.php create mode 100644 resources/views/flux/icon/document.blade.php create mode 100644 resources/views/flux/icon/ellipsis-horizontal-circle.blade.php create mode 100644 resources/views/flux/icon/ellipsis-horizontal.blade.php create mode 100644 resources/views/flux/icon/ellipsis-vertical.blade.php create mode 100644 resources/views/flux/icon/envelope-open.blade.php create mode 100644 resources/views/flux/icon/envelope.blade.php create mode 100644 resources/views/flux/icon/equals.blade.php create mode 100644 resources/views/flux/icon/exclamation-circle.blade.php create mode 100644 resources/views/flux/icon/exclamation-triangle.blade.php create mode 100644 resources/views/flux/icon/eye-dropper.blade.php create mode 100644 resources/views/flux/icon/eye-slash.blade.php create mode 100644 resources/views/flux/icon/eye.blade.php create mode 100644 resources/views/flux/icon/face-frown.blade.php create mode 100644 resources/views/flux/icon/face-smile.blade.php create mode 100644 resources/views/flux/icon/film.blade.php create mode 100644 resources/views/flux/icon/finger-print.blade.php create mode 100644 resources/views/flux/icon/fire.blade.php create mode 100644 resources/views/flux/icon/flag.blade.php create mode 100644 resources/views/flux/icon/folder-arrow-down.blade.php create mode 100644 resources/views/flux/icon/folder-minus.blade.php create mode 100644 resources/views/flux/icon/folder-open.blade.php create mode 100644 resources/views/flux/icon/folder-plus.blade.php create mode 100644 resources/views/flux/icon/folder.blade.php create mode 100644 resources/views/flux/icon/forward.blade.php create mode 100644 resources/views/flux/icon/funnel.blade.php create mode 100644 resources/views/flux/icon/gif.blade.php create mode 100644 resources/views/flux/icon/gift-top.blade.php create mode 100644 resources/views/flux/icon/gift.blade.php create mode 100644 resources/views/flux/icon/globe-alt.blade.php create mode 100644 resources/views/flux/icon/globe-americas.blade.php create mode 100644 resources/views/flux/icon/globe-asia-australia.blade.php create mode 100644 resources/views/flux/icon/globe-europe-africa.blade.php create mode 100644 resources/views/flux/icon/h1.blade.php create mode 100644 resources/views/flux/icon/h2.blade.php create mode 100644 resources/views/flux/icon/h3.blade.php create mode 100644 resources/views/flux/icon/hand-raised.blade.php create mode 100644 resources/views/flux/icon/hand-thumb-down.blade.php create mode 100644 resources/views/flux/icon/hand-thumb-up.blade.php create mode 100644 resources/views/flux/icon/hashtag.blade.php create mode 100644 resources/views/flux/icon/heart.blade.php create mode 100644 resources/views/flux/icon/home-modern.blade.php create mode 100644 resources/views/flux/icon/home.blade.php create mode 100644 resources/views/flux/icon/identification.blade.php create mode 100644 resources/views/flux/icon/inbox-arrow-down.blade.php create mode 100644 resources/views/flux/icon/inbox-stack.blade.php create mode 100644 resources/views/flux/icon/inbox.blade.php create mode 100644 resources/views/flux/icon/index.blade.php create mode 100644 resources/views/flux/icon/information-circle.blade.php create mode 100644 resources/views/flux/icon/italic.blade.php create mode 100644 resources/views/flux/icon/key.blade.php create mode 100644 resources/views/flux/icon/language.blade.php create mode 100644 resources/views/flux/icon/lifebuoy.blade.php create mode 100644 resources/views/flux/icon/light-bulb.blade.php create mode 100644 resources/views/flux/icon/link-slash.blade.php create mode 100644 resources/views/flux/icon/link.blade.php create mode 100644 resources/views/flux/icon/list-bullet.blade.php create mode 100644 resources/views/flux/icon/loading.blade.php create mode 100644 resources/views/flux/icon/lock-closed.blade.php create mode 100644 resources/views/flux/icon/lock-open.blade.php create mode 100644 resources/views/flux/icon/magnifying-glass-circle.blade.php create mode 100644 resources/views/flux/icon/magnifying-glass-minus.blade.php create mode 100644 resources/views/flux/icon/magnifying-glass-plus.blade.php create mode 100644 resources/views/flux/icon/magnifying-glass.blade.php create mode 100644 resources/views/flux/icon/map-pin.blade.php create mode 100644 resources/views/flux/icon/map.blade.php create mode 100644 resources/views/flux/icon/megaphone.blade.php create mode 100644 resources/views/flux/icon/microphone.blade.php create mode 100644 resources/views/flux/icon/minus-circle.blade.php create mode 100644 resources/views/flux/icon/minus.blade.php create mode 100644 resources/views/flux/icon/moon.blade.php create mode 100644 resources/views/flux/icon/musical-note.blade.php create mode 100644 resources/views/flux/icon/newspaper.blade.php create mode 100644 resources/views/flux/icon/no-symbol.blade.php create mode 100644 resources/views/flux/icon/numbered-list.blade.php create mode 100644 resources/views/flux/icon/paint-brush.blade.php create mode 100644 resources/views/flux/icon/paper-airplane.blade.php create mode 100644 resources/views/flux/icon/paper-clip.blade.php create mode 100644 resources/views/flux/icon/pause-circle.blade.php create mode 100644 resources/views/flux/icon/pause.blade.php create mode 100644 resources/views/flux/icon/pencil-square.blade.php create mode 100644 resources/views/flux/icon/pencil.blade.php create mode 100644 resources/views/flux/icon/percent-badge.blade.php create mode 100644 resources/views/flux/icon/phone-arrow-down-left.blade.php create mode 100644 resources/views/flux/icon/phone-arrow-up-right.blade.php create mode 100644 resources/views/flux/icon/phone-x-mark.blade.php create mode 100644 resources/views/flux/icon/phone.blade.php create mode 100644 resources/views/flux/icon/photo.blade.php create mode 100644 resources/views/flux/icon/play-circle.blade.php create mode 100644 resources/views/flux/icon/play-pause.blade.php create mode 100644 resources/views/flux/icon/play.blade.php create mode 100644 resources/views/flux/icon/plus-circle.blade.php create mode 100644 resources/views/flux/icon/plus.blade.php create mode 100644 resources/views/flux/icon/power.blade.php create mode 100644 resources/views/flux/icon/presentation-chart-bar.blade.php create mode 100644 resources/views/flux/icon/presentation-chart-line.blade.php create mode 100644 resources/views/flux/icon/printer.blade.php create mode 100644 resources/views/flux/icon/puzzle-piece.blade.php create mode 100644 resources/views/flux/icon/qr-code.blade.php create mode 100644 resources/views/flux/icon/question-mark-circle.blade.php create mode 100644 resources/views/flux/icon/queue-list.blade.php create mode 100644 resources/views/flux/icon/radio.blade.php create mode 100644 resources/views/flux/icon/receipt-percent.blade.php create mode 100644 resources/views/flux/icon/receipt-refund.blade.php create mode 100644 resources/views/flux/icon/rectangle-group.blade.php create mode 100644 resources/views/flux/icon/rectangle-stack.blade.php create mode 100644 resources/views/flux/icon/rocket-launch.blade.php create mode 100644 resources/views/flux/icon/rss.blade.php create mode 100644 resources/views/flux/icon/scale.blade.php create mode 100644 resources/views/flux/icon/scissors.blade.php create mode 100644 resources/views/flux/icon/server-stack.blade.php create mode 100644 resources/views/flux/icon/server.blade.php create mode 100644 resources/views/flux/icon/share.blade.php create mode 100644 resources/views/flux/icon/shield-check.blade.php create mode 100644 resources/views/flux/icon/shield-exclamation.blade.php create mode 100644 resources/views/flux/icon/shopping-bag.blade.php create mode 100644 resources/views/flux/icon/shopping-cart.blade.php create mode 100644 resources/views/flux/icon/signal-slash.blade.php create mode 100644 resources/views/flux/icon/signal.blade.php create mode 100644 resources/views/flux/icon/slash.blade.php create mode 100644 resources/views/flux/icon/sparkles.blade.php create mode 100644 resources/views/flux/icon/speaker-wave.blade.php create mode 100644 resources/views/flux/icon/speaker-x-mark.blade.php create mode 100644 resources/views/flux/icon/square-2-stack.blade.php create mode 100644 resources/views/flux/icon/square-3-stack-3d.blade.php create mode 100644 resources/views/flux/icon/squares-2x2.blade.php create mode 100644 resources/views/flux/icon/squares-plus.blade.php create mode 100644 resources/views/flux/icon/star.blade.php create mode 100644 resources/views/flux/icon/stop-circle.blade.php create mode 100644 resources/views/flux/icon/stop.blade.php create mode 100644 resources/views/flux/icon/strikethrough.blade.php create mode 100644 resources/views/flux/icon/sun.blade.php create mode 100644 resources/views/flux/icon/swatch.blade.php create mode 100644 resources/views/flux/icon/table-cells.blade.php create mode 100644 resources/views/flux/icon/tag.blade.php create mode 100644 resources/views/flux/icon/ticket.blade.php create mode 100644 resources/views/flux/icon/trash.blade.php create mode 100644 resources/views/flux/icon/trophy.blade.php create mode 100644 resources/views/flux/icon/truck.blade.php create mode 100644 resources/views/flux/icon/tv.blade.php create mode 100644 resources/views/flux/icon/underline.blade.php create mode 100644 resources/views/flux/icon/user-circle.blade.php create mode 100644 resources/views/flux/icon/user-group.blade.php create mode 100644 resources/views/flux/icon/user-minus.blade.php create mode 100644 resources/views/flux/icon/user-plus.blade.php create mode 100644 resources/views/flux/icon/user.blade.php create mode 100644 resources/views/flux/icon/users.blade.php create mode 100644 resources/views/flux/icon/variable.blade.php create mode 100644 resources/views/flux/icon/video-camera-slash.blade.php create mode 100644 resources/views/flux/icon/video-camera.blade.php create mode 100644 resources/views/flux/icon/view-columns.blade.php create mode 100644 resources/views/flux/icon/viewfinder-circle.blade.php create mode 100644 resources/views/flux/icon/wallet.blade.php create mode 100644 resources/views/flux/icon/wifi.blade.php create mode 100644 resources/views/flux/icon/window.blade.php create mode 100644 resources/views/flux/icon/wrench-screwdriver.blade.php create mode 100644 resources/views/flux/icon/wrench.blade.php create mode 100644 resources/views/flux/icon/x-circle.blade.php create mode 100644 resources/views/flux/icon/x-mark.blade.php create mode 100644 resources/views/flux/input/clearable.blade.php create mode 100644 resources/views/flux/input/copyable.blade.php create mode 100644 resources/views/flux/input/expandable.blade.php create mode 100644 resources/views/flux/input/file.blade.php create mode 100644 resources/views/flux/input/group/affix.blade.php create mode 100644 resources/views/flux/input/group/index.blade.php create mode 100644 resources/views/flux/input/group/prefix.blade.php create mode 100644 resources/views/flux/input/group/suffix.blade.php create mode 100644 resources/views/flux/input/index.blade.php create mode 100644 resources/views/flux/input/viewable.blade.php create mode 100644 resources/views/flux/kanban/card.blade.php create mode 100644 resources/views/flux/kanban/column/cards.blade.php create mode 100644 resources/views/flux/kanban/column/footer.blade.php create mode 100644 resources/views/flux/kanban/column/header.blade.php create mode 100644 resources/views/flux/kanban/column/index.blade.php create mode 100644 resources/views/flux/kanban/index.blade.php create mode 100644 resources/views/flux/label.blade.php create mode 100644 resources/views/flux/legend.blade.php create mode 100644 resources/views/flux/link.blade.php create mode 100644 resources/views/flux/main.blade.php create mode 100644 resources/views/flux/menu/checkbox/group.blade.php create mode 100644 resources/views/flux/menu/checkbox/index.blade.php create mode 100644 resources/views/flux/menu/group.blade.php create mode 100644 resources/views/flux/menu/heading.blade.php create mode 100644 resources/views/flux/menu/index.blade.php create mode 100644 resources/views/flux/menu/item.blade.php create mode 100644 resources/views/flux/menu/radio/group.blade.php create mode 100644 resources/views/flux/menu/radio/index.blade.php create mode 100644 resources/views/flux/menu/separator.blade.php create mode 100644 resources/views/flux/menu/submenu.blade.php create mode 100644 resources/views/flux/modal/close.blade.php create mode 100644 resources/views/flux/modal/index.blade.php create mode 100644 resources/views/flux/modal/trigger.blade.php create mode 100644 resources/views/flux/navbar/badge.blade.php create mode 100644 resources/views/flux/navbar/index.blade.php create mode 100644 resources/views/flux/navbar/item.blade.php create mode 100644 resources/views/flux/navlist/badge.blade.php create mode 100644 resources/views/flux/navlist/group.blade.php create mode 100644 resources/views/flux/navlist/index.blade.php create mode 100644 resources/views/flux/navlist/item.blade.php create mode 100644 resources/views/flux/navmenu/index.blade.php create mode 100644 resources/views/flux/navmenu/item.blade.php create mode 100644 resources/views/flux/navmenu/separator.blade.php create mode 100644 resources/views/flux/otp/group.blade.php create mode 100644 resources/views/flux/otp/index.blade.php create mode 100644 resources/views/flux/otp/input.blade.php create mode 100644 resources/views/flux/otp/separator.blade.php create mode 100644 resources/views/flux/pagination.blade.php create mode 100644 resources/views/flux/pillbox/empty.blade.php create mode 100644 resources/views/flux/pillbox/index.blade.php create mode 100644 resources/views/flux/pillbox/indicator.blade.php create mode 100644 resources/views/flux/pillbox/input.blade.php create mode 100644 resources/views/flux/pillbox/option.blade.php create mode 100644 resources/views/flux/pillbox/option/create.blade.php create mode 100644 resources/views/flux/pillbox/option/empty.blade.php create mode 100644 resources/views/flux/pillbox/options.blade.php create mode 100644 resources/views/flux/pillbox/search.blade.php create mode 100644 resources/views/flux/pillbox/selected.blade.php create mode 100644 resources/views/flux/pillbox/trigger.blade.php create mode 100644 resources/views/flux/pillbox/variants/combobox.blade.php create mode 100644 resources/views/flux/pillbox/variants/default.blade.php create mode 100644 resources/views/flux/popover/index.blade.php create mode 100644 resources/views/flux/profile.blade.php create mode 100644 resources/views/flux/radio/group/index.blade.php create mode 100644 resources/views/flux/radio/group/variants/buttons.blade.php create mode 100644 resources/views/flux/radio/group/variants/cards.blade.php create mode 100644 resources/views/flux/radio/group/variants/default.blade.php create mode 100644 resources/views/flux/radio/group/variants/pills.blade.php create mode 100644 resources/views/flux/radio/group/variants/segmented.blade.php create mode 100644 resources/views/flux/radio/index.blade.php create mode 100644 resources/views/flux/radio/indicator.blade.php create mode 100644 resources/views/flux/radio/variants/buttons.blade.php create mode 100644 resources/views/flux/radio/variants/cards.blade.php create mode 100644 resources/views/flux/radio/variants/default.blade.php create mode 100644 resources/views/flux/radio/variants/pills.blade.php create mode 100644 resources/views/flux/radio/variants/segmented.blade.php create mode 100644 resources/views/flux/select/button.blade.php create mode 100644 resources/views/flux/select/empty.blade.php create mode 100644 resources/views/flux/select/index.blade.php create mode 100644 resources/views/flux/select/indicator/index.blade.php create mode 100644 resources/views/flux/select/indicator/variants/check.blade.php create mode 100644 resources/views/flux/select/indicator/variants/checkbox.blade.php create mode 100644 resources/views/flux/select/indicator/variants/radio.blade.php create mode 100644 resources/views/flux/select/input.blade.php create mode 100644 resources/views/flux/select/option/create.blade.php create mode 100644 resources/views/flux/select/option/empty.blade.php create mode 100644 resources/views/flux/select/option/index.blade.php create mode 100644 resources/views/flux/select/option/variants/custom.blade.php create mode 100644 resources/views/flux/select/option/variants/default.blade.php create mode 100644 resources/views/flux/select/options.blade.php create mode 100644 resources/views/flux/select/search.blade.php create mode 100644 resources/views/flux/select/selected.blade.php create mode 100644 resources/views/flux/select/variants/combobox.blade.php create mode 100644 resources/views/flux/select/variants/custom.blade.php create mode 100644 resources/views/flux/select/variants/default.blade.php create mode 100644 resources/views/flux/select/variants/listbox.blade.php create mode 100644 resources/views/flux/separator.blade.php create mode 100644 resources/views/flux/sidebar/backdrop.blade.php create mode 100644 resources/views/flux/sidebar/brand.blade.php create mode 100644 resources/views/flux/sidebar/collapse.blade.php create mode 100644 resources/views/flux/sidebar/group.blade.php create mode 100644 resources/views/flux/sidebar/header.blade.php create mode 100644 resources/views/flux/sidebar/index.blade.php create mode 100644 resources/views/flux/sidebar/item.blade.php create mode 100644 resources/views/flux/sidebar/nav.blade.php create mode 100644 resources/views/flux/sidebar/profile.blade.php create mode 100644 resources/views/flux/sidebar/search.blade.php create mode 100644 resources/views/flux/sidebar/spacer.blade.php create mode 100644 resources/views/flux/sidebar/toggle.blade.php create mode 100644 resources/views/flux/skeleton/group.blade.php create mode 100644 resources/views/flux/skeleton/index.blade.php create mode 100644 resources/views/flux/skeleton/line.blade.php create mode 100644 resources/views/flux/slider/index.blade.php create mode 100644 resources/views/flux/slider/tick.blade.php create mode 100644 resources/views/flux/spacer.blade.php create mode 100644 resources/views/flux/subheading.blade.php create mode 100644 resources/views/flux/switch.blade.php create mode 100644 resources/views/flux/tab/group.blade.php create mode 100644 resources/views/flux/tab/index.blade.php create mode 100644 resources/views/flux/tab/panel.blade.php create mode 100644 resources/views/flux/table/cell.blade.php create mode 100644 resources/views/flux/table/column.blade.php create mode 100644 resources/views/flux/table/columns.blade.php create mode 100644 resources/views/flux/table/index.blade.php create mode 100644 resources/views/flux/table/row.blade.php create mode 100644 resources/views/flux/table/rows.blade.php create mode 100644 resources/views/flux/table/sortable.blade.php create mode 100644 resources/views/flux/tabs.blade.php create mode 100644 resources/views/flux/text.blade.php create mode 100644 resources/views/flux/textarea.blade.php create mode 100644 resources/views/flux/time-picker/button.blade.php create mode 100644 resources/views/flux/time-picker/index.blade.php create mode 100644 resources/views/flux/time-picker/input.blade.php create mode 100644 resources/views/flux/time-picker/selected.blade.php create mode 100644 resources/views/flux/toast/group.blade.php create mode 100644 resources/views/flux/toast/index.blade.php create mode 100644 resources/views/flux/tooltip/content.blade.php create mode 100644 resources/views/flux/tooltip/index.blade.php create mode 100644 videos/.agent/skills/remotion-best-practices/SKILL.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/3d.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/animations.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/assets.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx create mode 100644 videos/.agent/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx create mode 100644 videos/.agent/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx create mode 100644 videos/.agent/skills/remotion-best-practices/rules/audio.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/calculate-metadata.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/can-decode.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/charts.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/compositions.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/display-captions.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/extract-frames.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/fonts.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/get-audio-duration.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/get-video-dimensions.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/get-video-duration.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/gifs.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/images.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/import-srt-captions.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/lottie.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/measuring-dom-nodes.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/measuring-text.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/sequencing.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/tailwind.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/text-animations.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/timing.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/transcribe-captions.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/transitions.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/trimming.md create mode 100644 videos/.agent/skills/remotion-best-practices/rules/videos.md create mode 100644 videos/.claude/skills/remotion-best-practices/SKILL.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/3d.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/animations.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/assets.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx create mode 100644 videos/.claude/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx create mode 100644 videos/.claude/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx create mode 100644 videos/.claude/skills/remotion-best-practices/rules/audio.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/calculate-metadata.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/can-decode.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/charts.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/compositions.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/display-captions.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/extract-frames.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/fonts.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/get-audio-duration.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/get-video-dimensions.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/get-video-duration.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/gifs.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/images.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/import-srt-captions.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/lottie.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/measuring-dom-nodes.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/measuring-text.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/sequencing.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/tailwind.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/text-animations.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/timing.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/transcribe-captions.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/transitions.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/trimming.md create mode 100644 videos/.claude/skills/remotion-best-practices/rules/videos.md create mode 100644 videos/.gemini/skills/remotion-best-practices/SKILL.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/3d.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/animations.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/assets.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/audio.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/calculate-metadata.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/can-decode.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/charts.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/compositions.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/display-captions.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/extract-frames.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/fonts.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/get-audio-duration.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/get-video-dimensions.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/get-video-duration.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/gifs.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/images.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/import-srt-captions.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/lottie.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/measuring-dom-nodes.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/measuring-text.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/sequencing.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/tailwind.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/text-animations.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/timing.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/transcribe-captions.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/transitions.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/trimming.md create mode 100644 videos/.gemini/skills/remotion-best-practices/rules/videos.md create mode 100644 videos/.gitignore create mode 100644 videos/.opencode/skills/remotion-best-practices/SKILL.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/3d.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/animations.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/assets.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/audio.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/calculate-metadata.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/can-decode.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/charts.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/compositions.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/display-captions.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/extract-frames.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/fonts.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/get-audio-duration.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/get-video-dimensions.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/get-video-duration.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/gifs.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/images.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/import-srt-captions.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/lottie.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/measuring-dom-nodes.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/measuring-text.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/sequencing.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/tailwind.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/text-animations.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/timing.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/transcribe-captions.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/transitions.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/trimming.md create mode 100644 videos/.opencode/skills/remotion-best-practices/rules/videos.md create mode 100644 videos/.prettierrc create mode 100644 videos/AUDIO_GUIDE.md create mode 100644 videos/AUDIO_README.md create mode 100644 videos/NIP05-TUTORIAL-README.md create mode 100644 videos/README.md create mode 100644 videos/build/129.bundle.js create mode 100644 videos/build/129.bundle.js.map create mode 100644 videos/build/280.bundle.js create mode 100644 videos/build/280.bundle.js.map create mode 100644 videos/build/476.bundle.js create mode 100644 videos/build/476.bundle.js.map create mode 100644 videos/build/537.bundle.js create mode 100644 videos/build/537.bundle.js.map create mode 100644 videos/build/702.bundle.js create mode 100644 videos/build/702.bundle.js.map create mode 100644 videos/build/761.bundle.js create mode 100644 videos/build/761.bundle.js.map create mode 100644 videos/build/bundle.js create mode 100644 videos/build/bundle.js.map create mode 100644 videos/build/favicon.ico create mode 100644 videos/build/index.html create mode 100644 videos/build/public/einundzwanzig-horizontal-inverted.svg create mode 100644 videos/build/public/einundzwanzig-square-inverted.svg create mode 100644 videos/build/public/einundzwanzig-wallpaper.png create mode 100644 videos/build/public/music/README.md create mode 100755 videos/build/public/music/background-music.mp3 create mode 100644 videos/build/public/sfx/README.md create mode 100644 videos/build/public/sfx/badge-appear.mp3 create mode 100644 videos/build/public/sfx/button-click.mp3 create mode 100644 videos/build/public/sfx/button-hover.mp3 create mode 100644 videos/build/public/sfx/card-slide.mp3 create mode 100644 videos/build/public/sfx/checkmark-pop.mp3 create mode 100644 videos/build/public/sfx/final-chime.mp3 create mode 100644 videos/build/public/sfx/logo-reveal.mp3 create mode 100644 videos/build/public/sfx/logo-whoosh.mp3 create mode 100644 videos/build/public/sfx/outro-entrance.mp3 create mode 100644 videos/build/public/sfx/slide-in.mp3 create mode 100644 videos/build/public/sfx/success-chime.mp3 create mode 100644 videos/build/public/sfx/success-fanfare.mp3 create mode 100644 videos/build/public/sfx/typing.mp3 create mode 100644 videos/build/public/sfx/ui-appear.mp3 create mode 100644 videos/build/public/sfx/url-emphasis.mp3 create mode 100644 videos/build/source-map-helper.wasm create mode 100644 videos/eslint.config.mjs create mode 100644 videos/package-lock.json create mode 100644 videos/package.json create mode 100644 videos/postcss.config.mjs create mode 100644 videos/public/bitcoin-logo.svg create mode 100644 videos/public/einundzwanzig-horizontal-inverted.svg create mode 100644 videos/public/einundzwanzig-square-inverted.svg create mode 100644 videos/public/einundzwanzig-wallpaper.png create mode 100644 videos/public/music/README.md create mode 100755 videos/public/music/background-music.mp3 create mode 100644 videos/public/sfx/README.md create mode 100644 videos/public/sfx/badge-appear.mp3 create mode 100644 videos/public/sfx/button-click.mp3 create mode 100644 videos/public/sfx/button-hover.mp3 create mode 100644 videos/public/sfx/card-slide.mp3 create mode 100644 videos/public/sfx/checkmark-pop.mp3 create mode 100644 videos/public/sfx/final-chime.mp3 create mode 100644 videos/public/sfx/logo-reveal.mp3 create mode 100644 videos/public/sfx/logo-whoosh.mp3 create mode 100644 videos/public/sfx/outro-entrance.mp3 create mode 100644 videos/public/sfx/slide-in.mp3 create mode 100644 videos/public/sfx/success-chime.mp3 create mode 100644 videos/public/sfx/success-fanfare.mp3 create mode 100644 videos/public/sfx/typing.mp3 create mode 100644 videos/public/sfx/ui-appear.mp3 create mode 100644 videos/public/sfx/url-emphasis.mp3 create mode 100644 videos/remotion.config.ts create mode 100755 videos/setup-audio.sh create mode 100644 videos/src/Composition.tsx create mode 100644 videos/src/Nip05Tutorial.tsx create mode 100644 videos/src/Nip05TutorialMobile.tsx create mode 100644 videos/src/Root.tsx create mode 100644 videos/src/components/AnimatedLogo.tsx create mode 100644 videos/src/components/AudioManager.tsx create mode 100644 videos/src/components/BitcoinEffect.tsx create mode 100644 videos/src/fonts/inconsolata.ts create mode 100644 videos/src/index.css create mode 100644 videos/src/index.ts create mode 100644 videos/src/scenes/InputDemoScene.tsx create mode 100644 videos/src/scenes/IntroScene.tsx create mode 100644 videos/src/scenes/OutroScene.tsx create mode 100644 videos/src/scenes/SaveButtonScene.tsx create mode 100644 videos/src/scenes/UIShowcaseScene.tsx create mode 100644 videos/src/scenes/VerificationScene.tsx create mode 100644 videos/src/scenes/mobile/InputDemoSceneMobile.tsx create mode 100644 videos/src/scenes/mobile/IntroSceneMobile.tsx create mode 100644 videos/src/scenes/mobile/OutroSceneMobile.tsx create mode 100644 videos/src/scenes/mobile/SaveButtonSceneMobile.tsx create mode 100644 videos/src/scenes/mobile/UIShowcaseSceneMobile.tsx create mode 100644 videos/src/scenes/mobile/VerificationSceneMobile.tsx create mode 100644 videos/tsconfig.json diff --git a/.gitignore b/.gitignore index bebaa43..46c29ee 100644 --- a/.gitignore +++ b/.gitignore @@ -23,4 +23,3 @@ yarn-error.log /.sisyphus /.opencode .switch-omo-config* -/videos diff --git a/design.pen b/design.pen new file mode 100644 index 0000000..1a721b9 --- /dev/null +++ b/design.pen @@ -0,0 +1,2075 @@ +{ + "version": "2.6", + "children": [ + { + "type": "frame", + "id": "bi8Au", + "x": 0, + "y": 0, + "name": "Desktop Layout", + "clip": true, + "width": 1440, + "fill": "$bg-page", + "children": [ + { + "type": "frame", + "id": "dg1Zy", + "name": "Main Content", + "width": "fill_container", + "fill": "$bg-page", + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "qdt1H", + "name": "Header", + "width": "fill_container", + "height": 64, + "fill": "$bg-surface", + "stroke": { + "align": "inside", + "thickness": { + "bottom": 1 + }, + "fill": "$border-default" + }, + "padding": [ + 0, + 40 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "PMcSC", + "name": "headerLeft", + "gap": 32, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "eRs44", + "name": "brandLogo", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "O3KWW", + "name": "brandIcon", + "width": 32, + "height": 32, + "fill": "$orange-primary", + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "O5tsg", + "name": "brandIconImg", + "fill": "$text-primary", + "content": "₿", + "fontFamily": "Inconsolata", + "fontSize": 20, + "fontWeight": "600" + } + ] + }, + { + "type": "text", + "id": "Tpr9e", + "name": "brandName", + "fill": "$text-primary", + "content": "EINUNDZWANZIG", + "fontFamily": "Inconsolata", + "fontSize": 14, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "0lwaM", + "name": "navBar", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "SOKYg", + "name": "navNews", + "stroke": { + "align": "inside", + "thickness": { + "bottom": 1 + }, + "fill": "$border-default" + }, + "gap": 8, + "padding": [ + 12, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "aQ59w", + "name": "navNewsIcon", + "width": 16, + "height": 16, + "iconFontName": "rss", + "iconFontFamily": "lucide", + "fill": "$text-tertiary" + }, + { + "type": "text", + "id": "Hp2l5", + "name": "navNewsLabel", + "fill": "$text-tertiary", + "content": "News", + "fontFamily": "Inconsolata", + "fontSize": 14, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "PJYqa", + "name": "navProfile", + "stroke": { + "align": "inside", + "thickness": { + "bottom": 2 + }, + "fill": "$orange-primary" + }, + "gap": 8, + "padding": [ + 12, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "zD1TC", + "name": "navProfileIcon", + "width": 16, + "height": 16, + "iconFontName": "id-card", + "iconFontFamily": "lucide", + "fill": "$orange-primary" + }, + { + "type": "text", + "id": "ptYQT", + "name": "navProfileLabel", + "fill": "$text-primary", + "content": "Mitgliederstatus", + "fontFamily": "Inconsolata", + "fontSize": 14, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "IqSDS", + "name": "navBenefits", + "gap": 8, + "padding": [ + 12, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "P0Ib3", + "name": "navBenefitsIcon", + "width": 16, + "height": 16, + "iconFontName": "gift", + "iconFontFamily": "lucide", + "fill": "$text-tertiary" + }, + { + "type": "text", + "id": "NylFs", + "name": "navBenefitsLabel", + "fill": "$text-tertiary", + "content": "Vorteile", + "fontFamily": "Inconsolata", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "H9h0U", + "name": "navProjects", + "gap": 8, + "padding": [ + 12, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "xC7V5", + "name": "navProjectsIcon", + "width": 16, + "height": 16, + "iconFontName": "heart", + "iconFontFamily": "lucide", + "fill": "$text-tertiary" + }, + { + "type": "text", + "id": "LlUEG", + "name": "navProjectsLabel", + "fill": "$text-tertiary", + "content": "Projekt-Unterstützungen", + "fontFamily": "Inconsolata", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "HQd2W", + "name": "adminNav", + "gap": 4, + "padding": [ + 12, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "YDFs6", + "name": "adminNavIcon", + "width": 16, + "height": 16, + "iconFontName": "shield", + "iconFontFamily": "lucide", + "fill": "$text-tertiary" + }, + { + "type": "text", + "id": "V8MUp", + "name": "adminNavLabel", + "fill": "$text-tertiary", + "content": "Admin", + "fontFamily": "Inconsolata", + "fontSize": 14, + "fontWeight": "normal" + }, + { + "type": "icon_font", + "id": "Fwleu", + "name": "adminNavChevron", + "width": 14, + "height": 14, + "iconFontName": "chevron-down", + "iconFontFamily": "lucide", + "fill": "$text-tertiary" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f9JYT", + "name": "headerRight", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "XAu9V", + "name": "infoBtn", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "$border-default" + }, + "gap": 8, + "padding": [ + 10, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "Xm3bS", + "name": "infoIcon", + "width": 16, + "height": 16, + "iconFontName": "info", + "iconFontFamily": "lucide", + "fill": "$text-tertiary" + }, + { + "type": "text", + "id": "o3VFC", + "name": "infoLabel", + "fill": "$text-secondary", + "content": "Info", + "fontFamily": "Inconsolata", + "fontSize": 13, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "QA00x", + "name": "loginBtn", + "fill": "$orange-primary", + "cornerRadius": 8, + "gap": 8, + "padding": [ + 10, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "cEzU8", + "name": "loginIcon", + "width": 16, + "height": 16, + "iconFontName": "log-out", + "iconFontFamily": "lucide", + "fill": "$text-primary" + }, + { + "type": "text", + "id": "SKS0I", + "name": "loginLabel", + "fill": "$text-primary", + "content": "Logout", + "fontFamily": "Inconsolata", + "fontSize": 13, + "fontWeight": "500" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "Impqf", + "name": "Content Area", + "width": "fill_container", + "layout": "vertical", + "gap": 24, + "padding": [ + 32, + 40 + ], + "children": [ + { + "type": "text", + "id": "gnBOP", + "name": "pageTitle", + "fill": "$text-primary", + "content": "Einundzwanzig ist, was du draus machst", + "fontFamily": "Inconsolata", + "fontSize": 28, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "Ne7VM", + "name": "twoColLayout", + "width": "fill_container", + "gap": 32, + "children": [ + { + "type": "frame", + "id": "ybJKi", + "name": "leftColumn", + "width": 480, + "layout": "vertical", + "gap": 24, + "children": [ + { + "type": "text", + "id": "D1duN", + "name": "leftSectionTitle", + "fill": "$text-primary", + "content": "Vorteile deiner Mitgliedschaft", + "fontFamily": "Inconsolata", + "fontSize": 18, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "pOoqs", + "name": "nostrCard", + "width": "fill_container", + "fill": "$bg-surface", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#4a7c59" + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "gpew4", + "name": "nostrHeader", + "width": "fill_container", + "fill": { + "type": "gradient", + "gradientType": "linear", + "enabled": true, + "rotation": 90, + "size": { + "height": 1 + }, + "colors": [ + { + "color": "#4a7c5933", + "position": 0 + }, + { + "color": "#4a7c5900", + "position": 1 + } + ] + }, + "gap": 12, + "padding": 16, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "a8XSg", + "name": "nostrIcon", + "width": 20, + "height": 20, + "iconFontName": "sparkles", + "iconFontFamily": "lucide", + "fill": "#4a7c59" + }, + { + "type": "text", + "id": "K9IJi", + "name": "nostrTitle", + "fill": "#7cb686", + "content": "Nostr Relay", + "fontFamily": "Inconsolata", + "fontSize": 16, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "0Zb3o", + "name": "nostrContent", + "width": "fill_container", + "layout": "vertical", + "gap": 12, + "padding": [ + 0, + 16, + 16, + 16 + ], + "children": [ + { + "type": "text", + "id": "7NdpO", + "name": "nostrDesc", + "fill": "$text-secondary", + "content": "Exklusive Schreib-Rechte auf Premium Nostr-Relay von Einundzwanzig.", + "lineHeight": 1.5, + "fontFamily": "Inconsolata", + "fontSize": 13, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "t0tKt", + "name": "nostrSubDesc", + "fill": "$text-disabled", + "content": "Ein Outbox-Relay ist wie ein Postbote für deine Nostr-Nachrichten. Es speichert und verteilt deine Posts. Um unser Relay nutzen zu können, musst du es in deinem Nostr-Client hinzufügen.", + "lineHeight": 1.5, + "fontFamily": "Inconsolata", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "Tj8iW", + "name": "nostrUrlBox", + "fill": "$bg-elevated", + "cornerRadius": 6, + "padding": [ + 8, + 12 + ], + "children": [ + { + "type": "text", + "id": "GfUQx", + "name": "nostrUrl", + "fill": "$text-secondary", + "content": "wss://nostr.einundzwanzig.space", + "fontFamily": "Inconsolata", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "text", + "id": "4KvkT", + "name": "nostrHint", + "fill": "$text-disabled", + "content": "Wichtige Hinweise: Du kannst deine Posts auf mehreren Relays gleichzeitig veröffentlichen. So stellst du sicher, dass deine Inhalte auch über unser Relay erreichbar sind.", + "lineHeight": 1.5, + "fontFamily": "Inconsolata", + "fontSize": 11, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "wC7KV", + "name": "nip05Card", + "width": "fill_container", + "fill": "$bg-surface", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#4a7c59" + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "AzItb", + "name": "nip05Header", + "width": "fill_container", + "fill": { + "type": "gradient", + "gradientType": "linear", + "enabled": true, + "rotation": 90, + "size": { + "height": 1 + }, + "colors": [ + { + "color": "#4a7c5933", + "position": 0 + }, + { + "color": "#4a7c5900", + "position": 1 + } + ] + }, + "gap": 12, + "padding": 16, + "alignItems": "center", + "children": [ + { + "type": "ellipse", + "id": "FITH4", + "name": "nip05Dot", + "fill": "#4a7c59", + "width": 10, + "height": 10 + }, + { + "type": "text", + "id": "pWD2b", + "name": "nip05Title", + "fill": "#7cb686", + "content": "Get NIP-05 verified", + "fontFamily": "Inconsolata", + "fontSize": 16, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "tEWUM", + "name": "nip05Content", + "width": "fill_container", + "layout": "vertical", + "gap": 16, + "padding": [ + 0, + 16, + 16, + 16 + ], + "children": [ + { + "type": "text", + "id": "kVnBC", + "name": "nip05Desc", + "fill": "$text-secondary", + "content": "Verifiziere deine Identität mit einem menschenlesbaren Nostr-Namen.", + "lineHeight": 1.5, + "fontFamily": "Inconsolata", + "fontSize": 13, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "etJCg", + "name": "nip05Label", + "fill": "$text-disabled", + "content": "Dein NIP-05 Handle", + "fontFamily": "Inconsolata", + "fontSize": 12, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "Di3vF", + "name": "nip05InputRow", + "width": "fill_container", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "$border-default" + }, + "children": [ + { + "type": "frame", + "id": "yf7XV", + "name": "nip05Input", + "width": "fill_container", + "fill": "$bg-elevated", + "padding": [ + 12, + 14 + ], + "children": [ + { + "type": "text", + "id": "s0H25", + "name": "nip05InputText", + "fill": "$text-secondary", + "content": "el-presidente-benito", + "fontFamily": "Inconsolata", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "NtQsv", + "name": "nip05Domain", + "fill": "#4a7c59", + "cornerRadius": [ + 0, + 8, + 8, + 0 + ], + "padding": [ + 12, + 14 + ], + "children": [ + { + "type": "text", + "id": "1BZX3", + "name": "nip05DomainText", + "fill": "$text-primary", + "content": "@einundzwanzig.space", + "fontFamily": "Inconsolata", + "fontSize": 13, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "O8EQs", + "name": "nip05SaveBtn", + "cornerRadius": 6, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "$border-default" + }, + "padding": [ + 8, + 16 + ], + "children": [ + { + "type": "text", + "id": "4HLlR", + "name": "nip05SaveText", + "fill": "$text-secondary", + "content": "Speichern", + "fontFamily": "Inconsolata", + "fontSize": 13, + "fontWeight": "500" + } + ] + }, + { + "type": "text", + "id": "nLUyt", + "name": "nip05Rules", + "fill": "$text-disabled", + "content": "Regeln für dein Handle: Nur Kleinbuchstaben (a-z), Zahlen (0-9) und die Zeichen \"-\" und \"_\" sind erlaubt. Dein Handle wird automatisch kleingeschrieben.", + "lineHeight": 1.5, + "fontFamily": "Inconsolata", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "mLWPb", + "name": "nip05Info", + "fill": "$text-disabled", + "content": "NIP-05 verifiziert deine Identität auf Nostr. Das Handle ist wie eine E-Mail-Adresse (z.B. name@einundzwanzig.space). Clients zeigen ein Häkchen für verifizierte Benutzer.", + "lineHeight": 1.5, + "fontFamily": "Inconsolata", + "fontSize": 11, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "0vjqw", + "name": "handlesBox", + "width": "fill_container", + "fill": { + "type": "gradient", + "gradientType": "linear", + "enabled": true, + "rotation": 90, + "size": { + "height": 1 + }, + "colors": [ + { + "color": "#4a7c5933", + "position": 0 + }, + { + "color": "#4a7c5900", + "position": 1 + } + ] + }, + "cornerRadius": 8, + "layout": "vertical", + "gap": 12, + "padding": 16, + "children": [ + { + "type": "frame", + "id": "YSVWb", + "name": "handlesHeader", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "ellipse", + "id": "grIlY", + "name": "handlesDot", + "fill": "#4a7c59", + "width": 8, + "height": 8 + }, + { + "type": "text", + "id": "Seri5", + "name": "handlesTitle", + "fill": "#7cb686", + "content": "Du hast 2 aktive Handles für deinen Pubkey!", + "fontFamily": "Inconsolata", + "fontSize": 13, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "AyVpc", + "name": "handlesContent", + "layout": "vertical", + "gap": 8, + "children": [ + { + "type": "text", + "id": "4RwI4", + "name": "handlesLabel", + "fill": "$text-disabled", + "content": "Deine aktivierten Handles:", + "fontFamily": "Inconsolata", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "s2qZZ", + "name": "handle1", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "iDa03", + "name": "handle1Text", + "fill": "$text-secondary", + "content": "holgerhatgarkeinennode@einundzwanzig.space", + "fontFamily": "Inconsolata", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "ljmoG", + "name": "handle1Badge", + "fill": "#4a7c59", + "cornerRadius": 4, + "padding": [ + 2, + 6 + ], + "children": [ + { + "type": "text", + "id": "JEH68", + "name": "handle1BadgeText", + "fill": "$text-primary", + "content": "OK", + "fontFamily": "Inconsolata", + "fontSize": 10, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "VOkcc", + "name": "handle2", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "ZZA9W", + "name": "handle2Text", + "fill": "$text-secondary", + "content": "el-presidente-benito@einundzwanzig.space", + "fontFamily": "Inconsolata", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "2TPfA", + "name": "handle2Badge", + "fill": "#4a7c59", + "cornerRadius": 4, + "padding": [ + 2, + 6 + ], + "children": [ + { + "type": "text", + "id": "kQ38x", + "name": "handle2BadgeText", + "fill": "$text-primary", + "content": "OK", + "fontFamily": "Inconsolata", + "fontSize": 10, + "fontWeight": "600" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "AT2NG", + "name": "lightningCard", + "width": "fill_container", + "fill": "$bg-surface", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#7c3aed" + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "exYhP", + "name": "lightningHeader", + "width": "fill_container", + "fill": { + "type": "gradient", + "gradientType": "linear", + "enabled": true, + "rotation": 90, + "size": { + "height": 1 + }, + "colors": [ + { + "color": "#7c3aed33", + "position": 0 + }, + { + "color": "#7c3aed00", + "position": 1 + } + ] + }, + "gap": 12, + "padding": 16, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "ef9cP", + "name": "lightningIcon", + "width": 20, + "height": 20, + "iconFontName": "zap", + "iconFontFamily": "lucide", + "fill": "#7c3aed" + }, + { + "type": "text", + "id": "hzj3o", + "name": "lightningTitle", + "fill": "#a78bfa", + "content": "Lightning Watchtower", + "fontFamily": "Inconsolata", + "fontSize": 16, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "jBE27", + "name": "lightningContent", + "width": "fill_container", + "layout": "vertical", + "gap": 12, + "padding": [ + 0, + 16, + 16, + 16 + ], + "children": [ + { + "type": "text", + "id": "72pgm", + "name": "lightningDesc", + "fill": "$text-secondary", + "content": "Nutze unseren Watchtower zum Schutz deiner Lightning Channels.", + "lineHeight": 1.5, + "fontFamily": "Inconsolata", + "fontSize": 13, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "V3kUv", + "name": "lightningSubDesc", + "fill": "$text-disabled", + "content": "Ein Watchtower überwacht deine Lightning Channels und schützt sie, falls deine Node offline ist. Wenn du die Zahlung von Channel-Closing-Transaktionen verpasst, kümmert sich der Watchtower darum und verhindert den Verlust deiner Sats.", + "lineHeight": 1.5, + "fontFamily": "Inconsolata", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "fLGYi", + "name": "lightningUrlLabel", + "fill": "$text-disabled", + "content": "Um unseren Watchtower zu nutzen, füge folgende URI in deine Lightning Node Konfiguration hinzu:", + "fontFamily": "Inconsolata", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "n4OzU", + "name": "lightningUrlBox", + "width": "fill_container", + "fill": "$bg-elevated", + "cornerRadius": 6, + "padding": [ + 10, + 12 + ], + "children": [ + { + "type": "text", + "id": "YSVCp", + "name": "lightningUrl", + "fill": "$text-secondary", + "content": "03a0bf5b8a02c208cc5eda2f1f009564a97c15f743458a1568e2808a8ab3d7d0f0@42.171.139.240:9911", + "fontFamily": "Inconsolata", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "6nX8G", + "name": "lightningInstructions", + "width": "fill_container", + "fill": "$bg-elevated", + "cornerRadius": 8, + "layout": "vertical", + "gap": 8, + "padding": 12, + "children": [ + { + "type": "text", + "id": "DIuFO", + "name": "lightningInstrTitle", + "fill": "$text-disabled", + "content": "Einrichtung für gängige Lightning-Clients:", + "fontFamily": "Inconsolata", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "Yx5yK", + "name": "lightningInstr1", + "fill": "$text-tertiary", + "content": "• LND: https://docs.lightning.engineering/lightning-network-tools/lnd/watchtower", + "fontFamily": "Inconsolata", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "ixrMw", + "name": "lightningInstr2", + "fill": "$text-tertiary", + "content": "• Core Lightning: Nutze das watchtower-client Plugin mit -W URI", + "fontFamily": "Inconsolata", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "1ycV7", + "name": "lightningInstr3", + "fill": "$text-tertiary", + "content": "• Eclair: Füge die URI zu den Watchtower-Einstellungen in eclair.conf hinzu", + "fontFamily": "Inconsolata", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "text", + "id": "iLs3k", + "name": "lightningWarning", + "fill": "#f59e0b", + "content": "Wichtig: Der Watchtower überwacht deine Channel-Panik. Er hat keinen Zugriff auf deine privaten Schlüssel oder dein Guthaben.", + "lineHeight": 1.5, + "fontFamily": "Inconsolata", + "fontSize": 11, + "fontWeight": "normal" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "uR7yx", + "name": "rightColumn", + "width": "fill_container", + "layout": "vertical", + "gap": 24, + "children": [ + { + "type": "frame", + "id": "C2WiB", + "name": "profileCard", + "width": "fill_container", + "fill": "$bg-surface", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "$border-subtle" + }, + "gap": 16, + "padding": 20, + "children": [ + { + "type": "frame", + "id": "XifVY", + "name": "avatar", + "width": 56, + "height": 56, + "fill": "$bg-elevated", + "cornerRadius": 28, + "children": [ + { + "type": "frame", + "id": "QiJQQ", + "name": "avatarImg", + "width": 56, + "height": 56, + "fill": "#6b7280", + "cornerRadius": 28 + } + ] + }, + { + "type": "frame", + "id": "l71sY", + "name": "profileInfo", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "children": [ + { + "type": "text", + "id": "ydfVj", + "name": "profileName", + "fill": "$text-primary", + "content": "El Presidente Ben", + "fontFamily": "Inconsolata", + "fontSize": 16, + "fontWeight": "600" + }, + { + "type": "text", + "id": "JeXXW", + "name": "profileSubname", + "fill": "$text-disabled", + "content": "El Presidente Ben", + "fontFamily": "Inconsolata", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "7ICJE", + "name": "profileDetails", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "frame", + "id": "XgTr4", + "name": "profilePubkey", + "gap": 8, + "children": [ + { + "type": "text", + "id": "xI37j", + "name": "profilePubkeyLabel", + "fill": "$text-disabled", + "content": "Pubkey:", + "fontFamily": "Inconsolata", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "IxcIN", + "name": "profilePubkeyValue", + "fill": "$text-tertiary", + "content": "0adf6747Sccc5ca4b6fd3022e48ef3d520ebdaf628d0f05494acdbd7847f3e5033", + "fontFamily": "Inconsolata", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "ID31O", + "name": "profileNpub", + "gap": 8, + "children": [ + { + "type": "text", + "id": "RUjJh", + "name": "profileNpubLabel", + "fill": "$text-disabled", + "content": "Npub:", + "fontFamily": "Inconsolata", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "Dv6wA", + "name": "profileNpubValue", + "fill": "$text-tertiary", + "content": "npub1pt0ba3um3w2q4hasx3hqe94a2fhptars1jsz32vyphtcqla72gnqqPyc6", + "fontFamily": "Inconsolata", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "lMhLM", + "name": "profileNip", + "gap": 8, + "children": [ + { + "type": "text", + "id": "VLfTf", + "name": "profileNipLabel", + "fill": "$text-disabled", + "content": "NIP-05:", + "fontFamily": "Inconsolata", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "RhphK", + "name": "profileNipValue", + "fill": "$text-tertiary", + "content": "el-presidente-benito", + "fontFamily": "Inconsolata", + "fontSize": 11, + "fontWeight": "normal" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "JEx3m", + "name": "emailInfoBox", + "width": "fill_container", + "fill": { + "type": "gradient", + "gradientType": "linear", + "enabled": true, + "rotation": 90, + "size": { + "height": 1 + }, + "colors": [ + { + "color": "#f59e0b33", + "position": 0 + }, + { + "color": "#f59e0b00", + "position": 1 + } + ] + }, + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#f59e0b" + }, + "layout": "vertical", + "gap": 8, + "padding": 16, + "children": [ + { + "type": "text", + "id": "jtlcn", + "name": "emailInfoTitle", + "fill": "#f59e0b", + "content": "Falls du möchtest, kannst du hier eine E-Mail Adresse hinterlegen, damit der Verein dich darüber informieren kann, wenn es Neuigkeiten gibt.", + "lineHeight": 1.5, + "fontFamily": "Inconsolata", + "fontSize": 13, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "mov61", + "name": "emailInfoDesc", + "fill": "$text-disabled", + "content": "Am besten eine anonymisierte E-Mail-Adresse verwenden. Wir sichern diese Adresse AES-256 verschlüsselt in der Datenbank ab.", + "lineHeight": 1.5, + "fontFamily": "Inconsolata", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "GfQzC", + "name": "emailCheckbox", + "width": "fill_container", + "gap": 12, + "children": [ + { + "type": "frame", + "id": "SAxXO", + "name": "checkboxBox", + "width": 18, + "height": 18, + "fill": "#4a7c59", + "cornerRadius": 4, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "xiVka", + "name": "checkboxIcon", + "width": 12, + "height": 12, + "iconFontName": "check", + "iconFontFamily": "lucide", + "fill": "$text-primary" + } + ] + }, + { + "type": "frame", + "id": "PwbfA", + "name": "checkboxContent", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "OWLga", + "name": "checkboxLabel", + "fill": "$text-primary", + "content": "Keine E-Mail Adresse angeben", + "fontFamily": "Inconsolata", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "text", + "id": "0SosD", + "name": "checkboxDesc", + "fill": "$text-disabled", + "content": "Ich informiere mich selbst in der News Sektion und gebe keine E-Mail Adresse raus.", + "lineHeight": 1.5, + "fontFamily": "Inconsolata", + "fontSize": 12, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "Wz28i", + "name": "statusBadge", + "width": "fill_container", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "ellipse", + "id": "qHuuk", + "name": "statusDot", + "fill": "#4a7c59", + "width": 10, + "height": 10 + }, + { + "type": "text", + "id": "iAEn9", + "name": "statusText", + "fill": "#4a7c59", + "content": "Du bist derzeit ein Mitglied des Vereins. Das aktuelle Jahr ist bezahlt.", + "fontFamily": "Inconsolata", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "zoEGT", + "name": "beitragSection", + "width": "fill_container", + "fill": "$bg-surface", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "$border-subtle" + }, + "layout": "vertical", + "gap": 16, + "padding": 20, + "children": [ + { + "type": "text", + "id": "vytPV", + "name": "beitragTitle", + "fill": "$text-primary", + "content": "Mitgliedsbeitrag", + "fontFamily": "Inconsolata", + "fontSize": 16, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "wWX2m", + "name": "beitragEventBox", + "width": "fill_container", + "fill": "$bg-elevated", + "cornerRadius": 8, + "layout": "vertical", + "gap": 8, + "padding": 12, + "children": [ + { + "type": "text", + "id": "8cFlV", + "name": "beitragEventLabel", + "fill": "$text-disabled", + "content": "Nostr Event für die Zahlung des Mitgliedsbeitrags:", + "fontFamily": "Inconsolata", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "ukDjy", + "name": "beitragEventId", + "fill": "$text-tertiary", + "content": "ed16b0cbe7006cb0b2f53045c507f55c04350409c03004350db0ef362db32c2a4", + "fontFamily": "Inconsolata", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "text", + "id": "VMBrw", + "name": "beitragDesc", + "fill": "$text-secondary", + "content": "Dieses Event dient der Zahlung des Mitgliedsbeitrags für das Jahr 2026. Bitte bezahle den Betrag von 21.000 Satoshis.", + "lineHeight": 1.5, + "fontFamily": "Inconsolata", + "fontSize": 13, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "SuY1b", + "name": "beitragPaidBtn", + "fill": "#4a7c59", + "cornerRadius": 8, + "gap": 8, + "padding": [ + 10, + 20 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "VoJGE", + "name": "beitragPaidIcon", + "width": 16, + "height": 16, + "iconFontName": "circle-check", + "iconFontFamily": "lucide", + "fill": "$text-primary" + }, + { + "type": "text", + "id": "HQTjM", + "name": "beitragPaidText", + "fill": "$text-primary", + "content": "Aktuelles Jahr bezahlt", + "fontFamily": "Inconsolata", + "fontSize": 13, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "XCoi9", + "name": "paymentSection", + "width": "fill_container", + "fill": "$bg-surface", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "$border-subtle" + }, + "layout": "vertical", + "gap": 16, + "padding": 20, + "children": [ + { + "type": "text", + "id": "J8hRq", + "name": "paymentTitle", + "fill": "$text-primary", + "content": "Bisherige Zahlungen", + "fontFamily": "Inconsolata", + "fontSize": 16, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "9eZ6F", + "name": "paymentTable", + "width": "fill_container", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "$border-subtle" + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "bVMqf", + "name": "tableHeader", + "width": "fill_container", + "fill": "$bg-elevated", + "stroke": { + "align": "inside", + "thickness": { + "bottom": 1 + }, + "fill": "$border-subtle" + }, + "children": [ + { + "type": "frame", + "id": "RTUnd", + "name": "thSatoshis", + "width": 100, + "padding": [ + 12, + 16 + ], + "children": [ + { + "type": "text", + "id": "oMZbg", + "name": "thSatoshisText", + "fill": "$text-disabled", + "content": "SATOSHIS", + "fontFamily": "Inconsolata", + "fontSize": 11, + "fontWeight": "600", + "letterSpacing": 0.5 + } + ] + }, + { + "type": "frame", + "id": "S8I9b", + "name": "thJahr", + "width": 80, + "padding": [ + 12, + 16 + ], + "children": [ + { + "type": "text", + "id": "Zq2c1", + "name": "thJahrText", + "fill": "$text-disabled", + "content": "JAHR", + "fontFamily": "Inconsolata", + "fontSize": 11, + "fontWeight": "600", + "letterSpacing": 0.5 + } + ] + }, + { + "type": "frame", + "id": "eB6qv", + "name": "thEventId", + "width": "fill_container", + "padding": [ + 12, + 16 + ], + "children": [ + { + "type": "text", + "id": "KGQDE", + "name": "thEventIdText", + "fill": "$text-disabled", + "content": "EVENT-ID", + "fontFamily": "Inconsolata", + "fontSize": 11, + "fontWeight": "600", + "letterSpacing": 0.5 + } + ] + }, + { + "type": "frame", + "id": "gn6Uz", + "name": "thQuittung", + "width": 100, + "padding": [ + 12, + 16 + ], + "justifyContent": "end", + "children": [ + { + "type": "text", + "id": "JpLXh", + "name": "thQuittungText", + "fill": "$text-disabled", + "content": "QUITTUNG", + "fontFamily": "Inconsolata", + "fontSize": 11, + "fontWeight": "600", + "letterSpacing": 0.5 + } + ] + } + ] + }, + { + "type": "frame", + "id": "yDvMs", + "name": "row1", + "width": "fill_container", + "stroke": { + "align": "inside", + "thickness": { + "bottom": 1 + }, + "fill": "$border-subtle" + }, + "children": [ + { + "type": "frame", + "id": "tBxhc", + "name": "row1Sat", + "width": 100, + "padding": [ + 12, + 16 + ], + "children": [ + { + "type": "text", + "id": "fehm7", + "name": "row1SatText", + "fill": "$text-secondary", + "content": "21000", + "fontFamily": "Inconsolata", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "yVgRH", + "name": "row1Jahr", + "width": 80, + "padding": [ + 12, + 16 + ], + "children": [ + { + "type": "text", + "id": "skJ2X", + "name": "row1JahrText", + "fill": "$text-secondary", + "content": "2024", + "fontFamily": "Inconsolata", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "qRWXu", + "name": "row1Event", + "width": "fill_container", + "padding": [ + 12, + 16 + ], + "children": [ + { + "type": "text", + "id": "2LHc0", + "name": "row1EventText", + "fill": "$text-tertiary", + "content": "cf14edf475e53e0822bf2357779e7bf75030732d39021c08547c050315002ac", + "fontFamily": "Inconsolata", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "xHwQd", + "name": "row1Quittung", + "width": 100, + "height": "fit_content(0)", + "padding": [ + 12, + 16 + ], + "justifyContent": "end" + } + ] + }, + { + "type": "frame", + "id": "vo32k", + "name": "row2", + "width": "fill_container", + "stroke": { + "align": "inside", + "thickness": { + "bottom": 1 + }, + "fill": "$border-subtle" + }, + "children": [ + { + "type": "frame", + "id": "AC49r", + "name": "row2Sat", + "width": 100, + "padding": [ + 12, + 16 + ], + "children": [ + { + "type": "text", + "id": "Wjhbq", + "name": "row2SatText", + "fill": "$text-secondary", + "content": "21000", + "fontFamily": "Inconsolata", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "8hTyi", + "name": "row2Jahr", + "width": 80, + "padding": [ + 12, + 16 + ], + "children": [ + { + "type": "text", + "id": "qqgH7", + "name": "row2JahrText", + "fill": "$text-secondary", + "content": "2025", + "fontFamily": "Inconsolata", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "Le1i4", + "name": "row2Event", + "width": "fill_container", + "padding": [ + 12, + 16 + ], + "children": [ + { + "type": "text", + "id": "iW6QK", + "name": "row2EventText", + "fill": "$text-tertiary", + "content": "3e51a0d3508aac727fcf1ncc2033af5b8b5719524bca4eacadba15bccc20090", + "fontFamily": "Inconsolata", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "j80lo", + "name": "row2Quittung", + "width": 100, + "padding": [ + 12, + 16 + ], + "justifyContent": "end", + "children": [ + { + "type": "text", + "id": "kEZ7M", + "name": "row2QuittungLink", + "fill": "$text-tertiary", + "content": "Quittung", + "fontFamily": "Inconsolata", + "fontSize": 12, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "hfrun", + "name": "row3", + "width": "fill_container", + "children": [ + { + "type": "frame", + "id": "3ZTOE", + "name": "row3Sat", + "width": 100, + "padding": [ + 12, + 16 + ], + "children": [ + { + "type": "text", + "id": "X6EML", + "name": "row3SatText", + "fill": "$text-secondary", + "content": "21000", + "fontFamily": "Inconsolata", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "2n6CJ", + "name": "row3Jahr", + "width": 80, + "padding": [ + 12, + 16 + ], + "children": [ + { + "type": "text", + "id": "oyxlZ", + "name": "row3JahrText", + "fill": "$text-secondary", + "content": "2026", + "fontFamily": "Inconsolata", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "eRRTo", + "name": "row3Event", + "width": "fill_container", + "padding": [ + 12, + 16 + ], + "children": [ + { + "type": "text", + "id": "6XpLh", + "name": "row3EventText", + "fill": "$text-tertiary", + "content": "ed16b0cbe7006cb0b2f53045c507f55c04350409c03004350db0ef362db32c2a4", + "fontFamily": "Inconsolata", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "K4FZe", + "name": "row3Quittung", + "width": 100, + "padding": [ + 12, + 16 + ], + "justifyContent": "end", + "children": [ + { + "type": "text", + "id": "KbLQ6", + "name": "row3QuittungLink", + "fill": "$text-tertiary", + "content": "Quittung", + "fontFamily": "Inconsolata", + "fontSize": 12, + "fontWeight": "normal" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ], + "variables": { + "bg-elevated": { + "type": "color", + "value": "#1A1A1D" + }, + "bg-page": { + "type": "color", + "value": "#0A0A0B" + }, + "bg-surface": { + "type": "color", + "value": "#111113" + }, + "border-default": { + "type": "color", + "value": "#2A2A2E" + }, + "border-subtle": { + "type": "color", + "value": "#1F1F23" + }, + "green-success": { + "type": "color", + "value": "#22C55E" + }, + "orange-light": { + "type": "color", + "value": "#FF8A4C" + }, + "orange-primary": { + "type": "color", + "value": "#FF5C00" + }, + "text-disabled": { + "type": "color", + "value": "#6B6B70" + }, + "text-muted": { + "type": "color", + "value": "#FFFFFFCC" + }, + "text-primary": { + "type": "color", + "value": "#FFFFFF" + }, + "text-secondary": { + "type": "color", + "value": "#ADADB0" + }, + "text-tertiary": { + "type": "color", + "value": "#8B8B90" + } + } +} \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 65422e0..a95bda2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -65,16 +65,6 @@ services: - ping retries: 3 timeout: 5s - relay: - ports: - - "7000:7000" - volumes: - - ./relay:/usr/src/app/db - - ./relay/config.toml:/usr/src/app/config.toml - image: scsibug/nostr-rs-relay:latest - user: "${DOCKER_UID:-1000}:${DOCKER_GID:-1000}" - networks: - - sail networks: sail: driver: bridge diff --git a/resources/css/app.css b/resources/css/app.css index bd61750..3dd1c30 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -20,36 +20,79 @@ @custom-variant dark (&:where(.dark, .dark *)); /* ---------------------------------------- - Theme tokens + Theme tokens (Einundzwanzig Design System) ----------------------------------------- */ @theme { --font-sans: "Inconsolata", monospace; - --color-zinc-50: var(--color-neutral-50); - --color-zinc-100: var(--color-neutral-100); - --color-zinc-200: var(--color-neutral-200); - --color-zinc-300: var(--color-neutral-300); - --color-zinc-400: var(--color-neutral-400); - --color-zinc-500: var(--color-neutral-500); - --color-zinc-600: var(--color-neutral-600); - --color-zinc-700: var(--color-neutral-700); - --color-zinc-800: var(--color-neutral-800); - --color-zinc-900: var(--color-neutral-900); - --color-zinc-950: var(--color-neutral-950); + /* Background colors */ + --color-bg-page: #0A0A0B; + --color-bg-surface: #111113; + --color-bg-elevated: #1A1A1D; - --color-accent: var(--color-neutral-800); - --color-accent-content: var(--color-neutral-800); - --color-accent-foreground: var(--color-white); + /* Border colors */ + --color-border-default: #2A2A2E; + --color-border-subtle: #1F1F23; + + /* Text colors */ + --color-text-primary: #FFFFFF; + --color-text-secondary: #ADADB0; + --color-text-tertiary: #8B8B90; + --color-text-muted: #FFFFFFCC; + --color-text-disabled: #6B6B70; + + /* Brand colors */ + --color-orange-primary: #FF5C00; + --color-orange-light: #FF8A4C; + --color-green-success: #22C55E; + --color-purple-accent: #7c3aed; + --color-green-nostr: #4a7c59; + + /* Zinc aliases for compatibility */ + --color-zinc-50: #fafafa; + --color-zinc-100: #f4f4f5; + --color-zinc-200: #e4e4e7; + --color-zinc-300: #d4d4d8; + --color-zinc-400: #a1a1aa; + --color-zinc-500: #71717a; + --color-zinc-600: #52525b; + --color-zinc-700: #3f3f46; + --color-zinc-800: #27272a; + --color-zinc-900: #18181b; + --color-zinc-950: #09090b; + + /* Accent colors (orange brand) */ + --color-accent: var(--color-orange-primary); + --color-accent-content: var(--color-orange-primary); + --color-accent-foreground: var(--color-text-primary); } /* ---------------------------------------- - Dark mode overrides + Dark mode overrides (Dark is default for Einundzwanzig) ----------------------------------------- */ @layer theme { - .dark { - --color-accent: var(--color-white); - --color-accent-content: var(--color-white); - --color-accent-foreground: var(--color-neutral-800); + .dark, + :root { + --color-accent: var(--color-orange-primary); + --color-accent-content: var(--color-orange-primary); + --color-accent-foreground: var(--color-text-primary); + + /* Flux UI color overrides */ + --white: var(--color-text-primary); + --black: var(--color-bg-page); + + /* Zinc scale for dark mode */ + --zinc-50: var(--color-bg-elevated); + --zinc-100: var(--color-bg-surface); + --zinc-200: var(--color-border-default); + --zinc-300: var(--color-border-subtle); + --zinc-400: var(--color-text-disabled); + --zinc-500: var(--color-text-tertiary); + --zinc-600: var(--color-text-secondary); + --zinc-700: var(--color-text-secondary); + --zinc-800: var(--color-text-primary); + --zinc-900: var(--color-text-primary); + --zinc-950: var(--color-text-primary); } } @@ -68,6 +111,17 @@ button { @apply cursor-pointer; } + + /* Ensure body has grid layout for Flux components */ + body:has(>[data-flux-main]) { + display: grid; + grid-template-rows: auto 1fr auto; + grid-template-columns: min-content minmax(0, 1fr) min-content; + grid-template-areas: + "header header header" + "sidebar main aside" + "sidebar footer aside"; + } } /* ---------------------------------------- @@ -115,3 +169,188 @@ select:focus[data-flux-control] { .leaflet-container a { color: unset !important; } + +/* ---------------------------------------- + Einundzwanzig Design System - Flux Overrides +----------------------------------------- */ +@layer components { + /* Page backgrounds */ + body { + @apply bg-bg-page text-text-primary; + } + + /* Cards and surfaces */ + [data-flux-card] { + @apply bg-bg-surface border-border-subtle; + } + + /* Primary buttons (orange) */ + [data-flux-button][data-variant="primary"] { + @apply bg-orange-primary text-text-primary hover:bg-orange-light; + } + + /* Default/ghost buttons */ + [data-flux-button]:not([data-variant]) { + @apply border-border-default text-text-secondary hover:text-text-primary hover:border-border-default; + } + + /* Input fields */ + [data-flux-input], + [data-flux-control] { + @apply bg-bg-surface border-border-default text-text-primary placeholder:text-text-disabled; + } + + [data-flux-input]:focus, + [data-flux-control]:focus { + @apply border-orange-primary ring-orange-primary/20; + } + + /* Navigation */ + [data-flux-navbar] { + @apply bg-bg-surface border-b border-border-default; + } + + [data-flux-navbar-item][data-current="true"] { + @apply border-b-2 border-orange-primary text-text-primary; + } + + /* Modals */ + [data-flux-modal] { + @apply bg-bg-surface border-border-subtle; + } + + /* Dropdowns/Menus */ + [data-flux-menu] { + @apply bg-bg-elevated border-border-default; + } + + [data-flux-menu-item]:hover { + @apply bg-bg-surface; + } + + /* Tables */ + [data-flux-table] { + @apply bg-bg-surface; + } + + [data-flux-table] th { + @apply bg-bg-elevated text-text-secondary border-border-default; + } + + [data-flux-table] td { + @apply border-border-subtle text-text-primary; + } + + /* Badges */ + [data-flux-badge] { + @apply bg-bg-elevated text-text-secondary border-border-default; + } + + [data-flux-badge][data-color="green"] { + @apply bg-green-success/20 text-green-success border-green-success/30; + } + + [data-flux-badge][data-color="orange"] { + @apply bg-orange-primary/20 text-orange-primary border-orange-primary/30; + } + + /* Tabs */ + [data-flux-tab][data-selected="true"] { + @apply border-orange-primary text-text-primary; + } + + /* Switch */ + [data-flux-switch][data-checked="true"] { + @apply bg-orange-primary; + } + + /* Checkbox */ + [data-flux-checkbox]:checked { + @apply bg-orange-primary border-orange-primary; + } + + /* Radio */ + [data-flux-radio]:checked { + @apply border-orange-primary; + } + + [data-flux-radio]:checked::before { + @apply bg-orange-primary; + } + + /* Separators */ + [data-flux-separator] { + @apply bg-border-default; + } + + /* Callouts - Info boxes */ + .callout-warning { + @apply bg-gradient-to-b from-amber-500/20 to-transparent border border-amber-500; + } + + .callout-success { + @apply bg-gradient-to-b from-green-nostr/20 to-transparent border border-green-nostr; + } + + .callout-purple { + @apply bg-gradient-to-b from-purple-accent/20 to-transparent border border-purple-accent; + } +} + +/* ---------------------------------------- + Einundzwanzig Custom Components +----------------------------------------- */ +@layer components { + /* Feature cards with accent borders */ + .feature-card { + @apply bg-bg-surface rounded-xl p-5 border border-border-subtle; + } + + .feature-card-nostr { + @apply bg-bg-surface rounded-xl p-5 border border-green-nostr; + } + + .feature-card-lightning { + @apply bg-bg-surface rounded-xl p-5 border border-purple-accent; + } + + /* Info boxes with gradients */ + .info-box { + @apply rounded-xl p-4 border; + } + + .info-box-warning { + @apply rounded-xl p-4 border border-amber-500 bg-gradient-to-b from-amber-500/20 to-transparent; + } + + .info-box-success { + @apply rounded-xl p-4 border border-green-nostr bg-gradient-to-b from-green-nostr/20 to-transparent; + } + + /* Header navigation */ + .nav-item { + @apply px-4 py-3 text-text-secondary hover:text-text-primary transition-colors; + } + + .nav-item-active { + @apply px-4 py-3 text-text-primary hover:text-text-primary transition-colors border-b-2 border-orange-primary; + } + + /* Status badges */ + .status-badge { + @apply inline-flex items-center gap-2 px-3 py-1.5 rounded-lg text-sm; + } + + .status-badge-active { + @apply inline-flex items-center gap-2 px-3 py-1.5 rounded-lg text-sm bg-green-success/20 text-green-success; + } + + .status-badge-pending { + @apply inline-flex items-center gap-2 px-3 py-1.5 rounded-lg text-sm bg-amber-500/20 text-amber-500; + } + + /* Brand icon container */ + .brand-icon { + @apply w-8 h-8 rounded-lg bg-orange-primary flex items-center justify-center; + } +} diff --git a/resources/views/flux/accent.blade.php b/resources/views/flux/accent.blade.php new file mode 100644 index 0000000..369b68c --- /dev/null +++ b/resources/views/flux/accent.blade.php @@ -0,0 +1,38 @@ +@blaze + +@props([ + 'color' => null, +]) + +@php + $classes = Flux::classes() + ->add(match ($color) { + 'slate' => '[--color-accent:var(--color-slate-800)] [--color-accent-content:var(--color-slate-800)] [--color-accent-foreground:var(--color-white)] dark:[--color-accent:var(--color-white)] dark:[--color-accent-content:var(--color-white)] dark:[--color-accent-foreground:var(--color-slate-800)]', + 'gray' => '[--color-accent:var(--color-gray-800)] [--color-accent-content:var(--color-gray-800)] [--color-accent-foreground:var(--color-white)] dark:[--color-accent:var(--color-white)] dark:[--color-accent-content:var(--color-white)] dark:[--color-accent-foreground:var(--color-gray-800)]', + 'zinc' => '[--color-accent:var(--color-zinc-800)] [--color-accent-content:var(--color-zinc-800)] [--color-accent-foreground:var(--color-white)] dark:[--color-accent:var(--color-white)] dark:[--color-accent-content:var(--color-white)] dark:[--color-accent-foreground:var(--color-zinc-800)]', + 'neutral' => '[--color-accent:var(--color-neutral-800)] [--color-accent-content:var(--color-neutral-800)] [--color-accent-foreground:var(--color-white)] dark:[--color-accent:var(--color-white)] dark:[--color-accent-content:var(--color-white)] dark:[--color-accent-foreground:var(--color-neutral-800)]', + 'stone' => '[--color-accent:var(--color-stone-800)] [--color-accent-content:var(--color-stone-800)] [--color-accent-foreground:var(--color-white)] dark:[--color-accent:var(--color-white)] dark:[--color-accent-content:var(--color-white)] dark:[--color-accent-foreground:var(--color-stone-800)]', + 'red' => '[--color-accent:var(--color-red-500)] [--color-accent-content:var(--color-red-600)] [--color-accent-foreground:var(--color-white)] dark:[--color-accent:var(--color-red-500)] dark:[--color-accent-content:var(--color-red-400)] dark:[--color-accent-foreground:var(--color-white)]', + 'orange' => '[--color-accent:var(--color-orange-500)] [--color-accent-content:var(--color-orange-600)] [--color-accent-foreground:var(--color-white)] dark:[--color-accent:var(--color-orange-400)] dark:[--color-accent-content:var(--color-orange-400)] dark:[--color-accent-foreground:var(--color-orange-950)]', + 'amber' => '[--color-accent:var(--color-amber-400)] [--color-accent-content:var(--color-amber-600)] [--color-accent-foreground:var(--color-amber-950)] dark:[--color-accent:var(--color-amber-400)] dark:[--color-accent-content:var(--color-amber-400)] dark:[--color-accent-foreground:var(--color-amber-950)]', + 'yellow' => '[--color-accent:var(--color-yellow-400)] [--color-accent-content:var(--color-yellow-600)] [--color-accent-foreground:var(--color-yellow-950)] dark:[--color-accent:var(--color-yellow-400)] dark:[--color-accent-content:var(--color-yellow-400)] dark:[--color-accent-foreground:var(--color-yellow-950)]', + 'lime' => '[--color-accent:var(--color-lime-400)] [--color-accent-content:var(--color-lime-600)] [--color-accent-foreground:var(--color-lime-900)] dark:[--color-accent:var(--color-lime-400)] dark:[--color-accent-content:var(--color-lime-400)] dark:[--color-accent-foreground:var(--color-lime-950)]', + 'green' => '[--color-accent:var(--color-green-600)] [--color-accent-content:var(--color-green-600)] [--color-accent-foreground:var(--color-white)] dark:[--color-accent:var(--color-green-600)] dark:[--color-accent-content:var(--color-green-400)] dark:[--color-accent-foreground:var(--color-white)]', + 'emerald' => '[--color-accent:var(--color-emerald-600)] [--color-accent-content:var(--color-emerald-600)] [--color-accent-foreground:var(--color-white)] dark:[--color-accent:var(--color-emerald-600)] dark:[--color-accent-content:var(--color-emerald-400)] dark:[--color-accent-foreground:var(--color-white)]', + 'teal' => '[--color-accent:var(--color-teal-600)] [--color-accent-content:var(--color-teal-600)] [--color-accent-foreground:var(--color-white)] dark:[--color-accent:var(--color-teal-600)] dark:[--color-accent-content:var(--color-teal-400)] dark:[--color-accent-foreground:var(--color-white)]', + 'cyan' => '[--color-accent:var(--color-cyan-600)] [--color-accent-content:var(--color-cyan-600)] [--color-accent-foreground:var(--color-white)] dark:[--color-accent:var(--color-cyan-600)] dark:[--color-accent-content:var(--color-cyan-400)] dark:[--color-accent-foreground:var(--color-white)]', + 'sky' => '[--color-accent:var(--color-sky-600)] [--color-accent-content:var(--color-sky-600)] [--color-accent-foreground:var(--color-white)] dark:[--color-accent:var(--color-sky-600)] dark:[--color-accent-content:var(--color-sky-400)] dark:[--color-accent-foreground:var(--color-white)]', + 'blue' => '[--color-accent:var(--color-blue-500)] [--color-accent-content:var(--color-blue-600)] [--color-accent-foreground:var(--color-white)] dark:[--color-accent:var(--color-blue-500)] dark:[--color-accent-content:var(--color-blue-400)] dark:[--color-accent-foreground:var(--color-white)]', + 'indigo' => '[--color-accent:var(--color-indigo-500)] [--color-accent-content:var(--color-indigo-600)] [--color-accent-foreground:var(--color-white)] dark:[--color-accent:var(--color-indigo-500)] dark:[--color-accent-content:var(--color-indigo-300)] dark:[--color-accent-foreground:var(--color-white)]', + 'violet' => '[--color-accent:var(--color-violet-500)] [--color-accent-content:var(--color-violet-600)] [--color-accent-foreground:var(--color-white)] dark:[--color-accent:var(--color-violet-500)] dark:[--color-accent-content:var(--color-violet-400)] dark:[--color-accent-foreground:var(--color-white)]', + 'purple' => '[--color-accent:var(--color-purple-500)] [--color-accent-content:var(--color-purple-600)] [--color-accent-foreground:var(--color-white)] dark:[--color-accent:var(--color-purple-500)] dark:[--color-accent-content:var(--color-purple-300)] dark:[--color-accent-foreground:var(--color-white)]', + 'fuchsia' => '[--color-accent:var(--color-fuchsia-600)] [--color-accent-content:var(--color-fuchsia-600)] [--color-accent-foreground:var(--color-white)] dark:[--color-accent:var(--color-fuchsia-600)] dark:[--color-accent-content:var(--color-fuchsia-400)] dark:[--color-accent-foreground:var(--color-white)]', + 'pink' => '[--color-accent:var(--color-pink-600)] [--color-accent-content:var(--color-pink-600)] [--color-accent-foreground:var(--color-white)] dark:[--color-accent:var(--color-pink-600)] dark:[--color-accent-content:var(--color-pink-400)] dark:[--color-accent-foreground:var(--color-white)]', + 'rose' => '[--color-accent:var(--color-rose-500)] [--color-accent-content:var(--color-rose-500)] [--color-accent-foreground:var(--color-white)] dark:[--color-accent:var(--color-rose-500)] dark:[--color-accent-content:var(--color-rose-400)] dark:[--color-accent-foreground:var(--color-white)]', + }) + ; +@endphp + +
class($classes) }}> + {{ $slot }} +
\ No newline at end of file diff --git a/resources/views/flux/accordion/content.blade.php b/resources/views/flux/accordion/content.blade.php new file mode 100644 index 0000000..54e633b --- /dev/null +++ b/resources/views/flux/accordion/content.blade.php @@ -0,0 +1,23 @@ +@aware([ 'transition', 'expanded' ]) + +@props([ + 'transition' => false, + 'expanded' => false, +]) + +@php +$classes = Flux::classes() + ->add('pt-2 text-sm text-zinc-500 dark:text-zinc-300') + ; +@endphp + +
+
class($classes) }}> + {{ $slot }} +
+
diff --git a/resources/views/flux/accordion/heading.blade.php b/resources/views/flux/accordion/heading.blade.php new file mode 100644 index 0000000..25401ce --- /dev/null +++ b/resources/views/flux/accordion/heading.blade.php @@ -0,0 +1,33 @@ +@aware([ 'disabled', 'variant' ]) + +@props([ + 'disabled' => null, + 'variant' => null, +]) + +@php +$classes = Flux::classes() + ->add('group/accordion-heading flex items-center w-full') + ->add('text-start text-sm font-medium') + ->add(match ($variant) { + default => 'justify-between [&>svg]:ms-6', + 'reverse' => 'flex-row-reverse justify-end [&>svg]:me-2', + }) + ->add($disabled + ? 'text-zinc-400 dark:text-zinc-400 cursor-default' + : 'text-zinc-800 dark:text-white cursor-pointer' + ) + ; +@endphp + + diff --git a/resources/views/flux/accordion/icon.blade.php b/resources/views/flux/accordion/icon.blade.php new file mode 100644 index 0000000..0856031 --- /dev/null +++ b/resources/views/flux/accordion/icon.blade.php @@ -0,0 +1,17 @@ +@aware([ 'disabled' ]) + +@props([ + 'pointing' => 'down', + 'disabled' => null, +]) + +@php +$classes = Flux::classes() + ->add('text-zinc-300 dark:text-zinc-400') + ->add($disabled ? '' + : 'group-hover/accordion-heading:text-zinc-800 dark:group-hover/accordion-heading:text-white' + ) + ; +@endphp + +