From 674317901f232954ebad2e057cdb887c65a75d7e Mon Sep 17 00:00:00 2001 From: Jason Varga Date: Wed, 26 Mar 2025 11:40:00 -0400 Subject: [PATCH 001/186] Initial dump --- package-lock.json | 217 ++++++++- package.json | 5 + resources/css/tailwind-animate.css | 275 +++++++++++ resources/css/ui.css | 53 +++ resources/js/bootstrap/statamic.js | 4 +- resources/js/bootstrap/ui.js | 29 ++ resources/js/components/ui/Badge.vue | 71 +++ resources/js/components/ui/Button/Group.vue | 16 + resources/js/components/ui/Button/Index.vue | 87 ++++ resources/js/components/ui/Calendar/Index.vue | 111 +++++ resources/js/components/ui/Card/Index.vue | 26 + resources/js/components/ui/Card/Panel.vue | 16 + .../js/components/ui/CharacterCounter.vue | 89 ++++ resources/js/components/ui/Checkbox/Group.vue | 30 ++ resources/js/components/ui/Checkbox/Item.vue | 36 ++ .../js/components/ui/DataTable/Index.vue | 159 +++++++ .../js/components/ui/Datepicker/Index.vue | 93 ++++ resources/js/components/ui/Description.vue | 19 + .../js/components/ui/Dropdown/Footer.vue | 25 + .../js/components/ui/Dropdown/Header.vue | 25 + resources/js/components/ui/Dropdown/Index.vue | 45 ++ resources/js/components/ui/Dropdown/Item.vue | 32 ++ resources/js/components/ui/Dropdown/Label.vue | 19 + resources/js/components/ui/Dropdown/Menu.vue | 5 + .../js/components/ui/Dropdown/Separator.vue | 7 + resources/js/components/ui/Field.vue | 41 ++ resources/js/components/ui/Header.vue | 18 + resources/js/components/ui/Heading.vue | 33 ++ resources/js/components/ui/Icon.vue | 37 ++ resources/js/components/ui/Input/Group.vue | 32 ++ .../js/components/ui/Input/GroupAppend.vue | 13 + .../js/components/ui/Input/GroupPrepend.vue | 13 + resources/js/components/ui/Input/Index.vue | 134 ++++++ resources/js/components/ui/Label.vue | 23 + resources/js/components/ui/Modal/Close.vue | 19 + resources/js/components/ui/Modal/Index.vue | 49 ++ resources/js/components/ui/Modal/Title.vue | 14 + resources/js/components/ui/Panel/Header.vue | 12 + resources/js/components/ui/Panel/Index.vue | 10 + resources/js/components/ui/Popover.vue | 54 +++ resources/js/components/ui/Radio/Group.vue | 30 ++ resources/js/components/ui/Radio/Item.vue | 32 ++ resources/js/components/ui/Select/Index.vue | 97 ++++ resources/js/components/ui/Separator.vue | 48 ++ resources/js/components/ui/Slider.vue | 35 ++ resources/js/components/ui/Splitter/Group.vue | 13 + resources/js/components/ui/Splitter/Panel.vue | 15 + .../components/ui/Splitter/ResizeHandle.vue | 7 + resources/js/components/ui/Subheading.vue | 25 + resources/js/components/ui/Switch.vue | 41 ++ resources/js/components/ui/Table/Cell.vue | 5 + resources/js/components/ui/Table/Column.vue | 5 + resources/js/components/ui/Table/Columns.vue | 7 + resources/js/components/ui/Table/Index.vue | 7 + resources/js/components/ui/Table/Row.vue | 5 + resources/js/components/ui/Table/Rows.vue | 5 + resources/js/components/ui/Tabs/Content.vue | 13 + resources/js/components/ui/Tabs/Index.vue | 13 + resources/js/components/ui/Tabs/Indicator.vue | 11 + resources/js/components/ui/Tabs/List.vue | 20 + resources/js/components/ui/Tabs/Trigger.vue | 19 + resources/js/components/ui/Textarea.vue | 57 +++ resources/js/components/ui/ThemeSwitcher.vue | 90 ++++ resources/js/components/ui/Tooltip.vue | 41 ++ resources/js/components/ui/WithField.vue | 35 ++ resources/js/components/ui/svg/addons.svg | 1 + .../js/components/ui/svg/align-center.svg | 1 + resources/js/components/ui/svg/align-left.svg | 1 + .../js/components/ui/svg/align-right.svg | 1 + resources/js/components/ui/svg/arrow-down.svg | 1 + .../js/components/ui/svg/arrow-right.svg | 1 + .../js/components/ui/svg/arrow-up-right.svg | 1 + resources/js/components/ui/svg/assets.svg | 1 + resources/js/components/ui/svg/avatar.svg | 1 + resources/js/components/ui/svg/bell.svg | 1 + resources/js/components/ui/svg/blueprints.svg | 1 + resources/js/components/ui/svg/calendar.svg | 1 + .../js/components/ui/svg/chevron-down.svg | 1 + .../js/components/ui/svg/chevron-left.svg | 1 + .../js/components/ui/svg/chevron-right.svg | 1 + .../js/components/ui/svg/chevron-vertical.svg | 1 + .../js/components/ui/svg/clipboard-check.svg | 1 + resources/js/components/ui/svg/clipboard.svg | 1 + resources/js/components/ui/svg/cog-solid.svg | 1 + resources/js/components/ui/svg/cog.svg | 1 + .../js/components/ui/svg/collections.svg | 1 + resources/js/components/ui/svg/columns.svg | 1 + resources/js/components/ui/svg/dashboard.svg | 1 + resources/js/components/ui/svg/dots.svg | 1 + resources/js/components/ui/svg/download.svg | 1 + .../js/components/ui/svg/external-link.svg | 1 + resources/js/components/ui/svg/eye-closed.svg | 1 + resources/js/components/ui/svg/eye.svg | 1 + resources/js/components/ui/svg/fields.svg | 1 + resources/js/components/ui/svg/forms.svg | 1 + resources/js/components/ui/svg/globals.svg | 1 + resources/js/components/ui/svg/groups.svg | 1 + .../js/components/ui/svg/live-preview.svg | 1 + resources/js/components/ui/svg/loading.svg | 1 + .../js/components/ui/svg/magnifying-glass.svg | 1 + resources/js/components/ui/svg/mail.svg | 1 + resources/js/components/ui/svg/navigation.svg | 1 + .../js/components/ui/svg/permissions.svg | 1 + resources/js/components/ui/svg/plus.svg | 1 + .../js/components/ui/svg/preferences.svg | 1 + resources/js/components/ui/svg/sign-in.svg | 1 + .../js/components/ui/svg/site-settings.svg | 1 + resources/js/components/ui/svg/site.svg | 1 + .../components/ui/svg/statamic-mark-lime.svg | 1 + resources/js/components/ui/svg/taxonomies.svg | 1 + resources/js/components/ui/svg/team.svg | 1 + resources/js/components/ui/svg/updates.svg | 1 + resources/js/components/ui/svg/users.svg | 1 + resources/js/components/ui/svg/utilities.svg | 1 + resources/js/components/ui/svg/x.svg | 1 + resources/js/composables/has-component.js | 15 + resources/views/playground.blade.php | 449 +++++++----------- src/Providers/CpServiceProvider.php | 10 + 118 files changed, 2915 insertions(+), 281 deletions(-) create mode 100644 resources/css/tailwind-animate.css create mode 100644 resources/css/ui.css create mode 100644 resources/js/bootstrap/ui.js create mode 100644 resources/js/components/ui/Badge.vue create mode 100644 resources/js/components/ui/Button/Group.vue create mode 100644 resources/js/components/ui/Button/Index.vue create mode 100644 resources/js/components/ui/Calendar/Index.vue create mode 100644 resources/js/components/ui/Card/Index.vue create mode 100644 resources/js/components/ui/Card/Panel.vue create mode 100644 resources/js/components/ui/CharacterCounter.vue create mode 100644 resources/js/components/ui/Checkbox/Group.vue create mode 100644 resources/js/components/ui/Checkbox/Item.vue create mode 100644 resources/js/components/ui/DataTable/Index.vue create mode 100644 resources/js/components/ui/Datepicker/Index.vue create mode 100644 resources/js/components/ui/Description.vue create mode 100644 resources/js/components/ui/Dropdown/Footer.vue create mode 100644 resources/js/components/ui/Dropdown/Header.vue create mode 100644 resources/js/components/ui/Dropdown/Index.vue create mode 100644 resources/js/components/ui/Dropdown/Item.vue create mode 100644 resources/js/components/ui/Dropdown/Label.vue create mode 100644 resources/js/components/ui/Dropdown/Menu.vue create mode 100644 resources/js/components/ui/Dropdown/Separator.vue create mode 100644 resources/js/components/ui/Field.vue create mode 100644 resources/js/components/ui/Header.vue create mode 100644 resources/js/components/ui/Heading.vue create mode 100644 resources/js/components/ui/Icon.vue create mode 100644 resources/js/components/ui/Input/Group.vue create mode 100644 resources/js/components/ui/Input/GroupAppend.vue create mode 100644 resources/js/components/ui/Input/GroupPrepend.vue create mode 100644 resources/js/components/ui/Input/Index.vue create mode 100644 resources/js/components/ui/Label.vue create mode 100644 resources/js/components/ui/Modal/Close.vue create mode 100644 resources/js/components/ui/Modal/Index.vue create mode 100644 resources/js/components/ui/Modal/Title.vue create mode 100644 resources/js/components/ui/Panel/Header.vue create mode 100644 resources/js/components/ui/Panel/Index.vue create mode 100644 resources/js/components/ui/Popover.vue create mode 100644 resources/js/components/ui/Radio/Group.vue create mode 100644 resources/js/components/ui/Radio/Item.vue create mode 100644 resources/js/components/ui/Select/Index.vue create mode 100644 resources/js/components/ui/Separator.vue create mode 100644 resources/js/components/ui/Slider.vue create mode 100644 resources/js/components/ui/Splitter/Group.vue create mode 100644 resources/js/components/ui/Splitter/Panel.vue create mode 100644 resources/js/components/ui/Splitter/ResizeHandle.vue create mode 100644 resources/js/components/ui/Subheading.vue create mode 100644 resources/js/components/ui/Switch.vue create mode 100644 resources/js/components/ui/Table/Cell.vue create mode 100644 resources/js/components/ui/Table/Column.vue create mode 100644 resources/js/components/ui/Table/Columns.vue create mode 100644 resources/js/components/ui/Table/Index.vue create mode 100644 resources/js/components/ui/Table/Row.vue create mode 100644 resources/js/components/ui/Table/Rows.vue create mode 100644 resources/js/components/ui/Tabs/Content.vue create mode 100644 resources/js/components/ui/Tabs/Index.vue create mode 100644 resources/js/components/ui/Tabs/Indicator.vue create mode 100644 resources/js/components/ui/Tabs/List.vue create mode 100644 resources/js/components/ui/Tabs/Trigger.vue create mode 100644 resources/js/components/ui/Textarea.vue create mode 100644 resources/js/components/ui/ThemeSwitcher.vue create mode 100644 resources/js/components/ui/Tooltip.vue create mode 100644 resources/js/components/ui/WithField.vue create mode 100644 resources/js/components/ui/svg/addons.svg create mode 100644 resources/js/components/ui/svg/align-center.svg create mode 100644 resources/js/components/ui/svg/align-left.svg create mode 100644 resources/js/components/ui/svg/align-right.svg create mode 100644 resources/js/components/ui/svg/arrow-down.svg create mode 100644 resources/js/components/ui/svg/arrow-right.svg create mode 100644 resources/js/components/ui/svg/arrow-up-right.svg create mode 100644 resources/js/components/ui/svg/assets.svg create mode 100644 resources/js/components/ui/svg/avatar.svg create mode 100644 resources/js/components/ui/svg/bell.svg create mode 100644 resources/js/components/ui/svg/blueprints.svg create mode 100644 resources/js/components/ui/svg/calendar.svg create mode 100644 resources/js/components/ui/svg/chevron-down.svg create mode 100644 resources/js/components/ui/svg/chevron-left.svg create mode 100644 resources/js/components/ui/svg/chevron-right.svg create mode 100644 resources/js/components/ui/svg/chevron-vertical.svg create mode 100644 resources/js/components/ui/svg/clipboard-check.svg create mode 100644 resources/js/components/ui/svg/clipboard.svg create mode 100644 resources/js/components/ui/svg/cog-solid.svg create mode 100644 resources/js/components/ui/svg/cog.svg create mode 100644 resources/js/components/ui/svg/collections.svg create mode 100644 resources/js/components/ui/svg/columns.svg create mode 100644 resources/js/components/ui/svg/dashboard.svg create mode 100644 resources/js/components/ui/svg/dots.svg create mode 100644 resources/js/components/ui/svg/download.svg create mode 100644 resources/js/components/ui/svg/external-link.svg create mode 100644 resources/js/components/ui/svg/eye-closed.svg create mode 100644 resources/js/components/ui/svg/eye.svg create mode 100644 resources/js/components/ui/svg/fields.svg create mode 100644 resources/js/components/ui/svg/forms.svg create mode 100644 resources/js/components/ui/svg/globals.svg create mode 100644 resources/js/components/ui/svg/groups.svg create mode 100644 resources/js/components/ui/svg/live-preview.svg create mode 100644 resources/js/components/ui/svg/loading.svg create mode 100644 resources/js/components/ui/svg/magnifying-glass.svg create mode 100644 resources/js/components/ui/svg/mail.svg create mode 100644 resources/js/components/ui/svg/navigation.svg create mode 100644 resources/js/components/ui/svg/permissions.svg create mode 100644 resources/js/components/ui/svg/plus.svg create mode 100644 resources/js/components/ui/svg/preferences.svg create mode 100644 resources/js/components/ui/svg/sign-in.svg create mode 100644 resources/js/components/ui/svg/site-settings.svg create mode 100644 resources/js/components/ui/svg/site.svg create mode 100644 resources/js/components/ui/svg/statamic-mark-lime.svg create mode 100644 resources/js/components/ui/svg/taxonomies.svg create mode 100644 resources/js/components/ui/svg/team.svg create mode 100644 resources/js/components/ui/svg/updates.svg create mode 100644 resources/js/components/ui/svg/users.svg create mode 100644 resources/js/components/ui/svg/utilities.svg create mode 100644 resources/js/components/ui/svg/x.svg create mode 100644 resources/js/composables/has-component.js diff --git a/package-lock.json b/package-lock.json index e3d09fc08bf..1af57570cdd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "@floating-ui/dom": "^1.2.5", "@he-tree/vue": "^2.8.2", "@hoppscotch/vue-toasted": "^0.1.0", + "@internationalized/date": "^3.7.0", "@shopify/draggable": "^1.0.0-beta.12", "@tiptap/core": "^2.0.2", "@tiptap/extension-blockquote": "^2.0.2", @@ -48,8 +49,10 @@ "autosize": "~6.0.1", "axios": "^1.6.0", "body-scroll-lock": "^4.0.0-beta.0", + "clsx": "^2.1.1", "codemirror": "5.65.12", "cookies-js": "^1.2.2", + "cva": "^1.0.0-beta.3", "floating-vue": "^5.2.2", "fuse.js": "^7.0.0", "highlight.js": "^11.7.0", @@ -68,11 +71,13 @@ "pusher-js": "^8.4.0-rc2", "qs": "^6.9.7", "read-time-estimate": "0.0.3", + "reka-ui": "^2.0.0", "resize-observer-polyfill": "^1.5.1", "semver": "^7.7.1", "speakingurl": "^14.0.1", "striptags": "^3.2.0", "svgo": "^3.0.0", + "tailwind-merge": "^3.0.2", "tiny-emitter": "^2.1.0", "uniqid": "^5.2.0", "upload": "^1.3.2", @@ -639,18 +644,31 @@ } }, "node_modules/@floating-ui/dom": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.7.tgz", - "integrity": "sha512-wmVfPG5o2xnKDU4jx/m4w5qva9FWHcnZ8BvzEe90D/RpwsJaTAVYPEPdQ8sbr/N8zZTAHlZUTQdqg8ZUbzHmng==", + "version": "1.6.13", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.13.tgz", + "integrity": "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==", + "license": "MIT", "dependencies": { "@floating-ui/core": "^1.6.0", - "@floating-ui/utils": "^0.2.4" + "@floating-ui/utils": "^0.2.9" } }, "node_modules/@floating-ui/utils": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.4.tgz", - "integrity": "sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==" + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", + "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==", + "license": "MIT" + }, + "node_modules/@floating-ui/vue": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/vue/-/vue-1.1.6.tgz", + "integrity": "sha512-XFlUzGHGv12zbgHNk5FN2mUB7ROul3oG2ENdTpWdE+qMFxyNxWSRmsoyhiEnpmabNm6WnUvR1OvJfUfN4ojC1A==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.0.0", + "@floating-ui/utils": "^0.2.9", + "vue-demi": ">=0.13.0" + } }, "node_modules/@he-tree/dnd-utils": { "version": "0.1.0-alpha.4", @@ -729,6 +747,24 @@ "vue": "^3.2.37" } }, + "node_modules/@internationalized/date": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.7.0.tgz", + "integrity": "sha512-VJ5WS3fcVx0bejE/YHfbDKR/yawZgKqn/if+oEeLqNwBtPzVB06olkfcnojTmEMX+gTpH+FlQ69SHNitJ8/erQ==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@internationalized/number": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.6.0.tgz", + "integrity": "sha512-PtrRcJVy7nw++wn4W2OuePQQfTqDzfusSuY1QTtui4wa7r+rGVtR75pO8CyKvHvzyQYi3Q1uO5sY0AsB4e65Bw==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -1273,6 +1309,15 @@ "node": ">= 6" } }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, "node_modules/@tailwindcss/container-queries": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@tailwindcss/container-queries/-/container-queries-0.1.1.tgz", @@ -1297,6 +1342,32 @@ "tailwindcss": ">=3.0.0 || insiders" } }, + "node_modules/@tanstack/virtual-core": { + "version": "3.13.5", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.13.5.tgz", + "integrity": "sha512-gMLNylxhJdUlfRR1G3U9rtuwUh2IjdrrniJIDcekVJN3/3i+bluvdMi3+eodnxzJq5nKnxnigo9h0lIpaqV6HQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/vue-virtual": { + "version": "3.13.5", + "resolved": "https://registry.npmjs.org/@tanstack/vue-virtual/-/vue-virtual-3.13.5.tgz", + "integrity": "sha512-1hhUA6CUjmKc5JDyKLcYOV6mI631FaKKxXh77Ja4UtIy6EOofYaLPk8vVgvK6vLMUSfHR2vI3ZpPY9ibyX60SA==", + "license": "MIT", + "dependencies": { + "@tanstack/virtual-core": "3.13.5" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "vue": "^2.7.0 || ^3.0.0" + } + }, "node_modules/@tiptap/core": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.8.0.tgz", @@ -2362,6 +2433,18 @@ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", "dev": true }, + "node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/assertion-error": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", @@ -2657,6 +2740,15 @@ "node": ">=0.8" } }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/codemirror": { "version": "5.65.12", "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.12.tgz", @@ -2871,6 +2963,26 @@ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "license": "MIT" }, + "node_modules/cva": { + "version": "1.0.0-beta.3", + "resolved": "https://registry.npmjs.org/cva/-/cva-1.0.0-beta.3.tgz", + "integrity": "sha512-CZa8pTkpEygxJRLH9aod/wfnSgK5z/0GJqG/NNehlwam+S8llqCWUXS3eCenvAiW5sTUpwTWE6bJaeeZ/b4pzA==", + "license": "Apache-2.0", + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" + }, + "peerDependencies": { + "typescript": ">= 4.5.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/data-urls": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", @@ -2986,6 +3098,12 @@ "node": ">=8" } }, + "node_modules/defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "license": "MIT" + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -4538,6 +4656,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/ohash": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", + "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", + "license": "MIT" + }, "node_modules/open": { "version": "8.4.2", "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", @@ -5369,6 +5493,69 @@ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, + "node_modules/reka-ui": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/reka-ui/-/reka-ui-2.1.1.tgz", + "integrity": "sha512-awvpQ041LPXAvf2uRVFwedsyz9SwsuoWlRql1fg4XimUCxEI2GOfHo6FIdL44dSPb/eG/gWbdGhoGHLlbX5gPA==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.6.13", + "@floating-ui/vue": "^1.1.6", + "@internationalized/date": "^3.5.0", + "@internationalized/number": "^3.5.0", + "@tanstack/vue-virtual": "^3.12.0", + "@vueuse/core": "^12.5.0", + "@vueuse/shared": "^12.5.0", + "aria-hidden": "^1.2.4", + "defu": "^6.1.4", + "ohash": "^2.0.11" + }, + "peerDependencies": { + "vue": ">= 3.2.0" + } + }, + "node_modules/reka-ui/node_modules/@types/web-bluetooth": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", + "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", + "license": "MIT" + }, + "node_modules/reka-ui/node_modules/@vueuse/core": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-12.8.2.tgz", + "integrity": "sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==", + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.21", + "@vueuse/metadata": "12.8.2", + "@vueuse/shared": "12.8.2", + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/reka-ui/node_modules/@vueuse/metadata": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-12.8.2.tgz", + "integrity": "sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/reka-ui/node_modules/@vueuse/shared": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-12.8.2.tgz", + "integrity": "sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==", + "license": "MIT", + "dependencies": { + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -5885,6 +6072,16 @@ "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" }, + "node_modules/tailwind-merge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.0.2.tgz", + "integrity": "sha512-l7z+OYZ7mu3DTqrL88RiKrKIqO3NcpEO8V/Od04bNpvk0kiIFndGEoqfuzvj4yuhRkHKjRkII2z+KS2HfPcSxw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, "node_modules/tailwindcss": { "version": "3.4.4", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz", @@ -6073,6 +6270,12 @@ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", "dev": true }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, "node_modules/tweetnacl": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", diff --git a/package.json b/package.json index 4db1e66ab6b..fc8e89606a4 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "@floating-ui/dom": "^1.2.5", "@he-tree/vue": "^2.8.2", "@hoppscotch/vue-toasted": "^0.1.0", + "@internationalized/date": "^3.7.0", "@shopify/draggable": "^1.0.0-beta.12", "@tiptap/core": "^2.0.2", "@tiptap/extension-blockquote": "^2.0.2", @@ -57,8 +58,10 @@ "autosize": "~6.0.1", "axios": "^1.6.0", "body-scroll-lock": "^4.0.0-beta.0", + "clsx": "^2.1.1", "codemirror": "5.65.12", "cookies-js": "^1.2.2", + "cva": "^1.0.0-beta.3", "floating-vue": "^5.2.2", "fuse.js": "^7.0.0", "highlight.js": "^11.7.0", @@ -77,11 +80,13 @@ "pusher-js": "^8.4.0-rc2", "qs": "^6.9.7", "read-time-estimate": "0.0.3", + "reka-ui": "^2.0.0", "resize-observer-polyfill": "^1.5.1", "semver": "^7.7.1", "speakingurl": "^14.0.1", "striptags": "^3.2.0", "svgo": "^3.0.0", + "tailwind-merge": "^3.0.2", "tiny-emitter": "^2.1.0", "uniqid": "^5.2.0", "upload": "^1.3.2", diff --git a/resources/css/tailwind-animate.css b/resources/css/tailwind-animate.css new file mode 100644 index 00000000000..46ed8ed1ec1 --- /dev/null +++ b/resources/css/tailwind-animate.css @@ -0,0 +1,275 @@ +/** + * TailwindCSS v4.0 compatible replacement for `tailwindcss-animate`. + * + * WARNING: The asterisks are not supported by some formatters and linters. You + * might want to exclude this file from formatters and linters for now. + * + * @author Luca Bosin + * @license MIT + */ + +@theme inline { + --animation-delay-0: 0s; + --animation-delay-75: 75ms; + --animation-delay-100: 0.1s; + --animation-delay-150: 0.15s; + --animation-delay-200: 0.2s; + --animation-delay-300: 0.3s; + --animation-delay-500: 0.5s; + --animation-delay-700: 0.7s; + --animation-delay-1000: 1s; + + --animation-repeat-0: 0; + --animation-repeat-1: 1; + --animation-repeat-infinite: infinite; + + --animation-direction-normal: normal; + --animation-direction-reverse: reverse; + --animation-direction-alternate: alternate; + --animation-direction-alternate-reverse: alternate-reverse; + + --animation-fill-mode-none: none; + --animation-fill-mode-forwards: forwards; + --animation-fill-mode-backwards: backwards; + --animation-fill-mode-both: both; + + --animate-in: var(--tw-duration, 150ms) var(--tw-ease, ease) enter; + --animate-out: var(--tw-duration, 150ms) var(--tw-ease, ease) exit; + + --percentage-0: 0; + --percentage-5: 0.05; + --percentage-10: 0.1; + --percentage-15: 0.15; + --percentage-20: 0.2; + --percentage-25: 0.25; + --percentage-30: 0.3; + --percentage-35: 0.35; + --percentage-40: 0.4; + --percentage-45: 0.45; + --percentage-50: 0.5; + --percentage-55: 0.55; + --percentage-60: 0.6; + --percentage-65: 0.65; + --percentage-70: 0.7; + --percentage-75: 0.75; + --percentage-80: 0.8; + --percentage-85: 0.85; + --percentage-90: 0.9; + --percentage-95: 0.95; + --percentage-100: 1; + + --translate-1/2: 50%; + --translate-1/3: 33.333333%; + --translate-2/3: 66.666667%; + --translate-1/4: 25%; + --translate-2/4: 50%; + --translate-3/4: 75%; + --translate-full: 100%; + --translate-px: 1px; + --translate-0: 0px; + --translate-0.5: 0.125rem; + --translate-1: 0.25rem; + --translate-1.5: 0.375rem; + --translate-2: 0.5rem; + --translate-2.5: 0.625rem; + --translate-3: 0.75rem; + --translate-3.5: 0.875rem; + --translate-4: 1rem; + --translate-5: 1.25rem; + --translate-6: 1.5rem; + --translate-7: 1.75rem; + --translate-8: 2rem; + --translate-9: 2.25rem; + --translate-10: 2.5rem; + --translate-11: 2.75rem; + --translate-12: 3rem; + --translate-14: 3.5rem; + --translate-16: 4rem; + --translate-20: 5rem; + --translate-24: 6rem; + --translate-28: 7rem; + --translate-32: 8rem; + --translate-36: 9rem; + --translate-40: 10rem; + --translate-44: 11rem; + --translate-48: 12rem; + --translate-52: 13rem; + --translate-56: 14rem; + --translate-60: 15rem; + --translate-64: 16rem; + --translate-72: 18rem; + --translate-80: 20rem; + --translate-96: 24rem; + + @keyframes enter { + from { + opacity: var(--tw-enter-opacity, 1); + transform: translate3d( + var(--tw-enter-translate-x, 0), + var(--tw-enter-translate-y, 0), + 0 + ) + scale3d( + var(--tw-enter-scale, 1), + var(--tw-enter-scale, 1), + var(--tw-enter-scale, 1) + ) + rotate(var(--tw-enter-rotate, 0)); + } + } + + @keyframes exit { + to { + opacity: var(--tw-exit-opacity, 1); + transform: translate3d( + var(--tw-exit-translate-x, 0), + var(--tw-exit-translate-y, 0), + 0 + ) + scale3d( + var(--tw-exit-scale, 1), + var(--tw-exit-scale, 1), + var(--tw-exit-scale, 1) + ) + rotate(var(--tw-exit-rotate, 0)); + } + } +} + +/* + * Tailwind's default `duration` utility sets the `--tw-duration` variable, so + * can set `animation-duration` directly in the animation definition in the + * `@theme` section above. Same goes for the `animation-timing-function`, set + * with `--tw-ease`. + */ + +@utility delay-* { + animation-delay: calc(--value(number) * 1ms); + animation-delay: --value(--animation-delay-*, [duration], [*]); +} + +@utility repeat-* { + animation-iteration-count: --value(--animation-repeat-*, integer); +} + +@utility direction-* { + animation-direction: --value(--animation-direction-*); +} + +@utility fill-mode-* { + animation-fill-mode: --value(--animation-fill-mode-*); +} + +@utility running { + animation-play-state: running; +} +@utility paused { + animation-play-state: paused; +} + +@utility fade-in { + --tw-enter-opacity: 0; +} +@utility fade-in-* { + --tw-enter-opacity: --value(--percentage-*, [*]); +} + +@utility fade-out { + --tw-exit-opacity: 0; +} +@utility fade-out-* { + --tw-exit-opacity: --value(--percentage-*, [*]); +} + +@utility zoom-in { + --tw-enter-scale: 0; +} +@utility zoom-in-* { + --tw-enter-scale: calc(--value([percentage]) / 100%); + --tw-enter-scale: calc(--value([ratio], [number])); + --tw-enter-scale: --value(--percentage-*); +} + +@utility zoom-out { + --tw-exit-scale: 0; +} +@utility zoom-out-* { + --tw-exit-scale: calc(--value([percentage]) / 100%); + --tw-exit-scale: calc(--value([ratio], [number])); + --tw-exit-scale: --value(--percentage-*); +} + +@utility spin-in { + --tw-enter-rotate: 30deg; +} +@utility spin-in-* { + --tw-enter-rotate: calc(--value(number) * 1deg); + --tw-enter-rotate: --value(--rotate-*, [angle]); +} + +@utility spin-out { + --tw-exit-rotate: 30deg; +} +@utility spin-out-* { + --tw-exit-rotate: calc(--value(number) * 1deg); + --tw-exit-rotate: --value(--rotate-*, [angle]); +} + +@utility slide-in-from-top { + --tw-enter-translate-y: -100%; +} +@utility slide-in-from-top-* { + --tw-enter-translate-y: calc(--value(integer) * var(--spacing) * -1); + --tw-enter-translate-y: calc(--value(--translate-*, [percentage], ratio, [length]) * -1); +} + +@utility slide-in-from-bottom { + --tw-enter-translate-y: 100%; +} +@utility slide-in-from-bottom-* { + --tw-enter-translate-y: calc(--value(integer) * var(--spacing)); + --tw-enter-translate-y: --value(--translate-*, [percentage], ratio, [length]); +} +@utility slide-in-from-left { + --tw-enter-translate-x: -100%; +} +@utility slide-in-from-left-* { + --tw-enter-translate-x: calc(--value(integer) * var(--spacing) * -1); + --tw-enter-translate-x: calc(--value(--translate-*, [percentage], ratio, [length]) * -1); +} +@utility slide-in-from-right { + --tw-enter-translate-x: 100%; +} +@utility slide-in-from-right-* { + --tw-enter-translate-x: calc(--value(integer) * var(--spacing)); + --tw-enter-translate-x: --value(--translate-*, [percentage], ratio, [length]); +} + +@utility slide-out-to-top { + --tw-exit-translate-y: -100%; +} +@utility slide-out-to-top-* { + --tw-exit-translate-y: calc(--value(integer) * var(--spacing) * -1); + --tw-exit-translate-y: calc(--value(--translate-*, [percentage], ratio, [length]) * -1); +} +@utility slide-out-to-bottom { + --tw-exit-translate-y: 100%; +} +@utility slide-out-to-bottom-* { + --tw-exit-translate-y: calc(--value(integer) * var(--spacing)); + --tw-exit-translate-y: --value(--translate-*, [percentage], ratio, [length]); +} +@utility slide-out-to-left { + --tw-exit-translate-x: -100%; +} +@utility slide-out-to-left-* { + --tw-exit-translate-x: calc(--value(integer) * var(--spacing) * -1); + --tw-exit-translate-x: calc(--value(--translate-*, [percentage], ratio, [length]) * -1); +} +@utility slide-out-to-right { + --tw-exit-translate-x: 100%; +} +@utility slide-out-to-right-* { + --tw-exit-translate-x: calc(--value(integer) * var(--spacing)); + --tw-exit-translate-x: --value(--translate-*, [percentage], ratio, [length]); +} diff --git a/resources/css/ui.css b/resources/css/ui.css new file mode 100644 index 00000000000..3902446cd34 --- /dev/null +++ b/resources/css/ui.css @@ -0,0 +1,53 @@ +@theme inline { + + --color-primary: var(--color-zinc-800); + --color-primary-border: color-mix(in oklch, var(--color-primary) 100%, black 20%); + --color-primary-hover: color-mix(in oklch, var(--color-primary) 100%, black 30%); + --color-primary-gap: color-mix(in oklch, var(--color-primary) 100%, black 50%); + --color-gray-50: var(--color-zinc-50); + --color-gray-100: var(--color-zinc-100); + --color-gray-200: var(--color-zinc-200); + --color-gray-300: var(--color-zinc-300); + --color-gray-400: var(--color-zinc-400); + --color-gray-500: var(--color-zinc-500); + --color-gray-600: var(--color-zinc-600); + --color-gray-700: var(--color-zinc-700); + --color-gray-800: var(--color-zinc-800); + --color-gray-850: oklch(24.48% 0.0056 285.98); + --color-gray-900: var(--color-zinc-900); + --color-gray-950: var(--color-zinc-950); + --color-volt: #D4FF4C; +} + +@theme { + --text-2xs: 0.625rem; + --shadow-ui-xs: 0px 1px 3px -1px rgba(0,0,0,0.10); + --shadow-ui-sm: 0px 2px 3px -2px rgba(0,0,0,0.15); + --shadow-ui-md: 0px 2px 4px -2px rgba(0,0,0,0.37); + --shadow-ui-lg: 0px 4px 7px -4px rgba(0,0,0,0.15); + + --animate-wiggle: wiggle 200ms ease-in-out infinite; + + @keyframes wiggle { + 0%, + 100% { + transform: rotate(-3deg); + } + 50% { + transform: rotate(3deg); + } + } +} + +.popoverAnimation { + @apply duration-100 will-change-[transform,opacity]; + @apply data-[state=open]:animate-in data-[state=closed]:animate-out; + @apply data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0; + @apply data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95; + @apply data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2; + @apply data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2; +} + +.content-card { + @apply min-h-full px-6 md:px-12 pb-6 bg-white dark:bg-gray-900 border border-gray-200 dark:border-white/10 rounded-xl; +} diff --git a/resources/js/bootstrap/statamic.js b/resources/js/bootstrap/statamic.js index c95608be76b..fff5c1e2df5 100644 --- a/resources/js/bootstrap/statamic.js +++ b/resources/js/bootstrap/statamic.js @@ -5,6 +5,7 @@ import axios from 'axios'; import Config from '../components/Config'; import Preferences from '../components/Preference'; import registerGlobalComponents from './components.js'; +import registerUiComponents from './ui.js'; import registerFieldtypes from './fieldtypes.js'; import registerVueSelect from './vue-select/vue-select'; import useGlobalEventBus from '../composables/global-event-bus'; @@ -119,7 +120,7 @@ export default { this.$components.register(name, component); }, - start() { + async start() { this.$app = createApp(App); this.$app.config.silent = false; @@ -193,6 +194,7 @@ export default { mounted: (el) => autosize(el), }); + await registerUiComponents(this.$app); registerGlobalComponents(this.$app); registerFieldtypes(this.$app); registerVueSelect(this.$app); diff --git a/resources/js/bootstrap/ui.js b/resources/js/bootstrap/ui.js new file mode 100644 index 00000000000..30499d68e40 --- /dev/null +++ b/resources/js/bootstrap/ui.js @@ -0,0 +1,29 @@ +export default async (app) => { + const components = import.meta.glob('@statamic/components/ui/**/*.vue'); + + for (const [path, component] of Object.entries(components)) { + // Split full path and remove leading segments up to 'components' + const segments = path + .split('/') + .reduce((acc, segment, index, array) => { + if (segment === 'ui' || acc.length > 0) { + acc.push(segment.replace(/\.\w+$/, '')); // Remove extension + } + return acc; + }, []) + .slice(1); // Remove 'components' segment + + // Handle Index files specially + if (segments.length > 1 && segments[segments.length - 1].toLowerCase() === 'index') { + segments.pop(); + } + + // Convert to kebab case + const componentName = segments + .join('-') // Join segments with hyphens + .replace(/([a-z])([A-Z])/g, '$1-$2') // Add hyphen between camelCase words + .toLowerCase(); // Convert to kebab-case + + app.component(`ui-${componentName}`, (await component()).default); + } +}; diff --git a/resources/js/components/ui/Badge.vue b/resources/js/components/ui/Badge.vue new file mode 100644 index 00000000000..78baf3c88db --- /dev/null +++ b/resources/js/components/ui/Badge.vue @@ -0,0 +1,71 @@ + + + diff --git a/resources/js/components/ui/Button/Group.vue b/resources/js/components/ui/Button/Group.vue new file mode 100644 index 00000000000..0b140e80cd4 --- /dev/null +++ b/resources/js/components/ui/Button/Group.vue @@ -0,0 +1,16 @@ + diff --git a/resources/js/components/ui/Button/Index.vue b/resources/js/components/ui/Button/Index.vue new file mode 100644 index 00000000000..eaf21b79d9b --- /dev/null +++ b/resources/js/components/ui/Button/Index.vue @@ -0,0 +1,87 @@ + + + diff --git a/resources/js/components/ui/Calendar/Index.vue b/resources/js/components/ui/Calendar/Index.vue new file mode 100644 index 00000000000..a78b4a480a2 --- /dev/null +++ b/resources/js/components/ui/Calendar/Index.vue @@ -0,0 +1,111 @@ + + + diff --git a/resources/js/components/ui/Card/Index.vue b/resources/js/components/ui/Card/Index.vue new file mode 100644 index 00000000000..1a7179f45b1 --- /dev/null +++ b/resources/js/components/ui/Card/Index.vue @@ -0,0 +1,26 @@ + + + diff --git a/resources/js/components/ui/Card/Panel.vue b/resources/js/components/ui/Card/Panel.vue new file mode 100644 index 00000000000..fc66a137afb --- /dev/null +++ b/resources/js/components/ui/Card/Panel.vue @@ -0,0 +1,16 @@ + + + diff --git a/resources/js/components/ui/CharacterCounter.vue b/resources/js/components/ui/CharacterCounter.vue new file mode 100644 index 00000000000..98c613105db --- /dev/null +++ b/resources/js/components/ui/CharacterCounter.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/resources/js/components/ui/Checkbox/Group.vue b/resources/js/components/ui/Checkbox/Group.vue new file mode 100644 index 00000000000..3d1e1104f9e --- /dev/null +++ b/resources/js/components/ui/Checkbox/Group.vue @@ -0,0 +1,30 @@ + + + diff --git a/resources/js/components/ui/Checkbox/Item.vue b/resources/js/components/ui/Checkbox/Item.vue new file mode 100644 index 00000000000..a8a2928aa7f --- /dev/null +++ b/resources/js/components/ui/Checkbox/Item.vue @@ -0,0 +1,36 @@ + + + diff --git a/resources/js/components/ui/DataTable/Index.vue b/resources/js/components/ui/DataTable/Index.vue new file mode 100644 index 00000000000..63c2030683f --- /dev/null +++ b/resources/js/components/ui/DataTable/Index.vue @@ -0,0 +1,159 @@ + + + + + diff --git a/resources/js/components/ui/Datepicker/Index.vue b/resources/js/components/ui/Datepicker/Index.vue new file mode 100644 index 00000000000..e1a59d69e84 --- /dev/null +++ b/resources/js/components/ui/Datepicker/Index.vue @@ -0,0 +1,93 @@ + + + diff --git a/resources/js/components/ui/Description.vue b/resources/js/components/ui/Description.vue new file mode 100644 index 00000000000..3a7be866ecd --- /dev/null +++ b/resources/js/components/ui/Description.vue @@ -0,0 +1,19 @@ + + + diff --git a/resources/js/components/ui/Dropdown/Footer.vue b/resources/js/components/ui/Dropdown/Footer.vue new file mode 100644 index 00000000000..a36370e44ba --- /dev/null +++ b/resources/js/components/ui/Dropdown/Footer.vue @@ -0,0 +1,25 @@ + + + diff --git a/resources/js/components/ui/Dropdown/Header.vue b/resources/js/components/ui/Dropdown/Header.vue new file mode 100644 index 00000000000..17cd2ad14c8 --- /dev/null +++ b/resources/js/components/ui/Dropdown/Header.vue @@ -0,0 +1,25 @@ + + + diff --git a/resources/js/components/ui/Dropdown/Index.vue b/resources/js/components/ui/Dropdown/Index.vue new file mode 100644 index 00000000000..bf28cb7d845 --- /dev/null +++ b/resources/js/components/ui/Dropdown/Index.vue @@ -0,0 +1,45 @@ + + + diff --git a/resources/js/components/ui/Dropdown/Item.vue b/resources/js/components/ui/Dropdown/Item.vue new file mode 100644 index 00000000000..8817ce7eb1a --- /dev/null +++ b/resources/js/components/ui/Dropdown/Item.vue @@ -0,0 +1,32 @@ + + + diff --git a/resources/js/components/ui/Dropdown/Label.vue b/resources/js/components/ui/Dropdown/Label.vue new file mode 100644 index 00000000000..8e32be51f16 --- /dev/null +++ b/resources/js/components/ui/Dropdown/Label.vue @@ -0,0 +1,19 @@ + + + diff --git a/resources/js/components/ui/Dropdown/Menu.vue b/resources/js/components/ui/Dropdown/Menu.vue new file mode 100644 index 00000000000..373e8c48a5c --- /dev/null +++ b/resources/js/components/ui/Dropdown/Menu.vue @@ -0,0 +1,5 @@ + diff --git a/resources/js/components/ui/Dropdown/Separator.vue b/resources/js/components/ui/Dropdown/Separator.vue new file mode 100644 index 00000000000..be8e9c1ee7c --- /dev/null +++ b/resources/js/components/ui/Dropdown/Separator.vue @@ -0,0 +1,7 @@ + + + diff --git a/resources/js/components/ui/Field.vue b/resources/js/components/ui/Field.vue new file mode 100644 index 00000000000..d8bf23a0800 --- /dev/null +++ b/resources/js/components/ui/Field.vue @@ -0,0 +1,41 @@ + + + diff --git a/resources/js/components/ui/Header.vue b/resources/js/components/ui/Header.vue new file mode 100644 index 00000000000..fd33d1228d4 --- /dev/null +++ b/resources/js/components/ui/Header.vue @@ -0,0 +1,18 @@ + + + diff --git a/resources/js/components/ui/Heading.vue b/resources/js/components/ui/Heading.vue new file mode 100644 index 00000000000..f6ae596c8bf --- /dev/null +++ b/resources/js/components/ui/Heading.vue @@ -0,0 +1,33 @@ + + + diff --git a/resources/js/components/ui/Icon.vue b/resources/js/components/ui/Icon.vue new file mode 100644 index 00000000000..947ba5607e9 --- /dev/null +++ b/resources/js/components/ui/Icon.vue @@ -0,0 +1,37 @@ + + + diff --git a/resources/js/components/ui/Input/Group.vue b/resources/js/components/ui/Input/Group.vue new file mode 100644 index 00000000000..394ae4b5e06 --- /dev/null +++ b/resources/js/components/ui/Input/Group.vue @@ -0,0 +1,32 @@ + + + diff --git a/resources/js/components/ui/Input/GroupAppend.vue b/resources/js/components/ui/Input/GroupAppend.vue new file mode 100644 index 00000000000..9076d0f8464 --- /dev/null +++ b/resources/js/components/ui/Input/GroupAppend.vue @@ -0,0 +1,13 @@ + diff --git a/resources/js/components/ui/Input/GroupPrepend.vue b/resources/js/components/ui/Input/GroupPrepend.vue new file mode 100644 index 00000000000..71efd6134b1 --- /dev/null +++ b/resources/js/components/ui/Input/GroupPrepend.vue @@ -0,0 +1,13 @@ + diff --git a/resources/js/components/ui/Input/Index.vue b/resources/js/components/ui/Input/Index.vue new file mode 100644 index 00000000000..e6b58b98c38 --- /dev/null +++ b/resources/js/components/ui/Input/Index.vue @@ -0,0 +1,134 @@ + + + diff --git a/resources/js/components/ui/Label.vue b/resources/js/components/ui/Label.vue new file mode 100644 index 00000000000..a9c8015d669 --- /dev/null +++ b/resources/js/components/ui/Label.vue @@ -0,0 +1,23 @@ + + + diff --git a/resources/js/components/ui/Modal/Close.vue b/resources/js/components/ui/Modal/Close.vue new file mode 100644 index 00000000000..0f89c81d78e --- /dev/null +++ b/resources/js/components/ui/Modal/Close.vue @@ -0,0 +1,19 @@ + + + diff --git a/resources/js/components/ui/Modal/Index.vue b/resources/js/components/ui/Modal/Index.vue new file mode 100644 index 00000000000..d6f6c418cf0 --- /dev/null +++ b/resources/js/components/ui/Modal/Index.vue @@ -0,0 +1,49 @@ + + + diff --git a/resources/js/components/ui/Modal/Title.vue b/resources/js/components/ui/Modal/Title.vue new file mode 100644 index 00000000000..7f21e6e9f04 --- /dev/null +++ b/resources/js/components/ui/Modal/Title.vue @@ -0,0 +1,14 @@ + + + diff --git a/resources/js/components/ui/Panel/Header.vue b/resources/js/components/ui/Panel/Header.vue new file mode 100644 index 00000000000..5761680106e --- /dev/null +++ b/resources/js/components/ui/Panel/Header.vue @@ -0,0 +1,12 @@ + + + diff --git a/resources/js/components/ui/Panel/Index.vue b/resources/js/components/ui/Panel/Index.vue new file mode 100644 index 00000000000..3c8a33f1e97 --- /dev/null +++ b/resources/js/components/ui/Panel/Index.vue @@ -0,0 +1,10 @@ + diff --git a/resources/js/components/ui/Popover.vue b/resources/js/components/ui/Popover.vue new file mode 100644 index 00000000000..8f73afd7913 --- /dev/null +++ b/resources/js/components/ui/Popover.vue @@ -0,0 +1,54 @@ + + + diff --git a/resources/js/components/ui/Radio/Group.vue b/resources/js/components/ui/Radio/Group.vue new file mode 100644 index 00000000000..83f21312aa1 --- /dev/null +++ b/resources/js/components/ui/Radio/Group.vue @@ -0,0 +1,30 @@ + + + diff --git a/resources/js/components/ui/Radio/Item.vue b/resources/js/components/ui/Radio/Item.vue new file mode 100644 index 00000000000..75c1944949d --- /dev/null +++ b/resources/js/components/ui/Radio/Item.vue @@ -0,0 +1,32 @@ + + + diff --git a/resources/js/components/ui/Select/Index.vue b/resources/js/components/ui/Select/Index.vue new file mode 100644 index 00000000000..97ab9b62d2b --- /dev/null +++ b/resources/js/components/ui/Select/Index.vue @@ -0,0 +1,97 @@ + + + diff --git a/resources/js/components/ui/Separator.vue b/resources/js/components/ui/Separator.vue new file mode 100644 index 00000000000..ade9cbd1e17 --- /dev/null +++ b/resources/js/components/ui/Separator.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/resources/js/components/ui/Slider.vue b/resources/js/components/ui/Slider.vue new file mode 100644 index 00000000000..d204fbbe2f8 --- /dev/null +++ b/resources/js/components/ui/Slider.vue @@ -0,0 +1,35 @@ + + + diff --git a/resources/js/components/ui/Splitter/Group.vue b/resources/js/components/ui/Splitter/Group.vue new file mode 100644 index 00000000000..821956df026 --- /dev/null +++ b/resources/js/components/ui/Splitter/Group.vue @@ -0,0 +1,13 @@ + + + diff --git a/resources/js/components/ui/Splitter/Panel.vue b/resources/js/components/ui/Splitter/Panel.vue new file mode 100644 index 00000000000..9ed549be106 --- /dev/null +++ b/resources/js/components/ui/Splitter/Panel.vue @@ -0,0 +1,15 @@ + + + diff --git a/resources/js/components/ui/Splitter/ResizeHandle.vue b/resources/js/components/ui/Splitter/ResizeHandle.vue new file mode 100644 index 00000000000..8f99b98a7f0 --- /dev/null +++ b/resources/js/components/ui/Splitter/ResizeHandle.vue @@ -0,0 +1,7 @@ + + + diff --git a/resources/js/components/ui/Subheading.vue b/resources/js/components/ui/Subheading.vue new file mode 100644 index 00000000000..031f25c7279 --- /dev/null +++ b/resources/js/components/ui/Subheading.vue @@ -0,0 +1,25 @@ + + + diff --git a/resources/js/components/ui/Switch.vue b/resources/js/components/ui/Switch.vue new file mode 100644 index 00000000000..2a46b31bc15 --- /dev/null +++ b/resources/js/components/ui/Switch.vue @@ -0,0 +1,41 @@ + + + diff --git a/resources/js/components/ui/Table/Cell.vue b/resources/js/components/ui/Table/Cell.vue new file mode 100644 index 00000000000..a0714f02dd6 --- /dev/null +++ b/resources/js/components/ui/Table/Cell.vue @@ -0,0 +1,5 @@ + diff --git a/resources/js/components/ui/Table/Column.vue b/resources/js/components/ui/Table/Column.vue new file mode 100644 index 00000000000..1b9db52d8c7 --- /dev/null +++ b/resources/js/components/ui/Table/Column.vue @@ -0,0 +1,5 @@ + diff --git a/resources/js/components/ui/Table/Columns.vue b/resources/js/components/ui/Table/Columns.vue new file mode 100644 index 00000000000..e389f0a4fb9 --- /dev/null +++ b/resources/js/components/ui/Table/Columns.vue @@ -0,0 +1,7 @@ + diff --git a/resources/js/components/ui/Table/Index.vue b/resources/js/components/ui/Table/Index.vue new file mode 100644 index 00000000000..bcc280732ec --- /dev/null +++ b/resources/js/components/ui/Table/Index.vue @@ -0,0 +1,7 @@ + diff --git a/resources/js/components/ui/Table/Row.vue b/resources/js/components/ui/Table/Row.vue new file mode 100644 index 00000000000..7cc1a6222d5 --- /dev/null +++ b/resources/js/components/ui/Table/Row.vue @@ -0,0 +1,5 @@ + diff --git a/resources/js/components/ui/Table/Rows.vue b/resources/js/components/ui/Table/Rows.vue new file mode 100644 index 00000000000..d4d52407b7b --- /dev/null +++ b/resources/js/components/ui/Table/Rows.vue @@ -0,0 +1,5 @@ + diff --git a/resources/js/components/ui/Tabs/Content.vue b/resources/js/components/ui/Tabs/Content.vue new file mode 100644 index 00000000000..01d1fe891d0 --- /dev/null +++ b/resources/js/components/ui/Tabs/Content.vue @@ -0,0 +1,13 @@ + + + diff --git a/resources/js/components/ui/Tabs/Index.vue b/resources/js/components/ui/Tabs/Index.vue new file mode 100644 index 00000000000..95feff0b96a --- /dev/null +++ b/resources/js/components/ui/Tabs/Index.vue @@ -0,0 +1,13 @@ + + + diff --git a/resources/js/components/ui/Tabs/Indicator.vue b/resources/js/components/ui/Tabs/Indicator.vue new file mode 100644 index 00000000000..78b1364bd07 --- /dev/null +++ b/resources/js/components/ui/Tabs/Indicator.vue @@ -0,0 +1,11 @@ + + + diff --git a/resources/js/components/ui/Tabs/List.vue b/resources/js/components/ui/Tabs/List.vue new file mode 100644 index 00000000000..da6fccbe92d --- /dev/null +++ b/resources/js/components/ui/Tabs/List.vue @@ -0,0 +1,20 @@ + + + diff --git a/resources/js/components/ui/Tabs/Trigger.vue b/resources/js/components/ui/Tabs/Trigger.vue new file mode 100644 index 00000000000..5b3ae404177 --- /dev/null +++ b/resources/js/components/ui/Tabs/Trigger.vue @@ -0,0 +1,19 @@ + + + diff --git a/resources/js/components/ui/Textarea.vue b/resources/js/components/ui/Textarea.vue new file mode 100644 index 00000000000..aed8ebfd81e --- /dev/null +++ b/resources/js/components/ui/Textarea.vue @@ -0,0 +1,57 @@ + + + diff --git a/resources/js/components/assets/Editor/Editor.vue b/resources/js/components/assets/Editor/Editor.vue index a0162b125b8..4eb6c9a0cb9 100644 --- a/resources/js/components/assets/Editor/Editor.vue +++ b/resources/js/components/assets/Editor/Editor.vue @@ -1,7 +1,7 @@