disco_app 0.11.1 → 0.12.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.
- checksums.yaml +4 -4
- data/app/assets/components/shopify/image/_image.scss +82 -0
- data/app/assets/components/shopify/table/_table.scss +18 -0
- data/app/assets/javascripts/disco_app/components/custom/rules-editor.es6.jsx +2 -2
- data/app/assets/javascripts/disco_app/components/ui-kit/icons/next-icon.es6.jsx +3 -2
- data/app/assets/stylesheets/disco_app/disco_app.scss +2 -0
- data/app/assets/stylesheets/disco_app/ui-kit/_ui-kit.scss +5 -0
- data/app/jobs/disco_app/shop_job.rb +1 -1
- data/app/models/disco_app/concerns/has_metafields.rb +1 -1
- data/app/models/disco_app/concerns/renders_assets.rb +3 -3
- data/app/models/disco_app/concerns/shop.rb +3 -1
- data/app/models/disco_app/concerns/synchronises.rb +1 -1
- data/app/services/disco_app/charges_service.rb +3 -3
- data/app/views/disco_app/shared/_icons.html.erb +1 -1
- data/db/migrate/20150525000000_create_shops_if_not_existent.rb +102 -7
- data/lib/disco_app/version.rb +1 -1
- data/lib/generators/disco_app/disco_app_generator.rb +30 -33
- data/test/dummy/app/models/disco_app/shop.rb +5 -0
- data/test/fixtures/carts.yml +1 -1
- data/test/fixtures/products.yml +1 -1
- data/test/models/disco_app/has_metafields_test.rb +2 -2
- data/test/services/disco_app/subscription_service_test.rb +2 -2
- data/test/test_helper.rb +2 -0
- metadata +166 -89
- data/db/migrate/20150525162112_add_status_to_shops.rb +0 -5
- data/db/migrate/20150525171422_add_meta_to_shops.rb +0 -11
- data/db/migrate/20150629210346_add_charge_status_to_shop.rb +0 -5
- data/db/migrate/20150814214025_add_more_meta_to_shops.rb +0 -15
- data/db/migrate/20151017231302_create_disco_app_plans.rb +0 -13
- data/db/migrate/20151017232027_create_disco_app_subscriptions.rb +0 -15
- data/db/migrate/20151017234409_move_shop_to_disco_app_engine.rb +0 -5
- data/db/migrate/20160112233706_create_disco_app_sessions.rb +0 -12
- data/db/migrate/20160113194418_add_shop_id_to_disco_app_sessions.rb +0 -6
- data/db/migrate/20160223111044_create_disco_app_settings.rb +0 -8
- data/db/migrate/20160301223215_update_plans.rb +0 -22
- data/db/migrate/20160301224558_update_subscriptions.rb +0 -13
- data/db/migrate/20160302104816_create_disco_app_recurring_application_charges.rb +0 -14
- data/db/migrate/20160302105259_create_disco_app_application_charges.rb +0 -14
- data/db/migrate/20160302134728_drop_charge_status_from_shops.rb +0 -5
- data/db/migrate/20160302142941_add_shopify_attributes_to_charges.rb +0 -8
- data/db/migrate/20160331093148_create_disco_app_plan_codes.rb +0 -14
- data/db/migrate/20160401044420_add_status_to_plan_codes.rb +0 -5
- data/db/migrate/20160401045551_add_amount_and_plan_code_to_disco_app_subscriptions.rb +0 -7
- data/db/migrate/20160425205211_add_source_to_disco_app_subscriptions.rb +0 -5
- data/db/migrate/20160426033520_add_trial_period_days_to_disco_app_subscriptions.rb +0 -5
- data/db/migrate/20160513140727_add_name_to_disco_app_shops.rb +0 -5
- data/db/migrate/20160521135510_move_shop_to_synchronises.rb +0 -61
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cff3f8aab2482607eafbbf0bec88e11dca418c4af76d9a4a74b6fba9d1d08f9d
|
4
|
+
data.tar.gz: 2ea82e6129fd1c1fa0f87c604cdbd3b0c781098c4fdc3e7c16ba238e87eae6f9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3f33ce9c3604c826e8b2a35db6d414c98ad1b6c40bb231716e81a9a52f873666147c2b6bd8630e43c676866413da4c95a3ace3f493c8363d71a7b858ea34b439
|
7
|
+
data.tar.gz: d19ae72a0539f46e34091befa91775c388200c50cf09a10df6e5d8460ccaf6bd89620b6e101fc2070a29c58a8e9ebba4a0817aaff2878c78c8dfc6e8392f3d22
|
@@ -0,0 +1,82 @@
|
|
1
|
+
.aspect-ratio {
|
2
|
+
position: relative;
|
3
|
+
display: block;
|
4
|
+
background: #fafbfc;
|
5
|
+
padding: 0;
|
6
|
+
}
|
7
|
+
|
8
|
+
.aspect-ratio__content {
|
9
|
+
position: absolute;
|
10
|
+
max-width: 100%;
|
11
|
+
max-height: 100%;
|
12
|
+
display: block;
|
13
|
+
top: 0;
|
14
|
+
right: 0;
|
15
|
+
bottom: 0;
|
16
|
+
left: 0;
|
17
|
+
margin: auto;
|
18
|
+
}
|
19
|
+
|
20
|
+
.aspect-ratio::before {
|
21
|
+
z-index: 1;
|
22
|
+
content: "";
|
23
|
+
position: absolute;
|
24
|
+
top: 0;
|
25
|
+
right: 0;
|
26
|
+
bottom: 0;
|
27
|
+
left: 0;
|
28
|
+
border: 1px solid rgba(195,207,216,0.3);
|
29
|
+
}
|
30
|
+
|
31
|
+
.aspect-ratio--square {
|
32
|
+
width: 100%;
|
33
|
+
padding-bottom: 100%;
|
34
|
+
}
|
35
|
+
|
36
|
+
.aspect-ratio--square--50 {
|
37
|
+
width: 50px;
|
38
|
+
padding-bottom: 50px;
|
39
|
+
-webkit-flex-grow: 0;
|
40
|
+
-ms-flex-positive: 0;
|
41
|
+
flex-grow: 0;
|
42
|
+
-webkit-flex-shrink: 0;
|
43
|
+
-ms-flex-negative: 0;
|
44
|
+
flex-shrink: 0;
|
45
|
+
}
|
46
|
+
|
47
|
+
.aspect-ratio--square {
|
48
|
+
-webkit-flex-shrink: 0;
|
49
|
+
-ms-flex-negative: 0;
|
50
|
+
flex-shrink: 0;
|
51
|
+
}
|
52
|
+
|
53
|
+
.next-icon.aspect-ratio__content, .aspect-ratio__content.next-icon__text {
|
54
|
+
position: absolute;
|
55
|
+
}
|
56
|
+
|
57
|
+
|
58
|
+
@keyframes next-spinner-rotate {
|
59
|
+
100% {
|
60
|
+
-webkit-transform: rotate(360deg);
|
61
|
+
transform: rotate(360deg);
|
62
|
+
}
|
63
|
+
}
|
64
|
+
|
65
|
+
.next-spinner {
|
66
|
+
display: inline-block;
|
67
|
+
-webkit-animation: next-spinner-rotate 600ms linear infinite;
|
68
|
+
animation: next-spinner-rotate 600ms linear infinite;
|
69
|
+
position: relative;
|
70
|
+
}
|
71
|
+
|
72
|
+
.next-spinner>.next-icon, .next-spinner>.next-icon__text {
|
73
|
+
position: static;
|
74
|
+
}
|
75
|
+
|
76
|
+
.next-spinner__ring {
|
77
|
+
stroke: #0078bd;
|
78
|
+
stroke-dasharray: 100%;
|
79
|
+
stroke-width: 2px;
|
80
|
+
stroke-linecap: round;
|
81
|
+
fill: none;
|
82
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
.next-table--data, .next-table--line-items {
|
2
|
+
width: 100%;
|
3
|
+
border-collapse: collapse;
|
4
|
+
}
|
5
|
+
|
6
|
+
.next-table--line-items td {
|
7
|
+
padding-top: 20px;
|
8
|
+
padding-bottom: 20px;
|
9
|
+
}
|
10
|
+
|
11
|
+
.next-table--line-items td:first-of-type, .next-table--line-items th:first-of-type {
|
12
|
+
padding-left: 0;
|
13
|
+
}
|
14
|
+
|
15
|
+
.next-table--line-items .next-table__image-cell {
|
16
|
+
vertical-align: top;
|
17
|
+
min-width: 48px;
|
18
|
+
}
|
@@ -214,7 +214,7 @@ class RulesEditor extends React.Component {
|
|
214
214
|
|
215
215
|
// Convert the current rules JSON into a format using the correct column
|
216
216
|
// format used by our more advanced key checker.
|
217
|
-
const rulesJSON = JSON.stringify(
|
217
|
+
const rulesJSON = JSON.stringify(rules.map((rule, i) => {
|
218
218
|
return Object.assign({}, rule, {
|
219
219
|
column: this.props.columns[rule.column].column
|
220
220
|
});
|
@@ -228,7 +228,7 @@ class RulesEditor extends React.Component {
|
|
228
228
|
</div>
|
229
229
|
</div>
|
230
230
|
<Button onClick={this.onAddRule.bind(this)}>
|
231
|
-
Add another condition
|
231
|
+
{rules.length === 0 ? 'Add a condition' : 'Add another condition'}
|
232
232
|
</Button>
|
233
233
|
<input type="hidden" name={name} value={rulesJSON} />
|
234
234
|
</CardSection>
|
@@ -1,8 +1,9 @@
|
|
1
|
-
const NextIcon = ({ size, name }) => {
|
1
|
+
const NextIcon = ({ size, name, additionalClassNames = '' }) => {
|
2
2
|
|
3
3
|
const className = classNames({
|
4
4
|
"next-icon": true,
|
5
|
-
['next-icon--size-' + size]: true
|
5
|
+
['next-icon--size-' + size]: true,
|
6
|
+
[additionalClassNames]: (additionalClassNames.length > 0)
|
6
7
|
});
|
7
8
|
|
8
9
|
return (
|
@@ -21,4 +21,6 @@ $font-family: -apple-system, "BlinkMacSystemFont", "San Francisco", "Roboto", "S
|
|
21
21
|
@import '../../components/shopify/ui-stack/ui-stack';
|
22
22
|
@import '../../components/shopify/typography/typography';
|
23
23
|
@import '../../components/shopify/buttons/buttons';
|
24
|
+
@import '../../components/shopify/table/table';
|
25
|
+
@import '../../components/shopify/image/image';
|
24
26
|
@import '../../components/shopify/card/card';
|
@@ -14,7 +14,7 @@ module DiscoApp::Concerns::HasMetafields
|
|
14
14
|
# })
|
15
15
|
#
|
16
16
|
# This method assumes that it is being called within a valid Shopify API
|
17
|
-
# session context, eg @shop.
|
17
|
+
# session context, eg @shop.with_api_context { ... }.
|
18
18
|
#
|
19
19
|
# It also assumes that the including class has defined the appropriate value
|
20
20
|
# for SHOPIFY_API_CLASS and that calling the `id` method on the instance
|
@@ -97,7 +97,7 @@ module DiscoApp::Concerns::RendersAssets
|
|
97
97
|
|
98
98
|
options[:assets].each do |asset|
|
99
99
|
# Create/replace the asset via the Shopify API.
|
100
|
-
shopify_asset = shop.
|
100
|
+
shopify_asset = shop.with_api_context {
|
101
101
|
ShopifyAPI::Asset.create(
|
102
102
|
key: asset,
|
103
103
|
value: render_asset_group_asset(asset, public_urls, options)
|
@@ -152,14 +152,14 @@ module DiscoApp::Concerns::RendersAssets
|
|
152
152
|
# a public URL for.
|
153
153
|
def render_asset_script_tags(options, public_urls)
|
154
154
|
# Fetch the current set of script tags for the store.
|
155
|
-
current_script_tags = shop.
|
155
|
+
current_script_tags = shop.with_api_context { ShopifyAPI::ScriptTag.find(:all) }
|
156
156
|
|
157
157
|
# Iterate each script tag for which we have a known public URL and create
|
158
158
|
# or update the corresponding script tag resource.
|
159
159
|
public_urls.slice(*options[:script_tags]).each do |asset, public_url|
|
160
160
|
script_tag = current_script_tags.find(lambda { ShopifyAPI::ScriptTag.new(event: 'onload') }) { |script_tag| script_tag.src.include?("#{asset}?") }
|
161
161
|
script_tag.src = public_url
|
162
|
-
shop.
|
162
|
+
shop.with_api_context { script_tag.save }
|
163
163
|
end
|
164
164
|
end
|
165
165
|
|
@@ -20,7 +20,9 @@ module DiscoApp::Concerns::Shop
|
|
20
20
|
scope :installed, -> { where status: statuses[:installed] }
|
21
21
|
scope :has_active_shopify_plan, -> { where.not(plan_name: [:cancelled, :frozen, :fraudulent]) }
|
22
22
|
|
23
|
-
# Alias 'with_shopify_session' as '
|
23
|
+
# Alias 'with_shopify_session' as 'with_api_context' for better readability, but also as 'temp' for
|
24
|
+
# backward compatibility.
|
25
|
+
alias_method :with_api_context, :with_shopify_session
|
24
26
|
alias_method :temp, :with_shopify_session
|
25
27
|
|
26
28
|
# Return true if the shop is considered as in development mode.
|
@@ -46,7 +46,7 @@ module DiscoApp::Concerns::Synchronises
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def synchronise_all(shop, params = {})
|
49
|
-
resource_count = shop.
|
49
|
+
resource_count = shop.with_api_context { self::SHOPIFY_API_CLASS.count(params) }
|
50
50
|
|
51
51
|
(1..(resource_count / SYNCHRONISES_PAGE_LIMIT.to_f).ceil).each do |page|
|
52
52
|
DiscoApp::SynchroniseResourcesJob.perform_later(shop, self.name, params.merge(page: page, limit: SYNCHRONISES_PAGE_LIMIT))
|
@@ -10,7 +10,7 @@ class DiscoApp::ChargesService
|
|
10
10
|
)
|
11
11
|
|
12
12
|
# Create the charge object on Shopify.
|
13
|
-
shopify_charge = shop.
|
13
|
+
shopify_charge = shop.with_api_context {
|
14
14
|
subscription.shopify_charge_class.create(
|
15
15
|
name: subscription.plan.name,
|
16
16
|
price: '%.2f' % (subscription.amount.to_f / 100.0),
|
@@ -39,7 +39,7 @@ class DiscoApp::ChargesService
|
|
39
39
|
def self.activate(shop, charge)
|
40
40
|
begin
|
41
41
|
# Start by fetching the Shopify charge to check that it was accepted.
|
42
|
-
shopify_charge = shop.
|
42
|
+
shopify_charge = shop.with_api_context {
|
43
43
|
charge.subscription.shopify_charge_class.find(charge.shopify_id)
|
44
44
|
}
|
45
45
|
|
@@ -50,7 +50,7 @@ class DiscoApp::ChargesService
|
|
50
50
|
return false unless charge.accepted?
|
51
51
|
|
52
52
|
# If the charge was indeed accepted, activate it via Shopify.
|
53
|
-
charge.shop.
|
53
|
+
charge.shop.with_api_context {
|
54
54
|
shopify_charge.activate
|
55
55
|
}
|
56
56
|
|
@@ -1 +1 @@
|
|
1
|
-
<div id="global-icon-symbols" style="display: none;"><svg xmlns="http://www.w3.org/2000/svg"><symbol id="next-products" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" enable-background="new 0 0 24 24"><path d="M21.8 1h-7c-.8 0-1.5.3-2 .8L1.4 13.2c-.5.5-.5 1.3 0 1.8L9 22.7c.5.5 1.3.5 1.8 0l11.3-11.4c.5-.5.8-1.3.8-2v-7c.1-.7-.4-1.3-1.1-1.3zm-4 7.6c-1.3 0-2.3-1.1-2.3-2.3C15.5 5 16.6 4 17.8 4c1.3 0 2.3 1.1 2.3 2.3 0 1.3-1 2.3-2.3 2.3z"></path></svg></symbol><symbol id="next-help-circle" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm-.1 20c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5c.827 0 1.5.67 1.5 1.5s-.673 1.5-1.5 1.5zm1.766-6.996c-.22.087-.39.367-.39.602V14c0 .55-.45 1-1 1h-.67c-.55 0-1-.448-1-1v-.87c0-1.18.805-2.16 1.92-2.55.44-.157.824-.456 1.08-.844.938-1.415-.248-3.07-1.665-3.07-.87 0-1.61.555-1.89 1.327-.14.4-.51.674-.94.674h-.7c-.644 0-1.144-.608-.974-1.23.622-2.28 2.936-3.87 5.502-3.333h.007c1.496.312 2.758 1.39 3.326 2.808 1.01 2.527-.32 5.182-2.6 6.092z"></path></svg></symbol><symbol id="next-website" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="M9.4 2c-.2 0-.3.3-.2.4l1.4 1.4-3.8 3.9c-.2.2-.2.6 0 .8l.8.8c.2.2.6.2.8 0l3.8-3.8 1.4 1.4c.2.2.4 0 .4-.2v-4.2c0-.3-.2-.5-.5-.5h-4.1zm.6 0h-6c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2v-6 2h-2v3c0 .6-.5 1-1 1h-6c-.6 0-1-.5-1-1v-6c0-.6.5-1 1-1h3v-2h2z"></path></svg></symbol><symbol id="next-search-16" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" enable-background="new 0 0 16 16"><path d="M0 5.667c0 3.125 2.542 5.667 5.667 5.667 1.202 0 2.315-.38 3.233-1.02l.455.456c-.07.5.082 1.025.466 1.41l3.334 3.332c.326.325.753.488 1.18.488.425 0 .852-.163 1.177-.488.652-.65.652-1.706 0-2.357L12.18 9.822c-.384-.384-.91-.536-1.41-.466l-.454-.456c.64-.918 1.02-2.03 1.02-3.233C11.333 2.542 8.79 0 5.666 0S0 2.542 0 5.667zm2 0C2 3.645 3.645 2 5.667 2s3.667 1.645 3.667 3.667-1.646 3.666-3.667 3.666S2 7.688 2 5.667z"></path></svg></symbol><symbol id="loading-circle" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1_copy" x="0px" y="0px" width="16px" height="16px" viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve"><g><circle fill="#202428" cx="15" cy="8" r="1"></circle><circle fill="#22262A" cx="14.971" cy="8.637" r="1"></circle><circle fill="#24282D" cx="14.887" cy="9.258" r="1"></circle><circle fill="#262A2F" cx="14.75" cy="9.86" r="1"></circle><circle fill="#282D31" cx="14.563" cy="10.441" r="1"></circle><circle fill="#2A2F34" cx="14.327" cy="10.999" r="1"></circle><circle fill="#2C3136" cx="14.045" cy="11.531" r="1"></circle><circle fill="#2E3338" cx="13.721" cy="12.035" r="1"></circle><circle fill="#2F353B" cx="13.356" cy="12.508" r="1"></circle><circle fill="#31373D" cx="12.952" cy="12.947" r="1"></circle><circle fill="#33393F" cx="12.513" cy="13.351" r="1"></circle><circle fill="#353C42" cx="12.04" cy="13.717" r="1"></circle><circle fill="#373E44" cx="11.537" cy="14.042" r="1"></circle><circle fill="#394046" cx="11.005" cy="14.324" r="1"></circle><circle fill="#3B4249" cx="10.447" cy="14.56" r="1"></circle><circle fill="#3D444B" cx="9.866" cy="14.748" r="1"></circle><circle fill="#3F464D" cx="9.264" cy="14.886" r="1"></circle><circle fill="#414950" cx="8.644" cy="14.971" r="1"></circle><circle fill="#434B52" cx="8.007" cy="15" r="1"></circle><circle fill="#454D54" cx="7.37" cy="14.972" r="1"></circle><circle fill="#474F57" cx="6.749" cy="14.889" r="1"></circle><circle fill="#495159" cx="6.147" cy="14.752" r="1"></circle><circle fill="#4B535B" cx="5.565" cy="14.565" r="1"></circle><circle fill="#4C555E" cx="5.007" cy="14.33" r="1"></circle><circle fill="#4E5860" cx="4.474" cy="14.049" r="1"></circle><circle fill="#505A62" cx="3.97" cy="13.725" r="1"></circle><circle fill="#525C65" cx="3.497" cy="13.36" r="1"></circle><circle fill="#545E67" cx="3.057" cy="12.957" r="1"></circle><circle fill="#566069" cx="2.653" cy="12.518" r="1"></circle><circle fill="#58626C" cx="2.287" cy="12.045" r="1"></circle><circle fill="#5A646E" cx="1.961" cy="11.542" r="1"></circle><circle fill="#5C6770" cx="1.679" cy="11.011" r="1"></circle><circle fill="#5E6972" cx="1.442" cy="10.453" r="1"></circle><circle fill="#606B75" cx="1.253" cy="9.873" r="1"></circle><circle fill="#626D77" cx="1.115" cy="9.271" r="1"></circle><circle fill="#646F79" cx="1.03" cy="8.65" r="1"></circle><circle fill="#66717C" cx="1" cy="8.014" r="1"></circle><circle fill="#68737E" cx="1.027" cy="7.377" r="1"></circle><circle fill="#6A7680" cx="1.11" cy="6.756" r="1"></circle><circle fill="#6B7883" cx="1.246" cy="6.153" r="1"></circle><circle fill="#6D7A85" cx="1.433" cy="5.571" r="1"></circle><circle fill="#6F7C87" cx="1.668" cy="5.013" r="1"></circle><circle fill="#717E8A" cx="1.948" cy="4.48" r="1"></circle><circle fill="#73808C" cx="2.272" cy="3.976" r="1"></circle><circle fill="#75828E" cx="2.636" cy="3.502" r="1"></circle><circle fill="#778591" cx="3.039" cy="3.062" r="1"></circle><circle fill="#798793" cx="3.477" cy="2.657" r="1"></circle><circle fill="#7B8995" cx="3.949" cy="2.29" r="1"></circle><circle fill="#7D8B98" cx="4.452" cy="1.964" r="1"></circle><circle fill="#7F8D9A" cx="4.983" cy="1.682" r="1"></circle><circle fill="#818F9C" cx="5.54" cy="1.444" r="1"></circle><circle fill="#83929F" cx="6.121" cy="1.255" r="1"></circle><circle fill="#8594A1" cx="6.723" cy="1.116" r="1"></circle><circle fill="#8796A3" cx="7.343" cy="1.03" r="1"></circle><circle fill="#8898A6" cx="7.979" cy="1" r="1"></circle><circle fill="#8A9AA8" cx="8.609" cy="1.027" r="1"></circle><circle fill="#8C9CAA" cx="9.226" cy="1.109" r="1"></circle><circle fill="#8E9EAD" cx="9.827" cy="1.245" r="1"></circle><circle fill="#90A1AF" cx="10.408" cy="1.429" r="1"></circle><circle fill="#92A3B1" cx="10.967" cy="1.66" r="1"></circle><circle fill="#94A5B4" cx="11.498" cy="1.935" r="1"></circle><circle fill="#96A7B6" cx="12" cy="2.25" r="1"></circle></g></svg></symbol><symbol id="clear" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" baseProfile="tiny" width="16" height="16" viewBox="0 0 16 16"><path fill-rule="evenodd" fill="#BFBFBF" d="M12.234 3.766c-2.334-2.334-6.119-2.334-8.453 0s-2.334 6.119 0 8.453 6.119 2.334 8.453 0 2.334-6.119 0-8.453zm-1.06 6.329l-1.056 1.056-2.11-2.112-2.111 2.111-1.056-1.056 2.111-2.111-2.111-2.11 1.056-1.056 2.111 2.111 2.111-2.111 1.056 1.056-2.112 2.111 2.111 2.111z"></path></svg></symbol><symbol id="next-remove" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" enable-background="new 0 0 24 24"><path d="M19.5 22c-.2 0-.5-.1-.7-.3L12 14.9l-6.8 6.8c-.2.2-.4.3-.7.3-.2 0-.5-.1-.7-.3l-1.6-1.6c-.1-.2-.2-.4-.2-.6 0-.2.1-.5.3-.7L9.1 12 2.3 5.2C2.1 5 2 4.8 2 4.5c0-.2.1-.5.3-.7l1.6-1.6c.2-.1.4-.2.6-.2.3 0 .5.1.7.3L12 9.1l6.8-6.8c.2-.2.4-.3.7-.3.2 0 .5.1.7.3l1.6 1.6c.1.2.2.4.2.6 0 .2-.1.5-.3.7L14.9 12l6.8 6.8c.2.2.3.4.3.7 0 .2-.1.5-.3.7l-1.6 1.6c-.2.1-.4.2-.6.2z"></path></svg></symbol><symbol id="next-info" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" enable-background="new 0 0 24 24"><g><path d="M13.5 7h-2c-.8 0-1.5.7-1.5 1.5v14c0 .8.7 1.5 1.5 1.5h2c.8 0 1.5-.7 1.5-1.5v-14c0-.8-.7-1.5-1.5-1.5z"></path><circle cx="12.5" cy="2.5" r="2.5"></circle></g></svg></symbol><symbol id="next-dashboard-16" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" enable-background="new 0 0 16 16"><g><path d="M8.43 3.445c-.248-.21-.612-.21-.86 0L2.353 7.86C2.13 8.05 2 8.33 2 8.624v6.71c0 .366.3.666.667.666h2.667C5.7 16 6 15.7 6 15.333v-3c0-.183.15-.333.333-.333h3.333c.184 0 .334.15.334.333v3c0 .367.3.667.667.667h2.667c.366 0 .666-.3.666-.667v-6.71c0-.294-.13-.573-.354-.763L8.43 3.445zM15.764 6.158L8.944.39C8.692.14 8.357 0 8 0c-.357 0-.692.14-.902.354L.236 6.158c-.28.238-.316.66-.078.94.132.156.32.236.51.236.15 0 .304-.052.43-.158L7.6 1.638c.238-.178.56-.18.797-.003 1.468 1.1 6.505 5.54 6.505 5.54.28.237.702.203.94-.078.238-.28.203-.7-.078-.94z"></path></g></svg></symbol><symbol id="next-orders-16" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" enable-background="new 0 0 16 16"><g><path d="M13.992 0H2.1C.94 0 0 .94 0 2.1v12.244C0 15.305.785 16 1.75 16H14.34c.964 0 1.658-.694 1.658-1.658V2.1C16 .94 15.15 0 13.992 0zM14 2v8h-1.757C11.28 10 10 11.28 10 12.243v.7c0 .193.337.057.144.057H5.247c-.193 0-.247.136-.247-.057v-.7C5 11.28 4.113 10 3.148 10H2V2h12zM7.117 9.963c.167.16.437.16.603.002l5.17-5.042c.165-.16.165-.422 0-.583l-.604-.583c-.166-.16-.437-.16-.603 0L7.42 7.924 5.694 6.24c-.166-.16-.437-.16-.603 0l-.604.582c-.166.162-.166.423 0 .584l2.63 2.557z"></path></g></svg></symbol><symbol id="next-chevron-nav" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10.6,6 L8.2,8 L12,12 L8.2,16 L10.6,18 L15.3,13 C15.8,12.4 15.8,11.6 15.3,11 L10.6,6 L10.6,6 Z"></path></svg></symbol><symbol id="next-products-16" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" enable-background="new 0 0 16 16"><path d="M15.087 0H10.01c-.554 0-1.085.235-1.476.627L.3 8.87c-.37.368-.37.965 0 1.327l5.553 5.556c.362.368.955.37 1.323 0L15.4 7.52c.39-.392.6-.922.6-1.476V.967C16 .45 15.604 0 15.087 0zm-2.89 5.56c-.94 0-1.702-.764-1.702-1.703 0-.94.763-1.702 1.702-1.702.94 0 1.702.763 1.702 1.702 0 .94-.764 1.702-1.703 1.702z"></path></svg></symbol><symbol id="next-customers-16" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" enable-background="new 0 0 16 16"><g><path d="M13.08 8.26c-.68-.275-.674-.732-.674-1.007 0-.274.29-.657.566-.903.48-.423.777-1.04.777-1.737 0-1.206-1.018-2.21-2.224-2.257-.896-.03-1.658.41-2.062 1.1-.088.15-.03.337.127.415 1.12.555 1.873 1.69 1.873 3.03 0 .87-.32 1.698-.894 2.332-.128.14-.077.362.094.442.663.31 2.044.745 2.598 1.462.055.07.134-.136.224-.136h1.657c.473 0 .857.116.857-.358v-.12c0-1.308-1.93-1.85-2.92-2.263zM5.398 9.232c-.542-.603-.827-1.39-.827-2.304 0-1.348.74-2.53 1.863-3.08.16-.077.22-.267.128-.418-.5-.816-1.523-1.265-2.634-.993-1.006.24-1.64 1.17-1.64 2.21 0 .698.223 1.28.71 1.704.273.247.6.63.6.904s-.035.73-.715 1.006C1.89 8.67 0 9.214 0 10.522v.12c0 .474.384.358.857.358h1.656c.09 0 .17.206.226.133.544-.716 1.905-1.277 2.56-1.59.167-.078.222-.173.098-.31zM9.867 10.546c-.68-.278-.78-.735-.78-1.006 0-.274.234-.656.508-.9.483-.426.754-1.046.754-1.74 0-1.492-1.39-2.55-2.957-2.184-1.018.237-1.672 1.168-1.672 2.212 0 .695.223 1.286.706 1.71.274.246.596.628.596.902 0 .27-.248.728-.927 1.006C5.11 10.954 3 11.5 3 12.806v.122C3 13.4 3.812 14 4.286 14h7.43c.472 0 1.284-.6 1.284-1.072v-.122c0-1.307-2.147-1.852-3.133-2.26z"></path></g></svg></symbol><symbol id="next-reports-16" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" enable-background="new 0 0 16 16"><g><path d="M4 9.667C4 9.297 3.702 9 3.333 9H1.667C1.297 9 1 9.298 1 9.667v5.667c0 .368.298.666.667.666h1.667c.368 0 .666-.298.666-.667V9.667zM8 3.667C8 3.297 7.702 3 7.333 3H5.667C5.297 3 5 3.298 5 3.667v11.667c0 .368.298.666.667.666h1.667c.368 0 .666-.298.666-.667V3.667zM12 .667c0-.37-.298-.667-.667-.667H9.667C9.297 0 9 .298 9 .667v14.667c0 .368.298.666.667.666h1.667c.368 0 .666-.298.666-.667V.667zM16 6.667c0-.37-.298-.667-.667-.667h-1.667c-.368 0-.666.298-.666.667v8.667c0 .368.298.666.667.666h1.667c.368 0 .666-.298.666-.667V6.667z"></path></g></svg></symbol><symbol id="next-discounts-16" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" enable-background="new 0 0 16 16"><g><path d="M9 13.333C9 13.15 8.85 13 8.667 13H6.333c-.184 0-.333.15-.333.333v.333c0 .185.15.334.333.334h2.333c.185 0 .334-.15.334-.333v-.334zM13 13.333c0-.184-.15-.333-.333-.333h-2.333c-.185 0-.334.15-.334.333v.333c0 .185.15.334.333.334h2.333c.185 0 .334-.15.334-.333v-.334zM16 8.333C16 8.15 15.85 8 15.667 8h-.333c-.185 0-.334.15-.334.333v2.333c0 .185.15.334.333.334h.333c.185 0 .334-.15.334-.333V8.333zM11.3 9.2L7.272 5.902 11.3 2.607l-.013-.016c-.692-.845-1.94-.97-2.786-.278l-2.808 2.3-1.18-.966c.096-.254.155-.526.155-.813C4.667 1.547 3.62.5 2.333.5S0 1.547 0 2.833s1.047 2.333 2.333 2.333c.255 0 .495-.05.725-.127l1.055.862-.93.763c-.265-.103-.55-.165-.85-.165C1.047 6.5 0 7.547 0 8.833s1.047 2.333 2.333 2.333 2.333-1.047 2.333-2.333c0-.246-.05-.478-.12-.7l1.145-.938L8.5 9.493c.846.692 2.094.568 2.786-.28L11.3 9.2zM1.333 2.832c0-.55.45-1 1-1s1 .45 1 1-.45 1-1 1-1-.448-1-1zm1 7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1c0 .552-.448 1-1 1zM13 5.333C13 5.15 12.85 5 12.667 5h-2.333c-.185 0-.334.15-.334.333v.333c0 .185.15.334.333.334h2.333c.185 0 .334-.15.334-.333v-.334zM15.5 5h-1c-.276 0-.5 0-.5.5s.224.5.5.5h.5v.48c0 .275 0 .5.5.5s.5-.225.5-.5V5.5c0-.276-.063-.5-.5-.5zM3.5 14h1c.276 0 .5 0 .5-.5s-.224-.5-.5-.5H4v-.5c0-.276 0-.5-.5-.5s-.5.224-.5.5v.98c0 .275.062.52.5.52zM16 13.49v-1c0-.276 0-.5-.5-.5s-.5.224-.5.5V13h-.49c-.276 0-.5 0-.5.5s.224.5.5.5h.98c.276 0 .51-.073.51-.51z"></path></g></svg></symbol><symbol id="next-add-circle-outline" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g><path d="M12 24c6.627 0 12-5.373 12-12s-5.373-12-12-12-12 5.373-12 12 5.373 12 12 12zm0-2.667c-5.155 0-9.333-4.179-9.333-9.333 0-5.155 4.179-9.333 9.333-9.333 5.155 0 9.333 4.179 9.333 9.333 0 5.155-4.179 9.333-9.333 9.333z"></path><path d="M12.623 13.337h3.663c.394 0 .714-.32.714-.714v-1.246c0-.394-.32-.714-.714-.714h-3.663l.714.714v-3.663c0-.394-.32-.714-.714-.714h-1.246c-.394 0-.714.32-.714.714v3.663l.714-.714h-3.663c-.394 0-.714.32-.714.714v1.246c0 .394.32.714.714.714h3.663l-.714-.714v3.663c0 .394.32.714.714.714h1.246c.394 0 .714-.32.714-.714v-3.663l-.714.714z"></path></g></svg></symbol><symbol id="next-online-store-16" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" enable-background="new 0 0 16 16"><path d="M8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm0 14.1c-3.4 0-6.1-2.7-6.1-6.1 0-.9.2-1.8.6-2.6v.3c0 .2.3.5.3.7 0 .3.2.5.4.7.3.1.6.2.8.4.2.2.4.3.7.2.2.2.1.4 0 .6-.2.2-.3.4-.3.5-.1.3-.1.6.2.8.2.1.3.3.3.5s.2.4.3.5c.4.2.4.6.5 1 .1.8.7 2 .9 1.6.2-.3.6-.9.8-1.1.1-.1.2-.2.2-.3.1-.2.2-.4.4-.5.1-.1.2-.2.2-.3 0-.4.2-.8.4-1.1.4-.5.2-.8-.4-1-.3-.1-.7-.3-1.1-.1v-.2c.1-.5 0-.6-.5-.8-.2-.2-.4-.3-.6-.4-.2-.1-.5 0-.8-.1-.3.1-.2-.4-.5-.5-.6-.6.3-.8.7-.6.1.1.5-.5 1.3-1 .2 0 .1-1 .3-1-1.7-1-2-1.4-2-1.4h-.2c.9-.6 2-.9 3.2-.9h.6l-.1.1s-.5.3.1 1c.2.2.7.8.6.9 0 .2 1.4-.1 1.6-.1.4 0 .3.6 0 .7 0 .1-1.8.3-1.9.3-.3.4-.3.3-.2.7 0 .2-.1.3-.1.6.2.2.4.5.6.8.3.3.5.8.8.7.1 0 .2-.1.4-.2.1.1.3.4.5.5-.1.3 0 .5.2.8.1.1 0 .8-.1.9-.1.2 0 .6.2 1s.7.4.9 0l.7-1.9c.2-.4.5-.7.9-.9l.3-.1V8c.1 3.4-2.6 6.1-6 6.1z"></path></svg></symbol><symbol id="next-apps-16" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" enable-background="new 0 0 16 16"><path d="M12.383 9.734c.59.41.882 1.044.87 1.675-.004.29.357.43.563.226l1.894-1.894c.387-.387.387-1.015 0-1.402l-2.498-2.498c-.167-.167-.115-.463.11-.54.397-.133.76-.396 1.02-.798.432-.662.416-1.56-.04-2.204-.734-1.033-2.175-1.123-3.03-.268-.216.216-.37.47-.463.74-.08.23-.387.28-.56.108L7.767.397C7.38.01 6.75.01 6.364.397L4.472 2.29c-.215.214-.05.565.257.565.504 0 1.013.192 1.4.58.87.87.765 2.34-.316 3.06-.663.443-1.568.435-2.216-.028-.576-.412-.86-1.04-.855-1.664.01-.29-.355-.43-.56-.224L.29 6.47c-.387.388-.387 1.016 0 1.403l2.498 2.498c.167.168.115.464-.11.54-.397.134-.76.397-1.02.8-.432.66-.416 1.56.04 2.203.734 1.033 2.175 1.123 3.03.268.216-.215.37-.47.463-.74.08-.23.387-.28.56-.107l2.483 2.484c.387.387 1.015.387 1.402 0l1.892-1.892c.215-.215.05-.564-.254-.563-.508 0-1.016-.193-1.404-.582-.86-.86-.768-2.304.278-3.037.658-.462 1.574-.466 2.235-.01z"></path></svg></symbol><symbol id="next-settings-16" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" enable-background="new 0 0 16 16"><path d="M15.733 6.767l-1.77-.36c-.117-.025-.21-.112-.245-.227-.102-.323-.232-.636-.39-.935-.056-.107-.053-.234.013-.335l1-1.51c.086-.13.07-.304-.042-.415L13.02 1.707c-.114-.114-.292-.132-.426-.043l-1.504.995c-.1.066-.228.07-.335.013-.3-.158-.61-.288-.935-.39-.114-.037-.202-.13-.226-.247l-.36-1.77C9.2.113 9.063 0 8.906 0H7.093c-.158 0-.295.11-.326.267l-.36 1.77c-.025.117-.113.21-.227.245-.323.102-.636.232-.935.39-.107.056-.234.053-.335-.013l-1.504-.996c-.134-.09-.312-.07-.426.043L1.702 2.985c-.11.11-.128.284-.042.415l1 1.51c.066.1.07.228.012.335-.158.3-.288.612-.39.935-.036.114-.128.202-.246.226l-1.77.36C.113 6.8 0 6.937 0 7.094v1.813c0 .158.11.295.267.327l1.77.36c.117.025.21.112.245.227.102.323.232.636.39.935.056.107.053.234-.013.335l-.996 1.504c-.09.134-.07.312.043.426l1.273 1.273c.114.114.292.132.426.043l1.504-.995c.1-.066.228-.07.335-.012.3.158.61.288.935.39.115.036.202.128.226.246l.36 1.77c.032.155.17.266.327.266h1.813c.158 0 .295-.11.327-.267l.36-1.77c.025-.117.112-.21.227-.245.323-.102.636-.232.935-.39.107-.056.234-.053.335.013l1.504.996c.134.09.312.07.426-.043l1.273-1.273c.114-.114.132-.292.043-.426l-.995-1.504c-.066-.1-.07-.228-.012-.335.158-.3.288-.61.39-.935.036-.115.128-.202.246-.226l1.77-.36c.155-.032.266-.17.266-.327V7.093c0-.158-.112-.295-.267-.326zM10.667 8c0 1.473-1.193 2.667-2.667 2.667S5.333 9.473 5.333 8c0-1.473 1.193-2.667 2.667-2.667S10.667 6.527 10.667 8z"></path></svg></symbol><symbol id="next-menu-16" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" enable-background="new 0 0 16 16"><path d="M7 9H1c-.552 0-1-.114-1-.667v-.666C0 7.114.448 7 1 7h14c.552 0 1 .114 1 .667v.667c0 .552-.448.666-1 .666H7zM7 4H1c-.552 0-1-.114-1-.667v-.666C0 2.114.448 2 1 2h14c.552 0 1 .114 1 .667v.667c0 .552-.448.666-1 .666H7zM7 14H1c-.552 0-1-.114-1-.667v-.667C0 12.114.448 12 1 12h14c.552 0 1 .114 1 .667v.667c0 .552-.448.666-1 .666H7z"></path></svg></symbol><symbol id="next-delete" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 12" enable-background="new 0 0 12 12"><path d="M12 2c0 .5-.4 1-.8 1H.8C.4 3 0 2.5 0 2s.4-1 .8-1H4c0-.5.7-1 1.2-1h1.6C7.3 0 8 .6 8 1h3.2c.4 0 .8.5.8 1zm-1 2.6v6.6c0 .4-.8.8-1.2.8H2.2c-.4 0-1.2-.3-1.2-.8V4.6c0-.1.5-.6.7-.6h8.7c.1 0 .6.5.6.6zM5 6.4c0-.2-.2-.4-.4-.4h-.2c-.2 0-.4.2-.4.4v3.2c0 .2.2.4.4.4h.2c.2 0 .4-.2.4-.4V6.4zm3 0c0-.2-.2-.4-.4-.4h-.2c-.2 0-.4.2-.4.4v3.2c0 .2.2.4.4.4h.2c.2 0 .4-.2.4-.4V6.4z"></path></svg></symbol><symbol id="next-checkmark" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" enable-background="new 0 0 24 24"><path d="M23.6 5L22 3.4c-.5-.4-1.2-.4-1.7 0L8.5 15l-4.8-4.7c-.5-.4-1.2-.4-1.7 0L.3 11.9c-.5.4-.5 1.2 0 1.6l7.3 7.1c.5.4 1.2.4 1.7 0l14.3-14c.5-.4.5-1.1 0-1.6z"></path></svg></symbol><symbol id="next-subtract" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 12" enable-background="new 0 0 12 12"><path d="M6 0"></path><path d="M.8 7C.3 7 0 6.7 0 6.2v-.4c0-.5.3-.8.8-.8h10.5c.4 0 .7.3.7.8v.5c0 .4-.3.7-.8.7H.8z"></path></svg></symbol><symbol id="next-chevron" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M6 4l9 8-9 8 2 2 11-10L8 2 6 4" fill="currentColor"></path></svg></symbol><symbol id="next-chevron-down" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" enable-background="new 0 0 24 24"><path d="M21 5.176l-9.086 9.353-8.914-9.353-2.314 2.471 11.314 11.735 11.314-11.735-2.314-2.471z"></path></svg></symbol></svg></div>
|
1
|
+
<div id="global-icon-symbols" style="display: none;"><svg xmlns="http://www.w3.org/2000/svg"><symbol id="next-risk"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" enable-background="new 0 0 24 24"><path d="M23.337 18.182L14.917 2.66c-1.603-2.958-4.226-2.974-5.84 0L.66 18.18c-1.605 2.958-.182 5.384 3.197 5.384H20.14c3.382 0 4.81-2.41 3.197-5.384z"/><path fill="#fff" d="M10.608,19.323a1.392,1.392 0 1,0 2.784,0a1.392,1.392 0 1,0 -2.784,0"/><path fill="#fff" d="M12.557 7.355h-1.113c-.46 0-.835.374-.835.835v7.793c0 .46.372.835.833.835h1.113c.46 0 .835-.374.835-.835V8.19c0-.46-.373-.835-.834-.835z"/></svg></symbol><symbol id="next-orders" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" enable-background="new 0 0 24 24"><g><path d="M20.2 1H3.9C2.3 1 1 2.3 1 3.9v16.9C1 22 2.1 23 3.4 23h17.3c1.3 0 2.3-1 2.3-2.3V3.9C23 2.3 21.8 1 20.2 1zM20 4v11h-2.2c-1.3 0-2.8 1.5-2.8 2.8v1c0 .3.2.2-.1.2H8.2c-.3 0-.2.1-.2-.2v-1C8 16.5 6.7 15 5.3 15H4V4h16zM10.8 14.7c.2.2.6.2.8 0l7.1-6.9c.3-.3.3-.6 0-.8l-.8-.8c-.2-.2-.6-.2-.8 0l-5.9 5.7-2.4-2.3c-.2-.2-.6-.2-.8 0l-.8.8c-.2.2-.2.6 0 .8l3.6 3.5z"></path></g></svg></symbol><symbol id="next-clock" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" enable-background="new 0 0 24 24"><path d="M12,0C5.4,0,0,5.4,0,12s5.4,12,12,12s12-5.4,12-12S18.6,0,12,0z M12,21c-5,0-9-4-9-9c0-5,4-9,9-9s9,4,9,9 C21,17,17,21,12,21z M17.4,14.5l-4.4-3V6.4l-0.1-0.3L12.5,6h-1.2L11,6.1l-0.1,0.3v6l0.1,0.3l0.1,0.1l5.1,3.4l0.3,0.1l0.1,0l0.3-0.2 l0.6-1C17.6,14.9,17.6,14.6,17.4,14.5z"></path></svg></symbol><symbol id="next-checkmark" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" enable-background="new 0 0 24 24"><path d="M23.6 5L22 3.4c-.5-.4-1.2-.4-1.7 0L8.5 15l-4.8-4.7c-.5-.4-1.2-.4-1.7 0L.3 11.9c-.5.4-.5 1.2 0 1.6l7.3 7.1c.5.4 1.2.4 1.7 0l14.3-14c.5-.4.5-1.1 0-1.6z"></path></svg></symbol><symbol id="next-photos" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M6.5 8c.8 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5-1.5-.7-1.5-1.5.7-1.5 1.5-1.5m0-1c-1.4 0-2.5 1.1-2.5 2.5s1.1 2.5 2.5 2.5 2.5-1.1 2.5-2.5-1.1-2.5-2.5-2.5zm15.5-4h-20c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h20c1.1 0 2-.9 2-2v-14c0-1.1-.9-2-2-2zm-20 2h20v9.6l-4.1-4.1c-1.3-1.3-3.5-1.3-4.9 0l-4 4c-1-.4-2.2-.2-3 .6l-3.9 3.9h-.1v-14zm5.4 11.5c.1-.1.1-.1.2-.1.3-.2.7-.1 1 .1l.6.6 1.9 1.9h-6.2l2.5-2.5zm6.6 2.5l-3.3-3.3 3.8-3.8c.6-.6 1.5-.6 2.1 0l5.5 5.5v1.6h-8.1z"></path></svg></symbol><symbol id="next-subtract" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 12" enable-background="new 0 0 12 12"><path d="M6 0"></path><path d="M.8 7C.3 7 0 6.7 0 6.2v-.4c0-.5.3-.8.8-.8h10.5c.4 0 .7.3.7.8v.5c0 .4-.3.7-.8.7H.8z"></path></svg></symbol><symbol id="next-remove" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" enable-background="new 0 0 24 24"><path d="M19.5 22c-.2 0-.5-.1-.7-.3L12 14.9l-6.8 6.8c-.2.2-.4.3-.7.3-.2 0-.5-.1-.7-.3l-1.6-1.6c-.1-.2-.2-.4-.2-.6 0-.2.1-.5.3-.7L9.1 12 2.3 5.2C2.1 5 2 4.8 2 4.5c0-.2.1-.5.3-.7l1.6-1.6c.2-.1.4-.2.6-.2.3 0 .5.1.7.3L12 9.1l6.8-6.8c.2-.2.4-.3.7-.3.2 0 .5.1.7.3l1.6 1.6c.1.2.2.4.2.6 0 .2-.1.5-.3.7L14.9 12l6.8 6.8c.2.2.3.4.3.7 0 .2-.1.5-.3.7l-1.6 1.6c-.2.1-.4.2-.6.2z"></path></svg></symbol><symbol id="next-chevron-down" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" enable-background="new 0 0 24 24"><path d="M21 5.176l-9.086 9.353-8.914-9.353-2.314 2.471 11.314 11.735 11.314-11.735-2.314-2.471z"></path></svg></symbol><symbol id="next-search-16" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" enable-background="new 0 0 16 16"><path d="M0 5.667c0 3.125 2.542 5.667 5.667 5.667 1.202 0 2.315-.38 3.233-1.02l.455.456c-.07.5.082 1.025.466 1.41l3.334 3.332c.326.325.753.488 1.18.488.425 0 .852-.163 1.177-.488.652-.65.652-1.706 0-2.357L12.18 9.822c-.384-.384-.91-.536-1.41-.466l-.454-.456c.64-.918 1.02-2.03 1.02-3.233C11.333 2.542 8.79 0 5.666 0S0 2.542 0 5.667zm2 0C2 3.645 3.645 2 5.667 2s3.667 1.645 3.667 3.667-1.646 3.666-3.667 3.666S2 7.688 2 5.667z"></path></svg></symbol><symbol id="next-spinner"><svg preserveAspectRatio="xMinYMin"><circle class="next-spinner__ring" cx="50%" cy="50%" r="45%"/></svg></symbol><symbol id="next-document" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" enable-background="new 0 0 24 24"><g><path d="M16 6h5.9c-.1-.2-.2-.3-.3-.4L20 4 16.4.4c-.1-.1-.3-.2-.4-.3V6zM15 8c-.6 0-1-.4-1-1V0H3.5C2.7 0 2 .7 2 1.5v21c0 .8.7 1.5 1.5 1.5h17c.8 0 1.5-.7 1.5-1.5V8h-7zM6 6h4c.6 0 1 .4 1 1s-.4 1-1 1H6c-.6 0-1-.4-1-1s.4-1 1-1zm12 12H6c-.6 0-1-.4-1-1s.4-1 1-1h12c.6 0 1 .4 1 1s-.4 1-1 1zm0-5H6c-.6 0-1-.4-1-1s.4-1 1-1h12c.6 0 1 .4 1 1s-.4 1-1 1z"></path></g></svg></symbol><symbol id="next-credit-card" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" enable-background="new 0 0 24 24"><g><path d="M23.6 10H.4c-.2 0-.4.5-.4.7v7.7c0 .7.6 1.6 1.3 1.6h21.4c.7 0 1.3-.9 1.3-1.6v-7.7c0-.2-.2-.7-.4-.7zM20 16.6c0 .2-.2.4-.4.4h-4.1c-.2 0-.4-.2-.4-.4v-2.1c0-.2.2-.4.4-.4h4.1c.2 0 .4.2.4.4v2.1zM22.7 4H1.3C.6 4 0 4.9 0 5.6v1.7c0 .2.2.7.4.7h23.1c.3 0 .5-.5.5-.7V5.6c0-.7-.6-1.6-1.3-1.6z"></path></g></svg></symbol><symbol id="next-error" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" enable-background="new 0 0 24 24"><path d="M12 0C5.4 0 0 5.4 0 12s5.4 12 12 12 12-5.4 12-12S18.6 0 12 0zm0 4c1.4 0 2.7.4 3.9 1L12 8.8 8.8 12 5 15.9c-.6-1.1-1-2.5-1-3.9 0-4.4 3.6-8 8-8zm0 16c-1.4 0-2.7-.4-3.9-1l3.9-3.9 3.2-3.2L19 8.1c.6 1.1 1 2.5 1 3.9 0 4.4-3.6 8-8 8z"></path></svg></symbol><symbol id="next-add-circle" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 12"><path d="M6 0c-3.3 0-6 2.7-6 6s2.7 6 6 6 6-2.7 6-6-2.7-6-6-6zm3 7h-2v2c0 .5-.5 1-1 1s-1-.5-1-1v-2h-2c-.5 0-1-.5-1-1s.5-1 1-1h2v-2c0-.5.5-1 1-1s1 .5 1 1v2h2c.5 0 1 .5 1 1s-.5 1-1 1z"></path></svg></symbol><symbol id="next-website" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="M9.4 2c-.2 0-.3.3-.2.4l1.4 1.4-3.8 3.9c-.2.2-.2.6 0 .8l.8.8c.2.2.6.2.8 0l3.8-3.8 1.4 1.4c.2.2.4 0 .4-.2v-4.2c0-.3-.2-.5-.5-.5h-4.1zm.6 0h-6c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2v-6 2h-2v3c0 .6-.5 1-1 1h-6c-.6 0-1-.5-1-1v-6c0-.6.5-1 1-1h3v-2h2z"></path></svg></symbol><symbol id="loading-circle" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1_copy" x="0px" y="0px" width="16px" height="16px" viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve"><g><circle fill="#202428" cx="15" cy="8" r="1"></circle><circle fill="#22262A" cx="14.971" cy="8.637" r="1"></circle><circle fill="#24282D" cx="14.887" cy="9.258" r="1"></circle><circle fill="#262A2F" cx="14.75" cy="9.86" r="1"></circle><circle fill="#282D31" cx="14.563" cy="10.441" r="1"></circle><circle fill="#2A2F34" cx="14.327" cy="10.999" r="1"></circle><circle fill="#2C3136" cx="14.045" cy="11.531" r="1"></circle><circle fill="#2E3338" cx="13.721" cy="12.035" r="1"></circle><circle fill="#2F353B" cx="13.356" cy="12.508" r="1"></circle><circle fill="#31373D" cx="12.952" cy="12.947" r="1"></circle><circle fill="#33393F" cx="12.513" cy="13.351" r="1"></circle><circle fill="#353C42" cx="12.04" cy="13.717" r="1"></circle><circle fill="#373E44" cx="11.537" cy="14.042" r="1"></circle><circle fill="#394046" cx="11.005" cy="14.324" r="1"></circle><circle fill="#3B4249" cx="10.447" cy="14.56" r="1"></circle><circle fill="#3D444B" cx="9.866" cy="14.748" r="1"></circle><circle fill="#3F464D" cx="9.264" cy="14.886" r="1"></circle><circle fill="#414950" cx="8.644" cy="14.971" r="1"></circle><circle fill="#434B52" cx="8.007" cy="15" r="1"></circle><circle fill="#454D54" cx="7.37" cy="14.972" r="1"></circle><circle fill="#474F57" cx="6.749" cy="14.889" r="1"></circle><circle fill="#495159" cx="6.147" cy="14.752" r="1"></circle><circle fill="#4B535B" cx="5.565" cy="14.565" r="1"></circle><circle fill="#4C555E" cx="5.007" cy="14.33" r="1"></circle><circle fill="#4E5860" cx="4.474" cy="14.049" r="1"></circle><circle fill="#505A62" cx="3.97" cy="13.725" r="1"></circle><circle fill="#525C65" cx="3.497" cy="13.36" r="1"></circle><circle fill="#545E67" cx="3.057" cy="12.957" r="1"></circle><circle fill="#566069" cx="2.653" cy="12.518" r="1"></circle><circle fill="#58626C" cx="2.287" cy="12.045" r="1"></circle><circle fill="#5A646E" cx="1.961" cy="11.542" r="1"></circle><circle fill="#5C6770" cx="1.679" cy="11.011" r="1"></circle><circle fill="#5E6972" cx="1.442" cy="10.453" r="1"></circle><circle fill="#606B75" cx="1.253" cy="9.873" r="1"></circle><circle fill="#626D77" cx="1.115" cy="9.271" r="1"></circle><circle fill="#646F79" cx="1.03" cy="8.65" r="1"></circle><circle fill="#66717C" cx="1" cy="8.014" r="1"></circle><circle fill="#68737E" cx="1.027" cy="7.377" r="1"></circle><circle fill="#6A7680" cx="1.11" cy="6.756" r="1"></circle><circle fill="#6B7883" cx="1.246" cy="6.153" r="1"></circle><circle fill="#6D7A85" cx="1.433" cy="5.571" r="1"></circle><circle fill="#6F7C87" cx="1.668" cy="5.013" r="1"></circle><circle fill="#717E8A" cx="1.948" cy="4.48" r="1"></circle><circle fill="#73808C" cx="2.272" cy="3.976" r="1"></circle><circle fill="#75828E" cx="2.636" cy="3.502" r="1"></circle><circle fill="#778591" cx="3.039" cy="3.062" r="1"></circle><circle fill="#798793" cx="3.477" cy="2.657" r="1"></circle><circle fill="#7B8995" cx="3.949" cy="2.29" r="1"></circle><circle fill="#7D8B98" cx="4.452" cy="1.964" r="1"></circle><circle fill="#7F8D9A" cx="4.983" cy="1.682" r="1"></circle><circle fill="#818F9C" cx="5.54" cy="1.444" r="1"></circle><circle fill="#83929F" cx="6.121" cy="1.255" r="1"></circle><circle fill="#8594A1" cx="6.723" cy="1.116" r="1"></circle><circle fill="#8796A3" cx="7.343" cy="1.03" r="1"></circle><circle fill="#8898A6" cx="7.979" cy="1" r="1"></circle><circle fill="#8A9AA8" cx="8.609" cy="1.027" r="1"></circle><circle fill="#8C9CAA" cx="9.226" cy="1.109" r="1"></circle><circle fill="#8E9EAD" cx="9.827" cy="1.245" r="1"></circle><circle fill="#90A1AF" cx="10.408" cy="1.429" r="1"></circle><circle fill="#92A3B1" cx="10.967" cy="1.66" r="1"></circle><circle fill="#94A5B4" cx="11.498" cy="1.935" r="1"></circle><circle fill="#96A7B6" cx="12" cy="2.25" r="1"></circle></g></svg></symbol><symbol id="clear" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" baseProfile="tiny" width="16" height="16" viewBox="0 0 16 16"><path fill-rule="evenodd" fill="#BFBFBF" d="M12.234 3.766c-2.334-2.334-6.119-2.334-8.453 0s-2.334 6.119 0 8.453 6.119 2.334 8.453 0 2.334-6.119 0-8.453zm-1.06 6.329l-1.056 1.056-2.11-2.112-2.111 2.111-1.056-1.056 2.111-2.111-2.111-2.11 1.056-1.056 2.111 2.111 2.111-2.111 1.056 1.056-2.112 2.111 2.111 2.111z"></path></svg></symbol><symbol id="next-info" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" enable-background="new 0 0 24 24"><g><path d="M13.5 7h-2c-.8 0-1.5.7-1.5 1.5v14c0 .8.7 1.5 1.5 1.5h2c.8 0 1.5-.7 1.5-1.5v-14c0-.8-.7-1.5-1.5-1.5z"></path><circle cx="12.5" cy="2.5" r="2.5"></circle></g></svg></symbol><symbol id="next-dashboard-16" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" enable-background="new 0 0 16 16"><g><path d="M8.43 3.445c-.248-.21-.612-.21-.86 0L2.353 7.86C2.13 8.05 2 8.33 2 8.624v6.71c0 .366.3.666.667.666h2.667C5.7 16 6 15.7 6 15.333v-3c0-.183.15-.333.333-.333h3.333c.184 0 .334.15.334.333v3c0 .367.3.667.667.667h2.667c.366 0 .666-.3.666-.667v-6.71c0-.294-.13-.573-.354-.763L8.43 3.445zM15.764 6.158L8.944.39C8.692.14 8.357 0 8 0c-.357 0-.692.14-.902.354L.236 6.158c-.28.238-.316.66-.078.94.132.156.32.236.51.236.15 0 .304-.052.43-.158L7.6 1.638c.238-.178.56-.18.797-.003 1.468 1.1 6.505 5.54 6.505 5.54.28.237.702.203.94-.078.238-.28.203-.7-.078-.94z"></path></g></svg></symbol><symbol id="next-orders-16" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" enable-background="new 0 0 16 16"><g><path d="M13.992 0H2.1C.94 0 0 .94 0 2.1v12.244C0 15.305.785 16 1.75 16H14.34c.964 0 1.658-.694 1.658-1.658V2.1C16 .94 15.15 0 13.992 0zM14 2v8h-1.757C11.28 10 10 11.28 10 12.243v.7c0 .193.337.057.144.057H5.247c-.193 0-.247.136-.247-.057v-.7C5 11.28 4.113 10 3.148 10H2V2h12zM7.117 9.963c.167.16.437.16.603.002l5.17-5.042c.165-.16.165-.422 0-.583l-.604-.583c-.166-.16-.437-.16-.603 0L7.42 7.924 5.694 6.24c-.166-.16-.437-.16-.603 0l-.604.582c-.166.162-.166.423 0 .584l2.63 2.557z"></path></g></svg></symbol><symbol id="next-chevron-nav" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10.6,6 L8.2,8 L12,12 L8.2,16 L10.6,18 L15.3,13 C15.8,12.4 15.8,11.6 15.3,11 L10.6,6 L10.6,6 Z"></path></svg></symbol><symbol id="next-products-16" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" enable-background="new 0 0 16 16"><path d="M15.087 0H10.01c-.554 0-1.085.235-1.476.627L.3 8.87c-.37.368-.37.965 0 1.327l5.553 5.556c.362.368.955.37 1.323 0L15.4 7.52c.39-.392.6-.922.6-1.476V.967C16 .45 15.604 0 15.087 0zm-2.89 5.56c-.94 0-1.702-.764-1.702-1.703 0-.94.763-1.702 1.702-1.702.94 0 1.702.763 1.702 1.702 0 .94-.764 1.702-1.703 1.702z"></path></svg></symbol><symbol id="next-customers-16" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" enable-background="new 0 0 16 16"><g><path d="M13.08 8.26c-.68-.275-.674-.732-.674-1.007 0-.274.29-.657.566-.903.48-.423.777-1.04.777-1.737 0-1.206-1.018-2.21-2.224-2.257-.896-.03-1.658.41-2.062 1.1-.088.15-.03.337.127.415 1.12.555 1.873 1.69 1.873 3.03 0 .87-.32 1.698-.894 2.332-.128.14-.077.362.094.442.663.31 2.044.745 2.598 1.462.055.07.134-.136.224-.136h1.657c.473 0 .857.116.857-.358v-.12c0-1.308-1.93-1.85-2.92-2.263zM5.398 9.232c-.542-.603-.827-1.39-.827-2.304 0-1.348.74-2.53 1.863-3.08.16-.077.22-.267.128-.418-.5-.816-1.523-1.265-2.634-.993-1.006.24-1.64 1.17-1.64 2.21 0 .698.223 1.28.71 1.704.273.247.6.63.6.904s-.035.73-.715 1.006C1.89 8.67 0 9.214 0 10.522v.12c0 .474.384.358.857.358h1.656c.09 0 .17.206.226.133.544-.716 1.905-1.277 2.56-1.59.167-.078.222-.173.098-.31zM9.867 10.546c-.68-.278-.78-.735-.78-1.006 0-.274.234-.656.508-.9.483-.426.754-1.046.754-1.74 0-1.492-1.39-2.55-2.957-2.184-1.018.237-1.672 1.168-1.672 2.212 0 .695.223 1.286.706 1.71.274.246.596.628.596.902 0 .27-.248.728-.927 1.006C5.11 10.954 3 11.5 3 12.806v.122C3 13.4 3.812 14 4.286 14h7.43c.472 0 1.284-.6 1.284-1.072v-.122c0-1.307-2.147-1.852-3.133-2.26z"></path></g></svg></symbol><symbol id="next-reports-16" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" enable-background="new 0 0 16 16"><g><path d="M4 9.667C4 9.297 3.702 9 3.333 9H1.667C1.297 9 1 9.298 1 9.667v5.667c0 .368.298.666.667.666h1.667c.368 0 .666-.298.666-.667V9.667zM8 3.667C8 3.297 7.702 3 7.333 3H5.667C5.297 3 5 3.298 5 3.667v11.667c0 .368.298.666.667.666h1.667c.368 0 .666-.298.666-.667V3.667zM12 .667c0-.37-.298-.667-.667-.667H9.667C9.297 0 9 .298 9 .667v14.667c0 .368.298.666.667.666h1.667c.368 0 .666-.298.666-.667V.667zM16 6.667c0-.37-.298-.667-.667-.667h-1.667c-.368 0-.666.298-.666.667v8.667c0 .368.298.666.667.666h1.667c.368 0 .666-.298.666-.667V6.667z"></path></g></svg></symbol><symbol id="next-discounts-16" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" enable-background="new 0 0 16 16"><g><path d="M9 13.333C9 13.15 8.85 13 8.667 13H6.333c-.184 0-.333.15-.333.333v.333c0 .185.15.334.333.334h2.333c.185 0 .334-.15.334-.333v-.334zM13 13.333c0-.184-.15-.333-.333-.333h-2.333c-.185 0-.334.15-.334.333v.333c0 .185.15.334.333.334h2.333c.185 0 .334-.15.334-.333v-.334zM16 8.333C16 8.15 15.85 8 15.667 8h-.333c-.185 0-.334.15-.334.333v2.333c0 .185.15.334.333.334h.333c.185 0 .334-.15.334-.333V8.333zM11.3 9.2L7.272 5.902 11.3 2.607l-.013-.016c-.692-.845-1.94-.97-2.786-.278l-2.808 2.3-1.18-.966c.096-.254.155-.526.155-.813C4.667 1.547 3.62.5 2.333.5S0 1.547 0 2.833s1.047 2.333 2.333 2.333c.255 0 .495-.05.725-.127l1.055.862-.93.763c-.265-.103-.55-.165-.85-.165C1.047 6.5 0 7.547 0 8.833s1.047 2.333 2.333 2.333 2.333-1.047 2.333-2.333c0-.246-.05-.478-.12-.7l1.145-.938L8.5 9.493c.846.692 2.094.568 2.786-.28L11.3 9.2zM1.333 2.832c0-.55.45-1 1-1s1 .45 1 1-.45 1-1 1-1-.448-1-1zm1 7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1c0 .552-.448 1-1 1zM13 5.333C13 5.15 12.85 5 12.667 5h-2.333c-.185 0-.334.15-.334.333v.333c0 .185.15.334.333.334h2.333c.185 0 .334-.15.334-.333v-.334zM15.5 5h-1c-.276 0-.5 0-.5.5s.224.5.5.5h.5v.48c0 .275 0 .5.5.5s.5-.225.5-.5V5.5c0-.276-.063-.5-.5-.5zM3.5 14h1c.276 0 .5 0 .5-.5s-.224-.5-.5-.5H4v-.5c0-.276 0-.5-.5-.5s-.5.224-.5.5v.98c0 .275.062.52.5.52zM16 13.49v-1c0-.276 0-.5-.5-.5s-.5.224-.5.5V13h-.49c-.276 0-.5 0-.5.5s.224.5.5.5h.98c.276 0 .51-.073.51-.51z"></path></g></svg></symbol><symbol id="next-add-circle-outline" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g><path d="M12 24c6.627 0 12-5.373 12-12s-5.373-12-12-12-12 5.373-12 12 5.373 12 12 12zm0-2.667c-5.155 0-9.333-4.179-9.333-9.333 0-5.155 4.179-9.333 9.333-9.333 5.155 0 9.333 4.179 9.333 9.333 0 5.155-4.179 9.333-9.333 9.333z"></path><path d="M12.623 13.337h3.663c.394 0 .714-.32.714-.714v-1.246c0-.394-.32-.714-.714-.714h-3.663l.714.714v-3.663c0-.394-.32-.714-.714-.714h-1.246c-.394 0-.714.32-.714.714v3.663l.714-.714h-3.663c-.394 0-.714.32-.714.714v1.246c0 .394.32.714.714.714h3.663l-.714-.714v3.663c0 .394.32.714.714.714h1.246c.394 0 .714-.32.714-.714v-3.663l-.714.714z"></path></g></svg></symbol><symbol id="next-online-store-16" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" enable-background="new 0 0 16 16"><path d="M8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm0 14.1c-3.4 0-6.1-2.7-6.1-6.1 0-.9.2-1.8.6-2.6v.3c0 .2.3.5.3.7 0 .3.2.5.4.7.3.1.6.2.8.4.2.2.4.3.7.2.2.2.1.4 0 .6-.2.2-.3.4-.3.5-.1.3-.1.6.2.8.2.1.3.3.3.5s.2.4.3.5c.4.2.4.6.5 1 .1.8.7 2 .9 1.6.2-.3.6-.9.8-1.1.1-.1.2-.2.2-.3.1-.2.2-.4.4-.5.1-.1.2-.2.2-.3 0-.4.2-.8.4-1.1.4-.5.2-.8-.4-1-.3-.1-.7-.3-1.1-.1v-.2c.1-.5 0-.6-.5-.8-.2-.2-.4-.3-.6-.4-.2-.1-.5 0-.8-.1-.3.1-.2-.4-.5-.5-.6-.6.3-.8.7-.6.1.1.5-.5 1.3-1 .2 0 .1-1 .3-1-1.7-1-2-1.4-2-1.4h-.2c.9-.6 2-.9 3.2-.9h.6l-.1.1s-.5.3.1 1c.2.2.7.8.6.9 0 .2 1.4-.1 1.6-.1.4 0 .3.6 0 .7 0 .1-1.8.3-1.9.3-.3.4-.3.3-.2.7 0 .2-.1.3-.1.6.2.2.4.5.6.8.3.3.5.8.8.7.1 0 .2-.1.4-.2.1.1.3.4.5.5-.1.3 0 .5.2.8.1.1 0 .8-.1.9-.1.2 0 .6.2 1s.7.4.9 0l.7-1.9c.2-.4.5-.7.9-.9l.3-.1V8c.1 3.4-2.6 6.1-6 6.1z"></path></svg></symbol><symbol id="next-apps-16" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" enable-background="new 0 0 16 16"><path d="M12.383 9.734c.59.41.882 1.044.87 1.675-.004.29.357.43.563.226l1.894-1.894c.387-.387.387-1.015 0-1.402l-2.498-2.498c-.167-.167-.115-.463.11-.54.397-.133.76-.396 1.02-.798.432-.662.416-1.56-.04-2.204-.734-1.033-2.175-1.123-3.03-.268-.216.216-.37.47-.463.74-.08.23-.387.28-.56.108L7.767.397C7.38.01 6.75.01 6.364.397L4.472 2.29c-.215.214-.05.565.257.565.504 0 1.013.192 1.4.58.87.87.765 2.34-.316 3.06-.663.443-1.568.435-2.216-.028-.576-.412-.86-1.04-.855-1.664.01-.29-.355-.43-.56-.224L.29 6.47c-.387.388-.387 1.016 0 1.403l2.498 2.498c.167.168.115.464-.11.54-.397.134-.76.397-1.02.8-.432.66-.416 1.56.04 2.203.734 1.033 2.175 1.123 3.03.268.216-.215.37-.47.463-.74.08-.23.387-.28.56-.107l2.483 2.484c.387.387 1.015.387 1.402 0l1.892-1.892c.215-.215.05-.564-.254-.563-.508 0-1.016-.193-1.404-.582-.86-.86-.768-2.304.278-3.037.658-.462 1.574-.466 2.235-.01z"></path></svg></symbol><symbol id="next-settings-16" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" enable-background="new 0 0 16 16"><path d="M15.733 6.767l-1.77-.36c-.117-.025-.21-.112-.245-.227-.102-.323-.232-.636-.39-.935-.056-.107-.053-.234.013-.335l1-1.51c.086-.13.07-.304-.042-.415L13.02 1.707c-.114-.114-.292-.132-.426-.043l-1.504.995c-.1.066-.228.07-.335.013-.3-.158-.61-.288-.935-.39-.114-.037-.202-.13-.226-.247l-.36-1.77C9.2.113 9.063 0 8.906 0H7.093c-.158 0-.295.11-.326.267l-.36 1.77c-.025.117-.113.21-.227.245-.323.102-.636.232-.935.39-.107.056-.234.053-.335-.013l-1.504-.996c-.134-.09-.312-.07-.426.043L1.702 2.985c-.11.11-.128.284-.042.415l1 1.51c.066.1.07.228.012.335-.158.3-.288.612-.39.935-.036.114-.128.202-.246.226l-1.77.36C.113 6.8 0 6.937 0 7.094v1.813c0 .158.11.295.267.327l1.77.36c.117.025.21.112.245.227.102.323.232.636.39.935.056.107.053.234-.013.335l-.996 1.504c-.09.134-.07.312.043.426l1.273 1.273c.114.114.292.132.426.043l1.504-.995c.1-.066.228-.07.335-.012.3.158.61.288.935.39.115.036.202.128.226.246l.36 1.77c.032.155.17.266.327.266h1.813c.158 0 .295-.11.327-.267l.36-1.77c.025-.117.112-.21.227-.245.323-.102.636-.232.935-.39.107-.056.234-.053.335.013l1.504.996c.134.09.312.07.426-.043l1.273-1.273c.114-.114.132-.292.043-.426l-.995-1.504c-.066-.1-.07-.228-.012-.335.158-.3.288-.61.39-.935.036-.115.128-.202.246-.226l1.77-.36c.155-.032.266-.17.266-.327V7.093c0-.158-.112-.295-.267-.326zM10.667 8c0 1.473-1.193 2.667-2.667 2.667S5.333 9.473 5.333 8c0-1.473 1.193-2.667 2.667-2.667S10.667 6.527 10.667 8z"></path></svg></symbol><symbol id="next-menu-16" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" enable-background="new 0 0 16 16"><path d="M7 9H1c-.552 0-1-.114-1-.667v-.666C0 7.114.448 7 1 7h14c.552 0 1 .114 1 .667v.667c0 .552-.448.666-1 .666H7zM7 4H1c-.552 0-1-.114-1-.667v-.666C0 2.114.448 2 1 2h14c.552 0 1 .114 1 .667v.667c0 .552-.448.666-1 .666H7zM7 14H1c-.552 0-1-.114-1-.667v-.667C0 12.114.448 12 1 12h14c.552 0 1 .114 1 .667v.667c0 .552-.448.666-1 .666H7z"></path></svg></symbol><symbol id="next-delete" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 12" enable-background="new 0 0 12 12"><path d="M12 2c0 .5-.4 1-.8 1H.8C.4 3 0 2.5 0 2s.4-1 .8-1H4c0-.5.7-1 1.2-1h1.6C7.3 0 8 .6 8 1h3.2c.4 0 .8.5.8 1zm-1 2.6v6.6c0 .4-.8.8-1.2.8H2.2c-.4 0-1.2-.3-1.2-.8V4.6c0-.1.5-.6.7-.6h8.7c.1 0 .6.5.6.6zM5 6.4c0-.2-.2-.4-.4-.4h-.2c-.2 0-.4.2-.4.4v3.2c0 .2.2.4.4.4h.2c.2 0 .4-.2.4-.4V6.4zm3 0c0-.2-.2-.4-.4-.4h-.2c-.2 0-.4.2-.4.4v3.2c0 .2.2.4.4.4h.2c.2 0 .4-.2.4-.4V6.4z"></path></svg></symbol><symbol id="next-chevron" class="icon-symbol--loaded"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M6 4l9 8-9 8 2 2 11-10L8 2 6 4" fill="currentColor"></path></svg></symbol></svg>/svg></div>
|
@@ -1,15 +1,110 @@
|
|
1
|
+
##
|
2
|
+
# While this migration file is called "create shops if not existent", it's actually a reset of all `disco_app`
|
3
|
+
# migrations up until 23 January 2017. It's kept its name like this to ensure compatibility across upgraded apps.
|
1
4
|
class CreateShopsIfNotExistent < ActiveRecord::Migration
|
2
5
|
|
3
6
|
def change
|
4
|
-
|
5
|
-
create_table :shops do |t|
|
6
|
-
t.string :shopify_domain, null: false
|
7
|
-
t.string :shopify_token, null: false
|
8
|
-
t.timestamps null: false
|
9
|
-
end
|
7
|
+
return if table_exists? :disco_app_shops
|
10
8
|
|
11
|
-
|
9
|
+
create_table "disco_app_app_settings", force: :cascade do |t|
|
10
|
+
t.datetime "created_at", null: false
|
11
|
+
t.datetime "updated_at", null: false
|
12
12
|
end
|
13
|
+
|
14
|
+
create_table "disco_app_application_charges", force: :cascade do |t|
|
15
|
+
t.integer "shop_id", limit: 8
|
16
|
+
t.integer "subscription_id", limit: 8
|
17
|
+
t.integer "status", default: 0
|
18
|
+
t.datetime "created_at", null: false
|
19
|
+
t.datetime "updated_at", null: false
|
20
|
+
t.integer "shopify_id", limit: 8
|
21
|
+
t.string "confirmation_url"
|
22
|
+
end
|
23
|
+
|
24
|
+
create_table "disco_app_plan_codes", force: :cascade do |t|
|
25
|
+
t.integer "plan_id", limit: 8
|
26
|
+
t.string "code"
|
27
|
+
t.integer "trial_period_days"
|
28
|
+
t.integer "amount"
|
29
|
+
t.datetime "created_at", null: false
|
30
|
+
t.datetime "updated_at", null: false
|
31
|
+
t.integer "status", default: 0
|
32
|
+
end
|
33
|
+
|
34
|
+
create_table "disco_app_plans", force: :cascade do |t|
|
35
|
+
t.integer "status", default: 0
|
36
|
+
t.string "name"
|
37
|
+
t.integer "plan_type", default: 0
|
38
|
+
t.integer "trial_period_days"
|
39
|
+
t.datetime "created_at", null: false
|
40
|
+
t.datetime "updated_at", null: false
|
41
|
+
t.integer "amount", default: 0
|
42
|
+
t.string "currency", default: "USD"
|
43
|
+
t.integer "interval", default: 0
|
44
|
+
t.integer "interval_count", default: 1
|
45
|
+
end
|
46
|
+
|
47
|
+
create_table "disco_app_recurring_application_charges", force: :cascade do |t|
|
48
|
+
t.integer "shop_id", limit: 8
|
49
|
+
t.integer "subscription_id", limit: 8
|
50
|
+
t.integer "status", default: 0
|
51
|
+
t.datetime "created_at", null: false
|
52
|
+
t.datetime "updated_at", null: false
|
53
|
+
t.integer "shopify_id", limit: 8
|
54
|
+
t.string "confirmation_url"
|
55
|
+
end
|
56
|
+
|
57
|
+
create_table "disco_app_sessions", force: :cascade do |t|
|
58
|
+
t.string "session_id", null: false
|
59
|
+
t.text "data"
|
60
|
+
t.datetime "created_at", null: false
|
61
|
+
t.datetime "updated_at", null: false
|
62
|
+
t.integer "shop_id"
|
63
|
+
end
|
64
|
+
|
65
|
+
add_index "disco_app_sessions", ["session_id"], name: "index_disco_app_sessions_on_session_id", unique: true, using: :btree
|
66
|
+
add_index "disco_app_sessions", ["updated_at"], name: "index_disco_app_sessions_on_updated_at", using: :btree
|
67
|
+
|
68
|
+
create_table "disco_app_shops", force: :cascade do |t|
|
69
|
+
t.string "shopify_domain", null: false
|
70
|
+
t.string "shopify_token", null: false
|
71
|
+
t.datetime "created_at", null: false
|
72
|
+
t.datetime "updated_at", null: false
|
73
|
+
t.integer "status", default: 0
|
74
|
+
t.string "domain"
|
75
|
+
t.string "plan_name"
|
76
|
+
t.string "name"
|
77
|
+
t.jsonb "data", default: {}
|
78
|
+
end
|
79
|
+
|
80
|
+
add_index "disco_app_shops", ["shopify_domain"], name: "index_disco_app_shops_on_shopify_domain", unique: true, using: :btree
|
81
|
+
|
82
|
+
create_table "disco_app_subscriptions", force: :cascade do |t|
|
83
|
+
t.integer "shop_id"
|
84
|
+
t.integer "plan_id"
|
85
|
+
t.integer "status"
|
86
|
+
t.integer "subscription_type"
|
87
|
+
t.datetime "created_at", null: false
|
88
|
+
t.datetime "updated_at", null: false
|
89
|
+
t.datetime "trial_start_at"
|
90
|
+
t.datetime "trial_end_at"
|
91
|
+
t.datetime "cancelled_at"
|
92
|
+
t.integer "amount", default: 0
|
93
|
+
t.integer "plan_code_id", limit: 8
|
94
|
+
t.string "source"
|
95
|
+
t.integer "trial_period_days"
|
96
|
+
end
|
97
|
+
|
98
|
+
add_index "disco_app_subscriptions", ["plan_id"], name: "index_disco_app_subscriptions_on_plan_id", using: :btree
|
99
|
+
add_index "disco_app_subscriptions", ["shop_id"], name: "index_disco_app_subscriptions_on_shop_id", using: :btree
|
100
|
+
|
101
|
+
add_foreign_key "disco_app_application_charges", "disco_app_shops", column: "shop_id"
|
102
|
+
add_foreign_key "disco_app_application_charges", "disco_app_subscriptions", column: "subscription_id"
|
103
|
+
add_foreign_key "disco_app_plan_codes", "disco_app_plans", column: "plan_id"
|
104
|
+
add_foreign_key "disco_app_recurring_application_charges", "disco_app_shops", column: "shop_id"
|
105
|
+
add_foreign_key "disco_app_recurring_application_charges", "disco_app_subscriptions", column: "subscription_id"
|
106
|
+
add_foreign_key "disco_app_sessions", "disco_app_shops", column: "shop_id", on_delete: :cascade
|
107
|
+
add_foreign_key "disco_app_subscriptions", "disco_app_plan_codes", column: "plan_code_id"
|
13
108
|
end
|
14
109
|
|
15
110
|
end
|
data/lib/disco_app/version.rb
CHANGED
@@ -22,44 +22,41 @@ class DiscoAppGenerator < Rails::Generators::Base
|
|
22
22
|
end
|
23
23
|
|
24
24
|
# Configure the application's Gemfile.
|
25
|
-
def
|
26
|
-
# Remove sqlite
|
25
|
+
def configure_gemfile
|
26
|
+
# Remove sqlite.
|
27
27
|
gsub_file 'Gemfile', /^# Use sqlite3 as the database for Active Record\ngem 'sqlite3'/m, ''
|
28
28
|
|
29
|
-
# Add
|
30
|
-
gem 'shopify_app'
|
31
|
-
gem '
|
32
|
-
gem '
|
33
|
-
gem '
|
34
|
-
gem '
|
35
|
-
gem 'rails
|
36
|
-
gem '
|
37
|
-
gem '
|
38
|
-
gem '
|
39
|
-
gem '
|
40
|
-
gem 'active_link_to'
|
41
|
-
gem '
|
42
|
-
gem '
|
43
|
-
gem 'render_anywhere'
|
44
|
-
|
45
|
-
#
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
gem 'guard', '~> 2.13.0'
|
50
|
-
gem 'guard-minitest', '~> 2.4.4'
|
51
|
-
end
|
52
|
-
|
53
|
-
# Add gems for production only.
|
29
|
+
# Add gem requirements.
|
30
|
+
gem 'shopify_app'
|
31
|
+
gem 'pg'
|
32
|
+
gem 'sidekiq'
|
33
|
+
gem 'rollbar'
|
34
|
+
gem 'newrelic_rpm'
|
35
|
+
gem 'react-rails'
|
36
|
+
gem 'classnames-rails'
|
37
|
+
gem 'premailer-rails'
|
38
|
+
gem 'rails-bigint-pk'
|
39
|
+
gem 'acts_as_singleton'
|
40
|
+
gem 'active_link_to'
|
41
|
+
gem 'nokogiri'
|
42
|
+
gem 'oj'
|
43
|
+
gem 'render_anywhere'
|
44
|
+
|
45
|
+
# Specify the threadsafe version of ActiveResource.
|
46
|
+
gem 'activeresource', git: 'https://github.com/shopify/activeresource.git', tag: '4.2-threadsafe'
|
47
|
+
|
48
|
+
# Indicate which gems should only be used in production.
|
54
49
|
gem_group :production do
|
55
|
-
gem 'rails_12factor'
|
56
|
-
gem 'mailgun_rails'
|
50
|
+
gem 'rails_12factor'
|
51
|
+
gem 'mailgun_rails'
|
57
52
|
end
|
58
53
|
|
59
|
-
#
|
60
|
-
|
61
|
-
|
62
|
-
|
54
|
+
# Indicate which gems should only be used in development and test.
|
55
|
+
gem_group :development, :test do
|
56
|
+
gem 'dotenv-rails'
|
57
|
+
gem 'minitest-reporters'
|
58
|
+
gem 'webmock'
|
59
|
+
end
|
63
60
|
end
|
64
61
|
|
65
62
|
# copy template for pg configuration
|
@@ -3,6 +3,11 @@ require 'active_utils'
|
|
3
3
|
class DiscoApp::Shop < ActiveRecord::Base
|
4
4
|
include DiscoApp::Concerns::Shop
|
5
5
|
|
6
|
+
has_one :js_configuration
|
7
|
+
has_one :widget_configuration
|
8
|
+
has_many :carts
|
9
|
+
has_many :products
|
10
|
+
|
6
11
|
# Extend the Shop model to return the Shop's country as an ActiveUtils country.
|
7
12
|
def country
|
8
13
|
begin
|
data/test/fixtures/carts.yml
CHANGED