@digitalwalletcorp/vue-core 1.1.0 → 1.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.
Files changed (62) hide show
  1. package/README.md +4 -4
  2. package/lib/accordion-fieldset.cjs +1 -1
  3. package/lib/accordion-fieldset.d.cts +25 -0
  4. package/lib/accordion-fieldset.js +1 -1
  5. package/lib/{accordion-fieldset.vue_vue_type_style_index_0_lang-tzJhLHyT.js → accordion-fieldset.vue_vue_type_style_index_0_lang-n-IZxUiu.js} +1 -1
  6. package/lib/{accordion-fieldset.vue_vue_type_style_index_0_lang-Dd8HXuVm.cjs → accordion-fieldset.vue_vue_type_style_index_0_lang-t9NqmoZW.cjs} +1 -1
  7. package/lib/accordion-section.cjs +1 -1
  8. package/lib/accordion-section.d.cts +34 -0
  9. package/lib/accordion-section.js +1 -1
  10. package/lib/{accordion-section.vue_vue_type_style_index_0_lang-BBEywIH3.cjs → accordion-section.vue_vue_type_style_index_0_lang-CFDdUEnn.cjs} +1 -1
  11. package/lib/{accordion-section.vue_vue_type_style_index_0_lang-DAlUN0wH.js → accordion-section.vue_vue_type_style_index_0_lang-Gvjjx02P.js} +1 -1
  12. package/lib/{components-YAonMRcW.cjs → components-CNOeuZPu.cjs} +1 -1
  13. package/lib/{components-xNQBXMzx.js → components-DBK8NUBh.js} +7 -7
  14. package/lib/components.d.cts +9 -0
  15. package/lib/global.d.cts +7 -0
  16. package/lib/hourglass-loading.d.cts +23 -0
  17. package/lib/index.cjs +1 -1
  18. package/lib/index.d.cts +3 -0
  19. package/lib/index.js +7 -7
  20. package/lib/internal/tab-group-context.d.cts +16 -0
  21. package/lib/internal/use-shrinkable.d.cts +12 -0
  22. package/lib/label-button.cjs +1 -1
  23. package/lib/label-button.d.cts +30 -0
  24. package/lib/label-button.js +1 -1
  25. package/lib/{label-button.vue_vue_type_script_setup_true_lang-DqhdCgmJ.cjs → label-button.vue_vue_type_script_setup_true_lang-BwVOxaJP.cjs} +1 -1
  26. package/lib/{label-button.vue_vue_type_script_setup_true_lang-CoHrTUSs.js → label-button.vue_vue_type_script_setup_true_lang-DorC4pKz.js} +1 -1
  27. package/lib/label-icon.cjs +1 -1
  28. package/lib/label-icon.d.cts +30 -0
  29. package/lib/label-icon.js +1 -1
  30. package/lib/{label-icon.vue_vue_type_style_index_0_lang-C2URq6GP.cjs → label-icon.vue_vue_type_style_index_0_lang-D9Cimu20.cjs} +1 -1
  31. package/lib/{label-icon.vue_vue_type_style_index_0_lang-bQFkQ_gC.js → label-icon.vue_vue_type_style_index_0_lang-me52HE2V.js} +1 -1
  32. package/lib/nuxt.cjs +1 -1
  33. package/lib/nuxt.d.cts +10 -0
  34. package/lib/nuxt.js +1 -1
  35. package/lib/page-section.cjs +1 -1
  36. package/lib/page-section.d.cts +34 -0
  37. package/lib/page-section.js +1 -1
  38. package/lib/{page-section.vue_vue_type_style_index_0_lang-bvQeBjUP.cjs → page-section.vue_vue_type_style_index_0_lang-DEAkTLxd.cjs} +1 -1
  39. package/lib/{page-section.vue_vue_type_style_index_0_lang-4MLb_sDZ.js → page-section.vue_vue_type_style_index_0_lang-DpVQe_rV.js} +1 -1
  40. package/lib/page-title.cjs +1 -1
  41. package/lib/page-title.d.cts +20 -0
  42. package/lib/page-title.js +1 -1
  43. package/lib/{page-title.vue_vue_type_style_index_0_lang-DcmGICoo.cjs → page-title.vue_vue_type_style_index_0_lang-BqIsIks5.cjs} +1 -1
  44. package/lib/{page-title.vue_vue_type_style_index_0_lang-CzfdMzXf.js → page-title.vue_vue_type_style_index_0_lang-ChZot85K.js} +1 -1
  45. package/lib/register.cjs +1 -1
  46. package/lib/register.d.cts +9 -0
  47. package/lib/register.js +1 -1
  48. package/lib/style.css +1 -1
  49. package/lib/tab-content.d.cts +39 -0
  50. package/lib/tab-group.cjs +1 -1
  51. package/lib/tab-group.d.cts +44 -0
  52. package/lib/tab-group.js +1 -1
  53. package/lib/{tab-group.vue_vue_type_style_index_0_lang-CjnBkvvZ.js → tab-group.vue_vue_type_style_index_0_lang-C84mDEOC.js} +1 -1
  54. package/lib/{tab-group.vue_vue_type_style_index_0_lang-CwVGYZAo.cjs → tab-group.vue_vue_type_style_index_0_lang-CMaufRJV.cjs} +1 -1
  55. package/lib/types/label-preset.d.cts +12 -0
  56. package/package.json +25 -10
  57. package/src/accordion-section.vue +1 -1
  58. package/src/label-icon.vue +2 -2
  59. package/src/page-section.vue +2 -2
  60. package/src/page-title.vue +5 -5
  61. package/src/tab-content.vue +7 -7
  62. package/src/tab-group.vue +15 -15
package/README.md CHANGED
@@ -101,10 +101,10 @@ We recommend keeping a `vue-core-variables.css` in your application that connect
101
101
  ```css
102
102
  /* vue-core-variables.css */
103
103
  :root {
104
- --dwui-tab-header-bg: var(--app-tab-header-background);
105
- --dwui-tab-header-text: var(--app-tab-header-text);
106
- --dwui-tab-header-selected-bg: var(--app-tab-header-selected-background);
107
- --dwui-tab-header-selected-text: var(--app-tab-header-selected-text);
104
+ --dwui-background-tab-header: var(--app-tab-header-background);
105
+ --dwui-color-text-tab-header: var(--app-tab-header-text);
106
+ --dwui-background-tab-header-selected: var(--app-tab-header-selected-background);
107
+ --dwui-color-text-tab-header-selected: var(--app-tab-header-selected-text);
108
108
  }
109
109
  ```
110
110
 
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./accordion-fieldset.vue_vue_type_style_index_0_lang-Dd8HXuVm.cjs");exports.default=e._sfc_main;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./accordion-fieldset.vue_vue_type_style_index_0_lang-t9NqmoZW.cjs");exports.default=e._sfc_main;
@@ -0,0 +1,25 @@
1
+ interface Props {
2
+ /** 凡例の文字。HTMLを含める場合は#legendスロットを使う */
3
+ legend?: string;
4
+ /** trueの場合、fieldsetを無効にする */
5
+ disabled?: boolean;
6
+ /** trueの場合、開いた状態で表示する デフォルト false */
7
+ initialExpand?: boolean;
8
+ }
9
+ interface Slots {
10
+ /** 凡例の文字の前に表示するアイコン */
11
+ icon?(): unknown;
12
+ /** 凡例。legendより優先する */
13
+ legend?(): unknown;
14
+ default?(): unknown;
15
+ }
16
+ type __VLS_Slots = Slots;
17
+ declare const __VLS_base: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
18
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
19
+ declare const _default: typeof __VLS_export;
20
+ export default _default;
21
+ type __VLS_WithSlots<T, S> = T & {
22
+ new (): {
23
+ $slots: S;
24
+ };
25
+ };
@@ -1,4 +1,4 @@
1
- import { _ as f } from "./accordion-fieldset.vue_vue_type_style_index_0_lang-tzJhLHyT.js";
1
+ import { _ as f } from "./accordion-fieldset.vue_vue_type_style_index_0_lang-n-IZxUiu.js";
2
2
  export {
3
3
  f as default
4
4
  };
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as f, useSlots as m, ref as g, reactive as x, onMounted as _, openBlock as i, createElementBlock as k, createElementVNode as d, createVNode as C, unref as s, createBlock as b, createSlots as y, withCtx as r, renderSlot as l, createTextVNode as h, toDisplayString as w, createCommentVNode as B, normalizeClass as S } from "vue";
2
2
  import { SvgTriangleButton as v } from "@digitalwalletcorp/vue-svg-icons";
3
- import { _ as E } from "./label-icon.vue_vue_type_style_index_0_lang-bQFkQ_gC.js";
3
+ import { _ as E } from "./label-icon.vue_vue_type_style_index_0_lang-me52HE2V.js";
4
4
  import { u as N } from "./use-shrinkable-CS2bmsJJ.js";
5
5
  const V = ["disabled"], $ = ["aria-expanded"], q = /* @__PURE__ */ f({
6
6
  __name: "accordion-fieldset",
@@ -1 +1 @@
1
- "use strict";const e=require("vue"),r=require("@digitalwalletcorp/vue-svg-icons"),c=require("./label-icon.vue_vue_type_style_index_0_lang-C2URq6GP.cjs"),u=require("./use-shrinkable-Cu9JQZll.cjs"),p=["disabled"],_=["aria-expanded"],f=e.defineComponent({__name:"accordion-fieldset",props:{legend:{},disabled:{type:Boolean},initialExpand:{type:Boolean}},setup(a){const t=a,o=e.useSlots(),l=e.ref(),n=e.reactive({expanded:!0}),i=u.useShrinkable(l),s=()=>{n.expanded=!n.expanded};return e.onMounted(()=>{n.expanded=!!t.initialExpand}),(d,g)=>(e.openBlock(),e.createElementBlock("fieldset",{class:"dwui-accordion-fieldset",disabled:t.disabled},[e.createElementVNode("legend",null,[e.createElementVNode("button",{type:"button",class:"dwui-accordion-toggle","aria-expanded":n.expanded,onClick:s},[e.createVNode(e.unref(r.SvgTriangleButton),{direction:n.expanded?"up":"down"},null,8,["direction"]),t.legend!=null||o.legend!=null||o.icon!=null?(e.openBlock(),e.createBlock(c._sfc_main,{key:0},e.createSlots({_:2},[o.icon!=null?{name:"icon",fn:e.withCtx(()=>[e.renderSlot(d.$slots,"icon")]),key:"0"}:void 0,t.legend!=null||o.legend!=null?{name:"default",fn:e.withCtx(()=>[e.renderSlot(d.$slots,"legend",{},()=>[e.createTextVNode(e.toDisplayString(t.legend),1)])]),key:"1"}:void 0]),1024)):e.createCommentVNode("",!0)],8,_)]),e.createElementVNode("div",{ref_key:"refContents",ref:l,class:e.normalizeClass(["dwui-accordion-contents",e.unref(i)?n.expanded?"dwui-expanded":"dwui-shrunk":""])},[e.renderSlot(d.$slots,"default")],2)],8,p))}});exports._sfc_main=f;
1
+ "use strict";const e=require("vue"),r=require("@digitalwalletcorp/vue-svg-icons"),c=require("./label-icon.vue_vue_type_style_index_0_lang-D9Cimu20.cjs"),u=require("./use-shrinkable-Cu9JQZll.cjs"),p=["disabled"],_=["aria-expanded"],f=e.defineComponent({__name:"accordion-fieldset",props:{legend:{},disabled:{type:Boolean},initialExpand:{type:Boolean}},setup(a){const t=a,o=e.useSlots(),l=e.ref(),n=e.reactive({expanded:!0}),i=u.useShrinkable(l),s=()=>{n.expanded=!n.expanded};return e.onMounted(()=>{n.expanded=!!t.initialExpand}),(d,g)=>(e.openBlock(),e.createElementBlock("fieldset",{class:"dwui-accordion-fieldset",disabled:t.disabled},[e.createElementVNode("legend",null,[e.createElementVNode("button",{type:"button",class:"dwui-accordion-toggle","aria-expanded":n.expanded,onClick:s},[e.createVNode(e.unref(r.SvgTriangleButton),{direction:n.expanded?"up":"down"},null,8,["direction"]),t.legend!=null||o.legend!=null||o.icon!=null?(e.openBlock(),e.createBlock(c._sfc_main,{key:0},e.createSlots({_:2},[o.icon!=null?{name:"icon",fn:e.withCtx(()=>[e.renderSlot(d.$slots,"icon")]),key:"0"}:void 0,t.legend!=null||o.legend!=null?{name:"default",fn:e.withCtx(()=>[e.renderSlot(d.$slots,"legend",{},()=>[e.createTextVNode(e.toDisplayString(t.legend),1)])]),key:"1"}:void 0]),1024)):e.createCommentVNode("",!0)],8,_)]),e.createElementVNode("div",{ref_key:"refContents",ref:l,class:e.normalizeClass(["dwui-accordion-contents",e.unref(i)?n.expanded?"dwui-expanded":"dwui-shrunk":""])},[e.renderSlot(d.$slots,"default")],2)],8,p))}});exports._sfc_main=f;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./accordion-section.vue_vue_type_style_index_0_lang-BBEywIH3.cjs");exports.default=e._sfc_main;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./accordion-section.vue_vue_type_style_index_0_lang-CFDdUEnn.cjs");exports.default=e._sfc_main;
@@ -0,0 +1,34 @@
1
+ import { LabelPreset } from './types/label-preset.cjs';
2
+ interface Props {
3
+ /** trueの場合、開閉ボタンを無効にする */
4
+ disabled?: boolean;
5
+ /** trueの場合、開いた状態で表示する デフォルト false */
6
+ initialExpand?: boolean;
7
+ /** trueの場合、縮めたときに中身の下側をぼかさない */
8
+ noGradient?: boolean;
9
+ /** 縮めているときの開閉ボタン(開く)のラベル */
10
+ openLabel?: string;
11
+ /** 開いているときの開閉ボタン(閉じる)のラベル */
12
+ closeLabel?: string;
13
+ /** 縮めているときの開閉ボタン(開く)のアイコンとラベル */
14
+ openPreset?: LabelPreset;
15
+ /** 開いているときの開閉ボタン(閉じる)のアイコンとラベル */
16
+ closePreset?: LabelPreset;
17
+ }
18
+ interface Slots {
19
+ /** 縮めているときの開閉ボタン(開く)のアイコン */
20
+ 'open-icon'?(): unknown;
21
+ /** 開いているときの開閉ボタン(閉じる)のアイコン */
22
+ 'close-icon'?(): unknown;
23
+ default?(): unknown;
24
+ }
25
+ type __VLS_Slots = Slots;
26
+ declare const __VLS_base: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
27
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
28
+ declare const _default: typeof __VLS_export;
29
+ export default _default;
30
+ type __VLS_WithSlots<T, S> = T & {
31
+ new (): {
32
+ $slots: S;
33
+ };
34
+ };
@@ -1,4 +1,4 @@
1
- import { _ as f } from "./accordion-section.vue_vue_type_style_index_0_lang-DAlUN0wH.js";
1
+ import { _ as f } from "./accordion-section.vue_vue_type_style_index_0_lang-Gvjjx02P.js";
2
2
  export {
3
3
  f as default
4
4
  };
@@ -1 +1 @@
1
- "use strict";const e=require("vue"),k=require("@digitalwalletcorp/vue-svg-icons"),v=require("./label-icon.vue_vue_type_style_index_0_lang-C2URq6GP.cjs"),x=require("./use-shrinkable-Cu9JQZll.cjs"),f={class:"dwui-accordion-section"},g={key:0,class:"dwui-accordion-section-control"},m=["disabled","aria-expanded"],b=e.defineComponent({__name:"accordion-section",props:{disabled:{type:Boolean},initialExpand:{type:Boolean},noGradient:{type:Boolean},openLabel:{},closeLabel:{},openPreset:{},closePreset:{}},setup(u){const o=u,l=e.useSlots(),r=e.ref(),n=e.reactive({expanded:!0}),d=x.useShrinkable(r),s=e.computed(()=>n.expanded?o.closePreset:o.openPreset),a=()=>(n.expanded?l["close-icon"]:l["open-icon"])??s.value?.icon,p=()=>(n.expanded?l["close-icon"]:l["open-icon"])==null?s.value?.iconProps:void 0,i=e.computed(()=>{const t=n.expanded?o.closeLabel:o.openLabel;if(t!=null)return t;const c=s.value?.label;return typeof c=="function"?c():c}),_=()=>{n.expanded=!n.expanded};return e.onMounted(()=>{n.expanded=!!o.initialExpand}),(t,c)=>(e.openBlock(),e.createElementBlock("div",f,[e.createElementVNode("div",{ref_key:"refContents",ref:r,class:e.normalizeClass(["dwui-accordion-section-contents",[e.unref(d)?n.expanded?"dwui-expanded":"dwui-shrunk":"",{"dwui-no-gradient":o.noGradient}]])},[e.renderSlot(t.$slots,"default")],2),e.unref(d)?(e.openBlock(),e.createElementBlock("div",g,[e.createElementVNode("button",{type:"button",class:"dwui-accordion-section-toggle",disabled:o.disabled,"aria-expanded":n.expanded,onClick:e.withModifiers(_,["stop"])},[a()!=null||i.value!=null?(e.openBlock(),e.createBlock(v._sfc_main,{key:0},e.createSlots({_:2},[a()!=null?{name:"icon",fn:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a()),e.normalizeProps(e.guardReactiveProps(p())),null,16))]),key:"0"}:void 0,i.value!=null?{name:"default",fn:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(i.value),1)]),key:"1"}:void 0]),1024)):(e.openBlock(),e.createBlock(e.unref(k.SvgTriangleButton),{key:1,direction:n.expanded?"up":"down"},null,8,["direction"]))],8,m)])):e.createCommentVNode("",!0)]))}});exports._sfc_main=b;
1
+ "use strict";const e=require("vue"),k=require("@digitalwalletcorp/vue-svg-icons"),v=require("./label-icon.vue_vue_type_style_index_0_lang-D9Cimu20.cjs"),x=require("./use-shrinkable-Cu9JQZll.cjs"),f={class:"dwui-accordion-section"},g={key:0,class:"dwui-accordion-section-control"},m=["disabled","aria-expanded"],b=e.defineComponent({__name:"accordion-section",props:{disabled:{type:Boolean},initialExpand:{type:Boolean},noGradient:{type:Boolean},openLabel:{},closeLabel:{},openPreset:{},closePreset:{}},setup(u){const o=u,l=e.useSlots(),r=e.ref(),n=e.reactive({expanded:!0}),d=x.useShrinkable(r),s=e.computed(()=>n.expanded?o.closePreset:o.openPreset),a=()=>(n.expanded?l["close-icon"]:l["open-icon"])??s.value?.icon,p=()=>(n.expanded?l["close-icon"]:l["open-icon"])==null?s.value?.iconProps:void 0,i=e.computed(()=>{const t=n.expanded?o.closeLabel:o.openLabel;if(t!=null)return t;const c=s.value?.label;return typeof c=="function"?c():c}),_=()=>{n.expanded=!n.expanded};return e.onMounted(()=>{n.expanded=!!o.initialExpand}),(t,c)=>(e.openBlock(),e.createElementBlock("div",f,[e.createElementVNode("div",{ref_key:"refContents",ref:r,class:e.normalizeClass(["dwui-accordion-section-contents",[e.unref(d)?n.expanded?"dwui-expanded":"dwui-shrunk":"",{"dwui-no-gradient":o.noGradient}]])},[e.renderSlot(t.$slots,"default")],2),e.unref(d)?(e.openBlock(),e.createElementBlock("div",g,[e.createElementVNode("button",{type:"button",class:"dwui-accordion-section-toggle",disabled:o.disabled,"aria-expanded":n.expanded,onClick:e.withModifiers(_,["stop"])},[a()!=null||i.value!=null?(e.openBlock(),e.createBlock(v._sfc_main,{key:0},e.createSlots({_:2},[a()!=null?{name:"icon",fn:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a()),e.normalizeProps(e.guardReactiveProps(p())),null,16))]),key:"0"}:void 0,i.value!=null?{name:"default",fn:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(i.value),1)]),key:"1"}:void 0]),1024)):(e.openBlock(),e.createBlock(e.unref(k.SvgTriangleButton),{key:1,direction:n.expanded?"up":"down"},null,8,["direction"]))],8,m)])):e.createCommentVNode("",!0)]))}});exports._sfc_main=b;
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as k, useSlots as y, ref as w, reactive as C, computed as m, onMounted as h, openBlock as t, createElementBlock as f, createElementVNode as x, normalizeClass as P, unref as d, renderSlot as B, withModifiers as L, createBlock as r, createSlots as S, withCtx as g, resolveDynamicComponent as E, normalizeProps as N, guardReactiveProps as T, createTextVNode as V, toDisplayString as z, createCommentVNode as D } from "vue";
2
2
  import { SvgTriangleButton as G } from "@digitalwalletcorp/vue-svg-icons";
3
- import { _ as I } from "./label-icon.vue_vue_type_style_index_0_lang-bQFkQ_gC.js";
3
+ import { _ as I } from "./label-icon.vue_vue_type_style_index_0_lang-me52HE2V.js";
4
4
  import { u as M } from "./use-shrinkable-CS2bmsJJ.js";
5
5
  const $ = { class: "dwui-accordion-section" }, R = {
6
6
  key: 0,
@@ -1 +1 @@
1
- "use strict";const e=require("./accordion-fieldset.vue_vue_type_style_index_0_lang-Dd8HXuVm.cjs"),_=require("./accordion-section.vue_vue_type_style_index_0_lang-BBEywIH3.cjs"),n=require("./hourglass-loading.vue_vue_type_style_index_0_lang-C72UVA9W.cjs"),t=require("./label-button.vue_vue_type_script_setup_true_lang-DqhdCgmJ.cjs"),i=require("./label-icon.vue_vue_type_style_index_0_lang-C2URq6GP.cjs"),o=require("./page-section.vue_vue_type_style_index_0_lang-bvQeBjUP.cjs"),c=require("./page-title.vue_vue_type_style_index_0_lang-DcmGICoo.cjs"),s=require("./tab-content.vue_vue_type_style_index_0_lang-BeCi7Xkp.cjs"),u=require("./tab-group.vue_vue_type_style_index_0_lang-CwVGYZAo.cjs"),a=Object.freeze(Object.defineProperty({__proto__:null,AccordionFieldset:e._sfc_main,AccordionSection:_._sfc_main,HourglassLoading:n._sfc_main,LabelButton:t._sfc_main,LabelIcon:i._sfc_main,PageSection:o._sfc_main,PageTitle:c._sfc_main,TabContent:s._sfc_main,TabGroup:u._sfc_main},Symbol.toStringTag,{value:"Module"}));exports.components=a;
1
+ "use strict";const e=require("./accordion-fieldset.vue_vue_type_style_index_0_lang-t9NqmoZW.cjs"),_=require("./accordion-section.vue_vue_type_style_index_0_lang-CFDdUEnn.cjs"),n=require("./hourglass-loading.vue_vue_type_style_index_0_lang-C72UVA9W.cjs"),t=require("./label-button.vue_vue_type_script_setup_true_lang-BwVOxaJP.cjs"),i=require("./label-icon.vue_vue_type_style_index_0_lang-D9Cimu20.cjs"),o=require("./page-section.vue_vue_type_style_index_0_lang-DEAkTLxd.cjs"),c=require("./page-title.vue_vue_type_style_index_0_lang-BqIsIks5.cjs"),s=require("./tab-content.vue_vue_type_style_index_0_lang-BeCi7Xkp.cjs"),u=require("./tab-group.vue_vue_type_style_index_0_lang-CMaufRJV.cjs"),a=Object.freeze(Object.defineProperty({__proto__:null,AccordionFieldset:e._sfc_main,AccordionSection:_._sfc_main,HourglassLoading:n._sfc_main,LabelButton:t._sfc_main,LabelIcon:i._sfc_main,PageSection:o._sfc_main,PageTitle:c._sfc_main,TabContent:s._sfc_main,TabGroup:u._sfc_main},Symbol.toStringTag,{value:"Module"}));exports.components=a;
@@ -1,12 +1,12 @@
1
- import { _ as o } from "./accordion-fieldset.vue_vue_type_style_index_0_lang-tzJhLHyT.js";
2
- import { _ } from "./accordion-section.vue_vue_type_style_index_0_lang-DAlUN0wH.js";
1
+ import { _ as o } from "./accordion-fieldset.vue_vue_type_style_index_0_lang-n-IZxUiu.js";
2
+ import { _ } from "./accordion-section.vue_vue_type_style_index_0_lang-Gvjjx02P.js";
3
3
  import { _ as a } from "./hourglass-loading.vue_vue_type_style_index_0_lang-DkUGIxQ2.js";
4
- import { _ as m } from "./label-button.vue_vue_type_script_setup_true_lang-CoHrTUSs.js";
5
- import { _ as r } from "./label-icon.vue_vue_type_style_index_0_lang-bQFkQ_gC.js";
6
- import { _ as i } from "./page-section.vue_vue_type_style_index_0_lang-4MLb_sDZ.js";
7
- import { _ as t } from "./page-title.vue_vue_type_style_index_0_lang-CzfdMzXf.js";
4
+ import { _ as m } from "./label-button.vue_vue_type_script_setup_true_lang-DorC4pKz.js";
5
+ import { _ as r } from "./label-icon.vue_vue_type_style_index_0_lang-me52HE2V.js";
6
+ import { _ as i } from "./page-section.vue_vue_type_style_index_0_lang-DpVQe_rV.js";
7
+ import { _ as t } from "./page-title.vue_vue_type_style_index_0_lang-ChZot85K.js";
8
8
  import { _ as n } from "./tab-content.vue_vue_type_style_index_0_lang-CcQLHmIF.js";
9
- import { _ as s } from "./tab-group.vue_vue_type_style_index_0_lang-CjnBkvvZ.js";
9
+ import { _ as s } from "./tab-group.vue_vue_type_style_index_0_lang-C84mDEOC.js";
10
10
  const u = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11
11
  __proto__: null,
12
12
  AccordionFieldset: o,
@@ -0,0 +1,9 @@
1
+ export { default as AccordionFieldset } from './accordion-fieldset.cjs';
2
+ export { default as AccordionSection } from './accordion-section.cjs';
3
+ export { default as HourglassLoading } from './hourglass-loading.cjs';
4
+ export { default as LabelButton } from './label-button.cjs';
5
+ export { default as LabelIcon } from './label-icon.cjs';
6
+ export { default as PageSection } from './page-section.cjs';
7
+ export { default as PageTitle } from './page-title.cjs';
8
+ export { default as TabContent } from './tab-content.cjs';
9
+ export { default as TabGroup } from './tab-group.cjs';
@@ -0,0 +1,7 @@
1
+ type VueCoreComponents = typeof import('./components.cjs');
2
+
3
+ declare module 'vue' {
4
+ interface GlobalComponents extends VueCoreComponents {}
5
+ }
6
+
7
+ export {};
@@ -0,0 +1,23 @@
1
+ interface Props {
2
+ /** ローディング表示するか */
3
+ loading: boolean;
4
+ /** 砂が落ち切るまでの秒数。未指定ならSvgHourglassの既定値に任せる */
5
+ duration?: number;
6
+ /** 表示サイズ(高さ)。数値はpxとして扱う */
7
+ size?: number | string;
8
+ }
9
+ declare var __VLS_8: {};
10
+ type __VLS_Slots = {} & {
11
+ default?: (props: typeof __VLS_8) => any;
12
+ };
13
+ declare const __VLS_base: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {
14
+ size: number | string;
15
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
16
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
17
+ declare const _default: typeof __VLS_export;
18
+ export default _default;
19
+ type __VLS_WithSlots<T, S> = T & {
20
+ new (): {
21
+ $slots: S;
22
+ };
23
+ };
package/lib/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./accordion-fieldset.vue_vue_type_style_index_0_lang-Dd8HXuVm.cjs"),_=require("./accordion-section.vue_vue_type_style_index_0_lang-BBEywIH3.cjs"),n=require("./hourglass-loading.vue_vue_type_style_index_0_lang-C72UVA9W.cjs"),t=require("./label-button.vue_vue_type_script_setup_true_lang-DqhdCgmJ.cjs"),i=require("./label-icon.vue_vue_type_style_index_0_lang-C2URq6GP.cjs"),a=require("./page-section.vue_vue_type_style_index_0_lang-bvQeBjUP.cjs"),u=require("./page-title.vue_vue_type_style_index_0_lang-DcmGICoo.cjs"),o=require("./tab-content.vue_vue_type_style_index_0_lang-BeCi7Xkp.cjs"),s=require("./tab-group.vue_vue_type_style_index_0_lang-CwVGYZAo.cjs");exports.AccordionFieldset=e._sfc_main;exports.AccordionSection=_._sfc_main;exports.HourglassLoading=n._sfc_main;exports.LabelButton=t._sfc_main;exports.LabelIcon=i._sfc_main;exports.PageSection=a._sfc_main;exports.PageTitle=u._sfc_main;exports.TabContent=o._sfc_main;exports.TabGroup=s._sfc_main;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./accordion-fieldset.vue_vue_type_style_index_0_lang-t9NqmoZW.cjs"),_=require("./accordion-section.vue_vue_type_style_index_0_lang-CFDdUEnn.cjs"),n=require("./hourglass-loading.vue_vue_type_style_index_0_lang-C72UVA9W.cjs"),t=require("./label-button.vue_vue_type_script_setup_true_lang-BwVOxaJP.cjs"),i=require("./label-icon.vue_vue_type_style_index_0_lang-D9Cimu20.cjs"),a=require("./page-section.vue_vue_type_style_index_0_lang-DEAkTLxd.cjs"),u=require("./page-title.vue_vue_type_style_index_0_lang-BqIsIks5.cjs"),o=require("./tab-content.vue_vue_type_style_index_0_lang-BeCi7Xkp.cjs"),s=require("./tab-group.vue_vue_type_style_index_0_lang-CMaufRJV.cjs");exports.AccordionFieldset=e._sfc_main;exports.AccordionSection=_._sfc_main;exports.HourglassLoading=n._sfc_main;exports.LabelButton=t._sfc_main;exports.LabelIcon=i._sfc_main;exports.PageSection=a._sfc_main;exports.PageTitle=u._sfc_main;exports.TabContent=o._sfc_main;exports.TabGroup=s._sfc_main;
@@ -0,0 +1,3 @@
1
+ export * from './components.cjs';
2
+ export type { LabelPreset } from './types/label-preset.cjs';
3
+ export type { TabContentStatus } from './internal/tab-group-context.cjs';
package/lib/index.js CHANGED
@@ -1,12 +1,12 @@
1
- import { _ as e } from "./accordion-fieldset.vue_vue_type_style_index_0_lang-tzJhLHyT.js";
2
- import { _ as t } from "./accordion-section.vue_vue_type_style_index_0_lang-DAlUN0wH.js";
1
+ import { _ as e } from "./accordion-fieldset.vue_vue_type_style_index_0_lang-n-IZxUiu.js";
2
+ import { _ as t } from "./accordion-section.vue_vue_type_style_index_0_lang-Gvjjx02P.js";
3
3
  import { _ as p } from "./hourglass-loading.vue_vue_type_style_index_0_lang-DkUGIxQ2.js";
4
- import { _ as m } from "./label-button.vue_vue_type_script_setup_true_lang-CoHrTUSs.js";
5
- import { _ as x } from "./label-icon.vue_vue_type_style_index_0_lang-bQFkQ_gC.js";
6
- import { _ as c } from "./page-section.vue_vue_type_style_index_0_lang-4MLb_sDZ.js";
7
- import { _ as l } from "./page-title.vue_vue_type_style_index_0_lang-CzfdMzXf.js";
4
+ import { _ as m } from "./label-button.vue_vue_type_script_setup_true_lang-DorC4pKz.js";
5
+ import { _ as x } from "./label-icon.vue_vue_type_style_index_0_lang-me52HE2V.js";
6
+ import { _ as c } from "./page-section.vue_vue_type_style_index_0_lang-DpVQe_rV.js";
7
+ import { _ as l } from "./page-title.vue_vue_type_style_index_0_lang-ChZot85K.js";
8
8
  import { _ as d } from "./tab-content.vue_vue_type_style_index_0_lang-CcQLHmIF.js";
9
- import { _ as u } from "./tab-group.vue_vue_type_style_index_0_lang-CjnBkvvZ.js";
9
+ import { _ as u } from "./tab-group.vue_vue_type_style_index_0_lang-C84mDEOC.js";
10
10
  export {
11
11
  e as AccordionFieldset,
12
12
  t as AccordionSection,
@@ -0,0 +1,16 @@
1
+ import { ComputedRef, InjectionKey, Ref, Slot } from 'vue';
2
+ /** タブの見出しの状態 */
3
+ export type TabContentStatus = 'warn' | 'error';
4
+ /**
5
+ * TabGroupからTabContentへ渡す状態
6
+ * TabGroupとTabContentの間だけで使い、利用側には公開しない
7
+ */
8
+ export interface TabGroupContext {
9
+ /** 選択中のタブのlabelId */
10
+ activeLabelId: ComputedRef<string | undefined>;
11
+ /** TabGroupがマウント済みか */
12
+ mounted: Ref<boolean>;
13
+ /** TabGroupの#loadingスロット。未指定ならTabContentは既定の読み込み中表示を出す */
14
+ loadingSlot: () => Slot | undefined;
15
+ }
16
+ export declare const tabGroupContextKey: InjectionKey<TabGroupContext>;
@@ -0,0 +1,12 @@
1
+ import { Ref } from 'vue';
2
+ /** 縮めたときの中身の高さ(px)。中身がこれより低い場合は開閉しない */
3
+ export declare const SHRUNK_HEIGHT = 70;
4
+ /**
5
+ * 中身が縮めたときの高さ以上あり、開閉できるかを返す
6
+ * 中身の大きさが変わるたびに測り直すため、隠れたタブの中にあって後から表示された場合や、中身が増減した場合も再判定される
7
+ * 縮めている間も中身の本来の高さで判定する
8
+ *
9
+ * @param {Ref<HTMLElement | undefined>} contents 開閉する中身の要素
10
+ * @returns {Ref<boolean>}
11
+ */
12
+ export declare function useShrinkable(contents: Ref<HTMLElement | undefined>): Ref<boolean>;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./label-button.vue_vue_type_script_setup_true_lang-DqhdCgmJ.cjs");exports.default=e._sfc_main;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./label-button.vue_vue_type_script_setup_true_lang-BwVOxaJP.cjs");exports.default=e._sfc_main;
@@ -0,0 +1,30 @@
1
+ import { ClassValue, StyleValue } from 'vue';
2
+ import { LabelPreset } from './types/label-preset.cjs';
3
+ interface Props {
4
+ /** アイコンとラベルの組み合わせ */
5
+ preset?: LabelPreset;
6
+ /** アイコンとラベルの間隔。未指定ならLabelIconの既定値(0.25em) */
7
+ gap?: string;
8
+ /** presetのアイコンに付けるclass。スロットで渡したアイコンには、スロット側で直接指定する */
9
+ iconClass?: ClassValue;
10
+ /** presetのアイコンに付けるstyle。スロットで渡したアイコンには、スロット側で直接指定する */
11
+ iconStyle?: StyleValue;
12
+ /** ラベルに付けるclass */
13
+ labelClass?: ClassValue;
14
+ /** ラベルに付けるstyle */
15
+ labelStyle?: StyleValue;
16
+ }
17
+ interface Slots {
18
+ icon?(): unknown;
19
+ default?(): unknown;
20
+ }
21
+ type __VLS_Slots = Slots;
22
+ declare const __VLS_base: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
23
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
24
+ declare const _default: typeof __VLS_export;
25
+ export default _default;
26
+ type __VLS_WithSlots<T, S> = T & {
27
+ new (): {
28
+ $slots: S;
29
+ };
30
+ };
@@ -1,4 +1,4 @@
1
- import { _ as f } from "./label-button.vue_vue_type_script_setup_true_lang-CoHrTUSs.js";
1
+ import { _ as f } from "./label-button.vue_vue_type_script_setup_true_lang-DorC4pKz.js";
2
2
  export {
3
3
  f as default
4
4
  };
@@ -1 +1 @@
1
- "use strict";const e=require("vue"),a=require("./label-icon.vue_vue_type_style_index_0_lang-C2URq6GP.cjs"),o=e.defineComponent({__name:"label-button",props:{preset:{},gap:{},iconClass:{type:[Boolean,null,String,Object,Array]},iconStyle:{type:[Boolean,null,String,Object,Array]},labelClass:{type:[Boolean,null,String,Object,Array]},labelStyle:{type:[Boolean,null,String,Object,Array]}},setup(s){const l=s,t=e.useSlots();return(n,c)=>(e.openBlock(),e.createElementBlock("button",null,[e.createVNode(a._sfc_main,{preset:l.preset,gap:l.gap,"icon-class":l.iconClass,"icon-style":l.iconStyle,"label-class":l.labelClass,"label-style":l.labelStyle},e.createSlots({_:2},[t.icon!=null?{name:"icon",fn:e.withCtx(()=>[e.renderSlot(n.$slots,"icon")]),key:"0"}:void 0,t.default!=null?{name:"default",fn:e.withCtx(()=>[e.renderSlot(n.$slots,"default")]),key:"1"}:void 0]),1032,["preset","gap","icon-class","icon-style","label-class","label-style"])]))}});exports._sfc_main=o;
1
+ "use strict";const e=require("vue"),a=require("./label-icon.vue_vue_type_style_index_0_lang-D9Cimu20.cjs"),o=e.defineComponent({__name:"label-button",props:{preset:{},gap:{},iconClass:{type:[Boolean,null,String,Object,Array]},iconStyle:{type:[Boolean,null,String,Object,Array]},labelClass:{type:[Boolean,null,String,Object,Array]},labelStyle:{type:[Boolean,null,String,Object,Array]}},setup(s){const l=s,t=e.useSlots();return(n,c)=>(e.openBlock(),e.createElementBlock("button",null,[e.createVNode(a._sfc_main,{preset:l.preset,gap:l.gap,"icon-class":l.iconClass,"icon-style":l.iconStyle,"label-class":l.labelClass,"label-style":l.labelStyle},e.createSlots({_:2},[t.icon!=null?{name:"icon",fn:e.withCtx(()=>[e.renderSlot(n.$slots,"icon")]),key:"0"}:void 0,t.default!=null?{name:"default",fn:e.withCtx(()=>[e.renderSlot(n.$slots,"default")]),key:"1"}:void 0]),1032,["preset","gap","icon-class","icon-style","label-class","label-style"])]))}});exports._sfc_main=o;
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as s, useSlots as r, openBlock as c, createElementBlock as i, createVNode as p, createSlots as y, withCtx as n, renderSlot as o } from "vue";
2
- import { _ as u } from "./label-icon.vue_vue_type_style_index_0_lang-bQFkQ_gC.js";
2
+ import { _ as u } from "./label-icon.vue_vue_type_style_index_0_lang-me52HE2V.js";
3
3
  const f = /* @__PURE__ */ s({
4
4
  __name: "label-button",
5
5
  props: {
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./label-icon.vue_vue_type_style_index_0_lang-C2URq6GP.cjs");exports.default=e._sfc_main;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./label-icon.vue_vue_type_style_index_0_lang-D9Cimu20.cjs");exports.default=e._sfc_main;
@@ -0,0 +1,30 @@
1
+ import { ClassValue, StyleValue } from 'vue';
2
+ import { LabelPreset } from './types/label-preset.cjs';
3
+ interface Props {
4
+ /** アイコンとラベルの組み合わせ */
5
+ preset?: LabelPreset;
6
+ /** アイコンとラベルの間隔。未指定なら既定値(0.25em) */
7
+ gap?: string;
8
+ /** presetのアイコンに付けるclass。スロットで渡したアイコンには、スロット側で直接指定する */
9
+ iconClass?: ClassValue;
10
+ /** presetのアイコンに付けるstyle。スロットで渡したアイコンには、スロット側で直接指定する */
11
+ iconStyle?: StyleValue;
12
+ /** ラベルに付けるclass */
13
+ labelClass?: ClassValue;
14
+ /** ラベルに付けるstyle */
15
+ labelStyle?: StyleValue;
16
+ }
17
+ interface Slots {
18
+ icon?(): unknown;
19
+ default?(): unknown;
20
+ }
21
+ type __VLS_Slots = Slots;
22
+ declare const __VLS_base: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
23
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
24
+ declare const _default: typeof __VLS_export;
25
+ export default _default;
26
+ type __VLS_WithSlots<T, S> = T & {
27
+ new (): {
28
+ $slots: S;
29
+ };
30
+ };
package/lib/label-icon.js CHANGED
@@ -1,4 +1,4 @@
1
- import { _ as f } from "./label-icon.vue_vue_type_style_index_0_lang-bQFkQ_gC.js";
1
+ import { _ as f } from "./label-icon.vue_vue_type_style_index_0_lang-me52HE2V.js";
2
2
  export {
3
3
  f as default
4
4
  };
@@ -1 +1 @@
1
- "use strict";const e=require("vue"),s=e.defineComponent({__name:"label-icon",props:{preset:{},gap:{},iconClass:{type:[Boolean,null,String,Object,Array]},iconStyle:{type:[Boolean,null,String,Object,Array]},labelClass:{type:[Boolean,null,String,Object,Array]},labelStyle:{type:[Boolean,null,String,Object,Array]}},setup(n){const l=n,o=e.useSlots();return(t,a)=>(e.openBlock(),e.createElementBlock("span",{class:"dwui-label-icon",style:e.normalizeStyle(l.gap==null?void 0:{"--dwui-label-icon-gap":l.gap})},[e.renderSlot(t.$slots,"icon",{},()=>[l.preset!=null?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(l.preset.icon),e.mergeProps({key:0},l.preset.iconProps,{class:l.iconClass,style:l.iconStyle}),null,16,["class","style"])):e.createCommentVNode("",!0)]),o.default!=null||l.preset!=null?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["dwui-label",l.labelClass]),style:e.normalizeStyle(l.labelStyle)},[e.renderSlot(t.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(typeof l.preset?.label=="function"?l.preset.label():l.preset?.label),1)])],6)):e.createCommentVNode("",!0)],4))}});exports._sfc_main=s;
1
+ "use strict";const e=require("vue"),s=e.defineComponent({__name:"label-icon",props:{preset:{},gap:{},iconClass:{type:[Boolean,null,String,Object,Array]},iconStyle:{type:[Boolean,null,String,Object,Array]},labelClass:{type:[Boolean,null,String,Object,Array]},labelStyle:{type:[Boolean,null,String,Object,Array]}},setup(n){const l=n,o=e.useSlots();return(t,a)=>(e.openBlock(),e.createElementBlock("span",{class:"dwui-label-icon",style:e.normalizeStyle(l.gap==null?void 0:{"--dwui-gap-label-icon":l.gap})},[e.renderSlot(t.$slots,"icon",{},()=>[l.preset!=null?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(l.preset.icon),e.mergeProps({key:0},l.preset.iconProps,{class:l.iconClass,style:l.iconStyle}),null,16,["class","style"])):e.createCommentVNode("",!0)]),o.default!=null||l.preset!=null?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["dwui-label",l.labelClass]),style:e.normalizeStyle(l.labelStyle)},[e.renderSlot(t.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(typeof l.preset?.label=="function"?l.preset.label():l.preset?.label),1)])],6)):e.createCommentVNode("",!0)],4))}});exports._sfc_main=s;
@@ -13,7 +13,7 @@ const f = /* @__PURE__ */ p({
13
13
  const e = r, c = i();
14
14
  return (t, g) => (l(), s("span", {
15
15
  class: "dwui-label-icon",
16
- style: n(e.gap == null ? void 0 : { "--dwui-label-icon-gap": e.gap })
16
+ style: n(e.gap == null ? void 0 : { "--dwui-gap-label-icon": e.gap })
17
17
  }, [
18
18
  o(t.$slots, "icon", {}, () => [
19
19
  e.preset != null ? (l(), y(u(e.preset.icon), b({ key: 0 }, e.preset.iconProps, {
package/lib/nuxt.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("@nuxt/kit"),r=require("./components-YAonMRcW.cjs");var t=typeof document<"u"?document.currentScript:null;const u=e.defineNuxtModule({meta:{name:"@digitalwalletcorp/vue-core",configKey:"vueCore"},setup(){const n=e.createResolver(typeof document>"u"?require("url").pathToFileURL(__filename).href:t&&t.tagName.toUpperCase()==="SCRIPT"&&t.src||new URL("nuxt.cjs",document.baseURI).href);for(const o of Object.keys(r.components))e.addComponent({name:o,export:o,filePath:n.resolve("./index")})}});exports.default=u;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("@nuxt/kit"),r=require("./components-CNOeuZPu.cjs");var t=typeof document<"u"?document.currentScript:null;const u=e.defineNuxtModule({meta:{name:"@digitalwalletcorp/vue-core",configKey:"vueCore"},setup(){const n=e.createResolver(typeof document>"u"?require("url").pathToFileURL(__filename).href:t&&t.tagName.toUpperCase()==="SCRIPT"&&t.src||new URL("nuxt.cjs",document.baseURI).href);for(const o of Object.keys(r.components))e.addComponent({name:o,export:o,filePath:n.resolve("./index")})}});exports.default=u;
package/lib/nuxt.d.cts ADDED
@@ -0,0 +1,10 @@
1
+ /**
2
+ * コンポーネントをNuxtのコンポーネント自動importへ登録するモジュール。
3
+ * グローバル登録(registerComponents)と違い、テンプレートで使ったコンポーネントだけがバンドルされ、
4
+ * 型は Nuxt が .nuxt/components.d.ts へ生成するため、利用側に型定義は要らない。
5
+ *
6
+ * 名前の一覧を得るためだけに ./components をimportしている。
7
+ * このモジュールはビルド時にNuxtが読み込むもので、アプリの実行時バンドルには入らない
8
+ */
9
+ declare const _default: import('@nuxt/schema').NuxtModule<import('@nuxt/schema').ModuleOptions, import('@nuxt/schema').ModuleOptions, false>;
10
+ export default _default;
package/lib/nuxt.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { defineNuxtModule as t, createResolver as r, addComponent as n } from "@nuxt/kit";
2
- import { c as a } from "./components-xNQBXMzx.js";
2
+ import { c as a } from "./components-DBK8NUBh.js";
3
3
  const c = t({
4
4
  meta: {
5
5
  name: "@digitalwalletcorp/vue-core",
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./page-section.vue_vue_type_style_index_0_lang-bvQeBjUP.cjs");exports.default=e._sfc_main;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./page-section.vue_vue_type_style_index_0_lang-DEAkTLxd.cjs");exports.default=e._sfc_main;
@@ -0,0 +1,34 @@
1
+ import { ClassValue, StyleValue } from 'vue';
2
+ /** 見出しのアイコンとして選べるもの */
3
+ type PageSectionIcon = 'diamond' | 'circle' | 'square' | 'pushpin' | 'round-pushpin';
4
+ interface Props {
5
+ /** 見出しの文字。未指定なら見出しを表示しない */
6
+ title?: string;
7
+ /** 見出しのアイコン。これ以外のアイコンは#iconスロットで渡す デフォルト 'diamond' */
8
+ icon?: PageSectionIcon;
9
+ /** diamond・circle・squareの大きさ。未指定ならアイコンの既定値(large) */
10
+ iconVariant?: 'large' | 'medium' | 'small';
11
+ /** diamond・circle・squareの色。未指定ならdiamondは#1a44b6、circleは#e78b2f、squareは#d13a2b */
12
+ iconColor?: string;
13
+ /** 見出しに付けるclass */
14
+ titleClass?: ClassValue;
15
+ /** 見出しに付けるstyle */
16
+ titleStyle?: StyleValue;
17
+ }
18
+ interface Slots {
19
+ /** 見出しの文字の前に表示するアイコン。iconより優先する */
20
+ icon?(): unknown;
21
+ default?(): unknown;
22
+ }
23
+ type __VLS_Slots = Slots;
24
+ declare const __VLS_base: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {
25
+ icon: PageSectionIcon;
26
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
27
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
28
+ declare const _default: typeof __VLS_export;
29
+ export default _default;
30
+ type __VLS_WithSlots<T, S> = T & {
31
+ new (): {
32
+ $slots: S;
33
+ };
34
+ };
@@ -1,4 +1,4 @@
1
- import { _ as f } from "./page-section.vue_vue_type_style_index_0_lang-4MLb_sDZ.js";
1
+ import { _ as f } from "./page-section.vue_vue_type_style_index_0_lang-DpVQe_rV.js";
2
2
  export {
3
3
  f as default
4
4
  };
@@ -1 +1 @@
1
- "use strict";const e=require("vue"),n=require("@digitalwalletcorp/vue-svg-icons"),r=require("./label-icon.vue_vue_type_style_index_0_lang-C2URq6GP.cjs"),a={class:"dwui-page-section"},i={class:"dwui-page-section-content"},p=e.defineComponent({__name:"page-section",props:{title:{},icon:{default:"diamond"},iconVariant:{},iconColor:{},titleClass:{type:[Boolean,null,String,Object,Array]},titleStyle:{type:[Boolean,null,String,Object,Array]}},setup(l){const o=l,s={diamond:{component:n.SvgDiamond,shape:!0,color:"#1a44b6"},circle:{component:n.SvgCircle,shape:!0,color:"#e78b2f"},square:{component:n.SvgSquare,shape:!0,color:"#d13a2b"},pushpin:{component:n.SvgPushpin,shape:!1},"round-pushpin":{component:n.SvgRoundPushpin,shape:!1}},c=e.computed(()=>{const t=s[o.icon];return{component:t.component,props:t.shape?{variant:o.iconVariant,color:o.iconColor??t.color}:{}}});return(t,u)=>(e.openBlock(),e.createElementBlock("section",a,[o.title!=null?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["dwui-page-section-title",o.titleClass]),style:e.normalizeStyle(o.titleStyle)},[e.createVNode(r._sfc_main,null,{icon:e.withCtx(()=>[e.renderSlot(t.$slots,"icon",{},()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(c.value.component),e.normalizeProps(e.guardReactiveProps(c.value.props)),null,16))])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(o.title),1)]),_:3})],6)):e.createCommentVNode("",!0),e.createElementVNode("div",i,[e.renderSlot(t.$slots,"default")])]))}});exports._sfc_main=p;
1
+ "use strict";const e=require("vue"),n=require("@digitalwalletcorp/vue-svg-icons"),r=require("./label-icon.vue_vue_type_style_index_0_lang-D9Cimu20.cjs"),a={class:"dwui-page-section"},i={class:"dwui-page-section-content"},p=e.defineComponent({__name:"page-section",props:{title:{},icon:{default:"diamond"},iconVariant:{},iconColor:{},titleClass:{type:[Boolean,null,String,Object,Array]},titleStyle:{type:[Boolean,null,String,Object,Array]}},setup(l){const o=l,s={diamond:{component:n.SvgDiamond,shape:!0,color:"#1a44b6"},circle:{component:n.SvgCircle,shape:!0,color:"#e78b2f"},square:{component:n.SvgSquare,shape:!0,color:"#d13a2b"},pushpin:{component:n.SvgPushpin,shape:!1},"round-pushpin":{component:n.SvgRoundPushpin,shape:!1}},c=e.computed(()=>{const t=s[o.icon];return{component:t.component,props:t.shape?{variant:o.iconVariant,color:o.iconColor??t.color}:{}}});return(t,u)=>(e.openBlock(),e.createElementBlock("section",a,[o.title!=null?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["dwui-page-section-title",o.titleClass]),style:e.normalizeStyle(o.titleStyle)},[e.createVNode(r._sfc_main,null,{icon:e.withCtx(()=>[e.renderSlot(t.$slots,"icon",{},()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(c.value.component),e.normalizeProps(e.guardReactiveProps(c.value.props)),null,16))])]),default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(o.title),1)]),_:3})],6)):e.createCommentVNode("",!0),e.createElementVNode("div",i,[e.renderSlot(t.$slots,"default")])]))}});exports._sfc_main=p;
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as i, computed as p, openBlock as t, createElementBlock as r, normalizeStyle as m, normalizeClass as u, createVNode as d, withCtx as a, createTextVNode as S, toDisplayString as h, renderSlot as l, createBlock as _, resolveDynamicComponent as g, normalizeProps as f, guardReactiveProps as v, createCommentVNode as y, createElementVNode as C } from "vue";
2
2
  import { SvgRoundPushpin as V, SvgPushpin as b, SvgSquare as B, SvgCircle as N, SvgDiamond as P } from "@digitalwalletcorp/vue-svg-icons";
3
- import { _ as k } from "./label-icon.vue_vue_type_style_index_0_lang-bQFkQ_gC.js";
3
+ import { _ as k } from "./label-icon.vue_vue_type_style_index_0_lang-me52HE2V.js";
4
4
  const w = { class: "dwui-page-section" }, E = { class: "dwui-page-section-content" }, $ = /* @__PURE__ */ i({
5
5
  __name: "page-section",
6
6
  props: {
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./page-title.vue_vue_type_style_index_0_lang-DcmGICoo.cjs");exports.default=e._sfc_main;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./page-title.vue_vue_type_style_index_0_lang-BqIsIks5.cjs");exports.default=e._sfc_main;
@@ -0,0 +1,20 @@
1
+ interface Props {
2
+ /** タイトルの文字 */
3
+ title: string;
4
+ }
5
+ interface Slots {
6
+ /** タイトルの文字の前に表示するアイコン */
7
+ icon?(): unknown;
8
+ /** タイトルバーの右側に表示する内容 */
9
+ default?(): unknown;
10
+ }
11
+ type __VLS_Slots = Slots;
12
+ declare const __VLS_base: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
13
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
14
+ declare const _default: typeof __VLS_export;
15
+ export default _default;
16
+ type __VLS_WithSlots<T, S> = T & {
17
+ new (): {
18
+ $slots: S;
19
+ };
20
+ };
package/lib/page-title.js CHANGED
@@ -1,4 +1,4 @@
1
- import { _ as f } from "./page-title.vue_vue_type_style_index_0_lang-CzfdMzXf.js";
1
+ import { _ as f } from "./page-title.vue_vue_type_style_index_0_lang-ChZot85K.js";
2
2
  export {
3
3
  f as default
4
4
  };
@@ -1 +1 @@
1
- "use strict";const e=require("vue"),l=require("./label-icon.vue_vue_type_style_index_0_lang-C2URq6GP.cjs"),c={class:"dwui-page-title"},i={key:0,class:"dwui-page-title-actions"},a=e.defineComponent({__name:"page-title",props:{title:{}},setup(n){const s=n,t=e.useSlots();return(o,r)=>(e.openBlock(),e.createElementBlock("section",c,[e.createVNode(l._sfc_main,{class:"dwui-page-title-label"},e.createSlots({default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(s.title),1)]),_:2},[t.icon!=null?{name:"icon",fn:e.withCtx(()=>[e.renderSlot(o.$slots,"icon")]),key:"0"}:void 0]),1024),t.default!=null?(e.openBlock(),e.createElementBlock("span",i,[e.renderSlot(o.$slots,"default")])):e.createCommentVNode("",!0)]))}});exports._sfc_main=a;
1
+ "use strict";const e=require("vue"),l=require("./label-icon.vue_vue_type_style_index_0_lang-D9Cimu20.cjs"),c={class:"dwui-page-title"},i={key:0,class:"dwui-page-title-actions"},a=e.defineComponent({__name:"page-title",props:{title:{}},setup(n){const s=n,t=e.useSlots();return(o,r)=>(e.openBlock(),e.createElementBlock("section",c,[e.createVNode(l._sfc_main,{class:"dwui-page-title-label"},e.createSlots({default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(s.title),1)]),_:2},[t.icon!=null?{name:"icon",fn:e.withCtx(()=>[e.renderSlot(o.$slots,"icon")]),key:"0"}:void 0]),1024),t.default!=null?(e.openBlock(),e.createElementBlock("span",i,[e.renderSlot(o.$slots,"default")])):e.createCommentVNode("",!0)]))}});exports._sfc_main=a;
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as c, useSlots as r, openBlock as o, createElementBlock as s, createVNode as p, createSlots as d, withCtx as l, createTextVNode as u, toDisplayString as _, renderSlot as n, createCommentVNode as m } from "vue";
2
- import { _ as f } from "./label-icon.vue_vue_type_style_index_0_lang-bQFkQ_gC.js";
2
+ import { _ as f } from "./label-icon.vue_vue_type_style_index_0_lang-me52HE2V.js";
3
3
  const g = { class: "dwui-page-title" }, h = {
4
4
  key: 0,
5
5
  class: "dwui-page-title-actions"
package/lib/register.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./components-YAonMRcW.cjs");function r(e){for(const[o,n]of Object.entries(t.components))e.component(o,n)}exports.registerComponents=r;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./components-CNOeuZPu.cjs");function r(e){for(const[o,n]of Object.entries(t.components))e.component(o,n)}exports.registerComponents=r;
@@ -0,0 +1,9 @@
1
+ import { App } from 'vue';
2
+ import * as components from './components.cjs';
3
+ type VueCoreComponents = typeof components;
4
+ declare module 'vue' {
5
+ interface GlobalComponents extends VueCoreComponents {
6
+ }
7
+ }
8
+ export declare function registerComponents(app: App): void;
9
+ export {};
package/lib/register.js CHANGED
@@ -1,4 +1,4 @@
1
- import { c as t } from "./components-xNQBXMzx.js";
1
+ import { c as t } from "./components-DBK8NUBh.js";
2
2
  function m(o) {
3
3
  for (const [n, e] of Object.entries(t))
4
4
  o.component(n, e);
package/lib/style.css CHANGED
@@ -1 +1 @@
1
- :where(.dwui-label-icon){display:inline-block}:where(.dwui-label-icon>.dwui-label){display:inline-block}:where(.dwui-label-icon>.dwui-label:not(:first-child)){margin-left:var(--dwui-label-icon-gap, .25em)}:where(.dwui-accordion-fieldset){position:relative}:where(.dwui-accordion-toggle){display:inline-flex;align-items:center;gap:4px;margin-left:4px;padding:0;border:none;background:none;color:inherit;cursor:pointer}:where(.dwui-accordion-toggle:disabled){opacity:.6;cursor:not-allowed}:where(.dwui-accordion-contents){position:relative;width:fit-content;padding:2px;overflow:hidden;opacity:1}:where(.dwui-accordion-contents.dwui-expanded){transition:all .3s linear}:where(.dwui-accordion-contents.dwui-shrunk){height:auto;max-height:70px;opacity:.75;transition:all .3s linear}:where(.dwui-accordion-section){position:relative}:where(.dwui-accordion-section-contents){position:relative;width:fit-content;overflow:hidden}:where(.dwui-accordion-section-contents.dwui-expanded){transition:all .3s linear}:where(.dwui-accordion-section-contents.dwui-shrunk){height:auto;max-height:70px;transition:all .3s linear}:where(.dwui-accordion-section-contents.dwui-shrunk:not(.dwui-no-gradient)):after{content:"";position:absolute;inset:0;background-image:linear-gradient(180deg,transparent 0%,transparent 60%,var(--dwui-accordion-section-fade, Canvas) 100%);pointer-events:none}:where(.dwui-accordion-section-control){position:relative;display:flex;justify-content:center;width:100%}:where(.dwui-accordion-section-toggle){display:inline-flex;align-items:center;cursor:pointer}:where(.dwui-accordion-section-toggle:disabled){opacity:.6;cursor:not-allowed}:where(.dwui-accordion-section-toggle[aria-expanded=true]){margin-top:8px}:where(.dwui-accordion-section-toggle[aria-expanded=false]){margin-top:-10px}:where(.dwui-hourglass-loading){animation:dwui-hourglass-loading-spin 1.2s linear infinite}@keyframes dwui-hourglass-loading-spin{to{transform:rotate(360deg)}}:where(.dwui-page-section){display:block;margin:4px 0 8px;padding-top:2px;font-size:var(--dwui-page-section-font-size, 12px);font-weight:500}:where(.dwui-page-section-title){display:flex;align-items:center;font-size:var(--dwui-page-section-title-font-size, 14px)}:where(.dwui-page-section-content){margin:8px 0 8px 16px}:where(.dwui-page-title){display:flex;align-items:center;justify-content:space-between;width:var(--dwui-page-title-width, auto);padding:4px;border-radius:4px;background:var(--dwui-page-title-bg, linear-gradient(#323232 0%, rgb(32, 32, 31) 25%, rgb(32, 32, 31) 75%, #323232 100%));color:var(--dwui-page-title-text, rgb(220, 220, 220));font-size:var(--dwui-page-title-font-size, 14px);font-weight:var(--dwui-page-title-font-weight, normal)}:where(.dwui-tab-content[aria-checked=false]){display:none}:where(.dwui-tab-content[aria-checked=true]){display:block;position:relative;padding:4px 8px;overflow:hidden;animation:dwui-tab-slide-in var(--dwui-tab-slide-duration, .35s) var(--dwui-tab-slide-easing, cubic-bezier(.22, 1, .36, 1))}:where(.dwui-tab-loading){position:absolute;inset:0;z-index:1;display:flex;align-items:center;justify-content:center;background:var(--dwui-loading-overlay, rgba(0, 0, 0, .25))}:where(.dwui-tab-loading-spinner){width:var(--dwui-loading-spinner-size, 40px);height:var(--dwui-loading-spinner-size, 40px);border:4px solid var(--dwui-loading-spinner-track, rgba(255, 255, 255, .4));border-top-color:var(--dwui-loading-spinner-color, #ffffff);border-radius:50%;animation:dwui-tab-loading-spin .8s linear infinite}@keyframes dwui-tab-loading-spin{to{transform:rotate(360deg)}}@keyframes dwui-tab-slide-in{0%{opacity:0;transform:translate(var(--dwui-tab-slide-distance, -128px))}to{opacity:1;transform:translate(0)}}:where(.dwui-tab-group){margin-bottom:8px}:where(.dwui-tab-headers){display:flex;flex-direction:row;flex-wrap:wrap;margin-top:5px;padding-bottom:4px}:where(.dwui-tab-radio){display:none}:where(.dwui-tab-item){display:block;min-width:100px;padding:0 4px;border:1px solid var(--dwui-tab-border, #565656);border-bottom:1px solid var(--dwui-tab-header-accent, #5ab4bd);background:var(--dwui-tab-header-bg, linear-gradient(#1313c7, navy));line-height:2em;text-align:center;white-space:nowrap;color:var(--dwui-tab-header-text, azure);text-overflow:ellipsis;cursor:pointer;transition:all .2s ease}:where(.dwui-tab-radio:checked+.dwui-tab-item){background:var(--dwui-tab-header-selected-bg, linear-gradient(#1313c7, rgb(149, 149, 234), #1313c7));color:var(--dwui-tab-header-selected-text, azure);cursor:default}:where(.dwui-tab-radio:disabled+.dwui-tab-item){background:var(--dwui-tab-header-disabled-bg, gray);cursor:not-allowed}:where(.dwui-tab-item.dwui-tab-warn){background:var(--dwui-tab-header-warn-bg, #efef13);color:var(--dwui-tab-header-warn-text, midnightblue)}:where(.dwui-tab-radio:checked+.dwui-tab-item.dwui-tab-warn){background:var(--dwui-tab-header-warn-selected-bg, linear-gradient(#fafa06, rgb(232, 238, 206), #fafa06))}:where(.dwui-tab-item.dwui-tab-error){background:var(--dwui-tab-header-error-bg, red);color:var(--dwui-tab-header-error-text, azure)}:where(.dwui-tab-radio:checked+.dwui-tab-item.dwui-tab-error){background:var(--dwui-tab-header-error-selected-bg, linear-gradient(#ff0000, rgb(240, 136, 136), #ff0000))}:where(.dwui-tab-radio:not(:checked)+.dwui-tab-item:hover){box-shadow:inset 0 0 0 999px var(--dwui-tab-header-hover-overlay, rgba(255, 255, 255, .35))}:where(.dwui-tab-items){height:100%;border:1px solid var(--dwui-tab-border, #565656);overflow:hidden}
1
+ :where(.dwui-label-icon){display:inline-block}:where(.dwui-label-icon>.dwui-label){display:inline-block}:where(.dwui-label-icon>.dwui-label:not(:first-child)){margin-left:var(--dwui-gap-label-icon, .25em)}:where(.dwui-accordion-fieldset){position:relative}:where(.dwui-accordion-toggle){display:inline-flex;align-items:center;gap:4px;margin-left:4px;padding:0;border:none;background:none;color:inherit;cursor:pointer}:where(.dwui-accordion-toggle:disabled){opacity:.6;cursor:not-allowed}:where(.dwui-accordion-contents){position:relative;width:fit-content;padding:2px;overflow:hidden;opacity:1}:where(.dwui-accordion-contents.dwui-expanded){transition:all .3s linear}:where(.dwui-accordion-contents.dwui-shrunk){height:auto;max-height:70px;opacity:.75;transition:all .3s linear}:where(.dwui-accordion-section){position:relative}:where(.dwui-accordion-section-contents){position:relative;width:fit-content;overflow:hidden}:where(.dwui-accordion-section-contents.dwui-expanded){transition:all .3s linear}:where(.dwui-accordion-section-contents.dwui-shrunk){height:auto;max-height:70px;transition:all .3s linear}:where(.dwui-accordion-section-contents.dwui-shrunk:not(.dwui-no-gradient)):after{content:"";position:absolute;inset:0;background-image:linear-gradient(180deg,transparent 0%,transparent 60%,var(--dwui-color-accordion-section-fade, Canvas) 100%);pointer-events:none}:where(.dwui-accordion-section-control){position:relative;display:flex;justify-content:center;width:100%}:where(.dwui-accordion-section-toggle){display:inline-flex;align-items:center;cursor:pointer}:where(.dwui-accordion-section-toggle:disabled){opacity:.6;cursor:not-allowed}:where(.dwui-accordion-section-toggle[aria-expanded=true]){margin-top:8px}:where(.dwui-accordion-section-toggle[aria-expanded=false]){margin-top:-10px}:where(.dwui-hourglass-loading){animation:dwui-hourglass-loading-spin 1.2s linear infinite}@keyframes dwui-hourglass-loading-spin{to{transform:rotate(360deg)}}:where(.dwui-page-section){display:block;margin:4px 0 8px;padding-top:2px;font-size:var(--dwui-font-size-page-section, 12px);font-weight:500}:where(.dwui-page-section-title){display:flex;align-items:center;font-size:var(--dwui-font-size-page-section-title, 14px)}:where(.dwui-page-section-content){margin:8px 0 8px 16px}:where(.dwui-page-title){display:flex;align-items:center;justify-content:space-between;width:var(--dwui-width-page-title, auto);padding:4px;border-radius:4px;background:var(--dwui-background-page-title, linear-gradient(#323232 0%, rgb(32, 32, 31) 25%, rgb(32, 32, 31) 75%, #323232 100%));color:var(--dwui-color-text-page-title, rgb(220, 220, 220));font-size:var(--dwui-font-size-page-title, 14px);font-weight:var(--dwui-font-weight-page-title, normal)}:where(.dwui-tab-content[aria-checked=false]){display:none}:where(.dwui-tab-content[aria-checked=true]){display:block;position:relative;padding:4px 8px;overflow:hidden;animation:dwui-tab-slide-in var(--dwui-duration-tab-slide, .35s) var(--dwui-easing-tab-slide, cubic-bezier(.22, 1, .36, 1))}:where(.dwui-tab-loading){position:absolute;inset:0;z-index:1;display:flex;align-items:center;justify-content:center;background:var(--dwui-overlay-color-loading, rgba(0, 0, 0, .25))}:where(.dwui-tab-loading-spinner){width:var(--dwui-size-loading-spinner, 40px);height:var(--dwui-size-loading-spinner, 40px);border:4px solid var(--dwui-border-color-loading-spinner-track, rgba(255, 255, 255, .4));border-top-color:var(--dwui-border-color-loading-spinner, #ffffff);border-radius:50%;animation:dwui-tab-loading-spin .8s linear infinite}@keyframes dwui-tab-loading-spin{to{transform:rotate(360deg)}}@keyframes dwui-tab-slide-in{0%{opacity:0;transform:translate(var(--dwui-distance-tab-slide, -128px))}to{opacity:1;transform:translate(0)}}:where(.dwui-tab-group){margin-bottom:8px}:where(.dwui-tab-headers){display:flex;flex-direction:row;flex-wrap:wrap;margin-top:5px;padding-bottom:4px}:where(.dwui-tab-radio){display:none}:where(.dwui-tab-item){display:block;min-width:100px;padding:0 4px;border:1px solid var(--dwui-border-color-tab, #565656);border-bottom:1px solid var(--dwui-border-color-tab-header-accent, #5ab4bd);background:var(--dwui-background-tab-header, linear-gradient(#1313c7, navy));line-height:2em;text-align:center;white-space:nowrap;color:var(--dwui-color-text-tab-header, azure);text-overflow:ellipsis;cursor:pointer;transition:all .2s ease}:where(.dwui-tab-radio:checked+.dwui-tab-item){background:var(--dwui-background-tab-header-selected, linear-gradient(#1313c7, rgb(149, 149, 234), #1313c7));color:var(--dwui-color-text-tab-header-selected, azure);cursor:default}:where(.dwui-tab-radio:disabled+.dwui-tab-item){background:var(--dwui-background-tab-header-disabled, gray);cursor:not-allowed}:where(.dwui-tab-item.dwui-tab-warn){background:var(--dwui-background-tab-header-warn, #efef13);color:var(--dwui-color-text-tab-header-warn, midnightblue)}:where(.dwui-tab-radio:checked+.dwui-tab-item.dwui-tab-warn){background:var(--dwui-background-tab-header-warn-selected, linear-gradient(#fafa06, rgb(232, 238, 206), #fafa06))}:where(.dwui-tab-item.dwui-tab-error){background:var(--dwui-background-tab-header-error, red);color:var(--dwui-color-text-tab-header-error, azure)}:where(.dwui-tab-radio:checked+.dwui-tab-item.dwui-tab-error){background:var(--dwui-background-tab-header-error-selected, linear-gradient(#ff0000, rgb(240, 136, 136), #ff0000))}:where(.dwui-tab-radio:not(:checked)+.dwui-tab-item:hover){box-shadow:inset 0 0 0 999px var(--dwui-overlay-color-tab-header-hover, rgba(255, 255, 255, .35))}:where(.dwui-tab-items){height:100%;border:1px solid var(--dwui-border-color-tab, #565656);overflow:hidden}
@@ -0,0 +1,39 @@
1
+ import { ClassValue, StyleValue } from 'vue';
2
+ import { TabContentStatus } from './internal/tab-group-context.cjs';
3
+ interface Props {
4
+ /** タブを識別するID。TabGroupのselectedTabLabelIdに渡す値 */
5
+ labelId: string;
6
+ /** タブの見出しの文字 */
7
+ description: string;
8
+ /** trueの場合、タブを選べなくし、中身も描画しない */
9
+ disabled?: boolean;
10
+ /** タブの見出しの状態。見出しの色が変わる */
11
+ status?: TabContentStatus;
12
+ /** タブの見出しに付けるclass */
13
+ headerClass?: ClassValue;
14
+ /** タブの見出しに付けるstyle */
15
+ headerStyle?: StyleValue;
16
+ }
17
+ interface Slots {
18
+ /** タブの見出しの文字の前に表示するアイコン */
19
+ icon?(): unknown;
20
+ /**
21
+ * タブの中身
22
+ * activated: タブが選ばれて表示されている間はtrue。中身のコンポーネントにpropsで渡し、選ばれたときの処理の契機にする
23
+ * setLoading: trueを渡すと読み込み中の表示にする。表示はTabGroupの#loadingスロット、未指定なら既定の表示
24
+ */
25
+ default?(props: {
26
+ activated: boolean;
27
+ setLoading: (loading: boolean) => void;
28
+ }): unknown;
29
+ }
30
+ type __VLS_Slots = Slots;
31
+ declare const __VLS_base: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
32
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
33
+ declare const _default: typeof __VLS_export;
34
+ export default _default;
35
+ type __VLS_WithSlots<T, S> = T & {
36
+ new (): {
37
+ $slots: S;
38
+ };
39
+ };
package/lib/tab-group.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./tab-group.vue_vue_type_style_index_0_lang-CwVGYZAo.cjs");exports.default=e._sfc_main;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./tab-group.vue_vue_type_style_index_0_lang-CMaufRJV.cjs");exports.default=e._sfc_main;
@@ -0,0 +1,44 @@
1
+ import { ClassValue, StyleValue, VNode } from 'vue';
2
+ interface Props {
3
+ /** ラジオボタンのname。未指定なら自動で採番する */
4
+ tabGroupName?: string;
5
+ /** selectedTabLabelIdが未指定のとき、trueならdisabledでない最初のタブを選ぶ。falseなら先頭のタブ(disabledなら中身は空になる) */
6
+ selectFirstEnabled?: boolean;
7
+ /** タブの見出しを並べる部分に付けるclass */
8
+ headerClass?: ClassValue;
9
+ /** タブの見出しを並べる部分に付けるstyle */
10
+ headerStyle?: StyleValue;
11
+ /** タブの見出しを移動する先(Teleportのto) */
12
+ teleport?: string;
13
+ }
14
+ type __VLS_Props = Props;
15
+ interface Slots {
16
+ default?(): VNode[];
17
+ /** 読み込み中のTabContentに重ねて表示する内容。未指定なら既定の読み込み中表示 */
18
+ loading?(): VNode[];
19
+ }
20
+ type __VLS_Slots = Slots;
21
+ type __VLS_ModelProps = {
22
+ /**
23
+ * 選択するタブのlabelId。未指定なら先頭のタブ
24
+ * 親がいつ代入しても選び直せるよう、v-model:selected-tab-label-idで同期する前提とする
25
+ */
26
+ 'selectedTabLabelId'?: string;
27
+ };
28
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
29
+ declare const __VLS_base: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
30
+ "update:selectedTabLabelId": (value: string | undefined) => any;
31
+ } & {
32
+ "emit:changeSelectedTab": (labelId: string) => any;
33
+ }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
34
+ "onEmit:changeSelectedTab"?: ((labelId: string) => any) | undefined;
35
+ "onUpdate:selectedTabLabelId"?: ((value: string | undefined) => any) | undefined;
36
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
37
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
38
+ declare const _default: typeof __VLS_export;
39
+ export default _default;
40
+ type __VLS_WithSlots<T, S> = T & {
41
+ new (): {
42
+ $slots: S;
43
+ };
44
+ };
package/lib/tab-group.js CHANGED
@@ -1,4 +1,4 @@
1
- import { _ as f } from "./tab-group.vue_vue_type_style_index_0_lang-CjnBkvvZ.js";
1
+ import { _ as f } from "./tab-group.vue_vue_type_style_index_0_lang-C84mDEOC.js";
2
2
  export {
3
3
  f as default
4
4
  };
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as L, useModel as B, useSlots as N, useId as x, computed as y, ref as A, provide as E, onMounted as M, openBlock as s, createElementBlock as i, createBlock as _, Teleport as F, createElementVNode as o, normalizeStyle as v, normalizeClass as g, Fragment as S, renderList as G, unref as c, createVNode as V, createSlots as j, withCtx as I, createTextVNode as z, toDisplayString as D, resolveDynamicComponent as O, renderSlot as H, mergeModels as C } from "vue";
2
- import { _ as K } from "./label-icon.vue_vue_type_style_index_0_lang-bQFkQ_gC.js";
2
+ import { _ as K } from "./label-icon.vue_vue_type_style_index_0_lang-me52HE2V.js";
3
3
  import { t as P, _ as q } from "./tab-content.vue_vue_type_style_index_0_lang-CcQLHmIF.js";
4
4
  const J = { class: "dwui-tab-group" }, Q = ["id", "name", "disabled", "checked", "onChange"], R = ["for", "data-test-tab-content-control"], U = { class: "dwui-tab-items" }, Z = /* @__PURE__ */ L({
5
5
  __name: "tab-group",
@@ -1 +1 @@
1
- "use strict";const e=require("vue"),v=require("./label-icon.vue_vue_type_style_index_0_lang-C2URq6GP.cjs"),m=require("./tab-content.vue_vue_type_style_index_0_lang-BeCi7Xkp.cjs"),g={class:"dwui-tab-group"},S=["id","name","disabled","checked","onChange"],C=["for","data-test-tab-content-control"],I={class:"dwui-tab-items"},k=e.defineComponent({__name:"tab-group",props:e.mergeModels({tabGroupName:{},selectFirstEnabled:{type:Boolean},headerClass:{type:[Boolean,null,String,Object,Array]},headerStyle:{type:[Boolean,null,String,Object,Array]},teleport:{}},{selectedTabLabelId:{},selectedTabLabelIdModifiers:{}}),emits:e.mergeModels(["emit:changeSelectedTab"],["update:selectedTabLabelId"]),setup(r,{emit:h}){const n=r,_=h,o=e.useModel(r,"selectedTabLabelId"),c=e.useSlots(),s=n.tabGroupName??e.useId(),y=a=>{if(a.type!==m._sfc_main)return;const l=a.props??{},t=l.disabled;return{labelId:String(l["label-id"]??l.labelId),description:l.description,disabled:t===""||!!t,status:l.status,headerClass:l["header-class"]??l.headerClass,headerStyle:l["header-style"]??l.headerStyle,icon:a.children?.icon}},d=e.computed(()=>{const a=[];for(const l of c.default?.()??[]){const t=Array.isArray(l.children)?l.children:[l];for(const b of t){const p=y(b);p&&a.push(p)}}return a}),i=e.computed(()=>o.value!=null?o.value:(n.selectFirstEnabled?d.value.find(l=>!l.disabled):d.value[0])?.labelId),u=e.ref(!1);e.provide(m.tabGroupContextKey,{activeLabelId:i,mounted:u,loadingSlot:()=>c.loading}),e.onMounted(()=>{u.value=!0});const f=a=>{o.value=a,_("emit:changeSelectedTab",a)};return(a,l)=>(e.openBlock(),e.createElementBlock("div",g,[(e.openBlock(),e.createBlock(e.Teleport,{to:n.teleport??"body",disabled:n.teleport==null},[e.createElementVNode("div",{class:e.normalizeClass(["dwui-tab-headers",n.headerClass]),style:e.normalizeStyle(n.headerStyle)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,t=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:t.labelId},[e.createElementVNode("input",{id:`${e.unref(s)}-${t.labelId}`,type:"radio",class:"dwui-tab-radio",name:e.unref(s),disabled:t.disabled,checked:t.labelId===i.value,onChange:b=>f(t.labelId)},null,40,S),e.createElementVNode("label",{for:`${e.unref(s)}-${t.labelId}`,class:e.normalizeClass(["dwui-tab-item",[t.status!=null?`dwui-tab-${t.status}`:void 0,t.headerClass]]),style:e.normalizeStyle(t.headerStyle),"data-test-tab-content-control":t.labelId},[e.createVNode(v._sfc_main,null,e.createSlots({default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(t.description),1)]),_:2},[t.icon!=null?{name:"icon",fn:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.icon)))]),key:"0"}:void 0]),1024)],14,C)],64))),128))],6)],8,["to","disabled"])),e.createElementVNode("div",I,[e.renderSlot(a.$slots,"default")])]))}});exports._sfc_main=k;
1
+ "use strict";const e=require("vue"),v=require("./label-icon.vue_vue_type_style_index_0_lang-D9Cimu20.cjs"),m=require("./tab-content.vue_vue_type_style_index_0_lang-BeCi7Xkp.cjs"),g={class:"dwui-tab-group"},S=["id","name","disabled","checked","onChange"],C=["for","data-test-tab-content-control"],I={class:"dwui-tab-items"},k=e.defineComponent({__name:"tab-group",props:e.mergeModels({tabGroupName:{},selectFirstEnabled:{type:Boolean},headerClass:{type:[Boolean,null,String,Object,Array]},headerStyle:{type:[Boolean,null,String,Object,Array]},teleport:{}},{selectedTabLabelId:{},selectedTabLabelIdModifiers:{}}),emits:e.mergeModels(["emit:changeSelectedTab"],["update:selectedTabLabelId"]),setup(r,{emit:h}){const n=r,_=h,o=e.useModel(r,"selectedTabLabelId"),c=e.useSlots(),s=n.tabGroupName??e.useId(),y=a=>{if(a.type!==m._sfc_main)return;const l=a.props??{},t=l.disabled;return{labelId:String(l["label-id"]??l.labelId),description:l.description,disabled:t===""||!!t,status:l.status,headerClass:l["header-class"]??l.headerClass,headerStyle:l["header-style"]??l.headerStyle,icon:a.children?.icon}},d=e.computed(()=>{const a=[];for(const l of c.default?.()??[]){const t=Array.isArray(l.children)?l.children:[l];for(const b of t){const p=y(b);p&&a.push(p)}}return a}),i=e.computed(()=>o.value!=null?o.value:(n.selectFirstEnabled?d.value.find(l=>!l.disabled):d.value[0])?.labelId),u=e.ref(!1);e.provide(m.tabGroupContextKey,{activeLabelId:i,mounted:u,loadingSlot:()=>c.loading}),e.onMounted(()=>{u.value=!0});const f=a=>{o.value=a,_("emit:changeSelectedTab",a)};return(a,l)=>(e.openBlock(),e.createElementBlock("div",g,[(e.openBlock(),e.createBlock(e.Teleport,{to:n.teleport??"body",disabled:n.teleport==null},[e.createElementVNode("div",{class:e.normalizeClass(["dwui-tab-headers",n.headerClass]),style:e.normalizeStyle(n.headerStyle)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,t=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:t.labelId},[e.createElementVNode("input",{id:`${e.unref(s)}-${t.labelId}`,type:"radio",class:"dwui-tab-radio",name:e.unref(s),disabled:t.disabled,checked:t.labelId===i.value,onChange:b=>f(t.labelId)},null,40,S),e.createElementVNode("label",{for:`${e.unref(s)}-${t.labelId}`,class:e.normalizeClass(["dwui-tab-item",[t.status!=null?`dwui-tab-${t.status}`:void 0,t.headerClass]]),style:e.normalizeStyle(t.headerStyle),"data-test-tab-content-control":t.labelId},[e.createVNode(v._sfc_main,null,e.createSlots({default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(t.description),1)]),_:2},[t.icon!=null?{name:"icon",fn:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.icon)))]),key:"0"}:void 0]),1024)],14,C)],64))),128))],6)],8,["to","disabled"])),e.createElementVNode("div",I,[e.renderSlot(a.$slots,"default")])]))}});exports._sfc_main=k;
@@ -0,0 +1,12 @@
1
+ import { Component } from 'vue';
2
+ /**
3
+ * アイコンとラベルの組み合わせ
4
+ */
5
+ export interface LabelPreset {
6
+ /** アイコンのコンポーネント */
7
+ icon: Component;
8
+ /** アイコンに渡すProps */
9
+ iconProps?: Record<string, unknown>;
10
+ /** ラベル。言語切替に追従させる場合は、描画のたびに呼ばれる関数で渡す */
11
+ label: string | (() => string);
12
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digitalwalletcorp/vue-core",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "type": "module",
5
5
  "description": "Basic UI components for Vue 3",
6
6
  "main": "lib/index.cjs",
@@ -11,27 +11,42 @@
11
11
  ],
12
12
  "exports": {
13
13
  ".": {
14
- "types": "./lib/index.d.ts",
15
- "import": "./lib/index.js",
16
- "require": "./lib/index.cjs"
14
+ "import": {
15
+ "types": "./lib/index.d.ts",
16
+ "default": "./lib/index.js"
17
+ },
18
+ "require": {
19
+ "types": "./lib/index.d.cts",
20
+ "default": "./lib/index.cjs"
21
+ }
17
22
  },
18
23
  "./nuxt": {
19
24
  "types": "./lib/nuxt.d.ts",
20
25
  "import": "./lib/nuxt.js"
21
26
  },
22
27
  "./register": {
23
- "types": "./lib/register.d.ts",
24
- "import": "./lib/register.js",
25
- "require": "./lib/register.cjs"
28
+ "import": {
29
+ "types": "./lib/register.d.ts",
30
+ "default": "./lib/register.js"
31
+ },
32
+ "require": {
33
+ "types": "./lib/register.d.cts",
34
+ "default": "./lib/register.cjs"
35
+ }
26
36
  },
27
37
  "./global": {
28
38
  "types": "./lib/global.d.ts"
29
39
  },
30
40
  "./style.css": "./lib/style.css",
31
41
  "./*": {
32
- "types": "./lib/*.d.ts",
33
- "import": "./lib/*.js",
34
- "require": "./lib/*.cjs"
42
+ "import": {
43
+ "types": "./lib/*.d.ts",
44
+ "default": "./lib/*.js"
45
+ },
46
+ "require": {
47
+ "types": "./lib/*.d.cts",
48
+ "default": "./lib/*.cjs"
49
+ }
35
50
  }
36
51
  },
37
52
  "scripts": {
@@ -160,7 +160,7 @@ onMounted(() => {
160
160
  content: '';
161
161
  position: absolute;
162
162
  inset: 0;
163
- background-image: linear-gradient(180deg, transparent 0%, transparent 60%, var(--dwui-accordion-section-fade, Canvas) 100%);
163
+ background-image: linear-gradient(180deg, transparent 0%, transparent 60%, var(--dwui-color-accordion-section-fade, Canvas) 100%);
164
164
  pointer-events: none;
165
165
  }
166
166
 
@@ -4,7 +4,7 @@
4
4
  <template>
5
5
  <span
6
6
  class="dwui-label-icon"
7
- :style="props.gap == null ? undefined : { '--dwui-label-icon-gap': props.gap }"
7
+ :style="props.gap == null ? undefined : { '--dwui-gap-label-icon': props.gap }"
8
8
  >
9
9
  <slot name="icon">
10
10
  <component
@@ -70,6 +70,6 @@ const slots = defineSlots<Slots>();
70
70
 
71
71
  /* アイコンとラベルの間隔。gapはflex専用のためmarginで空ける */
72
72
  :where(.dwui-label-icon > .dwui-label:not(:first-child)) {
73
- margin-left: var(--dwui-label-icon-gap, 0.25em);
73
+ margin-left: var(--dwui-gap-label-icon, 0.25em);
74
74
  }
75
75
  </style>
@@ -87,14 +87,14 @@ const presetIcon = computed((): { component: Component; props: Record<string, un
87
87
  display: block;
88
88
  margin: 4px 0 8px;
89
89
  padding-top: 2px;
90
- font-size: var(--dwui-page-section-font-size, 12px);
90
+ font-size: var(--dwui-font-size-page-section, 12px);
91
91
  font-weight: 500;
92
92
  }
93
93
 
94
94
  :where(.dwui-page-section-title) {
95
95
  display: flex;
96
96
  align-items: center;
97
- font-size: var(--dwui-page-section-title-font-size, 14px);
97
+ font-size: var(--dwui-font-size-page-section-title, 14px);
98
98
  }
99
99
 
100
100
  :where(.dwui-page-section-content) {
@@ -45,12 +45,12 @@ const slots = defineSlots<Slots>();
45
45
  display: flex;
46
46
  align-items: center;
47
47
  justify-content: space-between;
48
- width: var(--dwui-page-title-width, auto);
48
+ width: var(--dwui-width-page-title, auto);
49
49
  padding: 4px;
50
50
  border-radius: 4px;
51
- background: var(--dwui-page-title-bg, linear-gradient(#323232 0%, rgb(32, 32, 31) 25%, rgb(32, 32, 31) 75%, #323232 100%));
52
- color: var(--dwui-page-title-text, rgb(220, 220, 220));
53
- font-size: var(--dwui-page-title-font-size, 14px);
54
- font-weight: var(--dwui-page-title-font-weight, normal);
51
+ background: var(--dwui-background-page-title, linear-gradient(#323232 0%, rgb(32, 32, 31) 25%, rgb(32, 32, 31) 75%, #323232 100%));
52
+ color: var(--dwui-color-text-page-title, rgb(220, 220, 220));
53
+ font-size: var(--dwui-font-size-page-title, 14px);
54
+ font-weight: var(--dwui-font-weight-page-title, normal);
55
55
  }
56
56
  </style>
@@ -106,7 +106,7 @@ const setLoading = (value: boolean) => {
106
106
  padding: 4px 8px;
107
107
  overflow: hidden;
108
108
  /* 全幅を横断すると速度が出てカクつくため、既定は固定の移動量とease-outとフェードでスライドインする */
109
- animation: dwui-tab-slide-in var(--dwui-tab-slide-duration, 0.35s) var(--dwui-tab-slide-easing, cubic-bezier(0.22, 1, 0.36, 1));
109
+ animation: dwui-tab-slide-in var(--dwui-duration-tab-slide, 0.35s) var(--dwui-easing-tab-slide, cubic-bezier(0.22, 1, 0.36, 1));
110
110
  }
111
111
 
112
112
  :where(.dwui-tab-loading) {
@@ -116,14 +116,14 @@ const setLoading = (value: boolean) => {
116
116
  display: flex;
117
117
  align-items: center;
118
118
  justify-content: center;
119
- background: var(--dwui-loading-overlay, rgba(0, 0, 0, 0.25));
119
+ background: var(--dwui-overlay-color-loading, rgba(0, 0, 0, 0.25));
120
120
  }
121
121
 
122
122
  :where(.dwui-tab-loading-spinner) {
123
- width: var(--dwui-loading-spinner-size, 40px);
124
- height: var(--dwui-loading-spinner-size, 40px);
125
- border: 4px solid var(--dwui-loading-spinner-track, rgba(255, 255, 255, 0.4));
126
- border-top-color: var(--dwui-loading-spinner-color, #ffffff);
123
+ width: var(--dwui-size-loading-spinner, 40px);
124
+ height: var(--dwui-size-loading-spinner, 40px);
125
+ border: 4px solid var(--dwui-border-color-loading-spinner-track, rgba(255, 255, 255, 0.4));
126
+ border-top-color: var(--dwui-border-color-loading-spinner, #ffffff);
127
127
  border-radius: 50%;
128
128
  animation: dwui-tab-loading-spin 0.8s linear infinite;
129
129
  }
@@ -137,7 +137,7 @@ const setLoading = (value: boolean) => {
137
137
  @keyframes dwui-tab-slide-in {
138
138
  0% {
139
139
  opacity: 0;
140
- transform: translateX(var(--dwui-tab-slide-distance, -128px));
140
+ transform: translateX(var(--dwui-distance-tab-slide, -128px));
141
141
  }
142
142
  100% {
143
143
  opacity: 1;
package/src/tab-group.vue CHANGED
@@ -190,56 +190,56 @@ const onChangeTab = (labelId: string) => {
190
190
  display: block;
191
191
  min-width: 100px;
192
192
  padding: 0 4px;
193
- border: 1px solid var(--dwui-tab-border, #565656);
194
- border-bottom: 1px solid var(--dwui-tab-header-accent, #5ab4bd);
195
- background: var(--dwui-tab-header-bg, linear-gradient(#1313c7, navy));
193
+ border: 1px solid var(--dwui-border-color-tab, #565656);
194
+ border-bottom: 1px solid var(--dwui-border-color-tab-header-accent, #5ab4bd);
195
+ background: var(--dwui-background-tab-header, linear-gradient(#1313c7, navy));
196
196
  line-height: 2em;
197
197
  text-align: center;
198
198
  white-space: nowrap;
199
- color: var(--dwui-tab-header-text, azure);
199
+ color: var(--dwui-color-text-tab-header, azure);
200
200
  text-overflow: ellipsis;
201
201
  cursor: pointer;
202
202
  transition: all 0.2s ease;
203
203
  }
204
204
 
205
205
  :where(.dwui-tab-radio:checked + .dwui-tab-item) {
206
- background: var(--dwui-tab-header-selected-bg, linear-gradient(#1313c7, rgb(149, 149, 234), #1313c7));
207
- color: var(--dwui-tab-header-selected-text, azure);
206
+ background: var(--dwui-background-tab-header-selected, linear-gradient(#1313c7, rgb(149, 149, 234), #1313c7));
207
+ color: var(--dwui-color-text-tab-header-selected, azure);
208
208
  /* 選択済みのタブは操作の対象ではないためカーソルを既定にする */
209
209
  cursor: default;
210
210
  }
211
211
 
212
212
  :where(.dwui-tab-radio:disabled + .dwui-tab-item) {
213
- background: var(--dwui-tab-header-disabled-bg, gray);
213
+ background: var(--dwui-background-tab-header-disabled, gray);
214
214
  cursor: not-allowed;
215
215
  }
216
216
 
217
217
  :where(.dwui-tab-item.dwui-tab-warn) {
218
- background: var(--dwui-tab-header-warn-bg, #efef13);
219
- color: var(--dwui-tab-header-warn-text, midnightblue);
218
+ background: var(--dwui-background-tab-header-warn, #efef13);
219
+ color: var(--dwui-color-text-tab-header-warn, midnightblue);
220
220
  }
221
221
 
222
222
  :where(.dwui-tab-radio:checked + .dwui-tab-item.dwui-tab-warn) {
223
- background: var(--dwui-tab-header-warn-selected-bg, linear-gradient(#fafa06, rgb(232, 238, 206), #fafa06));
223
+ background: var(--dwui-background-tab-header-warn-selected, linear-gradient(#fafa06, rgb(232, 238, 206), #fafa06));
224
224
  }
225
225
 
226
226
  :where(.dwui-tab-item.dwui-tab-error) {
227
- background: var(--dwui-tab-header-error-bg, red);
228
- color: var(--dwui-tab-header-error-text, azure);
227
+ background: var(--dwui-background-tab-header-error, red);
228
+ color: var(--dwui-color-text-tab-header-error, azure);
229
229
  }
230
230
 
231
231
  :where(.dwui-tab-radio:checked + .dwui-tab-item.dwui-tab-error) {
232
- background: var(--dwui-tab-header-error-selected-bg, linear-gradient(#ff0000, rgb(240, 136, 136), #ff0000));
232
+ background: var(--dwui-background-tab-header-error-selected, linear-gradient(#ff0000, rgb(240, 136, 136), #ff0000));
233
233
  }
234
234
 
235
235
  :where(.dwui-tab-radio:not(:checked) + .dwui-tab-item:hover) {
236
236
  /* 背景の上に半透明の白を重ね、枠線と文字はそのままで背景だけを明るくする */
237
- box-shadow: inset 0 0 0 999px var(--dwui-tab-header-hover-overlay, rgba(255, 255, 255, 0.35));
237
+ box-shadow: inset 0 0 0 999px var(--dwui-overlay-color-tab-header-hover, rgba(255, 255, 255, 0.35));
238
238
  }
239
239
 
240
240
  :where(.dwui-tab-items) {
241
241
  height: 100%;
242
- border: 1px solid var(--dwui-tab-border, #565656);
242
+ border: 1px solid var(--dwui-border-color-tab, #565656);
243
243
  /* 中身を切り替えたときのスライドを枠内に収める */
244
244
  overflow: hidden;
245
245
  }