tailwind_dsl 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.builders/blueprint/tailwind.rb +400 -0
- data/.builders/boot.rb +8 -0
- data/.builders/generators/domain-model-to-code.rb +97 -0
- data/.builders/generators/domain-model.rb +174 -0
- data/.builders/generators/project-plan.rb +36 -0
- data/CHANGELOG.md +7 -0
- data/docs/domain-model-custom.drawio +109 -0
- data/docs/domain-model.json +927 -0
- data/docs/domain-model.svg +3 -0
- data/docs/project-plan/project.drawio +32 -0
- data/docs/project-plan/project_in_progress.svg +3 -0
- data/lib/_.rb +13 -0
- data/lib/tailwind_dsl/base_data_builder.rb +10 -0
- data/lib/tailwind_dsl/config/collection.rb +15 -0
- data/lib/tailwind_dsl/config/component.rb +15 -0
- data/lib/tailwind_dsl/config/component_group.rb +16 -0
- data/lib/tailwind_dsl/config/configuration.rb +15 -0
- data/lib/tailwind_dsl/config/theme.rb +14 -0
- data/lib/tailwind_dsl/data_shape.rb +12 -0
- data/lib/tailwind_dsl/schema/component.rb +16 -0
- data/lib/tailwind_dsl/schema/page.rb +18 -0
- data/lib/tailwind_dsl/schema/web_site.rb +20 -0
- data/lib/tailwind_dsl/tailwind_dsl.rb +16 -0
- data/lib/tailwind_dsl/version.rb +1 -1
- data/lib/tailwind_dsl.rb +1 -0
- data/package-lock.json +2 -2
- data/package.json +1 -1
- metadata +23 -2
@@ -0,0 +1,174 @@
|
|
1
|
+
KManager.action :domain_model do
|
2
|
+
action do
|
3
|
+
|
4
|
+
DrawioDsl::Drawio
|
5
|
+
.init(k_builder, on_exist: :write, on_action: :execute)
|
6
|
+
.diagram(theme: :style_04)
|
7
|
+
.page('Domain Modal', margin_left: 0, margin_top: 0, rounded: 0, background: '#fafafa') do
|
8
|
+
grid_layout(wrap_at: 6, grid_w: 220, grid_h: 180)
|
9
|
+
|
10
|
+
group(title: 'Tailwind GEM', theme: :style_01)
|
11
|
+
|
12
|
+
group(title: 'Configuration', theme: :style_01)
|
13
|
+
|
14
|
+
klass(:a1, w: 200, description: 'Configuration container for the Tailwind DSL') do
|
15
|
+
format
|
16
|
+
.header('Configuration', namespace: :config)
|
17
|
+
.field(:collections , type: :Collections) # winter, summer
|
18
|
+
.field(:themes , type: :Themes) # light, dark, red, blue
|
19
|
+
.field(:data_shapes , type: :DataShapes) # obj, heading_paragraph_list, image_heading_paragraph_list
|
20
|
+
.field(:component_groups , type: :ComponentGroups) # nav, footer, header, hero, price
|
21
|
+
end
|
22
|
+
|
23
|
+
klass(:a2, w: 200, description: 'Configuration for collection', note: 'other words could be - brands / set / design / collection') do
|
24
|
+
format
|
25
|
+
.header('Collection', namespace: :config)
|
26
|
+
.field(:name, type: :String)
|
27
|
+
.field(:description, type: :String)
|
28
|
+
.field(:component_groups , type: :ComponentGroups) # winter, summer
|
29
|
+
.field(:default_themes , type: :Themes) # light, dark
|
30
|
+
end
|
31
|
+
|
32
|
+
klass(:a3, w: 200, description: 'Configuration for theme', note: 'light, dark, red, green') do
|
33
|
+
format
|
34
|
+
.header('Theme', namespace: :config)
|
35
|
+
.field(:key, type: :Symbol)
|
36
|
+
.field(:name, type: :String) # The name will default to the titleized version of the key
|
37
|
+
.field(:description, type: :String)
|
38
|
+
end
|
39
|
+
|
40
|
+
klass(:a4, w: 200, description: 'Configuration for data shape', note: 'object, key_value array') do
|
41
|
+
format
|
42
|
+
.header('DataShape')
|
43
|
+
.field(:key, type: :Symbol)
|
44
|
+
.field(:name, type: :String)
|
45
|
+
.field(:description, type: :String)
|
46
|
+
end
|
47
|
+
|
48
|
+
klass(:a5, w: 200, description: 'Configuration for component group', note: 'nav, , footer, header, hero, price') do
|
49
|
+
format
|
50
|
+
.header('ComponentGroup', namespace: :config)
|
51
|
+
.field(:key, type: :Symbol)
|
52
|
+
.field(:name, type: :String)
|
53
|
+
.field(:description, type: :String)
|
54
|
+
.field(:collection, type: :Collection) # belongs_to (foreign_key)
|
55
|
+
.field(:components , type: :Components) # 01, 02, 03
|
56
|
+
end
|
57
|
+
|
58
|
+
klass(:a6, w: 200, description: 'Configuration for component', note: '01, 02, 03') do
|
59
|
+
format
|
60
|
+
.header('Component', namespace: :config)
|
61
|
+
.field(:key, type: :Symbol)
|
62
|
+
.field(:name, type: :String)
|
63
|
+
.field(:description, type: :String)
|
64
|
+
.field(:data_shape, type: :DataShape)
|
65
|
+
end
|
66
|
+
|
67
|
+
solid(source: :a1, target: :a2, exit_point: :e, entry_point: :w, waypoint: :orthogonal_curved)
|
68
|
+
solid(source: :a1, target: :a3, exit_point: :e, entry_point: :w, waypoint: :orthogonal_curved)
|
69
|
+
solid(source: :a1, target: :a4, exit_point: :e, entry_point: :w, waypoint: :orthogonal_curved)
|
70
|
+
solid(source: :a1, target: :a5, exit_point: :e, entry_point: :w, waypoint: :orthogonal_curved)
|
71
|
+
solid(source: :a5, target: :a6, exit_point: :e, entry_point: :w, waypoint: :orthogonal_curved)
|
72
|
+
solid(source: :a6, target: :a4, exit_point: :w, entry_point: :e, waypoint: :orthogonal_curved)
|
73
|
+
solid(source: :a2, target: :a3, exit_point: :w, entry_point: :e, waypoint: :orthogonal_curved)
|
74
|
+
|
75
|
+
group(title: 'Schema', theme: :style_01)
|
76
|
+
|
77
|
+
# website -> root<Page> (start of sitemap)
|
78
|
+
# -> page -> pages [about, contact, news, products, services, terms, privacy] -> news -> news_item
|
79
|
+
# -> page -> components -> component -> data_shape
|
80
|
+
|
81
|
+
klass(:b1, w: 200, description: '') do
|
82
|
+
format
|
83
|
+
.header('WebSite', namespace: :schema)
|
84
|
+
.field(:key, type: :Symbol)
|
85
|
+
.field(:name, type: :String)
|
86
|
+
.field(:description, type: :String)
|
87
|
+
.field(:target_folder, type: :String)
|
88
|
+
.field(:base_collection, type: :Collection) # belongs_to (foreign_key)
|
89
|
+
.field(:theme, type: :Theme) # belongs_to (foreign_key)
|
90
|
+
.field(:root, type: :Page)
|
91
|
+
.method(:favourite_components, type: :Components) # these are the components have been used in the site and implicitly become favourite
|
92
|
+
end
|
93
|
+
|
94
|
+
klass(:b2, w: 200, description: '') do
|
95
|
+
format
|
96
|
+
.header('Page', namespace: :schema)
|
97
|
+
.field(:key, type: :Symbol)
|
98
|
+
.field(:name, type: :String)
|
99
|
+
.field(:description, type: :String)
|
100
|
+
.field(:sub_folder, type: :String)
|
101
|
+
.field(:level, type: :Integer) # level 1 will hold root (home page) and top level pages (about, contact, etc)
|
102
|
+
.field(:pages, type: :Pages) # 01, 02, 03
|
103
|
+
.field(:components, type: :Components) # 01, 02, 03
|
104
|
+
end
|
105
|
+
|
106
|
+
klass(:b3, w: 200, description: '') do
|
107
|
+
format
|
108
|
+
.header('Component', namespace: :schema)
|
109
|
+
.field(:key, type: :Symbol)
|
110
|
+
.field(:name, type: :String)
|
111
|
+
.field(:description, type: :String)
|
112
|
+
.field(:component_group, type: :ComponentGroup) # belongs_to (foreign_key)
|
113
|
+
.field(:data_shape, type: :DataShape)
|
114
|
+
end
|
115
|
+
|
116
|
+
solid(source: :b1, target: :b2, exit_point: :e, entry_point: :w, waypoint: :orthogonal_curved)
|
117
|
+
solid(source: :b2, target: :b3, exit_point: :e, entry_point: :w, waypoint: :orthogonal_curved)
|
118
|
+
solid(source: :b2, target: :b2, exit_point: :e, entry_point: :s, waypoint: :orthogonal_curved)
|
119
|
+
|
120
|
+
group(title: 'Tailwind Generator', theme: :style_01)
|
121
|
+
|
122
|
+
# MVC pattern
|
123
|
+
# Model (data shape) -> View (component html) -> Controller (tailwind generator)
|
124
|
+
|
125
|
+
group(title: 'Tailwind DSL', theme: :style_01)
|
126
|
+
|
127
|
+
klass(w: 200, description: 'DSL for tailwind websites') do
|
128
|
+
format
|
129
|
+
.header('TailwindDsl')
|
130
|
+
.method(:website)
|
131
|
+
.method(:page)
|
132
|
+
.method(:component)
|
133
|
+
.method(:save)
|
134
|
+
end
|
135
|
+
|
136
|
+
group(title: 'DataBuilder', theme: :style_01)
|
137
|
+
|
138
|
+
klass(w: 200, description: 'Base for any Data Builder') do
|
139
|
+
format
|
140
|
+
.header('BaseDataBuilder')
|
141
|
+
.field(:obj, type: :Hash)
|
142
|
+
end
|
143
|
+
|
144
|
+
# page('home') do
|
145
|
+
# component('nav') do
|
146
|
+
# data
|
147
|
+
# .logo('xmen.png')
|
148
|
+
# .menu('About', 'about.html')
|
149
|
+
# .menu('Contact', 'contact.html')
|
150
|
+
# .menu('News', 'news.html')
|
151
|
+
# end
|
152
|
+
|
153
|
+
interface(description: 'Create an instance of a DataBuilder for the target component', theme: :style_02) do
|
154
|
+
format
|
155
|
+
.header('Factory', interface_type: 'MixIn')
|
156
|
+
.method(:data)
|
157
|
+
.method(:data_instance)
|
158
|
+
end
|
159
|
+
end
|
160
|
+
.cd(:docs)
|
161
|
+
.save('domain-model.drawio')
|
162
|
+
.save_json('domain-model')
|
163
|
+
.export_svg('domain-model', page: 1)
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
KManager.opts.app_name = 'tailwind_domain_model'
|
168
|
+
KManager.opts.sleep = 2
|
169
|
+
KManager.opts.reboot_on_kill = 0
|
170
|
+
KManager.opts.reboot_sleep = 4
|
171
|
+
KManager.opts.exception_style = :long
|
172
|
+
KManager.opts.show.time_taken = true
|
173
|
+
KManager.opts.show.finished = true
|
174
|
+
KManager.opts.show.finished_message = 'FINISHED :)'
|
@@ -0,0 +1,36 @@
|
|
1
|
+
KManager.action :project_plan do
|
2
|
+
action do
|
3
|
+
|
4
|
+
DrawioDsl::Drawio
|
5
|
+
.init(k_builder, on_exist: :write, on_action: :execute)
|
6
|
+
.diagram(rounded: 1, glass: 1)
|
7
|
+
.page('In progress', theme: :style_03, margin_left: 0, margin_top: 0) do
|
8
|
+
|
9
|
+
h5(x: 300, y: 0, w: 400, h: 80, title: 'DrawIO DSL')
|
10
|
+
|
11
|
+
grid_layout(y: 90, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
|
12
|
+
|
13
|
+
todo(title: 'build a or addapt the existing RubyDsl so that it can write classes and specs based on tailwind domain model')
|
14
|
+
|
15
|
+
end
|
16
|
+
.page('To Do', theme: :style_02, margin_left: 0, margin_top: 0) do
|
17
|
+
|
18
|
+
# h5(x: 300, y: 0, w: 400, h: 80, title: 'DrawIO DSL')
|
19
|
+
|
20
|
+
grid_layout(y:90, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
|
21
|
+
|
22
|
+
end
|
23
|
+
.page('Done', theme: :style_06, margin_left: 0, margin_top: 0) do
|
24
|
+
|
25
|
+
# h5(x: 300, y: 0, w: 400, h: 80, title: 'DrawIO DSL')
|
26
|
+
|
27
|
+
grid_layout(y:90, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
|
28
|
+
|
29
|
+
end
|
30
|
+
.cd(:docs)
|
31
|
+
.save('project-plan/project.drawio')
|
32
|
+
.export_svg('project-plan/project_in_progress', page: 1)
|
33
|
+
.export_svg('project-plan/project_todo' , page: 2)
|
34
|
+
.export_svg('project-plan/project_done' , page: 3)
|
35
|
+
end
|
36
|
+
end
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
## [0.0.2](https://github.com/klueless-io/tailwind_dsl/compare/v0.0.1...v0.0.2) (2022-04-01)
|
2
|
+
|
3
|
+
|
4
|
+
### Bug Fixes
|
5
|
+
|
6
|
+
* final gem setup ([1d3c603](https://github.com/klueless-io/tailwind_dsl/commit/1d3c6030359322655529ac91f4af46511a51941c))
|
7
|
+
|
1
8
|
## [Unreleased]
|
2
9
|
|
3
10
|
## [0.1.0] - 2022-04-02
|
@@ -0,0 +1,109 @@
|
|
1
|
+
<mxfile host="65bd71144e">
|
2
|
+
<diagram id="gHN" name="Domain Modal">
|
3
|
+
<mxGraphModel dx="1311" dy="583" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" background="#CCE5FF" math="0" shadow="0">
|
4
|
+
<root>
|
5
|
+
<mxCell id="page_root_gHN"/>
|
6
|
+
<mxCell id="node_root_gHN" parent="page_root_gHN"/>
|
7
|
+
<mxCell id="syoxd6ieJrQFCAj4x4gr-0" value="" style="group" vertex="1" connectable="0" parent="node_root_gHN">
|
8
|
+
<mxGeometry x="52" y="915" width="452" height="165" as="geometry"/>
|
9
|
+
</mxCell>
|
10
|
+
<mxCell id="gHN-27" value="DataBuilder" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;fontSize=20;verticalAlign=top" parent="syoxd6ieJrQFCAj4x4gr-0" vertex="1">
|
11
|
+
<mxGeometry width="452" height="165" as="geometry"/>
|
12
|
+
</mxCell>
|
13
|
+
<mxCell id="gHN-28" value="<p style="margin:0px;margin-left:4px;margin-bottom:4px;text-align:center"><b>BaseDataBuilder</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-bottom:4px">obj: Hash</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="syoxd6ieJrQFCAj4x4gr-0" vertex="1">
|
14
|
+
<mxGeometry x="28" y="52" width="200" height="46" as="geometry"/>
|
15
|
+
</mxCell>
|
16
|
+
<mxCell id="gHN-29" value="<p style="margin:0px;margin-left:4px;margin-bottom:4px;text-align:center"><i>&lt;&lt; MixIn &gt;&gt;</i></p><p style="margin:0px;margin-left:4px;margin-bottom:4px;text-align:center"><b>Factory</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-bottom:4px">data()</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">data_instance()</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="syoxd6ieJrQFCAj4x4gr-0" vertex="1">
|
17
|
+
<mxGeometry x="268" y="52" width="160" height="87" as="geometry"/>
|
18
|
+
</mxCell>
|
19
|
+
<mxCell id="syoxd6ieJrQFCAj4x4gr-1" value="" style="group" vertex="1" connectable="0" parent="node_root_gHN">
|
20
|
+
<mxGeometry x="55" y="593" width="874" height="285" as="geometry"/>
|
21
|
+
</mxCell>
|
22
|
+
<mxCell id="gHN-17" value="Schema" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;fontSize=20;verticalAlign=top" parent="syoxd6ieJrQFCAj4x4gr-1" vertex="1">
|
23
|
+
<mxGeometry width="874" height="270" as="geometry"/>
|
24
|
+
</mxCell>
|
25
|
+
<mxCell id="b1" value="<p style="margin:0px;margin-left:4px;margin-bottom:4px;text-align:center"><b>WebSite</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-bottom:4px">key: Symbol</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">name: String</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">description: String</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">target_folder: String</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">base_collection: Collection</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">theme: Theme</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">root: Page</p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-bottom:4px">favourite_components() : Components</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="syoxd6ieJrQFCAj4x4gr-1" vertex="1">
|
26
|
+
<mxGeometry x="16" y="47" width="218" height="198" as="geometry"/>
|
27
|
+
</mxCell>
|
28
|
+
<mxCell id="b2" value="<p style="margin:0px;margin-left:4px;margin-bottom:4px;text-align:center"><b>Page</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-bottom:4px">key: Symbol</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">name: String</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">description: String</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">sub_folder: String</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">level: Integer</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">pages: Pages</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">components: Components</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="syoxd6ieJrQFCAj4x4gr-1" vertex="1">
|
29
|
+
<mxGeometry x="321" y="66" width="200" height="160" as="geometry"/>
|
30
|
+
</mxCell>
|
31
|
+
<mxCell id="b3" value="<p style="margin:0px;margin-left:4px;margin-bottom:4px;text-align:center"><b>Component</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-bottom:4px">key: Symbol</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">name: String</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">description: String</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">component_group: ComponentGroup</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">data_shape: DataShape</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="syoxd6ieJrQFCAj4x4gr-1" vertex="1">
|
32
|
+
<mxGeometry x="651" y="66" width="200" height="160" as="geometry"/>
|
33
|
+
</mxCell>
|
34
|
+
<mxCell id="gHN-21" value="" style="edgeStyle=orthogonalEdgeStyle;curved=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=none;startFill=1;endArrow=classic;endFill=1;whiteSpace=wrap;html=1;rounded=0;fillColor=#a20025;strokeColor=#6F0000;" parent="syoxd6ieJrQFCAj4x4gr-1" source="b1" target="b2" edge="1">
|
35
|
+
<mxGeometry relative="1" as="geometry"/>
|
36
|
+
</mxCell>
|
37
|
+
<mxCell id="gHN-22" value="" style="edgeStyle=orthogonalEdgeStyle;curved=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=none;startFill=1;endArrow=classic;endFill=1;whiteSpace=wrap;html=1;rounded=0;fillColor=#a20025;strokeColor=#6F0000;" parent="syoxd6ieJrQFCAj4x4gr-1" source="b2" target="b3" edge="1">
|
38
|
+
<mxGeometry relative="1" as="geometry"/>
|
39
|
+
</mxCell>
|
40
|
+
<mxCell id="gHN-23" value="" style="edgeStyle=orthogonalEdgeStyle;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;startArrow=none;startFill=1;endArrow=classic;endFill=1;whiteSpace=wrap;html=1;fillColor=#a20025;strokeColor=#6F0000;curved=1;" parent="syoxd6ieJrQFCAj4x4gr-1" source="b2" target="b2" edge="1">
|
41
|
+
<mxGeometry relative="1" as="geometry">
|
42
|
+
<Array as="points">
|
43
|
+
<mxPoint x="592" y="285"/>
|
44
|
+
</Array>
|
45
|
+
</mxGeometry>
|
46
|
+
</mxCell>
|
47
|
+
<mxCell id="syoxd6ieJrQFCAj4x4gr-2" value="" style="group" vertex="1" connectable="0" parent="node_root_gHN">
|
48
|
+
<mxGeometry x="90" y="28" width="853" height="526" as="geometry"/>
|
49
|
+
</mxCell>
|
50
|
+
<mxCell id="gHN-3" value="Configuration" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;fontSize=20;verticalAlign=top" parent="syoxd6ieJrQFCAj4x4gr-2" vertex="1">
|
51
|
+
<mxGeometry width="853" height="526" as="geometry"/>
|
52
|
+
</mxCell>
|
53
|
+
<mxCell id="a1" value="<p style="margin:0px;margin-left:4px;margin-bottom:4px;text-align:center"><b>Configuration</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-bottom:4px">collections: Collections</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">themes: Themes</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">data_shapes: DataShapes</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">component_groups: ComponentGroups</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="syoxd6ieJrQFCAj4x4gr-2" vertex="1">
|
54
|
+
<mxGeometry x="26.39" y="46" width="222.61" height="105" as="geometry"/>
|
55
|
+
</mxCell>
|
56
|
+
<mxCell id="a2" value="<p style="margin:0px;margin-left:4px;margin-bottom:4px;text-align:center"><b>Collection</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-bottom:4px">name: String</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">description: String</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">component_groups: ComponentGroups</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">default_themes: Themes</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="syoxd6ieJrQFCAj4x4gr-2" vertex="1">
|
57
|
+
<mxGeometry x="335.71039603960395" y="42" width="235.41955445544554" height="119" as="geometry"/>
|
58
|
+
</mxCell>
|
59
|
+
<mxCell id="a3" value="<p style="margin:0px;margin-left:4px;margin-bottom:4px;text-align:center"><b>Theme</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-bottom:4px">key: Symbol</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">name: String</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">description: String</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="syoxd6ieJrQFCAj4x4gr-2" vertex="1">
|
60
|
+
<mxGeometry x="335.71039603960395" y="179" width="235.41955445544554" height="86" as="geometry"/>
|
61
|
+
</mxCell>
|
62
|
+
<mxCell id="a4" value="<p style="margin:0px;margin-left:4px;margin-bottom:4px;text-align:center"><b>DataShape</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-bottom:4px">key: Symbol</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">name: String</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">description: String</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="syoxd6ieJrQFCAj4x4gr-2" vertex="1">
|
63
|
+
<mxGeometry x="335.71039603960395" y="283" width="235.41955445544554" height="84" as="geometry"/>
|
64
|
+
</mxCell>
|
65
|
+
<mxCell id="a5" value="<p style="margin:0px;margin-left:4px;margin-bottom:4px;text-align:center"><b>ComponentGroup</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-bottom:4px">key: Symbol</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">name: String</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">description: String</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">collection: Collection</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">components: Components</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="syoxd6ieJrQFCAj4x4gr-2" vertex="1">
|
66
|
+
<mxGeometry x="335.71039603960395" y="385" width="236.47524752475246" height="121" as="geometry"/>
|
67
|
+
</mxCell>
|
68
|
+
<mxCell id="a6" value="<p style="margin:0px;margin-left:4px;margin-bottom:4px;text-align:center"><b>Component</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-bottom:4px">key: Symbol</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">name: String</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">description: String</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">data_shape: DataShape</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="syoxd6ieJrQFCAj4x4gr-2" vertex="1">
|
69
|
+
<mxGeometry x="681" y="338" width="147.72" height="104" as="geometry"/>
|
70
|
+
</mxCell>
|
71
|
+
<mxCell id="gHN-10" value="" style="edgeStyle=orthogonalEdgeStyle;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=none;startFill=1;endArrow=classic;endFill=1;whiteSpace=wrap;html=1;fillColor=#a20025;strokeColor=#6F0000;rounded=1;" parent="syoxd6ieJrQFCAj4x4gr-2" source="a1" target="a2" edge="1">
|
72
|
+
<mxGeometry relative="1" as="geometry"/>
|
73
|
+
</mxCell>
|
74
|
+
<mxCell id="gHN-11" value="" style="edgeStyle=orthogonalEdgeStyle;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=none;startFill=1;endArrow=classic;endFill=1;whiteSpace=wrap;html=1;fillColor=#a20025;strokeColor=#6F0000;rounded=1;" parent="syoxd6ieJrQFCAj4x4gr-2" source="a1" target="a3" edge="1">
|
75
|
+
<mxGeometry relative="1" as="geometry"/>
|
76
|
+
</mxCell>
|
77
|
+
<mxCell id="gHN-12" value="" style="edgeStyle=orthogonalEdgeStyle;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=none;startFill=1;endArrow=classic;endFill=1;whiteSpace=wrap;html=1;fillColor=#a20025;strokeColor=#6F0000;rounded=1;" parent="syoxd6ieJrQFCAj4x4gr-2" source="a1" target="a4" edge="1">
|
78
|
+
<mxGeometry relative="1" as="geometry"/>
|
79
|
+
</mxCell>
|
80
|
+
<mxCell id="gHN-13" value="" style="edgeStyle=orthogonalEdgeStyle;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=none;startFill=1;endArrow=classic;endFill=1;whiteSpace=wrap;html=1;fillColor=#a20025;strokeColor=#6F0000;rounded=1;" parent="syoxd6ieJrQFCAj4x4gr-2" source="a1" target="a5" edge="1">
|
81
|
+
<mxGeometry relative="1" as="geometry"/>
|
82
|
+
</mxCell>
|
83
|
+
<mxCell id="gHN-14" value="" style="edgeStyle=orthogonalEdgeStyle;exitX=1.013;exitY=0.876;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;startArrow=none;startFill=1;endArrow=classic;endFill=1;whiteSpace=wrap;html=1;rounded=1;fillColor=#a20025;strokeColor=#6F0000;exitPerimeter=0;" parent="syoxd6ieJrQFCAj4x4gr-2" source="a5" target="a6" edge="1">
|
84
|
+
<mxGeometry relative="1" as="geometry"/>
|
85
|
+
</mxCell>
|
86
|
+
<mxCell id="gHN-15" value="" style="edgeStyle=orthogonalEdgeStyle;exitX=0;exitY=0.25;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;startArrow=none;startFill=1;endArrow=classic;endFill=1;whiteSpace=wrap;html=1;rounded=1;fillColor=#a20025;strokeColor=#6F0000;" parent="syoxd6ieJrQFCAj4x4gr-2" source="a6" target="a4" edge="1">
|
87
|
+
<mxGeometry relative="1" as="geometry"/>
|
88
|
+
</mxCell>
|
89
|
+
<mxCell id="gHN-16" value="" style="edgeStyle=orthogonalEdgeStyle;curved=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;startArrow=none;startFill=1;endArrow=classic;endFill=1;whiteSpace=wrap;html=1;rounded=0;fillColor=#a20025;strokeColor=#6F0000;" parent="syoxd6ieJrQFCAj4x4gr-2" source="a2" target="a3" edge="1">
|
90
|
+
<mxGeometry relative="1" as="geometry">
|
91
|
+
<Array as="points">
|
92
|
+
<mxPoint x="618.6361386138614" y="102"/>
|
93
|
+
<mxPoint x="618.6361386138614" y="222"/>
|
94
|
+
</Array>
|
95
|
+
</mxGeometry>
|
96
|
+
</mxCell>
|
97
|
+
<mxCell id="syoxd6ieJrQFCAj4x4gr-3" value="Tailwind Generator" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;fontSize=20;verticalAlign=top" vertex="1" parent="node_root_gHN">
|
98
|
+
<mxGeometry x="48" y="1130" width="210" height="210" as="geometry"/>
|
99
|
+
</mxCell>
|
100
|
+
<mxCell id="syoxd6ieJrQFCAj4x4gr-4" value="Tailwind DSL" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;fontSize=20;verticalAlign=top" vertex="1" parent="node_root_gHN">
|
101
|
+
<mxGeometry x="274" y="1130" width="210" height="210" as="geometry"/>
|
102
|
+
</mxCell>
|
103
|
+
<mxCell id="syoxd6ieJrQFCAj4x4gr-5" value="<p style="margin:0px;margin-left:4px;margin-bottom:4px;text-align:center"><b>TailwindDsl</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-bottom:4px">website()</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">page()</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">component()</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">save()</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="node_root_gHN">
|
104
|
+
<mxGeometry x="502" y="1130" width="200" height="160" as="geometry"/>
|
105
|
+
</mxCell>
|
106
|
+
</root>
|
107
|
+
</mxGraphModel>
|
108
|
+
</diagram>
|
109
|
+
</mxfile>
|