@novi-ui/raster 0.1.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 (188) hide show
  1. package/README.md +129 -0
  2. package/dist/accordion/accordion.d.mts +31 -0
  3. package/dist/accordion/accordion.d.mts.map +1 -0
  4. package/dist/accordion/accordion.mjs +88 -0
  5. package/dist/accordion/accordion.mjs.map +1 -0
  6. package/dist/accordion/accordion.styles.d.mts +61 -0
  7. package/dist/accordion/accordion.styles.d.mts.map +1 -0
  8. package/dist/accordion/accordion.styles.mjs +78 -0
  9. package/dist/accordion/accordion.styles.mjs.map +1 -0
  10. package/dist/accordion/index.d.mts +3 -0
  11. package/dist/avatar/avatar.d.mts +19 -0
  12. package/dist/avatar/avatar.d.mts.map +1 -0
  13. package/dist/avatar/avatar.mjs +57 -0
  14. package/dist/avatar/avatar.mjs.map +1 -0
  15. package/dist/avatar/avatar.styles.d.mts +49 -0
  16. package/dist/avatar/avatar.styles.d.mts.map +1 -0
  17. package/dist/avatar/avatar.styles.mjs +45 -0
  18. package/dist/avatar/avatar.styles.mjs.map +1 -0
  19. package/dist/avatar/index.d.mts +3 -0
  20. package/dist/badge/badge.d.mts +15 -0
  21. package/dist/badge/badge.d.mts.map +1 -0
  22. package/dist/badge/badge.mjs +39 -0
  23. package/dist/badge/badge.mjs.map +1 -0
  24. package/dist/badge/badge.styles.d.mts +67 -0
  25. package/dist/badge/badge.styles.d.mts.map +1 -0
  26. package/dist/badge/badge.styles.mjs +99 -0
  27. package/dist/badge/badge.styles.mjs.map +1 -0
  28. package/dist/badge/index.d.mts +3 -0
  29. package/dist/breadcrumbs/breadcrumbs.d.mts +33 -0
  30. package/dist/breadcrumbs/breadcrumbs.d.mts.map +1 -0
  31. package/dist/breadcrumbs/breadcrumbs.mjs +79 -0
  32. package/dist/breadcrumbs/breadcrumbs.mjs.map +1 -0
  33. package/dist/breadcrumbs/breadcrumbs.styles.d.mts +46 -0
  34. package/dist/breadcrumbs/breadcrumbs.styles.d.mts.map +1 -0
  35. package/dist/breadcrumbs/breadcrumbs.styles.mjs +35 -0
  36. package/dist/breadcrumbs/breadcrumbs.styles.mjs.map +1 -0
  37. package/dist/breadcrumbs/index.d.mts +3 -0
  38. package/dist/button/button.d.mts +14 -0
  39. package/dist/button/button.d.mts.map +1 -0
  40. package/dist/button/button.mjs +75 -0
  41. package/dist/button/button.mjs.map +1 -0
  42. package/dist/button/button.styles.d.mts +82 -0
  43. package/dist/button/button.styles.d.mts.map +1 -0
  44. package/dist/button/button.styles.mjs +118 -0
  45. package/dist/button/button.styles.mjs.map +1 -0
  46. package/dist/button/index.d.mts +3 -0
  47. package/dist/card/card.d.mts +51 -0
  48. package/dist/card/card.d.mts.map +1 -0
  49. package/dist/card/card.mjs +96 -0
  50. package/dist/card/card.mjs.map +1 -0
  51. package/dist/card/card.styles.d.mts +70 -0
  52. package/dist/card/card.styles.d.mts.map +1 -0
  53. package/dist/card/card.styles.mjs +62 -0
  54. package/dist/card/card.styles.mjs.map +1 -0
  55. package/dist/card/index.d.mts +3 -0
  56. package/dist/checkbox/checkbox.d.mts +24 -0
  57. package/dist/checkbox/checkbox.d.mts.map +1 -0
  58. package/dist/checkbox/checkbox.mjs +124 -0
  59. package/dist/checkbox/checkbox.mjs.map +1 -0
  60. package/dist/checkbox/checkbox.styles.d.mts +111 -0
  61. package/dist/checkbox/checkbox.styles.d.mts.map +1 -0
  62. package/dist/checkbox/checkbox.styles.mjs +89 -0
  63. package/dist/checkbox/checkbox.styles.mjs.map +1 -0
  64. package/dist/checkbox/index.d.mts +3 -0
  65. package/dist/index.d.mts +61 -0
  66. package/dist/index.mjs +42 -0
  67. package/dist/input/index.d.mts +3 -0
  68. package/dist/input/input.d.mts +20 -0
  69. package/dist/input/input.d.mts.map +1 -0
  70. package/dist/input/input.mjs +86 -0
  71. package/dist/input/input.mjs.map +1 -0
  72. package/dist/input/input.styles.d.mts +81 -0
  73. package/dist/input/input.styles.d.mts.map +1 -0
  74. package/dist/input/input.styles.mjs +83 -0
  75. package/dist/input/input.styles.mjs.map +1 -0
  76. package/dist/menu/index.d.mts +3 -0
  77. package/dist/menu/menu.d.mts +62 -0
  78. package/dist/menu/menu.d.mts.map +1 -0
  79. package/dist/menu/menu.mjs +115 -0
  80. package/dist/menu/menu.mjs.map +1 -0
  81. package/dist/menu/menu.styles.d.mts +90 -0
  82. package/dist/menu/menu.styles.d.mts.map +1 -0
  83. package/dist/menu/menu.styles.mjs +40 -0
  84. package/dist/menu/menu.styles.mjs.map +1 -0
  85. package/dist/modal/index.d.mts +3 -0
  86. package/dist/modal/modal.d.mts +47 -0
  87. package/dist/modal/modal.d.mts.map +1 -0
  88. package/dist/modal/modal.mjs +110 -0
  89. package/dist/modal/modal.mjs.map +1 -0
  90. package/dist/modal/modal.styles.d.mts +58 -0
  91. package/dist/modal/modal.styles.d.mts.map +1 -0
  92. package/dist/modal/modal.styles.mjs +69 -0
  93. package/dist/modal/modal.styles.mjs.map +1 -0
  94. package/dist/popover/index.d.mts +3 -0
  95. package/dist/popover/popover.d.mts +40 -0
  96. package/dist/popover/popover.d.mts.map +1 -0
  97. package/dist/popover/popover.mjs +86 -0
  98. package/dist/popover/popover.mjs.map +1 -0
  99. package/dist/popover/popover.styles.d.mts +81 -0
  100. package/dist/popover/popover.styles.d.mts.map +1 -0
  101. package/dist/popover/popover.styles.mjs +53 -0
  102. package/dist/popover/popover.styles.mjs.map +1 -0
  103. package/dist/progress/index.d.mts +3 -0
  104. package/dist/progress/progress.d.mts +14 -0
  105. package/dist/progress/progress.d.mts.map +1 -0
  106. package/dist/progress/progress.mjs +54 -0
  107. package/dist/progress/progress.mjs.map +1 -0
  108. package/dist/progress/progress.styles.d.mts +70 -0
  109. package/dist/progress/progress.styles.d.mts.map +1 -0
  110. package/dist/progress/progress.styles.mjs +54 -0
  111. package/dist/progress/progress.styles.mjs.map +1 -0
  112. package/dist/radio/index.d.mts +3 -0
  113. package/dist/radio/radio.d.mts +22 -0
  114. package/dist/radio/radio.d.mts.map +1 -0
  115. package/dist/radio/radio.mjs +95 -0
  116. package/dist/radio/radio.mjs.map +1 -0
  117. package/dist/radio/radio.styles.d.mts +111 -0
  118. package/dist/radio/radio.styles.d.mts.map +1 -0
  119. package/dist/radio/radio.styles.mjs +88 -0
  120. package/dist/radio/radio.styles.mjs.map +1 -0
  121. package/dist/raster.css +92 -0
  122. package/dist/raster.scoped.css +92 -0
  123. package/dist/select/index.d.mts +3 -0
  124. package/dist/select/select.d.mts +33 -0
  125. package/dist/select/select.d.mts.map +1 -0
  126. package/dist/select/select.mjs +114 -0
  127. package/dist/select/select.mjs.map +1 -0
  128. package/dist/select/select.styles.d.mts +82 -0
  129. package/dist/select/select.styles.d.mts.map +1 -0
  130. package/dist/select/select.styles.mjs +93 -0
  131. package/dist/select/select.styles.mjs.map +1 -0
  132. package/dist/skeleton/index.d.mts +3 -0
  133. package/dist/skeleton/skeleton.d.mts +15 -0
  134. package/dist/skeleton/skeleton.d.mts.map +1 -0
  135. package/dist/skeleton/skeleton.mjs +26 -0
  136. package/dist/skeleton/skeleton.mjs.map +1 -0
  137. package/dist/skeleton/skeleton.styles.d.mts +31 -0
  138. package/dist/skeleton/skeleton.styles.d.mts.map +1 -0
  139. package/dist/skeleton/skeleton.styles.mjs +22 -0
  140. package/dist/skeleton/skeleton.styles.mjs.map +1 -0
  141. package/dist/spinner/index.d.mts +3 -0
  142. package/dist/spinner/spinner.d.mts +15 -0
  143. package/dist/spinner/spinner.d.mts.map +1 -0
  144. package/dist/spinner/spinner.mjs +55 -0
  145. package/dist/spinner/spinner.mjs.map +1 -0
  146. package/dist/spinner/spinner.styles.d.mts +46 -0
  147. package/dist/spinner/spinner.styles.d.mts.map +1 -0
  148. package/dist/spinner/spinner.styles.mjs +37 -0
  149. package/dist/spinner/spinner.styles.mjs.map +1 -0
  150. package/dist/styles/focus-ring.mjs +23 -0
  151. package/dist/styles/focus-ring.mjs.map +1 -0
  152. package/dist/switch/index.d.mts +3 -0
  153. package/dist/switch/switch.d.mts +17 -0
  154. package/dist/switch/switch.d.mts.map +1 -0
  155. package/dist/switch/switch.mjs +57 -0
  156. package/dist/switch/switch.mjs.map +1 -0
  157. package/dist/switch/switch.styles.d.mts +58 -0
  158. package/dist/switch/switch.styles.d.mts.map +1 -0
  159. package/dist/switch/switch.styles.mjs +80 -0
  160. package/dist/switch/switch.styles.mjs.map +1 -0
  161. package/dist/tabs/index.d.mts +3 -0
  162. package/dist/tabs/tabs.d.mts +55 -0
  163. package/dist/tabs/tabs.d.mts.map +1 -0
  164. package/dist/tabs/tabs.mjs +84 -0
  165. package/dist/tabs/tabs.mjs.map +1 -0
  166. package/dist/tabs/tabs.styles.d.mts +55 -0
  167. package/dist/tabs/tabs.styles.d.mts.map +1 -0
  168. package/dist/tabs/tabs.styles.mjs +73 -0
  169. package/dist/tabs/tabs.styles.mjs.map +1 -0
  170. package/dist/textarea/index.d.mts +3 -0
  171. package/dist/textarea/textarea.d.mts +15 -0
  172. package/dist/textarea/textarea.d.mts.map +1 -0
  173. package/dist/textarea/textarea.mjs +70 -0
  174. package/dist/textarea/textarea.mjs.map +1 -0
  175. package/dist/textarea/textarea.styles.d.mts +73 -0
  176. package/dist/textarea/textarea.styles.d.mts.map +1 -0
  177. package/dist/textarea/textarea.styles.mjs +81 -0
  178. package/dist/textarea/textarea.styles.mjs.map +1 -0
  179. package/dist/toast/index.d.mts +3 -0
  180. package/dist/toast/toast.d.mts +38 -0
  181. package/dist/toast/toast.d.mts.map +1 -0
  182. package/dist/toast/toast.mjs +86 -0
  183. package/dist/toast/toast.mjs.map +1 -0
  184. package/dist/toast/toast.styles.d.mts +61 -0
  185. package/dist/toast/toast.styles.d.mts.map +1 -0
  186. package/dist/toast/toast.styles.mjs +59 -0
  187. package/dist/toast/toast.styles.mjs.map +1 -0
  188. package/package.json +59 -0
@@ -0,0 +1,93 @@
1
+ import { disabledState, focusRing } from "../styles/focus-ring.mjs";
2
+ import { tv } from "tailwind-variants";
3
+ //#region src/select/select.styles.ts
4
+ const slots = {
5
+ root: "flex flex-col gap-1.5",
6
+ label: "text-[length:var(--novi-text-sm)] font-medium text-[var(--novi-color-fg)]",
7
+ trigger: [
8
+ "text-[var(--novi-color-fg)]",
9
+ "flex items-center justify-between gap-2 w-full",
10
+ "text-left",
11
+ "bg-[var(--novi-color-bg)]",
12
+ "border border-[var(--novi-color-border-strong)]",
13
+ "transition-[border-color,opacity]",
14
+ "duration-[var(--novi-duration-fast)] ease-[var(--novi-ease-standard)]",
15
+ "group-data-[invalid]:border-[var(--novi-color-danger)]",
16
+ focusRing,
17
+ disabledState
18
+ ].join(" "),
19
+ value: ["truncate text-[var(--novi-color-fg)]", "data-[placeholder]:text-[var(--novi-color-muted)]"].join(" "),
20
+ icon: "shrink-0 text-[var(--novi-color-muted)]",
21
+ popover: [
22
+ "bg-[var(--novi-color-bg)]",
23
+ "text-[var(--novi-color-fg)]",
24
+ "border border-[var(--novi-color-border)]",
25
+ "rounded-[var(--novi-radius-none)]",
26
+ "shadow-none",
27
+ "w-[var(--trigger-width)]",
28
+ "overflow-auto max-h-64"
29
+ ].join(" "),
30
+ listbox: "outline-none p-1 flex flex-col",
31
+ option: [
32
+ "flex items-center justify-between gap-2",
33
+ "px-2 py-1.5 cursor-pointer outline-none",
34
+ "text-[var(--novi-color-fg)]",
35
+ "rounded-[var(--novi-radius-none)]",
36
+ "data-[focused]:bg-[var(--novi-color-subtle)]",
37
+ "data-[selected]:font-medium",
38
+ "data-[disabled]:opacity-40 data-[disabled]:cursor-default"
39
+ ].join(" "),
40
+ description: "text-[length:var(--novi-text-xs)] text-[var(--novi-color-muted)]",
41
+ errorMessage: "text-[length:var(--novi-text-xs)] text-[var(--novi-color-danger)]"
42
+ };
43
+ /**
44
+ * Select のスタイル定義。
45
+ *
46
+ * @example
47
+ * import { selectStyles } from '@novi-ui/raster'
48
+ * import { tv } from 'tailwind-variants'
49
+ *
50
+ * const mySelect = tv({ extend: selectStyles, slots: { popover: 'max-h-96' } })
51
+ */
52
+ const selectStyles = tv({
53
+ slots,
54
+ variants: {
55
+ variant: {
56
+ solid: { trigger: "bg-[var(--novi-color-subtle)] border-[var(--novi-color-border-strong)]" },
57
+ outline: { trigger: "bg-[var(--novi-color-bg)] border-[var(--novi-color-border-strong)]" },
58
+ soft: { trigger: "bg-[var(--novi-color-subtle)] border-transparent" },
59
+ ghost: { trigger: "bg-transparent border-transparent border-b-[var(--novi-color-border-strong)]" },
60
+ plain: { trigger: "bg-transparent border-transparent" }
61
+ },
62
+ size: {
63
+ sm: {
64
+ trigger: "h-8 px-2.5 text-[length:var(--novi-text-sm)]",
65
+ option: "text-[length:var(--novi-text-sm)]"
66
+ },
67
+ md: {
68
+ trigger: "h-10 px-3 text-[length:var(--novi-text-base)]",
69
+ option: "text-[length:var(--novi-text-base)]"
70
+ },
71
+ lg: {
72
+ trigger: "h-12 px-3.5 text-[length:var(--novi-text-base)]",
73
+ option: "text-[length:var(--novi-text-base)]"
74
+ }
75
+ },
76
+ radius: {
77
+ none: { trigger: "rounded-[var(--novi-radius-none)]" },
78
+ sm: { trigger: "rounded-[var(--novi-radius-sm)]" },
79
+ md: { trigger: "rounded-[var(--novi-radius-md)]" },
80
+ lg: { trigger: "rounded-[var(--novi-radius-lg)]" },
81
+ full: { trigger: "rounded-[var(--novi-radius-full)]" }
82
+ }
83
+ },
84
+ defaultVariants: {
85
+ variant: "outline",
86
+ size: "md",
87
+ radius: "none"
88
+ }
89
+ });
90
+ //#endregion
91
+ export { selectStyles };
92
+
93
+ //# sourceMappingURL=select.styles.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.styles.mjs","names":[],"sources":["../../src/select/select.styles.ts"],"sourcesContent":["import type {\n NoviRadius,\n NoviSize,\n NoviVariant,\n SlotMap,\n selectRequiredSlots,\n selectSlots,\n VariantMap,\n} from '@novi-ui/core'\nimport { tv } from 'tailwind-variants'\nimport { disabledState, focusRing } from '../styles/focus-ring'\n\nconst slots = {\n root: 'flex flex-col gap-1.5',\n label: 'text-[length:var(--novi-text-sm)] font-medium text-[var(--novi-color-fg)]',\n trigger: [\n 'text-[var(--novi-color-fg)]',\n 'flex items-center justify-between gap-2 w-full',\n 'text-left',\n 'bg-[var(--novi-color-bg)]',\n 'border border-[var(--novi-color-border-strong)]',\n 'transition-[border-color,opacity]',\n 'duration-[var(--novi-duration-fast)] ease-[var(--novi-ease-standard)]',\n 'group-data-[invalid]:border-[var(--novi-color-danger)]',\n focusRing,\n disabledState,\n ].join(' '),\n value: [\n 'truncate text-[var(--novi-color-fg)]',\n // 未選択時のプレースホルダは補助色にする\n 'data-[placeholder]:text-[var(--novi-color-muted)]',\n ].join(' '),\n icon: 'shrink-0 text-[var(--novi-color-muted)]',\n // 影を使わず、1px の境界線と背景の差だけで浮かせる\n popover: [\n 'bg-[var(--novi-color-bg)]',\n 'text-[var(--novi-color-fg)]',\n 'border border-[var(--novi-color-border)]',\n 'rounded-[var(--novi-radius-none)]',\n 'shadow-none',\n // トリガーと同じ幅に揃える\n 'w-[var(--trigger-width)]',\n 'overflow-auto max-h-64',\n ].join(' '),\n listbox: 'outline-none p-1 flex flex-col',\n option: [\n 'flex items-center justify-between gap-2',\n 'px-2 py-1.5 cursor-pointer outline-none',\n 'text-[var(--novi-color-fg)]',\n 'rounded-[var(--novi-radius-none)]',\n // 選択中は面ではなく文字の強さで示す。面を増やさない\n 'data-[focused]:bg-[var(--novi-color-subtle)]',\n 'data-[selected]:font-medium',\n 'data-[disabled]:opacity-40 data-[disabled]:cursor-default',\n ].join(' '),\n description: 'text-[length:var(--novi-text-xs)] text-[var(--novi-color-muted)]',\n errorMessage: 'text-[length:var(--novi-text-xs)] text-[var(--novi-color-danger)]',\n} satisfies SlotMap<typeof selectSlots, (typeof selectRequiredSlots)[number]>\n\nconst variant: VariantMap<NoviVariant, { trigger: string }> = {\n solid: { trigger: 'bg-[var(--novi-color-subtle)] border-[var(--novi-color-border-strong)]' },\n outline: { trigger: 'bg-[var(--novi-color-bg)] border-[var(--novi-color-border-strong)]' },\n soft: { trigger: 'bg-[var(--novi-color-subtle)] border-transparent' },\n ghost: {\n trigger: 'bg-transparent border-transparent border-b-[var(--novi-color-border-strong)]',\n },\n plain: { trigger: 'bg-transparent border-transparent' },\n}\n\n/** 高さは Button / Input と揃える。32 / 40 / 48px。 */\nconst size: VariantMap<NoviSize, { trigger: string; option: string }> = {\n sm: {\n trigger: 'h-8 px-2.5 text-[length:var(--novi-text-sm)]',\n option: 'text-[length:var(--novi-text-sm)]',\n },\n md: {\n trigger: 'h-10 px-3 text-[length:var(--novi-text-base)]',\n option: 'text-[length:var(--novi-text-base)]',\n },\n lg: {\n trigger: 'h-12 px-3.5 text-[length:var(--novi-text-base)]',\n option: 'text-[length:var(--novi-text-base)]',\n },\n}\n\nconst radius: VariantMap<NoviRadius, { trigger: string }> = {\n none: { trigger: 'rounded-[var(--novi-radius-none)]' },\n sm: { trigger: 'rounded-[var(--novi-radius-sm)]' },\n md: { trigger: 'rounded-[var(--novi-radius-md)]' },\n lg: { trigger: 'rounded-[var(--novi-radius-lg)]' },\n full: { trigger: 'rounded-[var(--novi-radius-full)]' },\n}\n\n/**\n * Select のスタイル定義。\n *\n * @example\n * import { selectStyles } from '@novi-ui/raster'\n * import { tv } from 'tailwind-variants'\n *\n * const mySelect = tv({ extend: selectStyles, slots: { popover: 'max-h-96' } })\n */\nexport const selectStyles = tv({\n slots,\n variants: { variant, size, radius },\n defaultVariants: { variant: 'outline', size: 'md', radius: 'none' },\n})\n\nexport type SelectStyleProps = Parameters<typeof selectStyles>[0]\n"],"mappings":";;;AAYA,MAAM,QAAQ;CACZ,MAAM;CACN,OAAO;CACP,SAAS;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC,CAAC,KAAK,GAAG;CACV,OAAO,CACL,wCAEA,mDACF,CAAC,CAAC,KAAK,GAAG;CACV,MAAM;CAEN,SAAS;EACP;EACA;EACA;EACA;EACA;EAEA;EACA;CACF,CAAC,CAAC,KAAK,GAAG;CACV,SAAS;CACT,QAAQ;EACN;EACA;EACA;EACA;EAEA;EACA;EACA;CACF,CAAC,CAAC,KAAK,GAAG;CACV,aAAa;CACb,cAAc;AAChB;;;;;;;;;;AA6CA,MAAa,eAAe,GAAG;CAC7B;CACA,UAAU;EAAE;GA5CZ,OAAO,EAAE,SAAS,yEAAyE;GAC3F,SAAS,EAAE,SAAS,qEAAqE;GACzF,MAAM,EAAE,SAAS,mDAAmD;GACpE,OAAO,EACL,SAAS,+EACX;GACA,OAAO,EAAE,SAAS,oCAAoC;EAsC1C;EAAS;GAjCrB,IAAI;IACF,SAAS;IACT,QAAQ;GACV;GACA,IAAI;IACF,SAAS;IACT,QAAQ;GACV;GACA,IAAI;IACF,SAAS;IACT,QAAQ;GACV;EAsBqB;EAAM;GAlB3B,MAAM,EAAE,SAAS,oCAAoC;GACrD,IAAI,EAAE,SAAS,kCAAkC;GACjD,IAAI,EAAE,SAAS,kCAAkC;GACjD,IAAI,EAAE,SAAS,kCAAkC;GACjD,MAAM,EAAE,SAAS,oCAAoC;EAc1B;CAAO;CAClC,iBAAiB;EAAE,SAAS;EAAW,MAAM;EAAM,QAAQ;CAAO;AACpE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Skeleton } from "./skeleton.mjs";
2
+ import { SkeletonStyleProps, skeletonStyles } from "./skeleton.styles.mjs";
3
+ export { Skeleton, type SkeletonStyleProps, skeletonStyles };
@@ -0,0 +1,15 @@
1
+ import { SkeletonProps } from "@novi-ui/core";
2
+ //#region src/skeleton/skeleton.d.ts
3
+ /**
4
+ * 読み込み中の場所取り。
5
+ *
6
+ * 支援技術には読ませない。読み込み状態は Spinner か live region で伝えること。
7
+ * 大きさは `className` で指定する。
8
+ *
9
+ * @example
10
+ * <Skeleton className="h-4 w-40" />
11
+ */
12
+ declare function Skeleton({ radius, className, classNames, id }: SkeletonProps): import("react").JSX.Element;
13
+ //#endregion
14
+ export { Skeleton };
15
+ //# sourceMappingURL=skeleton.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.d.mts","names":[],"sources":["../../src/skeleton/skeleton.tsx"],"mappings":";;;;;;;;;;;iBAcgB,WAAW,QAAQ,WAAW,YAAY,MAAM,gCAAa,IAAA"}
@@ -0,0 +1,26 @@
1
+ "use client";
2
+ import { skeletonStyles } from "./skeleton.styles.mjs";
3
+ import { jsx } from "react/jsx-runtime";
4
+ //#region src/skeleton/skeleton.tsx
5
+ /**
6
+ * 読み込み中の場所取り。
7
+ *
8
+ * 支援技術には読ませない。読み込み状態は Spinner か live region で伝えること。
9
+ * 大きさは `className` で指定する。
10
+ *
11
+ * @example
12
+ * <Skeleton className="h-4 w-40" />
13
+ */
14
+ function Skeleton({ radius, className, classNames, id }) {
15
+ const s = skeletonStyles({ radius });
16
+ return /* @__PURE__ */ jsx("span", {
17
+ id,
18
+ "aria-hidden": "true",
19
+ "data-slot": "root",
20
+ className: s.root({ class: [className, classNames?.root] })
21
+ });
22
+ }
23
+ //#endregion
24
+ export { Skeleton };
25
+
26
+ //# sourceMappingURL=skeleton.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.mjs","names":[],"sources":["../../src/skeleton/skeleton.tsx"],"sourcesContent":["'use client'\n\nimport type { SkeletonProps } from '@novi-ui/core'\nimport { skeletonStyles } from './skeleton.styles'\n\n/**\n * 読み込み中の場所取り。\n *\n * 支援技術には読ませない。読み込み状態は Spinner か live region で伝えること。\n * 大きさは `className` で指定する。\n *\n * @example\n * <Skeleton className=\"h-4 w-40\" />\n */\nexport function Skeleton({ radius, className, classNames, id }: SkeletonProps) {\n const s = skeletonStyles({ radius })\n\n return (\n <span\n id={id}\n aria-hidden=\"true\"\n data-slot=\"root\"\n className={s.root({ class: [className, classNames?.root] })}\n />\n )\n}\n"],"mappings":";;;;;;;;;;;;;AAcA,SAAgB,SAAS,EAAE,QAAQ,WAAW,YAAY,MAAqB;CAC7E,MAAM,IAAI,eAAe,EAAE,OAAO,CAAC;CAEnC,OACE,oBAAC,QAAD;EACM;EACJ,eAAY;EACZ,aAAU;EACV,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,YAAY,IAAI,EAAE,CAAC;CAC3D,CAAA;AAEL"}
@@ -0,0 +1,31 @@
1
+ import { VariantMap } from "@novi-ui/core";
2
+ //#region src/skeleton/skeleton.styles.d.ts
3
+ /**
4
+ * Skeleton のスタイル定義。
5
+ *
6
+ * @example
7
+ * const mySkeleton = tv({ extend: skeletonStyles, slots: { root: 'opacity-50' } })
8
+ */
9
+ declare const skeletonStyles: import("tailwind-variants").TVReturnType<{
10
+ radius: VariantMap<"sm" | "md" | "lg" | "none" | "full", {
11
+ root: string;
12
+ }>;
13
+ }, {
14
+ root: string;
15
+ }, undefined, {
16
+ radius: VariantMap<"sm" | "md" | "lg" | "none" | "full", {
17
+ root: string;
18
+ }>;
19
+ }, {
20
+ root: string;
21
+ }, import("tailwind-variants").TVReturnTypeLike<{
22
+ radius: VariantMap<"sm" | "md" | "lg" | "none" | "full", {
23
+ root: string;
24
+ }>;
25
+ }, {
26
+ root: string;
27
+ }>>;
28
+ type SkeletonStyleProps = Parameters<typeof skeletonStyles>[0];
29
+ //#endregion
30
+ export { SkeletonStyleProps, skeletonStyles };
31
+ //# sourceMappingURL=skeleton.styles.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.styles.d.mts","names":[],"sources":["../../src/skeleton/skeleton.styles.ts"],"mappings":";;;;;;;;cA6Ba,4CAAc;;IAdkB;;;;;;IAAA;;;;;;IAAA;;;;;KAoBjC,qBAAqB,kBAAkB"}
@@ -0,0 +1,22 @@
1
+ import { tv } from "tailwind-variants";
2
+ /**
3
+ * Skeleton のスタイル定義。
4
+ *
5
+ * @example
6
+ * const mySkeleton = tv({ extend: skeletonStyles, slots: { root: 'opacity-50' } })
7
+ */
8
+ const skeletonStyles = tv({
9
+ slots: { root: "block bg-[var(--novi-color-subtle)] motion-safe:animate-pulse" },
10
+ variants: { radius: {
11
+ none: { root: "rounded-[var(--novi-radius-none)]" },
12
+ sm: { root: "rounded-[var(--novi-radius-sm)]" },
13
+ md: { root: "rounded-[var(--novi-radius-md)]" },
14
+ lg: { root: "rounded-[var(--novi-radius-lg)]" },
15
+ full: { root: "rounded-[var(--novi-radius-full)]" }
16
+ } },
17
+ defaultVariants: { radius: "none" }
18
+ });
19
+ //#endregion
20
+ export { skeletonStyles };
21
+
22
+ //# sourceMappingURL=skeleton.styles.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.styles.mjs","names":[],"sources":["../../src/skeleton/skeleton.styles.ts"],"sourcesContent":["import type {\n NoviRadius,\n SlotMap,\n skeletonRequiredSlots,\n skeletonSlots,\n VariantMap,\n} from '@novi-ui/core'\nimport { tv } from 'tailwind-variants'\n\nconst slots = {\n // opacity のパルスのみ。シマー(translate するグラデーション)は使わない。\n // 動きで飾らないという Raster の原則に反するため。\n root: 'block bg-[var(--novi-color-subtle)] motion-safe:animate-pulse',\n} satisfies SlotMap<typeof skeletonSlots, (typeof skeletonRequiredSlots)[number]>\n\nconst radius: VariantMap<NoviRadius, { root: string }> = {\n none: { root: 'rounded-[var(--novi-radius-none)]' },\n sm: { root: 'rounded-[var(--novi-radius-sm)]' },\n md: { root: 'rounded-[var(--novi-radius-md)]' },\n lg: { root: 'rounded-[var(--novi-radius-lg)]' },\n full: { root: 'rounded-[var(--novi-radius-full)]' },\n}\n\n/**\n * Skeleton のスタイル定義。\n *\n * @example\n * const mySkeleton = tv({ extend: skeletonStyles, slots: { root: 'opacity-50' } })\n */\nexport const skeletonStyles = tv({\n slots,\n variants: { radius },\n defaultVariants: { radius: 'none' },\n})\n\nexport type SkeletonStyleProps = Parameters<typeof skeletonStyles>[0]\n"],"mappings":";;;;;;;AA6BA,MAAa,iBAAiB,GAAG;CAC/B,SAlBA,MAAM,gEAkBN;CACA,UAAU,EAAE;EAfZ,MAAM,EAAE,MAAM,oCAAoC;EAClD,IAAI,EAAE,MAAM,kCAAkC;EAC9C,IAAI,EAAE,MAAM,kCAAkC;EAC9C,IAAI,EAAE,MAAM,kCAAkC;EAC9C,MAAM,EAAE,MAAM,oCAAoC;CAWtC,EAAO;CACnB,iBAAiB,EAAE,QAAQ,OAAO;AACpC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Spinner } from "./spinner.mjs";
2
+ import { SpinnerStyleProps, spinnerStyles } from "./spinner.styles.mjs";
3
+ export { Spinner, type SpinnerStyleProps, spinnerStyles };
@@ -0,0 +1,15 @@
1
+ import { SpinnerProps } from "@novi-ui/core";
2
+ //#region src/spinner/spinner.d.ts
3
+ /**
4
+ * 処理中であることを示す回転表示。
5
+ *
6
+ * `label` を渡すと画面にも表示される。渡さない場合も支援技術には
7
+ * 「読み込み中」と伝わるようにしてある。
8
+ *
9
+ * @example
10
+ * <Spinner label="読み込み中" />
11
+ */
12
+ declare function Spinner({ size, color, label, className, classNames, id }: SpinnerProps): import("react").JSX.Element;
13
+ //#endregion
14
+ export { Spinner };
15
+ //# sourceMappingURL=spinner.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.d.mts","names":[],"sources":["../../src/spinner/spinner.tsx"],"mappings":";;;;;;;;;;;iBAcgB,UAAU,MAAM,OAAO,OAAO,WAAW,YAAY,MAAM,+BAAY,IAAA"}
@@ -0,0 +1,55 @@
1
+ "use client";
2
+ import { spinnerStyles } from "./spinner.styles.mjs";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ //#region src/spinner/spinner.tsx
5
+ /**
6
+ * 処理中であることを示す回転表示。
7
+ *
8
+ * `label` を渡すと画面にも表示される。渡さない場合も支援技術には
9
+ * 「読み込み中」と伝わるようにしてある。
10
+ *
11
+ * @example
12
+ * <Spinner label="読み込み中" />
13
+ */
14
+ function Spinner({ size, color, label, className, classNames, id }) {
15
+ const s = spinnerStyles({
16
+ size,
17
+ color
18
+ });
19
+ return /* @__PURE__ */ jsxs("span", {
20
+ id,
21
+ role: "status",
22
+ "data-slot": "root",
23
+ className: s.root({ class: [className, classNames?.root] }),
24
+ children: [/* @__PURE__ */ jsxs("svg", {
25
+ "data-slot": "circle",
26
+ className: s.circle({ class: classNames?.circle }),
27
+ viewBox: "0 0 24 24",
28
+ fill: "none",
29
+ "aria-hidden": "true",
30
+ children: [/* @__PURE__ */ jsx("circle", {
31
+ cx: "12",
32
+ cy: "12",
33
+ r: "9",
34
+ stroke: "currentColor",
35
+ strokeWidth: "2",
36
+ opacity: "0.2"
37
+ }), /* @__PURE__ */ jsx("path", {
38
+ d: "M21 12a9 9 0 0 0-9-9",
39
+ stroke: "currentColor",
40
+ strokeWidth: "2"
41
+ })]
42
+ }), label !== void 0 ? /* @__PURE__ */ jsx("span", {
43
+ "data-slot": "label",
44
+ className: s.label({ class: classNames?.label }),
45
+ children: label
46
+ }) : /* @__PURE__ */ jsx("span", {
47
+ className: "sr-only",
48
+ children: "読み込み中"
49
+ })]
50
+ });
51
+ }
52
+ //#endregion
53
+ export { Spinner };
54
+
55
+ //# sourceMappingURL=spinner.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.mjs","names":[],"sources":["../../src/spinner/spinner.tsx"],"sourcesContent":["'use client'\n\nimport type { SpinnerProps } from '@novi-ui/core'\nimport { spinnerStyles } from './spinner.styles'\n\n/**\n * 処理中であることを示す回転表示。\n *\n * `label` を渡すと画面にも表示される。渡さない場合も支援技術には\n * 「読み込み中」と伝わるようにしてある。\n *\n * @example\n * <Spinner label=\"読み込み中\" />\n */\nexport function Spinner({ size, color, label, className, classNames, id }: SpinnerProps) {\n const s = spinnerStyles({ size, color })\n\n return (\n <span\n id={id}\n role=\"status\"\n data-slot=\"root\"\n className={s.root({ class: [className, classNames?.root] })}\n >\n <svg\n data-slot=\"circle\"\n className={s.circle({ class: classNames?.circle })}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" strokeWidth=\"2\" opacity=\"0.2\" />\n <path d=\"M21 12a9 9 0 0 0-9-9\" stroke=\"currentColor\" strokeWidth=\"2\" />\n </svg>\n\n {label !== undefined ? (\n <span data-slot=\"label\" className={s.label({ class: classNames?.label })}>\n {label}\n </span>\n ) : (\n <span className=\"sr-only\">読み込み中</span>\n )}\n </span>\n )\n}\n"],"mappings":";;;;;;;;;;;;;AAcA,SAAgB,QAAQ,EAAE,MAAM,OAAO,OAAO,WAAW,YAAY,MAAoB;CACvF,MAAM,IAAI,cAAc;EAAE;EAAM;CAAM,CAAC;CAEvC,OACE,qBAAC,QAAD;EACM;EACJ,MAAK;EACL,aAAU;EACV,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,YAAY,IAAI,EAAE,CAAC;EAJ5D,UAAA,CAME,qBAAC,OAAD;GACE,aAAU;GACV,WAAW,EAAE,OAAO,EAAE,OAAO,YAAY,OAAO,CAAC;GACjD,SAAQ;GACR,MAAK;GACL,eAAY;GALd,UAAA,CAOE,oBAAC,UAAD;IAAQ,IAAG;IAAK,IAAG;IAAK,GAAE;IAAI,QAAO;IAAe,aAAY;IAAI,SAAQ;GAAO,CAAA,GACnF,oBAAC,QAAD;IAAM,GAAE;IAAuB,QAAO;IAAe,aAAY;GAAK,CAAA,CACnE;EAEJ,CAAA,GAAA,UAAU,KAAA,IACT,oBAAC,QAAD;GAAM,aAAU;GAAQ,WAAW,EAAE,MAAM,EAAE,OAAO,YAAY,MAAM,CAAC;GACpE,UAAA;EACG,CAAA,IAEN,oBAAC,QAAD;GAAM,WAAU;GAAU,UAAA;EAAW,CAAA,CAEnC;;AAEV"}
@@ -0,0 +1,46 @@
1
+ import { VariantMap } from "@novi-ui/core";
2
+ //#region src/spinner/spinner.styles.d.ts
3
+ /**
4
+ * Spinner のスタイル定義。
5
+ *
6
+ * @example
7
+ * const mySpinner = tv({ extend: spinnerStyles, slots: { label: 'font-medium' } })
8
+ */
9
+ declare const spinnerStyles: import("tailwind-variants").TVReturnType<{
10
+ color: VariantMap<"default" | "primary" | "secondary" | "success" | "warning" | "danger", {
11
+ root: string;
12
+ }>;
13
+ size: VariantMap<"sm" | "md" | "lg", {
14
+ circle: string;
15
+ }>;
16
+ }, {
17
+ root: string;
18
+ circle: string;
19
+ label: string;
20
+ }, undefined, {
21
+ color: VariantMap<"default" | "primary" | "secondary" | "success" | "warning" | "danger", {
22
+ root: string;
23
+ }>;
24
+ size: VariantMap<"sm" | "md" | "lg", {
25
+ circle: string;
26
+ }>;
27
+ }, {
28
+ root: string;
29
+ circle: string;
30
+ label: string;
31
+ }, import("tailwind-variants").TVReturnTypeLike<{
32
+ color: VariantMap<"default" | "primary" | "secondary" | "success" | "warning" | "danger", {
33
+ root: string;
34
+ }>;
35
+ size: VariantMap<"sm" | "md" | "lg", {
36
+ circle: string;
37
+ }>;
38
+ }, {
39
+ root: string;
40
+ circle: string;
41
+ label: string;
42
+ }>>;
43
+ type SpinnerStyleProps = Parameters<typeof spinnerStyles>[0];
44
+ //#endregion
45
+ export { SpinnerStyleProps, spinnerStyles };
46
+ //# sourceMappingURL=spinner.styles.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.styles.d.mts","names":[],"sources":["../../src/spinner/spinner.styles.ts"],"mappings":";;;;;;;;cA4Ca,2CAAa;;IArBiB;;;IASA;;;;;;;;IATA;;;IASA;;;;;;;;IATA;;;IASA;;;;;;;KAkB/B,oBAAoB,kBAAkB"}
@@ -0,0 +1,37 @@
1
+ import { tv } from "tailwind-variants";
2
+ /**
3
+ * Spinner のスタイル定義。
4
+ *
5
+ * @example
6
+ * const mySpinner = tv({ extend: spinnerStyles, slots: { label: 'font-medium' } })
7
+ */
8
+ const spinnerStyles = tv({
9
+ slots: {
10
+ root: "inline-flex items-center gap-2",
11
+ circle: "shrink-0 motion-safe:animate-spin text-[var(--c)]",
12
+ label: "text-[length:var(--novi-text-sm)] text-[var(--novi-color-muted)]"
13
+ },
14
+ variants: {
15
+ color: {
16
+ default: { root: "[--c:var(--novi-color-fg)]" },
17
+ primary: { root: "[--c:var(--novi-color-primary)]" },
18
+ secondary: { root: "[--c:var(--novi-color-secondary)]" },
19
+ success: { root: "[--c:var(--novi-color-success)]" },
20
+ warning: { root: "[--c:var(--novi-color-warning)]" },
21
+ danger: { root: "[--c:var(--novi-color-danger)]" }
22
+ },
23
+ size: {
24
+ sm: { circle: "size-4" },
25
+ md: { circle: "size-5" },
26
+ lg: { circle: "size-6" }
27
+ }
28
+ },
29
+ defaultVariants: {
30
+ color: "default",
31
+ size: "md"
32
+ }
33
+ });
34
+ //#endregion
35
+ export { spinnerStyles };
36
+
37
+ //# sourceMappingURL=spinner.styles.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.styles.mjs","names":[],"sources":["../../src/spinner/spinner.styles.ts"],"sourcesContent":["import type {\n NoviColor,\n NoviSize,\n SlotMap,\n spinnerRequiredSlots,\n spinnerSlots,\n VariantMap,\n} from '@novi-ui/core'\nimport { tv } from 'tailwind-variants'\n\n/**\n * Spinner は `rotate` を使う**唯一の例外**(ADR-R2)。\n *\n * 代替のローディング表現(点滅・バーの往復)は視認性か情報量で劣るため、\n * ここだけ回転を許可している。デザイン規律の検査でも例外登録済み。\n * `prefers-reduced-motion` のときは回転を止める。\n */\nconst slots = {\n root: 'inline-flex items-center gap-2',\n circle: 'shrink-0 motion-safe:animate-spin text-[var(--c)]',\n label: 'text-[length:var(--novi-text-sm)] text-[var(--novi-color-muted)]',\n} satisfies SlotMap<typeof spinnerSlots, (typeof spinnerRequiredSlots)[number]>\n\nconst color: VariantMap<NoviColor, { root: string }> = {\n default: { root: '[--c:var(--novi-color-fg)]' },\n primary: { root: '[--c:var(--novi-color-primary)]' },\n secondary: { root: '[--c:var(--novi-color-secondary)]' },\n success: { root: '[--c:var(--novi-color-success)]' },\n warning: { root: '[--c:var(--novi-color-warning)]' },\n danger: { root: '[--c:var(--novi-color-danger)]' },\n}\n\nconst size: VariantMap<NoviSize, { circle: string }> = {\n sm: { circle: 'size-4' },\n md: { circle: 'size-5' },\n lg: { circle: 'size-6' },\n}\n\n/**\n * Spinner のスタイル定義。\n *\n * @example\n * const mySpinner = tv({ extend: spinnerStyles, slots: { label: 'font-medium' } })\n */\nexport const spinnerStyles = tv({\n slots,\n variants: { color, size },\n defaultVariants: { color: 'default', size: 'md' },\n})\n\nexport type SpinnerStyleProps = Parameters<typeof spinnerStyles>[0]\n"],"mappings":";;;;;;;AA4CA,MAAa,gBAAgB,GAAG;CAC9B;EA3BA,MAAM;EACN,QAAQ;EACR,OAAO;CAyBP;CACA,UAAU;EAAE;GAtBZ,SAAS,EAAE,MAAM,6BAA6B;GAC9C,SAAS,EAAE,MAAM,kCAAkC;GACnD,WAAW,EAAE,MAAM,oCAAoC;GACvD,SAAS,EAAE,MAAM,kCAAkC;GACnD,SAAS,EAAE,MAAM,kCAAkC;GACnD,QAAQ,EAAE,MAAM,iCAAiC;EAiBrC;EAAO;GAbnB,IAAI,EAAE,QAAQ,SAAS;GACvB,IAAI,EAAE,QAAQ,SAAS;GACvB,IAAI,EAAE,QAAQ,SAAS;EAWJ;CAAK;CACxB,iBAAiB;EAAE,OAAO;EAAW,MAAM;CAAK;AAClD,CAAC"}
@@ -0,0 +1,23 @@
1
+ //#region src/styles/focus-ring.ts
2
+ /**
3
+ * 全コンポーネント共通のフォーカスリング。
4
+ *
5
+ * 個別に書くと必ずどこかで揺れる。1箇所に定義して全コンポーネントが import する。
6
+ *
7
+ * React Aria Components はキーボード操作時にのみ `data-focus-visible` を立てるため、
8
+ * `:focus-visible` 擬似クラスではなくその属性を使う。
9
+ * ポインタで押しただけでリングが出る誤動作を避けられる。
10
+ */
11
+ const focusRing = [
12
+ "outline-none",
13
+ "data-[focus-visible]:outline",
14
+ "data-[focus-visible]:outline-[length:var(--novi-focus-ring-width)]",
15
+ "data-[focus-visible]:outline-[var(--novi-focus-ring-color)]",
16
+ "data-[focus-visible]:outline-offset-[var(--novi-focus-ring-offset)]"
17
+ ].join(" ");
18
+ /** 無効状態の共通表現。色は変えず、透明度と操作不能だけで示す(色数を増やさない)。 */
19
+ const disabledState = "data-[disabled]:opacity-40 data-[disabled]:pointer-events-none";
20
+ //#endregion
21
+ export { disabledState, focusRing };
22
+
23
+ //# sourceMappingURL=focus-ring.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus-ring.mjs","names":[],"sources":["../../src/styles/focus-ring.ts"],"sourcesContent":["/**\n * 全コンポーネント共通のフォーカスリング。\n *\n * 個別に書くと必ずどこかで揺れる。1箇所に定義して全コンポーネントが import する。\n *\n * React Aria Components はキーボード操作時にのみ `data-focus-visible` を立てるため、\n * `:focus-visible` 擬似クラスではなくその属性を使う。\n * ポインタで押しただけでリングが出る誤動作を避けられる。\n */\nexport const focusRing = [\n 'outline-none',\n 'data-[focus-visible]:outline',\n 'data-[focus-visible]:outline-[length:var(--novi-focus-ring-width)]',\n 'data-[focus-visible]:outline-[var(--novi-focus-ring-color)]',\n 'data-[focus-visible]:outline-offset-[var(--novi-focus-ring-offset)]',\n].join(' ')\n\n/** 無効状態の共通表現。色は変えず、透明度と操作不能だけで示す(色数を増やさない)。 */\nexport const disabledState = 'data-[disabled]:opacity-40 data-[disabled]:pointer-events-none'\n"],"mappings":";;;;;;;;;;AASA,MAAa,YAAY;CACvB;CACA;CACA;CACA;CACA;AACF,CAAC,CAAC,KAAK,GAAG;;AAGV,MAAa,gBAAgB"}
@@ -0,0 +1,3 @@
1
+ import { Switch } from "./switch.mjs";
2
+ import { SwitchStyleProps, switchStyles } from "./switch.styles.mjs";
3
+ export { Switch, type SwitchStyleProps, switchStyles };
@@ -0,0 +1,17 @@
1
+ import { SwitchProps } from "@novi-ui/core";
2
+ //#region src/switch/switch.d.ts
3
+ /**
4
+ * オン / オフの切り替え。
5
+ *
6
+ * Raster では**矩形**で表示する(ADR-R3)。形が見慣れないぶん状態が読み取りにくいため、
7
+ * ラベルの併記を強く推奨する。
8
+ *
9
+ * @example
10
+ * <Switch isSelected={enabled} onChange={setEnabled}>
11
+ * メール通知を受け取る
12
+ * </Switch>
13
+ */
14
+ declare function Switch({ size, color, name, value, isSelected, defaultSelected, onChange, isDisabled, isReadOnly, description, children, className, classNames, id }: SwitchProps): import("react").JSX.Element;
15
+ //#endregion
16
+ export { Switch };
17
+ //# sourceMappingURL=switch.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch.d.mts","names":[],"sources":["../../src/switch/switch.tsx"],"mappings":";;;;;;;;;;;;;iBAiBgB,SACd,MACA,OACA,MACA,OACA,YACA,iBACA,UACA,YACA,YACA,aACA,UACA,WACA,YACA,MACC,8BAAW,IAAA"}
@@ -0,0 +1,57 @@
1
+ "use client";
2
+ import { switchStyles } from "./switch.styles.mjs";
3
+ import { Switch } from "react-aria-components";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ //#region src/switch/switch.tsx
6
+ /**
7
+ * オン / オフの切り替え。
8
+ *
9
+ * Raster では**矩形**で表示する(ADR-R3)。形が見慣れないぶん状態が読み取りにくいため、
10
+ * ラベルの併記を強く推奨する。
11
+ *
12
+ * @example
13
+ * <Switch isSelected={enabled} onChange={setEnabled}>
14
+ * メール通知を受け取る
15
+ * </Switch>
16
+ */
17
+ function Switch$1({ size, color, name, value, isSelected, defaultSelected, onChange, isDisabled, isReadOnly, description, children, className, classNames, id }) {
18
+ const s = switchStyles({
19
+ size,
20
+ color
21
+ });
22
+ return /* @__PURE__ */ jsxs(Switch, {
23
+ id,
24
+ name,
25
+ value,
26
+ isSelected,
27
+ defaultSelected,
28
+ onChange,
29
+ isDisabled,
30
+ isReadOnly,
31
+ "data-slot": "root",
32
+ className: `group ${s.root({ class: [className, classNames?.root] })}`,
33
+ children: [/* @__PURE__ */ jsx("span", {
34
+ "data-slot": "track",
35
+ className: s.track({ class: classNames?.track }),
36
+ children: /* @__PURE__ */ jsx("span", {
37
+ "data-slot": "thumb",
38
+ className: s.thumb({ class: classNames?.thumb })
39
+ })
40
+ }), children !== void 0 && /* @__PURE__ */ jsxs("span", {
41
+ className: "flex flex-col gap-0.5",
42
+ children: [/* @__PURE__ */ jsx("span", {
43
+ "data-slot": "label",
44
+ className: s.label({ class: classNames?.label }),
45
+ children
46
+ }), description !== void 0 && /* @__PURE__ */ jsx("span", {
47
+ "data-slot": "description",
48
+ className: s.description({ class: classNames?.description }),
49
+ children: description
50
+ })]
51
+ })]
52
+ });
53
+ }
54
+ //#endregion
55
+ export { Switch$1 as Switch };
56
+
57
+ //# sourceMappingURL=switch.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch.mjs","names":["Switch","RACSwitch"],"sources":["../../src/switch/switch.tsx"],"sourcesContent":["'use client'\n\nimport type { SwitchProps } from '@novi-ui/core'\nimport { Switch as RACSwitch } from 'react-aria-components'\nimport { switchStyles } from './switch.styles'\n\n/**\n * オン / オフの切り替え。\n *\n * Raster では**矩形**で表示する(ADR-R3)。形が見慣れないぶん状態が読み取りにくいため、\n * ラベルの併記を強く推奨する。\n *\n * @example\n * <Switch isSelected={enabled} onChange={setEnabled}>\n * メール通知を受け取る\n * </Switch>\n */\nexport function Switch({\n size,\n color,\n name,\n value,\n isSelected,\n defaultSelected,\n onChange,\n isDisabled,\n isReadOnly,\n description,\n children,\n className,\n classNames,\n id,\n}: SwitchProps) {\n const s = switchStyles({ size, color })\n\n return (\n <RACSwitch\n id={id}\n name={name}\n value={value}\n isSelected={isSelected}\n defaultSelected={defaultSelected}\n onChange={onChange}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n data-slot=\"root\"\n className={`group ${s.root({ class: [className, classNames?.root] })}`}\n >\n <span data-slot=\"track\" className={s.track({ class: classNames?.track })}>\n <span data-slot=\"thumb\" className={s.thumb({ class: classNames?.thumb })} />\n </span>\n\n {children !== undefined && (\n <span className=\"flex flex-col gap-0.5\">\n <span data-slot=\"label\" className={s.label({ class: classNames?.label })}>\n {children}\n </span>\n {description !== undefined && (\n <span\n data-slot=\"description\"\n className={s.description({ class: classNames?.description })}\n >\n {description}\n </span>\n )}\n </span>\n )}\n </RACSwitch>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAiBA,SAAgBA,SAAO,EACrB,MACA,OACA,MACA,OACA,YACA,iBACA,UACA,YACA,YACA,aACA,UACA,WACA,YACA,MACc;CACd,MAAM,IAAI,aAAa;EAAE;EAAM;CAAM,CAAC;CAEtC,OACE,qBAACC,QAAD;EACM;EACE;EACC;EACK;EACK;EACP;EACE;EACA;EACZ,aAAU;EACV,WAAW,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,YAAY,IAAI,EAAE,CAAC;EAVrE,UAAA,CAYE,oBAAC,QAAD;GAAM,aAAU;GAAQ,WAAW,EAAE,MAAM,EAAE,OAAO,YAAY,MAAM,CAAC;GACrE,UAAA,oBAAC,QAAD;IAAM,aAAU;IAAQ,WAAW,EAAE,MAAM,EAAE,OAAO,YAAY,MAAM,CAAC;GAAI,CAAA;EACvE,CAAA,GAEL,aAAa,KAAA,KACZ,qBAAC,QAAD;GAAM,WAAU;GAAhB,UAAA,CACE,oBAAC,QAAD;IAAM,aAAU;IAAQ,WAAW,EAAE,MAAM,EAAE,OAAO,YAAY,MAAM,CAAC;IACpE;GACG,CAAA,GACL,gBAAgB,KAAA,KACf,oBAAC,QAAD;IACE,aAAU;IACV,WAAW,EAAE,YAAY,EAAE,OAAO,YAAY,YAAY,CAAC;IAE1D,UAAA;GACG,CAAA,CAEJ;EAEC,CAAA,CAAA;;AAEf"}
@@ -0,0 +1,58 @@
1
+ import { VariantMap } from "@novi-ui/core";
2
+ //#region src/switch/switch.styles.d.ts
3
+ /**
4
+ * Switch のスタイル定義。
5
+ *
6
+ * @example
7
+ * const mySwitch = tv({ extend: switchStyles, slots: { track: 'w-12' } })
8
+ */
9
+ declare const switchStyles: import("tailwind-variants").TVReturnType<{
10
+ color: VariantMap<"default" | "primary" | "secondary" | "success" | "warning" | "danger", {
11
+ root: string;
12
+ }>;
13
+ size: VariantMap<"sm" | "md" | "lg", {
14
+ track: string;
15
+ thumb: string;
16
+ label: string;
17
+ }>;
18
+ }, {
19
+ root: string;
20
+ track: string;
21
+ thumb: string;
22
+ label: string;
23
+ description: string;
24
+ }, undefined, {
25
+ color: VariantMap<"default" | "primary" | "secondary" | "success" | "warning" | "danger", {
26
+ root: string;
27
+ }>;
28
+ size: VariantMap<"sm" | "md" | "lg", {
29
+ track: string;
30
+ thumb: string;
31
+ label: string;
32
+ }>;
33
+ }, {
34
+ root: string;
35
+ track: string;
36
+ thumb: string;
37
+ label: string;
38
+ description: string;
39
+ }, import("tailwind-variants").TVReturnTypeLike<{
40
+ color: VariantMap<"default" | "primary" | "secondary" | "success" | "warning" | "danger", {
41
+ root: string;
42
+ }>;
43
+ size: VariantMap<"sm" | "md" | "lg", {
44
+ track: string;
45
+ thumb: string;
46
+ label: string;
47
+ }>;
48
+ }, {
49
+ root: string;
50
+ track: string;
51
+ thumb: string;
52
+ label: string;
53
+ description: string;
54
+ }>>;
55
+ type SwitchStyleProps = Parameters<typeof switchStyles>[0];
56
+ //#endregion
57
+ export { SwitchStyleProps, switchStyles };
58
+ //# sourceMappingURL=switch.styles.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch.styles.d.mts","names":[],"sources":["../../src/switch/switch.styles.ts"],"mappings":";;;;;;;;cA2Ea,0CAAY;;IAjCkB;;;IASD;IAAe;IAAe;;;;;;;;;;IAT7B;;;IASD;IAAe;IAAe;;;;;;;;;;IAT7B;;;IASD;IAAe;IAAe;;;;;;;;;KA8B5D,mBAAmB,kBAAkB"}