@14ch/svelte-ui 0.0.1

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 (109) hide show
  1. package/README.md +359 -0
  2. package/dist/assets/styles/README.md +144 -0
  3. package/dist/assets/styles/core.scss +61 -0
  4. package/dist/assets/styles/import.scss +11 -0
  5. package/dist/assets/styles/optional/fonts.scss +23 -0
  6. package/dist/assets/styles/optional/reset.scss +230 -0
  7. package/dist/assets/styles/variables.scss +805 -0
  8. package/dist/components/Button.svelte +574 -0
  9. package/dist/components/Button.svelte.d.ts +56 -0
  10. package/dist/components/COMPONENT_DESIGN_GUIDELINES.md +127 -0
  11. package/dist/components/Checkbox.svelte +523 -0
  12. package/dist/components/Checkbox.svelte.d.ts +42 -0
  13. package/dist/components/CheckboxGroup.svelte +82 -0
  14. package/dist/components/CheckboxGroup.svelte.d.ts +13 -0
  15. package/dist/components/ColorPicker.svelte +496 -0
  16. package/dist/components/ColorPicker.svelte.d.ts +45 -0
  17. package/dist/components/Combobox.svelte +576 -0
  18. package/dist/components/Combobox.svelte.d.ts +52 -0
  19. package/dist/components/ConfirmDialog.svelte +116 -0
  20. package/dist/components/ConfirmDialog.svelte.d.ts +20 -0
  21. package/dist/components/Datepicker.svelte +578 -0
  22. package/dist/components/Datepicker.svelte.d.ts +72 -0
  23. package/dist/components/DatepickerCalendar.svelte +925 -0
  24. package/dist/components/DatepickerCalendar.svelte.d.ts +31 -0
  25. package/dist/components/Dialog.svelte +245 -0
  26. package/dist/components/Dialog.svelte.d.ts +38 -0
  27. package/dist/components/Drawer.svelte +383 -0
  28. package/dist/components/Drawer.svelte.d.ts +39 -0
  29. package/dist/components/Fab.svelte +486 -0
  30. package/dist/components/Fab.svelte.d.ts +51 -0
  31. package/dist/components/FileUploader.svelte +456 -0
  32. package/dist/components/FileUploader.svelte.d.ts +36 -0
  33. package/dist/components/Icon.svelte +167 -0
  34. package/dist/components/Icon.svelte.d.ts +21 -0
  35. package/dist/components/IconButton.svelte +557 -0
  36. package/dist/components/IconButton.svelte.d.ts +60 -0
  37. package/dist/components/ImageUploader.svelte +516 -0
  38. package/dist/components/ImageUploader.svelte.d.ts +37 -0
  39. package/dist/components/ImageUploaderPreview.svelte +157 -0
  40. package/dist/components/ImageUploaderPreview.svelte.d.ts +13 -0
  41. package/dist/components/Input.svelte +885 -0
  42. package/dist/components/Input.svelte.d.ts +75 -0
  43. package/dist/components/LoadingSpinner.svelte +116 -0
  44. package/dist/components/LoadingSpinner.svelte.d.ts +10 -0
  45. package/dist/components/Modal.svelte +313 -0
  46. package/dist/components/Modal.svelte.d.ts +34 -0
  47. package/dist/components/Pagination.svelte +276 -0
  48. package/dist/components/Pagination.svelte.d.ts +14 -0
  49. package/dist/components/Popup.svelte +676 -0
  50. package/dist/components/Popup.svelte.d.ts +40 -0
  51. package/dist/components/PopupMenu.svelte +421 -0
  52. package/dist/components/PopupMenu.svelte.d.ts +24 -0
  53. package/dist/components/PopupMenuButton.svelte +365 -0
  54. package/dist/components/PopupMenuButton.svelte.d.ts +42 -0
  55. package/dist/components/Radio.svelte +548 -0
  56. package/dist/components/Radio.svelte.d.ts +42 -0
  57. package/dist/components/RadioGroup.svelte +74 -0
  58. package/dist/components/RadioGroup.svelte.d.ts +14 -0
  59. package/dist/components/Select.svelte +479 -0
  60. package/dist/components/Select.svelte.d.ts +47 -0
  61. package/dist/components/Slider.svelte +473 -0
  62. package/dist/components/Slider.svelte.d.ts +46 -0
  63. package/dist/components/Snackbar.svelte +124 -0
  64. package/dist/components/Snackbar.svelte.d.ts +9 -0
  65. package/dist/components/SnackbarItem.svelte +423 -0
  66. package/dist/components/SnackbarItem.svelte.d.ts +21 -0
  67. package/dist/components/Switch.svelte +454 -0
  68. package/dist/components/Switch.svelte.d.ts +40 -0
  69. package/dist/components/Tab.svelte +193 -0
  70. package/dist/components/Tab.svelte.d.ts +14 -0
  71. package/dist/components/TabItem.svelte +140 -0
  72. package/dist/components/TabItem.svelte.d.ts +17 -0
  73. package/dist/components/Textarea.svelte +702 -0
  74. package/dist/components/Textarea.svelte.d.ts +64 -0
  75. package/dist/components/skeleton/Skeleton.svelte +235 -0
  76. package/dist/components/skeleton/Skeleton.svelte.d.ts +13 -0
  77. package/dist/components/skeleton/SkeletonAvatar.svelte +97 -0
  78. package/dist/components/skeleton/SkeletonAvatar.svelte.d.ts +8 -0
  79. package/dist/components/skeleton/SkeletonBox.svelte +105 -0
  80. package/dist/components/skeleton/SkeletonBox.svelte.d.ts +12 -0
  81. package/dist/components/skeleton/SkeletonButton.svelte +71 -0
  82. package/dist/components/skeleton/SkeletonButton.svelte.d.ts +8 -0
  83. package/dist/components/skeleton/SkeletonHeading.svelte +49 -0
  84. package/dist/components/skeleton/SkeletonHeading.svelte.d.ts +8 -0
  85. package/dist/components/skeleton/SkeletonMedia.svelte +115 -0
  86. package/dist/components/skeleton/SkeletonMedia.svelte.d.ts +9 -0
  87. package/dist/components/skeleton/SkeletonText.svelte +75 -0
  88. package/dist/components/skeleton/SkeletonText.svelte.d.ts +8 -0
  89. package/dist/index.d.ts +42 -0
  90. package/dist/index.js +43 -0
  91. package/dist/types/icon.d.ts +4 -0
  92. package/dist/types/icon.js +2 -0
  93. package/dist/types/menuItem.d.ts +8 -0
  94. package/dist/types/menuItem.js +1 -0
  95. package/dist/types/options.d.ts +6 -0
  96. package/dist/types/options.js +4 -0
  97. package/dist/types/skeleton.d.ts +77 -0
  98. package/dist/types/skeleton.js +19 -0
  99. package/dist/utils/accessibility.d.ts +48 -0
  100. package/dist/utils/accessibility.js +87 -0
  101. package/dist/utils/formatText.d.ts +4 -0
  102. package/dist/utils/formatText.js +44 -0
  103. package/dist/utils/mobile.d.ts +9 -0
  104. package/dist/utils/mobile.js +47 -0
  105. package/dist/utils/snackbar.svelte.d.ts +51 -0
  106. package/dist/utils/snackbar.svelte.js +107 -0
  107. package/dist/utils/style.d.ts +17 -0
  108. package/dist/utils/style.js +22 -0
  109. package/package.json +102 -0
@@ -0,0 +1,140 @@
1
+ <!-- TabItem.svelte -->
2
+
3
+ <script lang="ts">
4
+ import Icon from './Icon.svelte';
5
+ import type { MenuItem } from '../types/menuItem';
6
+ import type { IconVariant, IconWeight, IconGrade, IconOpticalSize } from '../types/icon';
7
+
8
+ // =========================================================================
9
+ // Props, States & Constants
10
+ // =========================================================================
11
+
12
+ let {
13
+ // 基本プロパティ
14
+ tabItem,
15
+
16
+ // スタイル/レイアウト
17
+ textColor,
18
+ selectedTextColor,
19
+ selectedBarColor,
20
+
21
+ // アイコン関連
22
+ iconFilled = false,
23
+ iconWeight = 300,
24
+ iconGrade = 0,
25
+ iconOpticalSize = 24,
26
+ iconVariant = 'outlined',
27
+
28
+ // 状態/動作
29
+ isSelected = false
30
+ }: {
31
+ // 基本プロパティ
32
+ tabItem: MenuItem;
33
+
34
+ // スタイル/レイアウト
35
+ textColor: string;
36
+ selectedTextColor: string;
37
+ selectedBarColor: string;
38
+
39
+ // アイコン関連
40
+ iconFilled?: boolean;
41
+ iconWeight?: IconWeight;
42
+ iconGrade?: IconGrade;
43
+ iconOpticalSize?: IconOpticalSize;
44
+ iconVariant?: IconVariant;
45
+
46
+ // 状態/動作
47
+ isSelected?: boolean;
48
+ } = $props();
49
+ </script>
50
+
51
+ <a
52
+ href={tabItem.href}
53
+ class="tab-item"
54
+ class:tab-item--selected={isSelected}
55
+ style="--text-color: {textColor}; --selected-text-color: {selectedTextColor}; --selected-bar-color: {selectedBarColor}"
56
+ role="tab"
57
+ aria-selected={isSelected}
58
+ tabindex={0}
59
+ data-testid="tab-item"
60
+ >
61
+ {#if tabItem.icon}
62
+ <div class="tab-item__icon">
63
+ <Icon
64
+ filled={iconFilled || isSelected}
65
+ weight={iconWeight}
66
+ grade={iconGrade}
67
+ opticalSize={iconOpticalSize}
68
+ variant={iconVariant}>{tabItem.icon}</Icon
69
+ >
70
+ </div>
71
+ {/if}
72
+ {#if tabItem.title}
73
+ <div class="tab-item__text">
74
+ {tabItem.title}
75
+ </div>
76
+ {/if}
77
+ </a>
78
+
79
+ <style>@charset "UTF-8";
80
+ .tab-item {
81
+ display: flex;
82
+ justify-content: center;
83
+ align-items: center;
84
+ gap: 8px;
85
+ position: relative;
86
+ height: 100%;
87
+ padding: 0 16px;
88
+ color: var(--text-color);
89
+ white-space: nowrap;
90
+ text-decoration: none;
91
+ transition-property: background-color, color, outline;
92
+ transition-duration: 0.3s;
93
+ outline: none;
94
+ }
95
+
96
+ @media (hover: hover) {
97
+ .tab-item:hover:not(.tab-item--selected) {
98
+ background-color: var(--svelte-ui-hover-overlay);
99
+ }
100
+ }
101
+ /* キーボードフォーカス時のみ枠線を表示 */
102
+ .tab-item:focus-visible {
103
+ outline: var(--svelte-ui-focus-outline-inner);
104
+ outline-offset: var(--svelte-ui-focus-outline-offset-inner);
105
+ }
106
+
107
+ /* フォールバック: :focus-visible未対応ブラウザ用 */
108
+ @supports not selector(:focus-visible) {
109
+ .tab-item:focus {
110
+ outline: var(--svelte-ui-focus-outline-inner);
111
+ outline-offset: var(--svelte-ui-focus-outline-offset-inner);
112
+ }
113
+ .tab-item:focus:not(.tab-item--selected) {
114
+ background-color: var(--svelte-ui-hover-overlay);
115
+ }
116
+ }
117
+ /* 選択状態のインジケーター */
118
+ .tab-item::before {
119
+ content: "";
120
+ display: block;
121
+ position: absolute;
122
+ left: 16px;
123
+ bottom: 0;
124
+ width: calc(100% - 32px);
125
+ height: 4px;
126
+ background-color: var(--selected-bar-color);
127
+ border-radius: 3px 3px 0 0;
128
+ opacity: 0;
129
+ transition-property: opacity;
130
+ transition-duration: 0.3s;
131
+ }
132
+
133
+ .tab-item--selected {
134
+ color: var(--selected-text-color);
135
+ background-color: transparent;
136
+ }
137
+
138
+ .tab-item--selected::before {
139
+ opacity: 1;
140
+ }</style>
@@ -0,0 +1,17 @@
1
+ import type { MenuItem } from '../types/menuItem';
2
+ import type { IconVariant, IconWeight, IconGrade, IconOpticalSize } from '../types/icon';
3
+ type $$ComponentProps = {
4
+ tabItem: MenuItem;
5
+ textColor: string;
6
+ selectedTextColor: string;
7
+ selectedBarColor: string;
8
+ iconFilled?: boolean;
9
+ iconWeight?: IconWeight;
10
+ iconGrade?: IconGrade;
11
+ iconOpticalSize?: IconOpticalSize;
12
+ iconVariant?: IconVariant;
13
+ isSelected?: boolean;
14
+ };
15
+ declare const TabItem: import("svelte").Component<$$ComponentProps, {}, "">;
16
+ type TabItem = ReturnType<typeof TabItem>;
17
+ export default TabItem;