shadcn_view_components 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +590 -0
  3. data/LICENSE +49 -0
  4. data/README.md +542 -0
  5. data/app/assets/javascripts/shadcn/aria_relationships.js +88 -0
  6. data/app/assets/javascripts/shadcn/controllers/accordion_controller.js +241 -0
  7. data/app/assets/javascripts/shadcn/controllers/calendar_controller.js +98 -0
  8. data/app/assets/javascripts/shadcn/controllers/carousel_controller.js +305 -0
  9. data/app/assets/javascripts/shadcn/controllers/checked_state_controller.js +121 -0
  10. data/app/assets/javascripts/shadcn/controllers/combobox_controller.js +613 -0
  11. data/app/assets/javascripts/shadcn/controllers/command_controller.js +87 -0
  12. data/app/assets/javascripts/shadcn/controllers/dialog_controller.js +208 -0
  13. data/app/assets/javascripts/shadcn/controllers/hover_card_controller.js +145 -0
  14. data/app/assets/javascripts/shadcn/controllers/input_otp_controller.js +416 -0
  15. data/app/assets/javascripts/shadcn/controllers/menu_controller.js +286 -0
  16. data/app/assets/javascripts/shadcn/controllers/menubar_controller.js +430 -0
  17. data/app/assets/javascripts/shadcn/controllers/message_scroller_controller.js +37 -0
  18. data/app/assets/javascripts/shadcn/controllers/navigation_menu_controller.js +254 -0
  19. data/app/assets/javascripts/shadcn/controllers/popover_controller.js +117 -0
  20. data/app/assets/javascripts/shadcn/controllers/resizable_controller.js +256 -0
  21. data/app/assets/javascripts/shadcn/controllers/select_controller.js +491 -0
  22. data/app/assets/javascripts/shadcn/controllers/sidebar_controller.js +30 -0
  23. data/app/assets/javascripts/shadcn/controllers/slider_controller.js +74 -0
  24. data/app/assets/javascripts/shadcn/controllers/tabs_controller.js +146 -0
  25. data/app/assets/javascripts/shadcn/controllers/toast_controller.js +81 -0
  26. data/app/assets/javascripts/shadcn/controllers/toggle_controller.js +21 -0
  27. data/app/assets/javascripts/shadcn/controllers/toggle_group_controller.js +37 -0
  28. data/app/assets/javascripts/shadcn/controllers/tooltip_controller.js +123 -0
  29. data/app/assets/javascripts/shadcn/floating_position.js +660 -0
  30. data/app/assets/javascripts/shadcn/hide_after_exit.js +53 -0
  31. data/app/assets/javascripts/shadcn/index.js +65 -0
  32. data/app/assets/javascripts/shadcn/menu_popover.js +352 -0
  33. data/app/assets/javascripts/shadcn/package.json +17 -0
  34. data/app/assets/javascripts/shadcn/state_attrs.js +13 -0
  35. data/app/assets/stylesheets/shadcn/shadcn.css +766 -0
  36. data/app/assets/tailwind/shadcn_view_components/engine.css +11 -0
  37. data/app/components/shadcn/accordion.rb +121 -0
  38. data/app/components/shadcn/alert.rb +31 -0
  39. data/app/components/shadcn/alert_dialog.rb +165 -0
  40. data/app/components/shadcn/aspect_ratio.rb +34 -0
  41. data/app/components/shadcn/attachment.rb +86 -0
  42. data/app/components/shadcn/avatar.rb +55 -0
  43. data/app/components/shadcn/badge.rb +32 -0
  44. data/app/components/shadcn/base_component.rb +239 -0
  45. data/app/components/shadcn/breadcrumb.rb +70 -0
  46. data/app/components/shadcn/bubble.rb +48 -0
  47. data/app/components/shadcn/button.html.erb +1 -0
  48. data/app/components/shadcn/button.rb +41 -0
  49. data/app/components/shadcn/button_group.rb +41 -0
  50. data/app/components/shadcn/button_styled.rb +51 -0
  51. data/app/components/shadcn/calendar.rb +276 -0
  52. data/app/components/shadcn/card.rb +18 -0
  53. data/app/components/shadcn/carousel.rb +236 -0
  54. data/app/components/shadcn/chart.rb +57 -0
  55. data/app/components/shadcn/checkbox.rb +64 -0
  56. data/app/components/shadcn/collapsible.rb +25 -0
  57. data/app/components/shadcn/combobox.rb +552 -0
  58. data/app/components/shadcn/command.rb +149 -0
  59. data/app/components/shadcn/context_menu.rb +79 -0
  60. data/app/components/shadcn/dialog.rb +180 -0
  61. data/app/components/shadcn/direction_provider.rb +18 -0
  62. data/app/components/shadcn/drawer.rb +150 -0
  63. data/app/components/shadcn/dropdown_menu.rb +242 -0
  64. data/app/components/shadcn/empty.rb +40 -0
  65. data/app/components/shadcn/field.rb +106 -0
  66. data/app/components/shadcn/floating_position_options.rb +132 -0
  67. data/app/components/shadcn/form.rb +105 -0
  68. data/app/components/shadcn/hover_card.rb +66 -0
  69. data/app/components/shadcn/input.rb +13 -0
  70. data/app/components/shadcn/input_group/button.rb +48 -0
  71. data/app/components/shadcn/input_group.rb +51 -0
  72. data/app/components/shadcn/input_otp.rb +265 -0
  73. data/app/components/shadcn/item.rb +108 -0
  74. data/app/components/shadcn/kbd.rb +9 -0
  75. data/app/components/shadcn/label.rb +12 -0
  76. data/app/components/shadcn/marker.rb +37 -0
  77. data/app/components/shadcn/menubar.rb +110 -0
  78. data/app/components/shadcn/message.rb +29 -0
  79. data/app/components/shadcn/message_scroller.rb +52 -0
  80. data/app/components/shadcn/native_checked_state.rb +74 -0
  81. data/app/components/shadcn/native_select.rb +78 -0
  82. data/app/components/shadcn/navigation_menu.rb +122 -0
  83. data/app/components/shadcn/pagination.rb +160 -0
  84. data/app/components/shadcn/popover.rb +68 -0
  85. data/app/components/shadcn/preview_base.rb +107 -0
  86. data/app/components/shadcn/progress.rb +49 -0
  87. data/app/components/shadcn/radio_group.rb +74 -0
  88. data/app/components/shadcn/resizable.rb +77 -0
  89. data/app/components/shadcn/scroll_area.rb +59 -0
  90. data/app/components/shadcn/select.rb +356 -0
  91. data/app/components/shadcn/separator.rb +42 -0
  92. data/app/components/shadcn/sheet.rb +157 -0
  93. data/app/components/shadcn/sidebar.rb +332 -0
  94. data/app/components/shadcn/skeleton.rb +13 -0
  95. data/app/components/shadcn/slider.rb +279 -0
  96. data/app/components/shadcn/sonner.rb +30 -0
  97. data/app/components/shadcn/spinner.rb +32 -0
  98. data/app/components/shadcn/switch.rb +79 -0
  99. data/app/components/shadcn/table.rb +46 -0
  100. data/app/components/shadcn/tabs.rb +119 -0
  101. data/app/components/shadcn/textarea.rb +7 -0
  102. data/app/components/shadcn/toggle.rb +66 -0
  103. data/app/components/shadcn/toggle_group.rb +127 -0
  104. data/app/components/shadcn/tooltip.rb +74 -0
  105. data/config/importmap.rb +5 -0
  106. data/lib/generators/shadcn_view_components/install_generator.rb +182 -0
  107. data/lib/shadcn_view_components/classes.rb +89 -0
  108. data/lib/shadcn_view_components/component_naming.rb +21 -0
  109. data/lib/shadcn_view_components/contracts/calendar.rb +95 -0
  110. data/lib/shadcn_view_components/engine.rb +56 -0
  111. data/lib/shadcn_view_components/generated/contracts/accordion.rb +112 -0
  112. data/lib/shadcn_view_components/generated/contracts/alert-dialog.rb +300 -0
  113. data/lib/shadcn_view_components/generated/contracts/alert.rb +104 -0
  114. data/lib/shadcn_view_components/generated/contracts/aspect-ratio.rb +34 -0
  115. data/lib/shadcn_view_components/generated/contracts/attachment.rb +224 -0
  116. data/lib/shadcn_view_components/generated/contracts/avatar.rb +149 -0
  117. data/lib/shadcn_view_components/generated/contracts/badge.rb +39 -0
  118. data/lib/shadcn_view_components/generated/contracts/breadcrumb.rb +172 -0
  119. data/lib/shadcn_view_components/generated/contracts/bubble.rb +112 -0
  120. data/lib/shadcn_view_components/generated/contracts/button-group.rb +81 -0
  121. data/lib/shadcn_view_components/generated/contracts/button.rb +81 -0
  122. data/lib/shadcn_view_components/generated/contracts/card.rb +172 -0
  123. data/lib/shadcn_view_components/generated/contracts/carousel.rb +133 -0
  124. data/lib/shadcn_view_components/generated/contracts/chart.rb +109 -0
  125. data/lib/shadcn_view_components/generated/contracts/checkbox.rb +35 -0
  126. data/lib/shadcn_view_components/generated/contracts/collapsible.rb +89 -0
  127. data/lib/shadcn_view_components/generated/contracts/combobox.rb +368 -0
  128. data/lib/shadcn_view_components/generated/contracts/command.rb +222 -0
  129. data/lib/shadcn_view_components/generated/contracts/context-menu.rb +378 -0
  130. data/lib/shadcn_view_components/generated/contracts/dialog.rb +258 -0
  131. data/lib/shadcn_view_components/generated/contracts/direction.rb +34 -0
  132. data/lib/shadcn_view_components/generated/contracts/drawer.rb +280 -0
  133. data/lib/shadcn_view_components/generated/contracts/dropdown-menu.rb +380 -0
  134. data/lib/shadcn_view_components/generated/contracts/empty.rb +150 -0
  135. data/lib/shadcn_view_components/generated/contracts/field.rb +244 -0
  136. data/lib/shadcn_view_components/generated/contracts/form.rb +62 -0
  137. data/lib/shadcn_view_components/generated/contracts/hover-card.rb +90 -0
  138. data/lib/shadcn_view_components/generated/contracts/input-group.rb +155 -0
  139. data/lib/shadcn_view_components/generated/contracts/input-otp.rb +106 -0
  140. data/lib/shadcn_view_components/generated/contracts/input.rb +34 -0
  141. data/lib/shadcn_view_components/generated/contracts/item.rb +251 -0
  142. data/lib/shadcn_view_components/generated/contracts/kbd.rb +57 -0
  143. data/lib/shadcn_view_components/generated/contracts/label.rb +34 -0
  144. data/lib/shadcn_view_components/generated/contracts/marker.rb +82 -0
  145. data/lib/shadcn_view_components/generated/contracts/menubar.rb +394 -0
  146. data/lib/shadcn_view_components/generated/contracts/message-scroller.rb +149 -0
  147. data/lib/shadcn_view_components/generated/contracts/message.rb +149 -0
  148. data/lib/shadcn_view_components/generated/contracts/native-select.rb +82 -0
  149. data/lib/shadcn_view_components/generated/contracts/navigation-menu.rb +195 -0
  150. data/lib/shadcn_view_components/generated/contracts/pagination.rb +176 -0
  151. data/lib/shadcn_view_components/generated/contracts/popover.rb +159 -0
  152. data/lib/shadcn_view_components/generated/contracts/progress.rb +126 -0
  153. data/lib/shadcn_view_components/generated/contracts/radio-group.rb +58 -0
  154. data/lib/shadcn_view_components/generated/contracts/resizable.rb +85 -0
  155. data/lib/shadcn_view_components/generated/contracts/scroll-area.rb +59 -0
  156. data/lib/shadcn_view_components/generated/contracts/select.rb +245 -0
  157. data/lib/shadcn_view_components/generated/contracts/separator.rb +34 -0
  158. data/lib/shadcn_view_components/generated/contracts/sheet.rb +209 -0
  159. data/lib/shadcn_view_components/generated/contracts/sidebar.rb +558 -0
  160. data/lib/shadcn_view_components/generated/contracts/skeleton.rb +34 -0
  161. data/lib/shadcn_view_components/generated/contracts/slider.rb +38 -0
  162. data/lib/shadcn_view_components/generated/contracts/sonner.rb +36 -0
  163. data/lib/shadcn_view_components/generated/contracts/spinner.rb +34 -0
  164. data/lib/shadcn_view_components/generated/contracts/switch.rb +35 -0
  165. data/lib/shadcn_view_components/generated/contracts/table.rb +199 -0
  166. data/lib/shadcn_view_components/generated/contracts/tabs.rb +104 -0
  167. data/lib/shadcn_view_components/generated/contracts/textarea.rb +34 -0
  168. data/lib/shadcn_view_components/generated/contracts/toggle-group.rb +62 -0
  169. data/lib/shadcn_view_components/generated/contracts/toggle.rb +39 -0
  170. data/lib/shadcn_view_components/generated/contracts/tooltip.rb +116 -0
  171. data/lib/shadcn_view_components/numeric_property_validation.rb +124 -0
  172. data/lib/shadcn_view_components/property_contract_definitions.rb +92 -0
  173. data/lib/shadcn_view_components/property_contracts.rb +42 -0
  174. data/lib/shadcn_view_components/property_validation.rb +55 -0
  175. data/lib/shadcn_view_components/version.rb +6 -0
  176. data/lib/shadcn_view_components.rb +21 -0
  177. metadata +446 -0
@@ -0,0 +1,159 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ # !! AUTO-GENERATED by tools/extractor — DO NOT EDIT !!
5
+ # Source: shadcn/ui base-nova "popover" (item sha256: 5e607da2e037a067d69490caad7c6aaf9e5dbf5c95b4cdd77f185fc1267a6c0a)
6
+ # Regenerate with: rake shadcn:generate
7
+
8
+ module ShadcnViewComponents
9
+ module Contracts
10
+ module Popover
11
+ ROOT_SLOT = T.let("popover", String)
12
+
13
+ # 契約クラスが属する要素の data-slot(ルートがラッパー構造の場合)
14
+ CLASSES_SLOT = T.let("", String)
15
+
16
+ DEFAULTS = T.let({}.freeze, T::Hash[Symbol, Symbol])
17
+
18
+ VARIANTS = T.let({}.freeze, T::Hash[Symbol, T::Array[Symbol]])
19
+
20
+ # キーはソート済みpropペア。値は事前解決済みの最終クラス文字列
21
+ COMBINATIONS = T.let({
22
+ {} => ""
23
+ }.freeze, T::Hash[T::Hash[Symbol, Symbol], String])
24
+
25
+ SLOTS = T.let([
26
+ { name: "popover", tag: "PopoverPrimitive.Root", static_attributes: {}.freeze, dynamic_attributes: [].freeze }.freeze
27
+ ].freeze, T::Array[T::Hash[Symbol, T.untyped]])
28
+
29
+ extend T::Sig
30
+
31
+ sig { params(options: T::Hash[Symbol, Symbol]).returns(String) }
32
+ module_function def combination(options)
33
+ COMBINATIONS.fetch(options)
34
+ end
35
+ module Content
36
+ ROOT_SLOT = T.let("", String)
37
+
38
+ # 契約クラスが属する要素の data-slot(ルートがラッパー構造の場合)
39
+ CLASSES_SLOT = T.let("popover-content", String)
40
+
41
+ DEFAULTS = T.let({}.freeze, T::Hash[Symbol, Symbol])
42
+
43
+ VARIANTS = T.let({}.freeze, T::Hash[Symbol, T::Array[Symbol]])
44
+
45
+ # キーはソート済みpropペア。値は事前解決済みの最終クラス文字列
46
+ COMBINATIONS = T.let({
47
+ {} => "z-50 flex w-72 origin-(--transform-origin) flex-col gap-2.5 rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95"
48
+ }.freeze, T::Hash[T::Hash[Symbol, Symbol], String])
49
+
50
+ SLOTS = T.let([
51
+ { name: "", tag: "PopoverPrimitive.Portal", static_attributes: {}.freeze, dynamic_attributes: [].freeze }.freeze,
52
+ { name: "popover-content", tag: "PopoverPrimitive.Popup", static_attributes: {}.freeze, dynamic_attributes: [].freeze }.freeze
53
+ ].freeze, T::Array[T::Hash[Symbol, T.untyped]])
54
+
55
+ extend T::Sig
56
+
57
+ sig { params(options: T::Hash[Symbol, Symbol]).returns(String) }
58
+ module_function def combination(options)
59
+ COMBINATIONS.fetch(options)
60
+ end
61
+ end
62
+ module Description
63
+ ROOT_SLOT = T.let("popover-description", String)
64
+
65
+ DEFAULTS = T.let({}.freeze, T::Hash[Symbol, Symbol])
66
+
67
+ VARIANTS = T.let({}.freeze, T::Hash[Symbol, T::Array[Symbol]])
68
+
69
+ # キーはソート済みpropペア。値は事前解決済みの最終クラス文字列
70
+ COMBINATIONS = T.let({
71
+ {} => "text-muted-foreground"
72
+ }.freeze, T::Hash[T::Hash[Symbol, Symbol], String])
73
+
74
+ SLOTS = T.let([
75
+ { name: "popover-description", tag: "PopoverPrimitive.Description", static_attributes: {}.freeze, dynamic_attributes: [].freeze }.freeze
76
+ ].freeze, T::Array[T::Hash[Symbol, T.untyped]])
77
+
78
+ extend T::Sig
79
+
80
+ sig { params(options: T::Hash[Symbol, Symbol]).returns(String) }
81
+ module_function def combination(options)
82
+ COMBINATIONS.fetch(options)
83
+ end
84
+ end
85
+ module Header
86
+ ROOT_SLOT = T.let("popover-header", String)
87
+
88
+ DEFAULTS = T.let({}.freeze, T::Hash[Symbol, Symbol])
89
+
90
+ VARIANTS = T.let({}.freeze, T::Hash[Symbol, T::Array[Symbol]])
91
+
92
+ # キーはソート済みpropペア。値は事前解決済みの最終クラス文字列
93
+ COMBINATIONS = T.let({
94
+ {} => "flex flex-col gap-0.5 text-sm"
95
+ }.freeze, T::Hash[T::Hash[Symbol, Symbol], String])
96
+
97
+ SLOTS = T.let([
98
+ { name: "popover-header", tag: "div", static_attributes: {}.freeze, dynamic_attributes: [].freeze }.freeze
99
+ ].freeze, T::Array[T::Hash[Symbol, T.untyped]])
100
+
101
+ extend T::Sig
102
+
103
+ sig { params(options: T::Hash[Symbol, Symbol]).returns(String) }
104
+ module_function def combination(options)
105
+ COMBINATIONS.fetch(options)
106
+ end
107
+ end
108
+ module Title
109
+ ROOT_SLOT = T.let("popover-title", String)
110
+
111
+ DEFAULTS = T.let({}.freeze, T::Hash[Symbol, Symbol])
112
+
113
+ VARIANTS = T.let({}.freeze, T::Hash[Symbol, T::Array[Symbol]])
114
+
115
+ # キーはソート済みpropペア。値は事前解決済みの最終クラス文字列
116
+ COMBINATIONS = T.let({
117
+ {} => "font-medium"
118
+ }.freeze, T::Hash[T::Hash[Symbol, Symbol], String])
119
+
120
+ SLOTS = T.let([
121
+ { name: "popover-title", tag: "PopoverPrimitive.Title", static_attributes: {}.freeze, dynamic_attributes: [].freeze }.freeze
122
+ ].freeze, T::Array[T::Hash[Symbol, T.untyped]])
123
+
124
+ extend T::Sig
125
+
126
+ sig { params(options: T::Hash[Symbol, Symbol]).returns(String) }
127
+ module_function def combination(options)
128
+ COMBINATIONS.fetch(options)
129
+ end
130
+ end
131
+ module Trigger
132
+ ROOT_SLOT = T.let("popover-trigger", String)
133
+
134
+ # 契約クラスが属する要素の data-slot(ルートがラッパー構造の場合)
135
+ CLASSES_SLOT = T.let("", String)
136
+
137
+ DEFAULTS = T.let({}.freeze, T::Hash[Symbol, Symbol])
138
+
139
+ VARIANTS = T.let({}.freeze, T::Hash[Symbol, T::Array[Symbol]])
140
+
141
+ # キーはソート済みpropペア。値は事前解決済みの最終クラス文字列
142
+ COMBINATIONS = T.let({
143
+ {} => ""
144
+ }.freeze, T::Hash[T::Hash[Symbol, Symbol], String])
145
+
146
+ SLOTS = T.let([
147
+ { name: "popover-trigger", tag: "PopoverPrimitive.Trigger", static_attributes: {}.freeze, dynamic_attributes: [].freeze }.freeze
148
+ ].freeze, T::Array[T::Hash[Symbol, T.untyped]])
149
+
150
+ extend T::Sig
151
+
152
+ sig { params(options: T::Hash[Symbol, Symbol]).returns(String) }
153
+ module_function def combination(options)
154
+ COMBINATIONS.fetch(options)
155
+ end
156
+ end
157
+ end
158
+ end
159
+ end
@@ -0,0 +1,126 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ # !! AUTO-GENERATED by tools/extractor — DO NOT EDIT !!
5
+ # Source: shadcn/ui base-nova "progress" (item sha256: 72f8409c19c9e02c9ba9339938e79cf6e56e1b7bf9b71d1637fe7b5a57c04b44)
6
+ # Regenerate with: rake shadcn:generate
7
+
8
+ module ShadcnViewComponents
9
+ module Contracts
10
+ module Progress
11
+ ROOT_SLOT = T.let("progress", String)
12
+
13
+ DEFAULTS = T.let({}.freeze, T::Hash[Symbol, Symbol])
14
+
15
+ VARIANTS = T.let({}.freeze, T::Hash[Symbol, T::Array[Symbol]])
16
+
17
+ # キーはソート済みpropペア。値は事前解決済みの最終クラス文字列
18
+ COMBINATIONS = T.let({
19
+ {} => "flex flex-wrap gap-3"
20
+ }.freeze, T::Hash[T::Hash[Symbol, Symbol], String])
21
+
22
+ SLOTS = T.let([
23
+ { name: "progress", tag: "ProgressPrimitive.Root", static_attributes: {}.freeze, dynamic_attributes: ["value"].freeze }.freeze
24
+ ].freeze, T::Array[T::Hash[Symbol, T.untyped]])
25
+
26
+ extend T::Sig
27
+
28
+ sig { params(options: T::Hash[Symbol, Symbol]).returns(String) }
29
+ module_function def combination(options)
30
+ COMBINATIONS.fetch(options)
31
+ end
32
+ end
33
+ module ProgressIndicator
34
+ ROOT_SLOT = T.let("progress-indicator", String)
35
+
36
+ DEFAULTS = T.let({}.freeze, T::Hash[Symbol, Symbol])
37
+
38
+ VARIANTS = T.let({}.freeze, T::Hash[Symbol, T::Array[Symbol]])
39
+
40
+ # キーはソート済みpropペア。値は事前解決済みの最終クラス文字列
41
+ COMBINATIONS = T.let({
42
+ {} => "h-full bg-primary transition-all"
43
+ }.freeze, T::Hash[T::Hash[Symbol, Symbol], String])
44
+
45
+ SLOTS = T.let([
46
+ { name: "progress-indicator", tag: "ProgressPrimitive.Indicator", static_attributes: {}.freeze, dynamic_attributes: [].freeze }.freeze
47
+ ].freeze, T::Array[T::Hash[Symbol, T.untyped]])
48
+
49
+ extend T::Sig
50
+
51
+ sig { params(options: T::Hash[Symbol, Symbol]).returns(String) }
52
+ module_function def combination(options)
53
+ COMBINATIONS.fetch(options)
54
+ end
55
+ end
56
+ module ProgressLabel
57
+ ROOT_SLOT = T.let("progress-label", String)
58
+
59
+ DEFAULTS = T.let({}.freeze, T::Hash[Symbol, Symbol])
60
+
61
+ VARIANTS = T.let({}.freeze, T::Hash[Symbol, T::Array[Symbol]])
62
+
63
+ # キーはソート済みpropペア。値は事前解決済みの最終クラス文字列
64
+ COMBINATIONS = T.let({
65
+ {} => "text-sm font-medium"
66
+ }.freeze, T::Hash[T::Hash[Symbol, Symbol], String])
67
+
68
+ SLOTS = T.let([
69
+ { name: "progress-label", tag: "ProgressPrimitive.Label", static_attributes: {}.freeze, dynamic_attributes: [].freeze }.freeze
70
+ ].freeze, T::Array[T::Hash[Symbol, T.untyped]])
71
+
72
+ extend T::Sig
73
+
74
+ sig { params(options: T::Hash[Symbol, Symbol]).returns(String) }
75
+ module_function def combination(options)
76
+ COMBINATIONS.fetch(options)
77
+ end
78
+ end
79
+ module ProgressTrack
80
+ ROOT_SLOT = T.let("progress-track", String)
81
+
82
+ DEFAULTS = T.let({}.freeze, T::Hash[Symbol, Symbol])
83
+
84
+ VARIANTS = T.let({}.freeze, T::Hash[Symbol, T::Array[Symbol]])
85
+
86
+ # キーはソート済みpropペア。値は事前解決済みの最終クラス文字列
87
+ COMBINATIONS = T.let({
88
+ {} => "relative flex h-1 w-full items-center overflow-x-hidden rounded-full bg-muted"
89
+ }.freeze, T::Hash[T::Hash[Symbol, Symbol], String])
90
+
91
+ SLOTS = T.let([
92
+ { name: "progress-track", tag: "ProgressPrimitive.Track", static_attributes: {}.freeze, dynamic_attributes: [].freeze }.freeze
93
+ ].freeze, T::Array[T::Hash[Symbol, T.untyped]])
94
+
95
+ extend T::Sig
96
+
97
+ sig { params(options: T::Hash[Symbol, Symbol]).returns(String) }
98
+ module_function def combination(options)
99
+ COMBINATIONS.fetch(options)
100
+ end
101
+ end
102
+ module ProgressValue
103
+ ROOT_SLOT = T.let("progress-value", String)
104
+
105
+ DEFAULTS = T.let({}.freeze, T::Hash[Symbol, Symbol])
106
+
107
+ VARIANTS = T.let({}.freeze, T::Hash[Symbol, T::Array[Symbol]])
108
+
109
+ # キーはソート済みpropペア。値は事前解決済みの最終クラス文字列
110
+ COMBINATIONS = T.let({
111
+ {} => "ml-auto text-sm text-muted-foreground tabular-nums"
112
+ }.freeze, T::Hash[T::Hash[Symbol, Symbol], String])
113
+
114
+ SLOTS = T.let([
115
+ { name: "progress-value", tag: "ProgressPrimitive.Value", static_attributes: {}.freeze, dynamic_attributes: [].freeze }.freeze
116
+ ].freeze, T::Array[T::Hash[Symbol, T.untyped]])
117
+
118
+ extend T::Sig
119
+
120
+ sig { params(options: T::Hash[Symbol, Symbol]).returns(String) }
121
+ module_function def combination(options)
122
+ COMBINATIONS.fetch(options)
123
+ end
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,58 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ # !! AUTO-GENERATED by tools/extractor — DO NOT EDIT !!
5
+ # Source: shadcn/ui base-nova "radio-group" (item sha256: 0c8bcd054d54c03dd47fdbf547f1eb4201f0e138a13a5ce17eef22937d7a97de)
6
+ # Regenerate with: rake shadcn:generate
7
+
8
+ module ShadcnViewComponents
9
+ module Contracts
10
+ module RadioGroup
11
+ ROOT_SLOT = T.let("radio-group", String)
12
+
13
+ DEFAULTS = T.let({}.freeze, T::Hash[Symbol, Symbol])
14
+
15
+ VARIANTS = T.let({}.freeze, T::Hash[Symbol, T::Array[Symbol]])
16
+
17
+ # キーはソート済みpropペア。値は事前解決済みの最終クラス文字列
18
+ COMBINATIONS = T.let({
19
+ {} => "grid w-full gap-2"
20
+ }.freeze, T::Hash[T::Hash[Symbol, Symbol], String])
21
+
22
+ SLOTS = T.let([
23
+ { name: "radio-group", tag: "RadioGroupPrimitive", static_attributes: {}.freeze, dynamic_attributes: [].freeze }.freeze
24
+ ].freeze, T::Array[T::Hash[Symbol, T.untyped]])
25
+
26
+ extend T::Sig
27
+
28
+ sig { params(options: T::Hash[Symbol, Symbol]).returns(String) }
29
+ module_function def combination(options)
30
+ COMBINATIONS.fetch(options)
31
+ end
32
+ module Item
33
+ ROOT_SLOT = T.let("radio-group-item", String)
34
+
35
+ DEFAULTS = T.let({}.freeze, T::Hash[Symbol, Symbol])
36
+
37
+ VARIANTS = T.let({}.freeze, T::Hash[Symbol, T::Array[Symbol]])
38
+
39
+ # キーはソート済みpropペア。値は事前解決済みの最終クラス文字列
40
+ COMBINATIONS = T.let({
41
+ {} => "group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none group-has-[:focus-visible]/field-label:ring-0 group-has-[:focus-visible]/field-label:not-data-checked:border-input after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground group-has-[:focus-visible]/field-label:data-checked:border-primary dark:data-checked:bg-primary"
42
+ }.freeze, T::Hash[T::Hash[Symbol, Symbol], String])
43
+
44
+ SLOTS = T.let([
45
+ { name: "radio-group-item", tag: "RadioPrimitive.Root", static_attributes: {}.freeze, dynamic_attributes: [].freeze }.freeze,
46
+ { name: "radio-group-indicator", tag: "RadioPrimitive.Indicator", static_attributes: { class: "flex size-4 items-center justify-center" }.freeze, dynamic_attributes: [].freeze }.freeze
47
+ ].freeze, T::Array[T::Hash[Symbol, T.untyped]])
48
+
49
+ extend T::Sig
50
+
51
+ sig { params(options: T::Hash[Symbol, Symbol]).returns(String) }
52
+ module_function def combination(options)
53
+ COMBINATIONS.fetch(options)
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,85 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ # !! AUTO-GENERATED by tools/extractor — DO NOT EDIT !!
5
+ # Source: shadcn/ui base-nova "resizable" (item sha256: b4170089c5810d2d7847930af1507bf13711fd21507e41146c3ead5410bf54ee)
6
+ # Regenerate with: rake shadcn:generate
7
+
8
+ module ShadcnViewComponents
9
+ module Contracts
10
+ module Resizable
11
+ module Handle
12
+ ROOT_SLOT = T.let("resizable-handle", String)
13
+
14
+ DEFAULTS = T.let({}.freeze, T::Hash[Symbol, Symbol])
15
+
16
+ VARIANTS = T.let({}.freeze, T::Hash[Symbol, T::Array[Symbol]])
17
+
18
+ # キーはソート済みpropペア。値は事前解決済みの最終クラス文字列
19
+ COMBINATIONS = T.let({
20
+ {} => "relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90"
21
+ }.freeze, T::Hash[T::Hash[Symbol, Symbol], String])
22
+
23
+ SLOTS = T.let([
24
+ { name: "resizable-handle", tag: "ResizablePrimitive.Separator", static_attributes: {}.freeze, dynamic_attributes: [].freeze }.freeze
25
+ ].freeze, T::Array[T::Hash[Symbol, T.untyped]])
26
+
27
+ extend T::Sig
28
+
29
+ sig { params(options: T::Hash[Symbol, Symbol]).returns(String) }
30
+ module_function def combination(options)
31
+ COMBINATIONS.fetch(options)
32
+ end
33
+ end
34
+ module Panel
35
+ ROOT_SLOT = T.let("resizable-panel", String)
36
+
37
+ # 契約クラスが属する要素の data-slot(ルートがラッパー構造の場合)
38
+ CLASSES_SLOT = T.let("", String)
39
+
40
+ DEFAULTS = T.let({}.freeze, T::Hash[Symbol, Symbol])
41
+
42
+ VARIANTS = T.let({}.freeze, T::Hash[Symbol, T::Array[Symbol]])
43
+
44
+ # キーはソート済みpropペア。値は事前解決済みの最終クラス文字列
45
+ COMBINATIONS = T.let({
46
+ {} => ""
47
+ }.freeze, T::Hash[T::Hash[Symbol, Symbol], String])
48
+
49
+ SLOTS = T.let([
50
+ { name: "resizable-panel", tag: "ResizablePrimitive.Panel", static_attributes: {}.freeze, dynamic_attributes: [].freeze }.freeze
51
+ ].freeze, T::Array[T::Hash[Symbol, T.untyped]])
52
+
53
+ extend T::Sig
54
+
55
+ sig { params(options: T::Hash[Symbol, Symbol]).returns(String) }
56
+ module_function def combination(options)
57
+ COMBINATIONS.fetch(options)
58
+ end
59
+ end
60
+ module PanelGroup
61
+ ROOT_SLOT = T.let("resizable-panel-group", String)
62
+
63
+ DEFAULTS = T.let({}.freeze, T::Hash[Symbol, Symbol])
64
+
65
+ VARIANTS = T.let({}.freeze, T::Hash[Symbol, T::Array[Symbol]])
66
+
67
+ # キーはソート済みpropペア。値は事前解決済みの最終クラス文字列
68
+ COMBINATIONS = T.let({
69
+ {} => "flex h-full w-full aria-[orientation=vertical]:flex-col"
70
+ }.freeze, T::Hash[T::Hash[Symbol, Symbol], String])
71
+
72
+ SLOTS = T.let([
73
+ { name: "resizable-panel-group", tag: "ResizablePrimitive.Group", static_attributes: {}.freeze, dynamic_attributes: [].freeze }.freeze
74
+ ].freeze, T::Array[T::Hash[Symbol, T.untyped]])
75
+
76
+ extend T::Sig
77
+
78
+ sig { params(options: T::Hash[Symbol, Symbol]).returns(String) }
79
+ module_function def combination(options)
80
+ COMBINATIONS.fetch(options)
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,59 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ # !! AUTO-GENERATED by tools/extractor — DO NOT EDIT !!
5
+ # Source: shadcn/ui base-nova "scroll-area" (item sha256: 88c2e5cfe00a37160ed41e4415faba1ff6c08c2b22af2e3cc215e968855053a5)
6
+ # Regenerate with: rake shadcn:generate
7
+
8
+ module ShadcnViewComponents
9
+ module Contracts
10
+ module ScrollArea
11
+ ROOT_SLOT = T.let("scroll-area", String)
12
+
13
+ DEFAULTS = T.let({}.freeze, T::Hash[Symbol, Symbol])
14
+
15
+ VARIANTS = T.let({}.freeze, T::Hash[Symbol, T::Array[Symbol]])
16
+
17
+ # キーはソート済みpropペア。値は事前解決済みの最終クラス文字列
18
+ COMBINATIONS = T.let({
19
+ {} => "relative"
20
+ }.freeze, T::Hash[T::Hash[Symbol, Symbol], String])
21
+
22
+ SLOTS = T.let([
23
+ { name: "scroll-area", tag: "ScrollAreaPrimitive.Root", static_attributes: {}.freeze, dynamic_attributes: [].freeze }.freeze,
24
+ { name: "scroll-area-viewport", tag: "ScrollAreaPrimitive.Viewport", static_attributes: { class: "size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1" }.freeze, dynamic_attributes: [].freeze }.freeze
25
+ ].freeze, T::Array[T::Hash[Symbol, T.untyped]])
26
+
27
+ extend T::Sig
28
+
29
+ sig { params(options: T::Hash[Symbol, Symbol]).returns(String) }
30
+ module_function def combination(options)
31
+ COMBINATIONS.fetch(options)
32
+ end
33
+ module Scrollbar
34
+ ROOT_SLOT = T.let("scroll-area-scrollbar", String)
35
+
36
+ DEFAULTS = T.let({}.freeze, T::Hash[Symbol, Symbol])
37
+
38
+ VARIANTS = T.let({}.freeze, T::Hash[Symbol, T::Array[Symbol]])
39
+
40
+ # キーはソート済みpropペア。値は事前解決済みの最終クラス文字列
41
+ COMBINATIONS = T.let({
42
+ {} => "flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent"
43
+ }.freeze, T::Hash[T::Hash[Symbol, Symbol], String])
44
+
45
+ SLOTS = T.let([
46
+ { name: "scroll-area-scrollbar", tag: "ScrollAreaPrimitive.Scrollbar", static_attributes: {}.freeze, dynamic_attributes: ["data-orientation", "orientation"].freeze }.freeze,
47
+ { name: "scroll-area-thumb", tag: "ScrollAreaPrimitive.Thumb", static_attributes: { class: "relative flex-1 rounded-full bg-border" }.freeze, dynamic_attributes: [].freeze }.freeze
48
+ ].freeze, T::Array[T::Hash[Symbol, T.untyped]])
49
+
50
+ extend T::Sig
51
+
52
+ sig { params(options: T::Hash[Symbol, Symbol]).returns(String) }
53
+ module_function def combination(options)
54
+ COMBINATIONS.fetch(options)
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end