From 87c45535d8b38bc4a5f14e13b421f64b8a391888 Mon Sep 17 00:00:00 2001 From: Jay George Date: Mon, 19 Jan 2026 14:42:33 +0000 Subject: [PATCH 01/31] Draft an alert component --- resources/js/bootstrap/cms/ui.js | 1 + resources/js/components/ui/Alert.vue | 64 ++++++++++++++++++++++++++++ resources/js/components/ui/index.js | 1 + 3 files changed, 66 insertions(+) create mode 100644 resources/js/components/ui/Alert.vue diff --git a/resources/js/bootstrap/cms/ui.js b/resources/js/bootstrap/cms/ui.js index 684db0c5a5..adf68ff74c 100644 --- a/resources/js/bootstrap/cms/ui.js +++ b/resources/js/bootstrap/cms/ui.js @@ -1,4 +1,5 @@ export { + Alert, AuthCard, Avatar, Badge, diff --git a/resources/js/components/ui/Alert.vue b/resources/js/components/ui/Alert.vue new file mode 100644 index 0000000000..7264bfbf11 --- /dev/null +++ b/resources/js/components/ui/Alert.vue @@ -0,0 +1,64 @@ + + + diff --git a/resources/js/components/ui/index.js b/resources/js/components/ui/index.js index 828345ae6b..aa0127f566 100644 --- a/resources/js/components/ui/index.js +++ b/resources/js/components/ui/index.js @@ -1,3 +1,4 @@ +export { default as Alert } from './Alert.vue'; export { default as AuthCard } from './AuthCard.vue'; export { default as Badge } from './Badge.vue'; export { default as Button } from './Button/Button.vue'; From 3be6edd771a620ef73bc3f4a223acb307c914ce9 Mon Sep 17 00:00:00 2001 From: Jay George Date: Mon, 19 Jan 2026 14:50:20 +0000 Subject: [PATCH 02/31] Fix icons --- resources/js/components/ui/Alert.vue | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/js/components/ui/Alert.vue b/resources/js/components/ui/Alert.vue index 7264bfbf11..d54f41c6de 100644 --- a/resources/js/components/ui/Alert.vue +++ b/resources/js/components/ui/Alert.vue @@ -42,13 +42,13 @@ const defaultIcon = computed(() => { switch (props.variant) { case 'warning': - return 'alert-triangle'; + return 'warning-diamond'; case 'error': - return 'alert-circle'; + return 'alert-alarm-bell'; case 'success': - return 'checkmark-circle'; + return 'checkmark'; default: - return 'information-circle'; + return 'info'; } }); From 0cfb8214616e552e54666dcc357904ac9ae28266 Mon Sep 17 00:00:00 2001 From: Jay George Date: Mon, 19 Jan 2026 14:53:50 +0000 Subject: [PATCH 03/31] Alert - improve markup --- resources/js/components/ui/Alert.vue | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/resources/js/components/ui/Alert.vue b/resources/js/components/ui/Alert.vue index d54f41c6de..d792cbb559 100644 --- a/resources/js/components/ui/Alert.vue +++ b/resources/js/components/ui/Alert.vue @@ -15,6 +15,17 @@ const props = defineProps({ const slots = useSlots(); const hasDefaultSlot = !!slots.default; +const alertRole = computed(() => { + // Use 'alert' for urgent messages that need immediate attention + // Use 'status' for informational messages + return props.variant === 'error' || props.variant === 'warning' ? 'alert' : 'status'; +}); + +const ariaLive = computed(() => { + // 'assertive' for urgent, 'polite' for informational + return props.variant === 'error' || props.variant === 'warning' ? 'assertive' : 'polite'; +}); + const alertClasses = computed(() => { return cva({ base: 'relative flex items-start gap-3 rounded-xl border p-4 text-sm', @@ -54,8 +65,19 @@ const defaultIcon = computed(() => {