@sparklingopinions/sparkling-ui 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +123 -2
- package/dist/_virtual/_plugin-vue_export-helper.js +8 -0
- package/dist/aliases.d.ts +688 -0
- package/dist/aliases.js +32 -0
- package/dist/aliases.js.map +1 -0
- package/dist/components/ActionBar/ActionBar.js +7 -0
- package/dist/components/ActionBar/ActionBar.js.map +1 -0
- package/dist/components/ActionBar/ActionBar.vue.d.ts +45 -0
- package/dist/components/ActionBar/ActionBar.vue_vue_type_script_setup_true_lang.js +85 -0
- package/dist/components/ActionBar/ActionBar.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/ActionBar/index.d.ts +2 -0
- package/dist/components/Alert/Alert.js +7 -0
- package/dist/components/Alert/Alert.js.map +1 -0
- package/dist/components/Alert/Alert.vue.d.ts +36 -0
- package/dist/components/Alert/Alert.vue_vue_type_script_setup_true_lang.js +83 -0
- package/dist/components/Alert/Alert.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Alert/index.d.ts +3 -0
- package/dist/components/AlertDialog/AlertDialog.js +7 -0
- package/dist/components/AlertDialog/AlertDialog.js.map +1 -0
- package/dist/components/AlertDialog/AlertDialog.vue.d.ts +11 -0
- package/dist/components/AlertDialog/AlertDialog.vue_vue_type_script_setup_true_lang.js +72 -0
- package/dist/components/AlertDialog/AlertDialog.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/AlertDialog/index.d.ts +2 -0
- package/dist/components/Avatar/Avatar.js +7 -0
- package/dist/components/Avatar/Avatar.js.map +1 -0
- package/dist/components/Avatar/Avatar.vue.d.ts +20 -0
- package/dist/components/Avatar/Avatar.vue_vue_type_script_setup_true_lang.js +50 -0
- package/dist/components/Avatar/Avatar.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Avatar/index.d.ts +2 -0
- package/dist/components/Badge/Badge.js +7 -0
- package/dist/components/Badge/Badge.js.map +1 -0
- package/dist/components/Badge/Badge.vue.d.ts +26 -0
- package/dist/components/Badge/Badge.vue_vue_type_script_setup_true_lang.js +56 -0
- package/dist/components/Badge/Badge.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Badge/index.d.ts +3 -0
- package/dist/components/Board/Board.js +7 -0
- package/dist/components/Board/Board.js.map +1 -0
- package/dist/components/Board/Board.vue.d.ts +48 -0
- package/dist/components/Board/Board.vue_vue_type_script_setup_true_lang.js +135 -0
- package/dist/components/Board/Board.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Board/index.d.ts +3 -0
- package/dist/components/Board/types.d.ts +9 -0
- package/dist/components/Button/Button.js +7 -0
- package/dist/components/Button/Button.js.map +1 -0
- package/dist/components/Button/Button.vue.d.ts +32 -0
- package/dist/components/Button/Button.vue_vue_type_script_setup_true_lang.js +72 -0
- package/dist/components/Button/Button.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Button/index.d.ts +2 -0
- package/dist/components/Calendar/Calendar.js +7 -0
- package/dist/components/Calendar/Calendar.js.map +1 -0
- package/dist/components/Calendar/Calendar.vue.d.ts +25 -0
- package/dist/components/Calendar/Calendar.vue_vue_type_script_setup_true_lang.js +106 -0
- package/dist/components/Calendar/Calendar.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Calendar/index.d.ts +2 -0
- package/dist/components/Checkbox/Checkbox.js +7 -0
- package/dist/components/Checkbox/Checkbox.js.map +1 -0
- package/dist/components/Checkbox/Checkbox.vue.d.ts +18 -0
- package/dist/components/Checkbox/Checkbox.vue_vue_type_script_setup_true_lang.js +63 -0
- package/dist/components/Checkbox/Checkbox.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Checkbox/index.d.ts +2 -0
- package/dist/components/DataList/DataList.js +7 -0
- package/dist/components/DataList/DataList.js.map +1 -0
- package/dist/components/DataList/DataList.vue.d.ts +63 -0
- package/dist/components/DataList/DataList.vue_vue_type_script_setup_true_lang.js +177 -0
- package/dist/components/DataList/DataList.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/DataList/index.d.ts +3 -0
- package/dist/components/DataList/types.d.ts +8 -0
- package/dist/components/Dialog/Dialog.js +7 -0
- package/dist/components/Dialog/Dialog.js.map +1 -0
- package/dist/components/Dialog/Dialog.vue.d.ts +66 -0
- package/dist/components/Dialog/Dialog.vue_vue_type_script_setup_true_lang.js +182 -0
- package/dist/components/Dialog/Dialog.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Dialog/focus.d.ts +5 -0
- package/dist/components/Dialog/focus.js +15 -0
- package/dist/components/Dialog/focus.js.map +1 -0
- package/dist/components/Dialog/index.d.ts +3 -0
- package/dist/components/DropdownMenu/DropdownMenu.js +7 -0
- package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -0
- package/dist/components/DropdownMenu/DropdownMenu.vue.d.ts +75 -0
- package/dist/components/DropdownMenu/DropdownMenu.vue_vue_type_script_setup_true_lang.js +117 -0
- package/dist/components/DropdownMenu/DropdownMenu.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/DropdownMenu/index.d.ts +2 -0
- package/dist/components/EmptyState/EmptyState.js +7 -0
- package/dist/components/EmptyState/EmptyState.js.map +1 -0
- package/dist/components/EmptyState/EmptyState.vue.d.ts +40 -0
- package/dist/components/EmptyState/EmptyState.vue_vue_type_script_setup_true_lang.js +51 -0
- package/dist/components/EmptyState/EmptyState.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/EmptyState/index.d.ts +2 -0
- package/dist/components/ErrorSummary/ErrorSummary.js +7 -0
- package/dist/components/ErrorSummary/ErrorSummary.js.map +1 -0
- package/dist/components/ErrorSummary/ErrorSummary.vue.d.ts +9 -0
- package/dist/components/ErrorSummary/ErrorSummary.vue_vue_type_script_setup_true_lang.js +30 -0
- package/dist/components/ErrorSummary/ErrorSummary.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/ErrorSummary/index.d.ts +2 -0
- package/dist/components/Filters/FilterChip.js +7 -0
- package/dist/components/Filters/FilterChip.js.map +1 -0
- package/dist/components/Filters/FilterChip.vue.d.ts +78 -0
- package/dist/components/Filters/FilterChip.vue_vue_type_script_setup_true_lang.js +300 -0
- package/dist/components/Filters/FilterChip.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Filters/FilterFrame.js +7 -0
- package/dist/components/Filters/FilterFrame.js.map +1 -0
- package/dist/components/Filters/FilterFrame.vue.d.ts +22 -0
- package/dist/components/Filters/FilterFrame.vue_vue_type_script_setup_true_lang.js +25 -0
- package/dist/components/Filters/FilterFrame.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Filters/FilterGlyph.js +7 -0
- package/dist/components/Filters/FilterGlyph.js.map +1 -0
- package/dist/components/Filters/FilterGlyph.vue.d.ts +7 -0
- package/dist/components/Filters/FilterGlyph.vue_vue_type_script_setup_true_lang.js +33 -0
- package/dist/components/Filters/FilterGlyph.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Filters/FilterMenu.js +7 -0
- package/dist/components/Filters/FilterMenu.js.map +1 -0
- package/dist/components/Filters/FilterMenu.vue.d.ts +46 -0
- package/dist/components/Filters/FilterMenu.vue_vue_type_script_setup_true_lang.js +159 -0
- package/dist/components/Filters/FilterMenu.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Filters/SortArrow.js +7 -0
- package/dist/components/Filters/SortArrow.js.map +1 -0
- package/dist/components/Filters/SortArrow.vue.d.ts +6 -0
- package/dist/components/Filters/SortArrow.vue_vue_type_script_setup_true_lang.js +20 -0
- package/dist/components/Filters/SortArrow.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Filters/SortMenu.js +7 -0
- package/dist/components/Filters/SortMenu.js.map +1 -0
- package/dist/components/Filters/SortMenu.vue.d.ts +43 -0
- package/dist/components/Filters/SortMenu.vue_vue_type_script_setup_true_lang.js +172 -0
- package/dist/components/Filters/SortMenu.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Filters/defaults.d.ts +10 -0
- package/dist/components/Filters/defaults.js +57 -0
- package/dist/components/Filters/defaults.js.map +1 -0
- package/dist/components/Filters/index.d.ts +8 -0
- package/dist/components/Filters/types.d.ts +27 -0
- package/dist/components/FormField/FormField.js +7 -0
- package/dist/components/FormField/FormField.js.map +1 -0
- package/dist/components/FormField/FormField.vue.d.ts +46 -0
- package/dist/components/FormField/FormField.vue_vue_type_script_setup_true_lang.js +74 -0
- package/dist/components/FormField/FormField.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/FormField/context.d.ts +23 -0
- package/dist/components/FormField/context.js +18 -0
- package/dist/components/FormField/context.js.map +1 -0
- package/dist/components/FormField/index.d.ts +2 -0
- package/dist/components/Icon/Icon.js +7 -0
- package/dist/components/Icon/Icon.js.map +1 -0
- package/dist/components/Icon/Icon.vue.d.ts +11 -0
- package/dist/components/Icon/Icon.vue_vue_type_script_setup_true_lang.js +31 -0
- package/dist/components/Icon/Icon.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Icon/colors.d.ts +24 -0
- package/dist/components/Icon/colors.js +28 -0
- package/dist/components/Icon/colors.js.map +1 -0
- package/dist/components/Icon/iconSet.d.ts +12 -0
- package/dist/components/Icon/iconSet.js +146 -0
- package/dist/components/Icon/iconSet.js.map +1 -0
- package/dist/components/Icon/index.d.ts +4 -0
- package/dist/components/Icon/resolver.d.ts +8 -0
- package/dist/components/Icon/resolver.js +34 -0
- package/dist/components/Icon/resolver.js.map +1 -0
- package/dist/components/ImageUpload/ImageUpload.js +7 -0
- package/dist/components/ImageUpload/ImageUpload.js.map +1 -0
- package/dist/components/ImageUpload/ImageUpload.vue.d.ts +38 -0
- package/dist/components/ImageUpload/ImageUpload.vue_vue_type_script_setup_true_lang.js +92 -0
- package/dist/components/ImageUpload/ImageUpload.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/ImageUpload/index.d.ts +2 -0
- package/dist/components/Input/Input.js +7 -0
- package/dist/components/Input/Input.js.map +1 -0
- package/dist/components/Input/Input.vue.d.ts +17 -0
- package/dist/components/Input/Input.vue_vue_type_script_setup_true_lang.js +32 -0
- package/dist/components/Input/Input.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Input/index.d.ts +2 -0
- package/dist/components/Kbd/Kbd.js +12 -0
- package/dist/components/Kbd/Kbd.js.map +1 -0
- package/dist/components/Kbd/Kbd.vue.d.ts +13 -0
- package/dist/components/Kbd/index.d.ts +1 -0
- package/dist/components/Pagination/Pagination.js +7 -0
- package/dist/components/Pagination/Pagination.js.map +1 -0
- package/dist/components/Pagination/Pagination.vue.d.ts +40 -0
- package/dist/components/Pagination/Pagination.vue_vue_type_script_setup_true_lang.js +112 -0
- package/dist/components/Pagination/Pagination.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Pagination/index.d.ts +2 -0
- package/dist/components/Pagination/items.d.ts +6 -0
- package/dist/components/Pagination/items.js +17 -0
- package/dist/components/Pagination/items.js.map +1 -0
- package/dist/components/Popover/Popover.js +7 -0
- package/dist/components/Popover/Popover.js.map +1 -0
- package/dist/components/Popover/Popover.vue.d.ts +40 -0
- package/dist/components/Popover/Popover.vue_vue_type_script_setup_true_lang.js +87 -0
- package/dist/components/Popover/Popover.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Popover/index.d.ts +2 -0
- package/dist/components/PropertyList/Editable.js +7 -0
- package/dist/components/PropertyList/Editable.js.map +1 -0
- package/dist/components/PropertyList/Editable.vue.d.ts +28 -0
- package/dist/components/PropertyList/Editable.vue_vue_type_script_setup_true_lang.js +126 -0
- package/dist/components/PropertyList/Editable.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/PropertyList/PropertyList.js +7 -0
- package/dist/components/PropertyList/PropertyList.js.map +1 -0
- package/dist/components/PropertyList/PropertyList.vue.d.ts +28 -0
- package/dist/components/PropertyList/PropertyList.vue_vue_type_script_setup_true_lang.js +53 -0
- package/dist/components/PropertyList/PropertyList.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/PropertyList/index.d.ts +3 -0
- package/dist/components/PropertyRow/Collapsible.js +7 -0
- package/dist/components/PropertyRow/Collapsible.js.map +1 -0
- package/dist/components/PropertyRow/Collapsible.vue.d.ts +22 -0
- package/dist/components/PropertyRow/Collapsible.vue_vue_type_script_setup_true_lang.js +37 -0
- package/dist/components/PropertyRow/Collapsible.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/PropertyRow/PropertyRow.js +7 -0
- package/dist/components/PropertyRow/PropertyRow.js.map +1 -0
- package/dist/components/PropertyRow/PropertyRow.vue.d.ts +31 -0
- package/dist/components/PropertyRow/PropertyRow.vue_vue_type_script_setup_true_lang.js +25 -0
- package/dist/components/PropertyRow/PropertyRow.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/PropertyRow/index.d.ts +4 -0
- package/dist/components/Radio/Radio.js +7 -0
- package/dist/components/Radio/Radio.js.map +1 -0
- package/dist/components/Radio/Radio.vue.d.ts +28 -0
- package/dist/components/Radio/Radio.vue_vue_type_script_setup_true_lang.js +46 -0
- package/dist/components/Radio/Radio.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Radio/index.d.ts +2 -0
- package/dist/components/SegmentedControl/SegmentedControl.js +7 -0
- package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -0
- package/dist/components/SegmentedControl/SegmentedControl.vue.d.ts +32 -0
- package/dist/components/SegmentedControl/SegmentedControl.vue_vue_type_script_setup_true_lang.js +48 -0
- package/dist/components/SegmentedControl/SegmentedControl.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/SegmentedControl/index.d.ts +2 -0
- package/dist/components/Select/Select.js +7 -0
- package/dist/components/Select/Select.js.map +1 -0
- package/dist/components/Select/Select.vue.d.ts +69 -0
- package/dist/components/Select/Select.vue_vue_type_script_setup_true_lang.js +318 -0
- package/dist/components/Select/Select.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Select/index.d.ts +3 -0
- package/dist/components/Select/types.d.ts +9 -0
- package/dist/components/Skeleton/Skeleton.js +7 -0
- package/dist/components/Skeleton/Skeleton.js.map +1 -0
- package/dist/components/Skeleton/Skeleton.vue.d.ts +15 -0
- package/dist/components/Skeleton/Skeleton.vue_vue_type_script_setup_true_lang.js +26 -0
- package/dist/components/Skeleton/Skeleton.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Skeleton/index.d.ts +2 -0
- package/dist/components/Spinner/Spinner.js +7 -0
- package/dist/components/Spinner/Spinner.js.map +1 -0
- package/dist/components/Spinner/Spinner.vue.d.ts +12 -0
- package/dist/components/Spinner/Spinner.vue_vue_type_script_setup_true_lang.js +38 -0
- package/dist/components/Spinner/Spinner.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Spinner/index.d.ts +2 -0
- package/dist/components/Table/Table.js +7 -0
- package/dist/components/Table/Table.js.map +1 -0
- package/dist/components/Table/Table.vue.d.ts +56 -0
- package/dist/components/Table/Table.vue_vue_type_script_setup_true_lang.js +187 -0
- package/dist/components/Table/Table.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Table/index.d.ts +3 -0
- package/dist/components/Table/types.d.ts +12 -0
- package/dist/components/Tag/Tag.js +7 -0
- package/dist/components/Tag/Tag.js.map +1 -0
- package/dist/components/Tag/Tag.vue.d.ts +39 -0
- package/dist/components/Tag/Tag.vue_vue_type_script_setup_true_lang.js +52 -0
- package/dist/components/Tag/Tag.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Tag/index.d.ts +2 -0
- package/dist/components/Textarea/Textarea.js +7 -0
- package/dist/components/Textarea/Textarea.js.map +1 -0
- package/dist/components/Textarea/Textarea.vue.d.ts +19 -0
- package/dist/components/Textarea/Textarea.vue_vue_type_script_setup_true_lang.js +45 -0
- package/dist/components/Textarea/Textarea.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Textarea/index.d.ts +2 -0
- package/dist/components/Toast/ToastMessage.js +7 -0
- package/dist/components/Toast/ToastMessage.js.map +1 -0
- package/dist/components/Toast/ToastMessage.vue.d.ts +20 -0
- package/dist/components/Toast/ToastMessage.vue_vue_type_script_setup_true_lang.js +52 -0
- package/dist/components/Toast/ToastMessage.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Toast/Toaster.js +7 -0
- package/dist/components/Toast/Toaster.js.map +1 -0
- package/dist/components/Toast/Toaster.vue.d.ts +30 -0
- package/dist/components/Toast/Toaster.vue_vue_type_script_setup_true_lang.js +86 -0
- package/dist/components/Toast/Toaster.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Toast/index.d.ts +2 -0
- package/dist/components/Tooltip/Tooltip.js +7 -0
- package/dist/components/Tooltip/Tooltip.js.map +1 -0
- package/dist/components/Tooltip/Tooltip.vue.d.ts +24 -0
- package/dist/components/Tooltip/Tooltip.vue_vue_type_script_setup_true_lang.js +43 -0
- package/dist/components/Tooltip/Tooltip.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/Tooltip/index.d.ts +2 -0
- package/dist/components/TypingIndicator/TypingIndicator.js +19 -0
- package/dist/components/TypingIndicator/TypingIndicator.js.map +1 -0
- package/dist/components/TypingIndicator/TypingIndicator.vue.d.ts +3 -0
- package/dist/components/TypingIndicator/index.d.ts +1 -0
- package/dist/components/internal/CheckIcon.js +19 -0
- package/dist/components/internal/CheckIcon.js.map +1 -0
- package/dist/components/internal/CheckIcon.vue.d.ts +3 -0
- package/dist/components/internal/ChevronIcon.js +7 -0
- package/dist/components/internal/ChevronIcon.js.map +1 -0
- package/dist/components/internal/ChevronIcon.vue.d.ts +6 -0
- package/dist/components/internal/ChevronIcon.vue_vue_type_script_setup_true_lang.js +22 -0
- package/dist/components/internal/ChevronIcon.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/internal/CloseIcon.js +20 -0
- package/dist/components/internal/CloseIcon.js.map +1 -0
- package/dist/components/internal/CloseIcon.vue.d.ts +3 -0
- package/dist/components/internal/CloseSmallIcon.js +20 -0
- package/dist/components/internal/CloseSmallIcon.js.map +1 -0
- package/dist/components/internal/CloseSmallIcon.vue.d.ts +3 -0
- package/dist/components/internal/PhotoIcon.js +22 -0
- package/dist/components/internal/PhotoIcon.js.map +1 -0
- package/dist/components/internal/PhotoIcon.vue.d.ts +3 -0
- package/dist/composables/toast.d.ts +23 -0
- package/dist/composables/toast.js +32 -0
- package/dist/composables/toast.js.map +1 -0
- package/dist/composables/useColorMode.d.ts +18 -0
- package/dist/composables/useColorMode.js +34 -0
- package/dist/composables/useColorMode.js.map +1 -0
- package/dist/composables/useConfirm.d.ts +16 -0
- package/dist/composables/useConfirm.js +15 -0
- package/dist/composables/useConfirm.js.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.js +48 -0
- package/dist/utils/dates.d.ts +10 -0
- package/dist/utils/dates.js +6 -0
- package/dist/utils/dates.js.map +1 -0
- package/dist/utils/hues.d.ts +4 -0
- package/dist/utils/hues.js +15 -0
- package/dist/utils/hues.js.map +1 -0
- package/package.json +83 -4
- package/src/styles/base.css +49 -0
- package/src/styles/tailwind.css +464 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Sparkling Opinions
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,124 @@
|
|
|
1
|
-
#
|
|
1
|
+
# sparkling-ui
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A product-agnostic Vue 3 component library for calm, dense, work-focused software: lists, records, inboxes, settings. Components ship styled by semantic tokens, and each product themes them; the library brings no logo or product vocabulary. Accessibility, focus, keyboard and positioning come from Reka UI underneath, but apps only ever import from sparkling-ui.
|
|
4
|
+
|
|
5
|
+
Its look and API follow the Sparkling UI design system in Claude Design.
|
|
6
|
+
|
|
7
|
+
For architecture and conventions, see [`CLAUDE.md`](CLAUDE.md).
|
|
8
|
+
|
|
9
|
+
## Requirements
|
|
10
|
+
|
|
11
|
+
- Node.js 22.12+ (CI uses the version in `.nvmrc`)
|
|
12
|
+
- In the app: Vue 3.5+ and Tailwind CSS 4
|
|
13
|
+
|
|
14
|
+
## Using it in an app
|
|
15
|
+
|
|
16
|
+
The package is published to npm as `@sparklingopinions/sparkling-ui`. Apps install it under the name `sparkling-ui`, so imports read `from 'sparkling-ui'`.
|
|
17
|
+
|
|
18
|
+
1. Install it:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npm install sparkling-ui@npm:@sparklingopinions/sparkling-ui
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
2. Import its stylesheet at the end of the app's Tailwind entry, after the app's own theme:
|
|
25
|
+
|
|
26
|
+
```css
|
|
27
|
+
@import 'tailwindcss';
|
|
28
|
+
|
|
29
|
+
@theme {
|
|
30
|
+
/* the app's theme */
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@import 'sparkling-ui/tailwind.css';
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
The app's Tailwind build then generates the classes the components use, next to its own. It has to come after the theme: a theme that resets a namespace (`--color-*: initial`) would remove the library's colours too. If the app's PostCSS inlines imports before Tailwind runs (`postcss-import`), leave `sparkling-ui` imports to Tailwind, which reads the package's `exports`.
|
|
37
|
+
|
|
38
|
+
For pages without defaults of their own (text colour, canvas, selection, scrollbars), also import `sparkling-ui/base.css`.
|
|
39
|
+
|
|
40
|
+
3. Brand the components by overriding any token, in any CSS file of the app. The library's defaults have zero specificity, so a plain `:root` rule wins wherever it sits:
|
|
41
|
+
|
|
42
|
+
```css
|
|
43
|
+
/* One value for both modes */
|
|
44
|
+
:root,
|
|
45
|
+
[data-mode] {
|
|
46
|
+
--sui-radius-button: 0.375rem;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/* Or one per mode: colours are RGB channels */
|
|
50
|
+
:root,
|
|
51
|
+
[data-mode='light'] {
|
|
52
|
+
--sui-accent: 47 79 201;
|
|
53
|
+
--sui-accent-hover: 39 66 174;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
[data-mode='dark'] {
|
|
57
|
+
--sui-accent: 143 168 255;
|
|
58
|
+
--sui-accent-hover: 166 185 255;
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Include `[data-mode]` in the selector, so a section that sets its own mode (`<div data-mode="dark">`) gets the app's values too. A colour set only for light also applies in dark (`:root` is the page in either mode), replacing the dark default: set both, as above. Colour roles (`--sui-surface`, `--sui-ink`, `--sui-accent`, `--sui-danger` and the rest) are listed in Storybook under Foundations/Colors, and Foundations/Contrast checks every text pair against WCAG AA in the current theme; keep text roles (`accent`, `danger`) and fill roles (`accent-solid`, `danger-solid`) apart when overriding them; control borders use `line-control`, which should keep 3:1 against the surfaces; sizes and shapes are `--sui-button-height`, `--sui-button-padding-x`, `--sui-button-text`, `--sui-radius-button` and `--sui-shadow-raised`, and the focus ring's are `--sui-focus-width`, `--sui-focus-offset`, `--sui-focus-offset-field` and `--sui-focus-offset-inset`. The defaults are MustLoop's, and Storybook's toolbar switches to a second theme (Tamable's Desk) to show what an override set looks like (`.storybook/desk.css`).
|
|
63
|
+
|
|
64
|
+
4. Import components where they're used:
|
|
65
|
+
|
|
66
|
+
```ts
|
|
67
|
+
import { Button } from 'sparkling-ui'
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
5. `Icon` draws the library's set of 78 icons by name: `<Icon name="users" color="ink-muted" />`. Older names (`people`, `companies`, `dot-vertical`...) resolve as aliases, and `iconNames` lists the set. To add icons or replace some of the set, register a resolver once, before mounting; names it returns a component for win. With SVG files imported as components (e.g. `vite-svg-loader`):
|
|
71
|
+
|
|
72
|
+
```ts
|
|
73
|
+
import { type Component, defineAsyncComponent } from 'vue'
|
|
74
|
+
|
|
75
|
+
import { setIconResolver } from 'sparkling-ui'
|
|
76
|
+
|
|
77
|
+
const own = import.meta.glob('./assets/icons/*.svg')
|
|
78
|
+
setIconResolver((name) => {
|
|
79
|
+
const file = own[`./assets/icons/${name}.svg`]
|
|
80
|
+
return file && defineAsyncComponent(file as () => Promise<Component>)
|
|
81
|
+
})
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
6. For light and dark, call `initColorMode()` once before mounting (it sets `data-mode` on `<html>` from the saved choice or the system's); then `useColorMode()` gives `mode`, `resolved`, `isDark`, `setMode` and `toggle`, and `useForceLightMode()` keeps a page light while it's mounted.
|
|
85
|
+
|
|
86
|
+
7. For toasts, mount one `<Toaster />` near the app root, then call `toast.info('Draft saved')`, `toast.success(...)` or `toast.error(...)` anywhere, with `{ detail, life, closable }` as options.
|
|
87
|
+
|
|
88
|
+
8. To use `useConfirm`, mount one `<AlertDialog />` near the app root (it takes default `confirm-label` and `cancel-label` for translation). Then anywhere:
|
|
89
|
+
|
|
90
|
+
```ts
|
|
91
|
+
const confirm = useConfirm()
|
|
92
|
+
if (await confirm({ title: 'Revoke key?', message: 'It stops working right away.', confirmLabel: 'Revoke', confirmVariant: 'danger' })) {
|
|
93
|
+
// revoke
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Local setup
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
npm install
|
|
101
|
+
npx playwright install chromium # once, for the story tests
|
|
102
|
+
npm run dev # Storybook on http://localhost:6006
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
To try unreleased changes in an app, install the local checkout: `npm install sparkling-ui@file:../sparkling-ui` in the app, then `npm run build` here after each change.
|
|
106
|
+
|
|
107
|
+
## Commands
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
npm run dev # Storybook
|
|
111
|
+
npm run build # Library build into dist/, with type declarations
|
|
112
|
+
npm run type-check # vue-tsc only
|
|
113
|
+
npm run lint # ESLint with auto-fix
|
|
114
|
+
npm run format # Prettier on src/ and .storybook/
|
|
115
|
+
npm run test:unit # Vitest unit tests (jsdom, with an axe check per component)
|
|
116
|
+
npm run test:stories # Every story as a browser test, in light and dark, failing on any axe violation
|
|
117
|
+
npm run changeset # Describe a change for the next release
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Releasing
|
|
121
|
+
|
|
122
|
+
Every PR that changes what apps get adds a changeset (`npm run changeset`). Merging to `main` opens a "Version packages" PR; merging that one publishes the new version to npm, with provenance, and tags it.
|
|
123
|
+
|
|
124
|
+
Storybook is published to GitHub Pages from `main`: https://sparklingopinions.github.io/sparkling-ui/
|