@globalbrain/sefirot 4.2.0 → 4.3.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.
@@ -1,6 +1,6 @@
1
1
  <script setup lang="ts">
2
- import SControlActionBarButton from './SControlActionBarButton.vue'
3
2
  import IconX from '~icons/ph/x-bold'
3
+ import SControlActionBarButton from './SControlActionBarButton.vue'
4
4
 
5
5
  defineProps<{
6
6
  as?: string
@@ -1,9 +1,9 @@
1
1
  <script setup lang="ts">
2
+ import IconArrowsInLineVertical from '~icons/ph/arrows-in-line-vertical-bold'
3
+ import IconArrowsOutLineVertical from '~icons/ph/arrows-out-line-vertical-bold'
2
4
  import { computed, shallowRef } from 'vue'
3
5
  import { useCardState } from '../composables/Card'
4
6
  import SControlActionBarButton from './SControlActionBarButton.vue'
5
- import IconArrowsInLineVertical from '~icons/ph/arrows-in-line-vertical-bold'
6
- import IconArrowsOutLineVertical from '~icons/ph/arrows-out-line-vertical-bold'
7
7
 
8
8
  const props = defineProps<{
9
9
  as?: string
@@ -1,10 +1,10 @@
1
1
  <script setup lang="ts">
2
+ import IconMagnifyingGlass from '~icons/ph/magnifying-glass-bold'
2
3
  import { computed } from 'vue'
3
4
  import { useControlSize } from '../composables/Control'
4
5
  import { useTrans } from '../composables/Lang'
5
6
  import { type Validatable } from '../composables/Validation'
6
7
  import SInputText, { type Align, type TextColor } from './SInputText.vue'
7
- import IconMagnifyingGlass from '~icons/ph/magnifying-glass-bold'
8
8
 
9
9
  const props = defineProps<{
10
10
  placeholder?: string
@@ -1,9 +1,9 @@
1
1
  <script setup lang="ts">
2
+ import IconDownloadSimple from '~icons/ph/download-simple-bold'
3
+ import IconFileText from '~icons/ph/file-text-bold'
2
4
  import { computed } from 'vue'
3
5
  import SButton from './SButton.vue'
4
6
  import SDescEmpty from './SDescEmpty.vue'
5
- import IconDownloadSimple from '~icons/ph/download-simple-bold'
6
- import IconFileText from '~icons/ph/file-text-bold'
7
7
 
8
8
  export interface Item {
9
9
  name: string
@@ -1,10 +1,10 @@
1
1
  <script setup lang="ts">
2
+ import IconCheck from '~icons/ph/check'
2
3
  import Fuse from 'fuse.js'
3
4
  import { type MaybeRef, computed, onMounted, ref, unref } from 'vue'
4
5
  import { type DropdownSectionFilterOption, type DropdownSectionFilterSelectedValue } from '../composables/Dropdown'
5
6
  import { useTrans } from '../composables/Lang'
6
7
  import SDropdownSectionFilterItem from './SDropdownSectionFilterItem.vue'
7
- import IconCheck from '~icons/ph/check'
8
8
 
9
9
  const props = defineProps<{
10
10
  search?: boolean
@@ -1,10 +1,10 @@
1
1
  <script setup lang="ts">
2
- import { computed } from 'vue'
3
2
  import IconCheckCircleFill from '~icons/ph/check-circle-fill'
4
3
  import IconCircle from '~icons/ph/circle-bold'
5
4
  import IconCircleDashed from '~icons/ph/circle-dashed-bold'
6
5
  import IconCircleNotch from '~icons/ph/circle-notch-bold'
7
6
  import IconXCircle from '~icons/ph/x-circle-bold'
7
+ import { computed } from 'vue'
8
8
 
9
9
  export type Size = 'nano' | 'mini' | 'small' | 'medium' | 'large' | 'jumbo'
10
10
  export type State = 'pending' | 'ready' | 'queued' | 'running' | 'completed' | 'failed'
@@ -1,4 +1,5 @@
1
1
  <script setup lang="ts">
2
+ import IconCaretDown from '~icons/ph/caret-down-bold'
2
3
  import { type Component, computed, ref } from 'vue'
3
4
  import {
4
5
  type DropdownSection,
@@ -8,7 +9,6 @@ import {
8
9
  import { useFlyout } from '../composables/Flyout'
9
10
  import { isString } from '../support/Utils'
10
11
  import SDropdown from './SDropdown.vue'
11
- import IconCaretDown from '~icons/ph/caret-down-bold'
12
12
 
13
13
  const props = withDefaults(defineProps<{
14
14
  label?: Component | string
@@ -1,8 +1,8 @@
1
1
  <script setup lang="ts">
2
+ import IconQuestion from '~icons/ph/question'
2
3
  import { type Component, computed, unref, useSlots } from 'vue'
3
4
  import { type Validatable } from '../composables/Validation'
4
5
  import STooltip from './STooltip.vue'
5
- import IconQuestion from '~icons/ph/question'
6
6
 
7
7
  type Color = 'neutral' | 'mute' | 'info' | 'success' | 'warning' | 'danger'
8
8
 
@@ -1,9 +1,9 @@
1
1
  <script setup lang="ts">
2
+ import IconCheck from '~icons/ph/check-bold'
3
+ import IconMinus from '~icons/ph/minus-bold'
2
4
  import { type Component, computed } from 'vue'
3
5
  import { type Validatable } from '../composables/Validation'
4
6
  import SInputBase from './SInputBase.vue'
5
- import IconCheck from '~icons/ph/check-bold'
6
- import IconMinus from '~icons/ph/minus-bold'
7
7
 
8
8
  export type Size = 'mini' | 'small' | 'medium'
9
9
  export type Color = 'neutral' | 'mute' | 'info' | 'success' | 'warning' | 'danger'
@@ -1,4 +1,6 @@
1
1
  <script setup lang="ts">
2
+ import IconCaretDown from '~icons/ph/caret-down-bold'
3
+ import IconCaretUp from '~icons/ph/caret-up-bold'
2
4
  import xor from 'lodash-es/xor'
3
5
  import { type Component, computed, ref } from 'vue'
4
6
  import { type DropdownSectionFilter, useManualDropdownPosition } from '../composables/Dropdown'
@@ -7,8 +9,6 @@ import { type Validatable } from '../composables/Validation'
7
9
  import SDropdown from './SDropdown.vue'
8
10
  import SInputBase from './SInputBase.vue'
9
11
  import SInputDropdownItem from './SInputDropdownItem.vue'
10
- import IconCaretDown from '~icons/ph/caret-down-bold'
11
- import IconCaretUp from '~icons/ph/caret-up-bold'
12
12
 
13
13
  export type Size = 'mini' | 'small' | 'medium'
14
14
  export type Color = 'neutral' | 'mute' | 'info' | 'success' | 'warning' | 'danger'
@@ -1,6 +1,6 @@
1
1
  <script setup lang="ts">
2
- import SAvatar from './SAvatar.vue'
3
2
  import IconX from '~icons/ph/x-bold'
3
+ import SAvatar from './SAvatar.vue'
4
4
 
5
5
  export type Size = 'mini' | 'small' | 'medium'
6
6
 
@@ -1,10 +1,10 @@
1
1
  <script setup lang="ts">
2
+ import IconFileText from '~icons/ph/file-text'
3
+ import IconTrash from '~icons/ph/trash'
2
4
  import { computed } from 'vue'
3
5
  import { formatSize } from '../support/File'
4
6
  import SButton from './SButton.vue'
5
7
  import SCardBlock from './SCardBlock.vue'
6
- import IconFileText from '~icons/ph/file-text'
7
- import IconTrash from '~icons/ph/trash'
8
8
 
9
9
  const props = defineProps<{
10
10
  file: File
@@ -1,10 +1,10 @@
1
1
  <script setup lang="ts">
2
+ import IconImage from '~icons/ph/image-bold'
2
3
  import { type Component, computed, ref } from 'vue'
3
4
  import { useImageSrcFromFile } from '../composables/Image'
4
5
  import { type Validatable } from '../composables/Validation'
5
6
  import SButton from './SButton.vue'
6
7
  import SInputBase from './SInputBase.vue'
7
- import IconImage from '~icons/ph/image-bold'
8
8
 
9
9
  export type Size = 'mini' | 'small' | 'medium'
10
10
  export type CheckColor = 'neutral' | 'mute' | 'info' | 'success' | 'warning' | 'danger'
@@ -1,9 +1,9 @@
1
1
  <script setup lang="ts">
2
+ import IconCaretDown from '~icons/ph/caret-down-bold'
3
+ import IconCaretUp from '~icons/ph/caret-up-bold'
2
4
  import { type Component, computed, ref } from 'vue'
3
5
  import { type Validatable } from '../composables/Validation'
4
6
  import SInputBase from './SInputBase.vue'
5
- import IconCaretDown from '~icons/ph/caret-down-bold'
6
- import IconCaretUp from '~icons/ph/caret-up-bold'
7
7
 
8
8
  export type Size = 'mini' | 'small' | 'medium'
9
9
  export type Color = 'neutral' | 'mute' | 'info' | 'success' | 'warning' | 'danger'
@@ -1,4 +1,6 @@
1
1
  <script setup lang="ts">
2
+ import IconLockKey from '~icons/ph/lock-key-fill'
3
+ import IconGoogle from '~icons/ri/google-fill'
2
4
  import { computed, ref } from 'vue'
3
5
  import { usePower } from '../composables/Power'
4
6
  import SButton from './SButton.vue'
@@ -6,8 +8,6 @@ import SLink from './SLink.vue'
6
8
  import SLoginPagePasswordDialog from './SLoginPagePasswordDialog.vue'
7
9
  import SModal from './SModal.vue'
8
10
  import SIconGbLogoWhite from './icon/SIconGbLogoWhite.vue'
9
- import IconLockKey from '~icons/ph/lock-key-fill'
10
- import IconGoogle from '~icons/ri/google-fill'
11
11
 
12
12
  export interface CoverTitle {
13
13
  text: string
@@ -1,10 +1,10 @@
1
1
  <script setup lang="ts">
2
+ import IconCaretLeft from '~icons/ph/caret-left-bold'
3
+ import IconCaretRight from '~icons/ph/caret-right-bold'
2
4
  import { computed } from 'vue'
3
5
  import { useTrans } from '../composables/Lang'
4
6
  import { format } from '../support/Num'
5
7
  import SButton from './SButton.vue'
6
- import IconCaretLeft from '~icons/ph/caret-left-bold'
7
- import IconCaretRight from '~icons/ph/caret-right-bold'
8
8
 
9
9
  export type Size = 'mini' | 'small' | 'medium'
10
10
  export type Align = 'left' | 'center' | 'right'
@@ -1,7 +1,7 @@
1
1
  <script setup lang="ts">
2
+ import IconX from '~icons/ph/x'
2
3
  import { type SnackbarAction, useSnackbars } from '../stores/Snackbars'
3
4
  import SButton from './SButton.vue'
4
- import IconX from '~icons/ph/x'
5
5
 
6
6
  const props = defineProps<{
7
7
  id: number
@@ -1,8 +1,8 @@
1
1
  <script setup lang="ts">
2
- import { type PropType } from 'vue'
3
- import { type BarMode, type StepStatus } from '../composables/Step'
4
2
  import IconCheck from '~icons/ph/check'
5
3
  import IconX from '~icons/ph/x'
4
+ import { type PropType } from 'vue'
5
+ import { type BarMode, type StepStatus } from '../composables/Step'
6
6
 
7
7
  defineProps({
8
8
  status: { type: String as PropType<StepStatus>, required: true },
@@ -1,9 +1,9 @@
1
1
  <script setup lang="ts">
2
+ import IconDotsThree from '~icons/ph/dots-three'
2
3
  import { computed, nextTick, ref, unref, watch } from 'vue'
3
4
  import { type DropdownSection } from '../composables/Dropdown'
4
5
  import { useFlyout } from '../composables/Flyout'
5
6
  import SDropdown from './SDropdown.vue'
6
- import IconDotsThree from '~icons/ph/dots-three'
7
7
 
8
8
  const props = withDefaults(defineProps<{
9
9
  name: string
@@ -1,8 +1,8 @@
1
1
  <script setup lang="ts">
2
- import { computed } from 'vue'
3
- import { format } from '../support/Num'
4
2
  import IconCaretLeft from '~icons/ph/caret-left-bold'
5
3
  import IconCaretRight from '~icons/ph/caret-right-bold'
4
+ import { computed } from 'vue'
5
+ import { format } from '../support/Num'
6
6
 
7
7
  const props = defineProps<{
8
8
  total?: number | null
@@ -1,8 +1,8 @@
1
1
  <script setup lang="ts">
2
+ import IconCaretDown from '~icons/ph/caret-down-bold'
2
3
  import { type DropdownSection } from '../composables/Dropdown'
3
4
  import { useFlyout } from '../composables/Flyout'
4
5
  import SDropdown from './SDropdown.vue'
5
- import IconCaretDown from '~icons/ph/caret-down-bold'
6
6
 
7
7
  defineProps<{
8
8
  label: string
package/lib/http/Http.ts CHANGED
@@ -12,6 +12,8 @@ import { stringify } from 'qs'
12
12
  import { type Lang } from '../composables/Lang'
13
13
  import { isBlob, isError, isFormData, isRequest, isResponse, isString } from '../support/Utils'
14
14
 
15
+ type Awaitable<T> = T | PromiseLike<T>
16
+
15
17
  export interface HttpClient {
16
18
  <T = any>(request: FetchRequest, options?: Omit<FetchOptions, 'method'>): Promise<T>
17
19
  raw<T = any>(request: FetchRequest, options?: Omit<FetchOptions, 'method'>): Promise<FetchResponse<T>>
@@ -23,6 +25,7 @@ export interface HttpOptions {
23
25
  client?: HttpClient
24
26
  lang?: Lang
25
27
  payloadKey?: string
28
+ headers?: () => Awaitable<Record<string, string>>
26
29
  }
27
30
 
28
31
  export class Http {
@@ -31,6 +34,7 @@ export class Http {
31
34
  private static client: HttpClient = ofetch
32
35
  private static lang: Lang | undefined = undefined
33
36
  private static payloadKey = '__payload__'
37
+ private static headers: () => Awaitable<Record<string, string>> = async () => ({})
34
38
 
35
39
  static config(options: HttpOptions) {
36
40
  if (options.baseUrl) {
@@ -48,6 +52,9 @@ export class Http {
48
52
  if (options.payloadKey) {
49
53
  Http.payloadKey = options.payloadKey
50
54
  }
55
+ if (options.headers) {
56
+ Http.headers = options.headers
57
+ }
51
58
  }
52
59
 
53
60
  private async ensureXsrfToken(): Promise<string | undefined> {
@@ -74,10 +81,7 @@ export class Http {
74
81
  const xsrfToken
75
82
  = ['POST', 'PUT', 'PATCH', 'DELETE'].includes(method || '') && (await this.ensureXsrfToken())
76
83
 
77
- const queryString = stringify(
78
- { ...params, ...query },
79
- { arrayFormat: 'brackets', encodeValuesOnly: true }
80
- )
84
+ const queryString = stringify({ ...params, ...query }, { encodeValuesOnly: true })
81
85
 
82
86
  return [
83
87
  `${url}${queryString ? `?${queryString}` : ''}`,
@@ -88,6 +92,7 @@ export class Http {
88
92
  ...options,
89
93
  headers: {
90
94
  Accept: 'application/json',
95
+ ...(await Http.headers()),
91
96
  ...(xsrfToken && { 'X-Xsrf-Token': xsrfToken }),
92
97
  ...(Http.lang && { 'Accept-Language': Http.lang }),
93
98
  ...options.headers
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@globalbrain/sefirot",
3
3
  "type": "module",
4
- "version": "4.2.0",
5
- "packageManager": "pnpm@9.6.0",
4
+ "version": "4.3.0",
5
+ "packageManager": "pnpm@9.9.0",
6
6
  "description": "Vue Components for Global Brain Design System.",
7
7
  "author": "Kia Ishii <ka.ishii@globalbrains.com>",
8
8
  "license": "MIT",
@@ -29,9 +29,9 @@
29
29
  "docs:build": "vitepress build docs",
30
30
  "docs:preview": "vitepress serve docs --port 4011",
31
31
  "story": "pnpm story:dev",
32
- "story:dev": "histoire dev --port 4010",
33
- "story:build": "histoire build",
34
- "story:preview": "histoire preview --port 4010",
32
+ "story:dev": "NODE_NO_WARNINGS=1 VITE_CJS_IGNORE_WARNING=1 histoire dev --port 4010",
33
+ "story:build": "NODE_NO_WARNINGS=1 VITE_CJS_IGNORE_WARNING=1 histoire build",
34
+ "story:preview": "NODE_NO_WARNINGS=1 VITE_CJS_IGNORE_WARNING=1 histoire preview --port 4010",
35
35
  "type": "vue-tsc --noEmit",
36
36
  "lint": "eslint --fix .",
37
37
  "lint:fail": "eslint .",
@@ -43,30 +43,30 @@
43
43
  "release": "release-it"
44
44
  },
45
45
  "peerDependencies": {
46
- "@iconify-json/ph": "^1.1.14",
47
- "@iconify-json/ri": "^1.1.22",
46
+ "@iconify-json/ph": "^1.2.0",
47
+ "@iconify-json/ri": "^1.2.0",
48
48
  "@types/body-scroll-lock": "^3.1.2",
49
49
  "@types/lodash-es": "^4.17.12",
50
50
  "@types/markdown-it": "^14.1.2",
51
- "@vue/reactivity": "^3.4.36",
51
+ "@vue/reactivity": "^3.5.1",
52
52
  "@vuelidate/core": "^2.0.3",
53
53
  "@vuelidate/validators": "^2.0.4",
54
- "@vueuse/core": "^10.11.0",
54
+ "@vueuse/core": "^11.0.3",
55
55
  "body-scroll-lock": "4.0.0-beta.0",
56
- "dayjs": "^1.11.12",
56
+ "dayjs": "^1.11.13",
57
57
  "fuse.js": "^7.0.0",
58
58
  "lodash-es": "^4.17.21",
59
59
  "markdown-it": "^14.1.0",
60
60
  "normalize.css": "^8.0.1",
61
- "pinia": "^2.2.1",
62
- "postcss": "^8.4.41",
61
+ "pinia": "^2.2.2",
62
+ "postcss": "^8.4.45",
63
63
  "postcss-nested": "^6.2.0",
64
64
  "v-calendar": "^3.1.2",
65
- "vue": "^3.4.36",
66
- "vue-router": "^4.4.2"
65
+ "vue": "^3.5.1",
66
+ "vue-router": "^4.4.3"
67
67
  },
68
68
  "dependencies": {
69
- "@sentry/browser": "^8.24.0",
69
+ "@sentry/browser": "^8.28.0",
70
70
  "@tanstack/vue-virtual": "3.0.0-beta.62",
71
71
  "@tinyhttp/content-disposition": "^2.2.1",
72
72
  "@tinyhttp/cookie": "^2.1.1",
@@ -75,27 +75,27 @@
75
75
  "file-saver": "^2.0.5",
76
76
  "ofetch": "^1.3.4",
77
77
  "qs": "^6.13.0",
78
- "unplugin-icons": "^0.19.1"
78
+ "unplugin-icons": "^0.19.2"
79
79
  },
80
80
  "devDependencies": {
81
- "@globalbrain/eslint-config": "^1.6.0",
81
+ "@globalbrain/eslint-config": "^1.7.1",
82
82
  "@histoire/plugin-vue": "0.16.5",
83
- "@iconify-json/ph": "^1.1.14",
84
- "@iconify-json/ri": "^1.1.22",
83
+ "@iconify-json/ph": "^1.2.0",
84
+ "@iconify-json/ri": "^1.2.0",
85
85
  "@release-it/conventional-changelog": "^8.0.1",
86
86
  "@types/body-scroll-lock": "^3.1.2",
87
87
  "@types/lodash-es": "^4.17.12",
88
88
  "@types/markdown-it": "^14.1.2",
89
- "@types/node": "^22.1.0",
90
- "@vitejs/plugin-vue": "^5.1.2",
89
+ "@types/node": "^22.5.3",
90
+ "@vitejs/plugin-vue": "^5.1.3",
91
91
  "@vitest/coverage-v8": "^2.0.5",
92
- "@vue/reactivity": "^3.4.36",
92
+ "@vue/reactivity": "^3.5.1",
93
93
  "@vue/test-utils": "^2.4.6",
94
94
  "@vuelidate/core": "^2.0.3",
95
95
  "@vuelidate/validators": "^2.0.4",
96
- "@vueuse/core": "^10.11.0",
96
+ "@vueuse/core": "^11.0.3",
97
97
  "body-scroll-lock": "4.0.0-beta.0",
98
- "dayjs": "^1.11.12",
98
+ "dayjs": "^1.11.13",
99
99
  "eslint": "8.57.0",
100
100
  "fuse.js": "^7.0.0",
101
101
  "happy-dom": "^14.12.3",
@@ -103,18 +103,18 @@
103
103
  "lodash-es": "^4.17.21",
104
104
  "markdown-it": "^14.1.0",
105
105
  "normalize.css": "^8.0.1",
106
- "pinia": "^2.2.1",
107
- "postcss": "^8.4.41",
106
+ "pinia": "^2.2.2",
107
+ "postcss": "^8.4.45",
108
108
  "postcss-nested": "^6.2.0",
109
109
  "punycode": "^2.3.1",
110
110
  "release-it": "^17.6.0",
111
111
  "typescript": "~5.5.4",
112
112
  "v-calendar": "^3.1.2",
113
- "vite": "^5.3.5",
114
- "vitepress": "^1.3.2",
113
+ "vite": "^5.4.3",
114
+ "vitepress": "^1.3.4",
115
115
  "vitest": "^2.0.5",
116
- "vue": "^3.4.36",
117
- "vue-router": "^4.4.2",
118
- "vue-tsc": "^2.0.29"
116
+ "vue": "^3.5.1",
117
+ "vue-router": "^4.4.3",
118
+ "vue-tsc": "^2.1.6"
119
119
  }
120
120
  }