@zap-wunschlachen/wl-shared-components 1.0.76 → 1.0.78
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.
- package/.github/workflows/playwright.yml +229 -229
- package/.github/workflows/static.yml +61 -61
- package/.github/workflows/update-snapshots.yml +37 -37
- package/.prettierrc.json +8 -8
- package/.storybook/main.ts +18 -18
- package/.storybook/preview.ts +37 -37
- package/.storybook/storyWrapper.vue +18 -18
- package/.storybook/withVuetifyTheme.decorator.ts +21 -21
- package/App.vue +139 -139
- package/README.md +56 -56
- package/docs/assets.md +62 -62
- package/heroicons.ts +75 -75
- package/index.html +19 -19
- package/package.json +71 -71
- package/playwright.config.ts +48 -48
- package/public/background.svg +60 -60
- package/public/style.css +187 -187
- package/public/technologies.svg +22 -22
- package/scripts/check-translations.ts +352 -352
- package/src/assets/css/base.css +242 -242
- package/src/assets/css/variables.css +176 -176
- package/src/components/Accordion/Accordion.css +65 -65
- package/src/components/Accordion/AccordionGroup.vue +88 -88
- package/src/components/Accordion/AccordionItem.vue +272 -272
- package/src/components/Accordion/presets/default.css +4 -4
- package/src/components/Accordion/presets/elevated.css +25 -25
- package/src/components/Accordion/presets/filled.css +26 -26
- package/src/components/Accordion/presets/index.css +5 -5
- package/src/components/Accordion/presets/plain.css +34 -34
- package/src/components/Appointment/Card/Actions.css +54 -54
- package/src/components/Appointment/Card/Actions.vue +99 -99
- package/src/components/Appointment/Card/AnamneseNotification.css +20 -20
- package/src/components/Appointment/Card/AnamneseNotification.vue +23 -23
- package/src/components/Appointment/Card/Card.css +99 -99
- package/src/components/Appointment/Card/Card.vue +97 -97
- package/src/components/Appointment/Card/Details.css +62 -62
- package/src/components/Appointment/Card/Details.vue +44 -44
- package/src/components/Audio/Audio.vue +187 -187
- package/src/components/Audio/Waveform.vue +118 -118
- package/src/components/Banner/Banner.css +29 -29
- package/src/components/Banner/Banner.vue +89 -89
- package/src/components/Button/Button.vue +257 -257
- package/src/components/CheckBox/CheckBox.css +234 -234
- package/src/components/CheckBox/Checkbox.vue +184 -184
- package/src/components/DateInput/DateInput.css +2 -2
- package/src/components/DateInput/DateInput.vue +376 -370
- package/src/components/Dialog/Dialog.css +6 -6
- package/src/components/Dialog/Dialog.vue +46 -46
- package/src/components/EditField/EditField.css +19 -19
- package/src/components/EditField/EditField.vue +211 -211
- package/src/components/ErrorPage/ErrorPage.css +172 -172
- package/src/components/IconBullet/IconBullet.vue +104 -104
- package/src/components/IconBullet/IconBulletList.vue +55 -55
- package/src/components/Icons/AdvanceAppointments.vue +161 -161
- package/src/components/Icons/Audio/CloudFailed.vue +27 -27
- package/src/components/Icons/Audio/CloudSaved.vue +28 -28
- package/src/components/Icons/Audio/Delete.vue +22 -22
- package/src/components/Icons/Audio/Pause.vue +25 -25
- package/src/components/Icons/Audio/Play.vue +22 -22
- package/src/components/Icons/Calendar.vue +28 -28
- package/src/components/Icons/CalendarNotification.vue +137 -137
- package/src/components/Icons/Chair.vue +43 -43
- package/src/components/Icons/ChairNotification.vue +46 -46
- package/src/components/Icons/Circle.vue +66 -66
- package/src/components/Icons/FavIcon.vue +69 -69
- package/src/components/Icons/FilledCircle.vue +11 -11
- package/src/components/Icons/Group3.vue +57 -57
- package/src/components/Icons/Play.vue +16 -16
- package/src/components/Icons/RingNotification.vue +65 -65
- package/src/components/Icons/SolidArrowRight.vue +14 -14
- package/src/components/Icons/checkbox.vue +19 -19
- package/src/components/Icons/outlineChecked.vue +38 -38
- package/src/components/Input/Input.css +234 -234
- package/src/components/Input/Input.vue +281 -281
- package/src/components/Laboratory/AppointmentCard/AppointmentCard.css +7 -7
- package/src/components/Laboratory/AppointmentCard/AppointmentCard.vue +116 -116
- package/src/components/Laboratory/ChatBoxImage/ChatBoxImage.vue +81 -81
- package/src/components/Laboratory/ChatMessage/ChatMessage.vue +113 -113
- package/src/components/Laboratory/ChatMessage/ChatMessageBadge.css +4 -4
- package/src/components/Laboratory/ChatMessage/ChatMessageBadge.vue +99 -99
- package/src/components/Laboratory/ChatNotification/ChatNotification.vue +130 -130
- package/src/components/Laboratory/DocumentCard/DocumentCard.css +3 -3
- package/src/components/Laboratory/DocumentCard/DocumentCard.vue +50 -50
- package/src/components/Laboratory/DocumentCard/DocumentCardItem.vue +53 -53
- package/src/components/Laboratory/InfoCard/InfoCard.vue +162 -162
- package/src/components/Laboratory/MainColumnsBar/MainColumnsBar.vue +102 -102
- package/src/components/Laboratory/ProgressCircle/ProgressCircle.vue +152 -152
- package/src/components/Laboratory/ProgressLinear/ProgressLinear.css +33 -33
- package/src/components/Laboratory/ProgressLinear/ProgressLinear.vue +75 -75
- package/src/components/Laboratory/SelectionColumnBar/SelectionColumnBar.vue +92 -92
- package/src/components/Laboratory/StatusNotification/StatusNotification.vue +49 -49
- package/src/components/Laboratory/TagLabel/TagLabel.vue +126 -126
- package/src/components/Laboratory/TagLabelGroup/TagLabelGroup.vue +97 -97
- package/src/components/Laboratory/TicketCard/TicketCard.css +3 -3
- package/src/components/Laboratory/TicketCard/TicketCard.vue +143 -143
- package/src/components/Laboratory/TimeLine/TimeLineEvent.css +18 -18
- package/src/components/Laboratory/TimeLine/TimeLineEvent.vue +119 -119
- package/src/components/Laboratory/TimeLine/Timeline.css +4 -4
- package/src/components/Laboratory/TimeLine/Timeline.vue +30 -30
- package/src/components/Loader/Loader.css +78 -78
- package/src/components/MaintenanceBanner/MaintenanceBanner.css +353 -353
- package/src/components/MaintenanceBanner/MaintenanceBanner.vue +140 -140
- package/src/components/MaintenanceBanner/MaintenanceIllustration.vue +54 -54
- package/src/components/Modal/Modal.css +5 -5
- package/src/components/Modal/Modal.vue +29 -29
- package/src/components/NotificationBubble/NotificationBubble.css +4 -4
- package/src/components/NotificationBubble/NotificationBubble.vue +90 -90
- package/src/components/OtpInput/OtpInput.css +43 -43
- package/src/components/OtpInput/OtpInput.vue +181 -181
- package/src/components/PhoneInput/PhoneInput.css +151 -126
- package/src/components/PhoneInput/PhoneInput.vue +230 -139
- package/src/components/RadioGroup/RadioGroup.css +65 -0
- package/src/components/RadioGroup/RadioGroup.vue +134 -0
- package/src/components/Select/Select.css +172 -172
- package/src/components/Select/Select.vue +377 -377
- package/src/components/SelectAutocomplete/SelectAutocomplete.css +172 -172
- package/src/components/SelectAutocomplete/SelectAutocomplete.vue +414 -414
- package/src/components/TextArea/TextArea.css +269 -269
- package/src/components/TextArea/TextArea.vue +207 -207
- package/src/components/TickBox/TickBox.css +116 -116
- package/src/components/TickBox/TickBox.vue +172 -172
- package/src/components/Tile/Tile.css +106 -106
- package/src/components/Tile/Tile.vue +173 -173
- package/src/components/accessibility.css +218 -218
- package/src/components/index.ts +110 -109
- package/src/constants/iconEnums.ts +3 -3
- package/src/i18n/i18n.ts +15 -15
- package/src/i18n/locales/de.json +30 -30
- package/src/i18n/locales/en.json +30 -30
- package/src/index.ts +43 -43
- package/src/main.ts +11 -11
- package/src/pages/AccordionGroupPage.vue +873 -873
- package/src/pages/AllPage.vue +2483 -2365
- package/src/pages/SelectPage.vue +1302 -1302
- package/src/pages/TilePage.vue +902 -902
- package/src/plugins/vuetify.ts +54 -54
- package/src/shims-vue.d.ts +30 -30
- package/src/utils/index.ts +733 -733
- package/src/vite-env.d.ts +1 -1
- package/tests/unit/accessibility/component-a11y.spec.ts +657 -657
- package/tests/unit/components/Accordion/AccordionGroup.spec.ts +228 -228
- package/tests/unit/components/Accordion/AccordionItem.spec.ts +257 -257
- package/tests/unit/components/Appointment/AnamneseNotification.spec.ts +176 -176
- package/tests/unit/components/Appointment/Card/Actions.spec.ts +436 -436
- package/tests/unit/components/Appointment/Card/Card.spec.ts +531 -531
- package/tests/unit/components/Appointment/Card/Details.spec.ts +395 -395
- package/tests/unit/components/Audio/Audio.spec.ts +403 -403
- package/tests/unit/components/Audio/Waveform.spec.ts +483 -483
- package/tests/unit/components/Background/Background.spec.ts +177 -177
- package/tests/unit/components/Core/AnamneseAnswerDialog.spec.ts +344 -0
- package/tests/unit/components/Core/Banner.spec.ts +187 -0
- package/tests/unit/components/Core/Button.spec.ts +346 -346
- package/tests/unit/components/Core/Checkbox.spec.ts +544 -544
- package/tests/unit/components/Core/DateInput.spec.ts +702 -702
- package/tests/unit/components/Core/Dialog.spec.ts +448 -448
- package/tests/unit/components/Core/EditField.spec.ts +541 -541
- package/tests/unit/components/Core/Input.spec.ts +512 -512
- package/tests/unit/components/Core/List.spec.ts +163 -0
- package/tests/unit/components/Core/ListItem.spec.ts +205 -0
- package/tests/unit/components/Core/Modal.spec.ts +518 -518
- package/tests/unit/components/Core/NotificationBubble.spec.ts +606 -606
- package/tests/unit/components/Core/OtpInput.spec.ts +708 -708
- package/tests/unit/components/Core/PhoneInput.spec.ts +757 -619
- package/tests/unit/components/Core/RadioGroup.spec.ts +318 -0
- package/tests/unit/components/Core/Select.spec.ts +712 -712
- package/tests/unit/components/Core/SelectAutocomplete.spec.ts +361 -0
- package/tests/unit/components/Core/TextArea.spec.ts +565 -565
- package/tests/unit/components/Core/TickBox.spec.ts +836 -836
- package/tests/unit/components/Core/Tile.spec.ts +286 -0
- package/tests/unit/components/DateInput/DateInput.spec.ts +128 -0
- package/tests/unit/components/ErrorPage/ErrorPage.spec.ts +313 -313
- package/tests/unit/components/ErrorPage/ErrorPageLogo.spec.ts +153 -153
- package/tests/unit/components/IconBullet/IconBullet.spec.ts +356 -356
- package/tests/unit/components/IconBullet/IconBulletList.spec.ts +371 -371
- package/tests/unit/components/Icons/AdvanceAppointments.spec.ts +186 -186
- package/tests/unit/components/Icons/Audio/CloudFailed.spec.ts +108 -108
- package/tests/unit/components/Icons/Audio/CloudSaved.spec.ts +149 -149
- package/tests/unit/components/Icons/Audio/Delete.spec.ts +158 -158
- package/tests/unit/components/Icons/Audio/Pause.spec.ts +208 -208
- package/tests/unit/components/Icons/Audio/Play.spec.ts +217 -217
- package/tests/unit/components/Icons/CalendarNotification.spec.ts +193 -193
- package/tests/unit/components/Icons/Chair.spec.ts +241 -241
- package/tests/unit/components/Icons/ChairNotification.spec.ts +318 -318
- package/tests/unit/components/Icons/Circle.spec.ts +255 -255
- package/tests/unit/components/Icons/FavIcon.spec.ts +259 -259
- package/tests/unit/components/Icons/FilledCircle.spec.ts +274 -274
- package/tests/unit/components/Icons/Group3.spec.ts +362 -362
- package/tests/unit/components/Icons/Logo.spec.ts +229 -229
- package/tests/unit/components/Icons/MiniLogo.spec.ts +38 -38
- package/tests/unit/components/Icons/RingNotification.spec.ts +400 -400
- package/tests/unit/components/Icons/SolidArrowRight.spec.ts +49 -49
- package/tests/unit/components/Icons/calendar.spec.ts +293 -293
- package/tests/unit/components/Icons/checkbox.spec.ts +315 -315
- package/tests/unit/components/Icons/outlineChecked.spec.ts +441 -441
- package/tests/unit/components/Icons/play.spec.ts +315 -315
- package/tests/unit/components/Laboratory/AppointmentCard.spec.ts +167 -167
- package/tests/unit/components/Laboratory/ChatBoxImage.spec.ts +179 -179
- package/tests/unit/components/Laboratory/ChatMessage.spec.ts +263 -263
- package/tests/unit/components/Laboratory/ChatMessageBadge.spec.ts +282 -282
- package/tests/unit/components/Laboratory/ChatNotification.spec.ts +256 -256
- package/tests/unit/components/Laboratory/DocumentCard.spec.ts +228 -228
- package/tests/unit/components/Laboratory/DocumentCardItem.spec.ts +236 -236
- package/tests/unit/components/Laboratory/InfoCard.spec.ts +308 -308
- package/tests/unit/components/Laboratory/MainColumnsBar.spec.ts +251 -251
- package/tests/unit/components/Laboratory/ProgressCircle.spec.ts +290 -290
- package/tests/unit/components/Laboratory/ProgressLinear.spec.ts +275 -275
- package/tests/unit/components/Laboratory/SelectionColumnBar.spec.ts +288 -288
- package/tests/unit/components/Laboratory/StatusNotification.spec.ts +296 -296
- package/tests/unit/components/Laboratory/TagLabel.spec.ts +353 -353
- package/tests/unit/components/Laboratory/TagLabelGroup.spec.ts +377 -377
- package/tests/unit/components/Laboratory/TicketCard.spec.ts +351 -351
- package/tests/unit/components/Laboratory/TimeLineEvent.spec.ts +381 -381
- package/tests/unit/components/Laboratory/Timeline.spec.ts +419 -419
- package/tests/unit/components/Loader/Loader.spec.ts +197 -197
- package/tests/unit/components/MaintenanceBanner/MaintenanceBanner.spec.ts +302 -302
- package/tests/unit/constants/iconEnums.spec.ts +39 -39
- package/tests/unit/i18n/i18n.spec.ts +88 -88
- package/tests/unit/plugins/vuetify.spec.ts +182 -182
- package/tests/unit/setup.ts +237 -237
- package/tests/unit/src/components/index.spec.ts.skip +192 -192
- package/tests/unit/src/index.spec.ts.skip +182 -182
- package/tests/unit/src/main.spec.ts +111 -111
- package/tests/unit/utils/accessibility.spec.ts +318 -318
- package/tests/unit/utils/anamnese.spec.ts +531 -0
- package/tsconfig.json +26 -26
- package/vite.config.ts +29 -29
- package/vitest.config.ts +91 -91
|
@@ -1,873 +1,873 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="page">
|
|
3
|
-
<div class="element-container">
|
|
4
|
-
<div class="controls">
|
|
5
|
-
<h2>Testing Domain: {{ currentDomain }}</h2>
|
|
6
|
-
<div class="button-group">
|
|
7
|
-
<button
|
|
8
|
-
@click="switchToDental"
|
|
9
|
-
class="control-btn"
|
|
10
|
-
>
|
|
11
|
-
Switch to Wunschlachen (Dental)
|
|
12
|
-
</button>
|
|
13
|
-
<button
|
|
14
|
-
@click="switchToCocoon"
|
|
15
|
-
class="control-btn"
|
|
16
|
-
>
|
|
17
|
-
Switch to White Cocoon
|
|
18
|
-
</button>
|
|
19
|
-
<button
|
|
20
|
-
@click="resetDomain"
|
|
21
|
-
class="control-btn reset"
|
|
22
|
-
>
|
|
23
|
-
Reset to Auto-Detect
|
|
24
|
-
</button>
|
|
25
|
-
</div>
|
|
26
|
-
</div>
|
|
27
|
-
|
|
28
|
-
<!-- Default Preset Examples -->
|
|
29
|
-
<div class="treatment-section">
|
|
30
|
-
<h3 class="section-title">Default Preset (Flat with Dividers)</h3>
|
|
31
|
-
<div class="matrix-container">
|
|
32
|
-
<AccordionGroup
|
|
33
|
-
v-model="accordionOutlined"
|
|
34
|
-
headline="Häufig gestellte Fragen"
|
|
35
|
-
:headline-color="dentalColors.accordion_title_color"
|
|
36
|
-
:divider-color="dentalColors.accordion_divider_color"
|
|
37
|
-
:icon-color="dentalColors.accordion_icon_color"
|
|
38
|
-
>
|
|
39
|
-
<AccordionItem
|
|
40
|
-
titleColor="#FF0000"
|
|
41
|
-
title="Terminbuchung"
|
|
42
|
-
text="Buchen Sie Ihren Wunschtermin ganz einfach online. W�hlen Sie aus verf�gbaren Zeiten und erhalten Sie eine sofortige Best�tigung per E-Mail. Unsere flexiblen Terminoptionen erm�glichen es Ihnen, Ihre Behandlung an Ihren Zeitplan anzupassen."
|
|
43
|
-
value="1"
|
|
44
|
-
:content-color="dentalColors.accordion_content_color"
|
|
45
|
-
:divider-props="{ color: '#FF0000', thickness: 2, opacity: 1}"
|
|
46
|
-
:icon-color="dentalColors.accordion_icon_color"
|
|
47
|
-
/>
|
|
48
|
-
<AccordionItem
|
|
49
|
-
title="Behandlungsablauf"
|
|
50
|
-
text="Jede Behandlung beginnt mit einer gr�ndlichen Untersuchung und Beratung. Wir erkl�ren Ihnen jeden Schritt und beantworten all Ihre Fragen. Ihre Gesundheit und Ihr Wohlbefinden stehen bei uns an erster Stelle."
|
|
51
|
-
value="2"
|
|
52
|
-
:title-color="dentalColors.accordion_title_color"
|
|
53
|
-
:content-color="dentalColors.accordion_content_color"
|
|
54
|
-
:divider-color="dentalColors.accordion_divider_color"
|
|
55
|
-
:icon-color="dentalColors.accordion_icon_color"
|
|
56
|
-
/>
|
|
57
|
-
<AccordionItem
|
|
58
|
-
title="Versicherung & Kosten"
|
|
59
|
-
text="Wir akzeptieren alle g�ngigen Versicherungen und bieten transparente Kostenvoranschl�ge. Auf Wunsch erstellen wir einen detaillierten Heil- und Kostenplan f�r Sie. Ratenzahlung ist nach Vereinbarung m�glich."
|
|
60
|
-
value="3"
|
|
61
|
-
:title-color="dentalColors.accordion_title_color"
|
|
62
|
-
:content-color="dentalColors.accordion_content_color"
|
|
63
|
-
:divider-color="dentalColors.accordion_divider_color"
|
|
64
|
-
:icon-color="dentalColors.accordion_icon_color"
|
|
65
|
-
/>
|
|
66
|
-
<AccordionItem
|
|
67
|
-
title="Notfalltermine"
|
|
68
|
-
text="F�r akute Beschwerden halten wir t�glich Notfalltermine bereit. Rufen Sie uns an, und wir finden schnellstm�glich einen Termin f�r Sie."
|
|
69
|
-
value="4"
|
|
70
|
-
:title-color="dentalColors.accordion_title_color"
|
|
71
|
-
:content-color="dentalColors.accordion_content_color"
|
|
72
|
-
:divider-color="dentalColors.accordion_divider_color"
|
|
73
|
-
:icon-color="dentalColors.accordion_icon_color"
|
|
74
|
-
/>
|
|
75
|
-
<AccordionItem
|
|
76
|
-
title="�ffnungszeiten"
|
|
77
|
-
text="Montag bis Freitag: 8:00 - 18:00 Uhr. Samstag: Nach Vereinbarung. An Feiertagen geschlossen."
|
|
78
|
-
value="5"
|
|
79
|
-
variant="end"
|
|
80
|
-
:title-color="dentalColors.accordion_title_color"
|
|
81
|
-
:content-color="dentalColors.accordion_content_color"
|
|
82
|
-
:divider-color="dentalColors.accordion_divider_color"
|
|
83
|
-
:icon-color="dentalColors.accordion_icon_color"
|
|
84
|
-
/>
|
|
85
|
-
</AccordionGroup>
|
|
86
|
-
|
|
87
|
-
<AccordionGroup
|
|
88
|
-
v-model="accordionOutlined2"
|
|
89
|
-
headline="Frequently Asked Questions (FAQs)"
|
|
90
|
-
:headline-color="cocoonColors.accordion_title_color"
|
|
91
|
-
:divider-color="cocoonColors.accordion_divider_color"
|
|
92
|
-
:icon-color="cocoonColors.accordion_icon_color"
|
|
93
|
-
>
|
|
94
|
-
<AccordionItem
|
|
95
|
-
title="Terminbuchung"
|
|
96
|
-
text="Buchen Sie Ihren Wunschtermin ganz einfach online. Wählen Sie aus verfügbaren Zeiten und erhalten Sie eine sofortige Bestätigung per E-Mail. Unsere flexiblen Terminoptionen ermöglichen es Ihnen, Ihre Behandlung an Ihren Zeitplan anzupassen."
|
|
97
|
-
value="1"
|
|
98
|
-
variant="default"
|
|
99
|
-
:title-color="cocoonColors.accordion_title_color"
|
|
100
|
-
:content-color="cocoonColors.accordion_content_color"
|
|
101
|
-
:divider-color="cocoonColors.accordion_divider_color"
|
|
102
|
-
:icon-color="cocoonColors.accordion_icon_color"
|
|
103
|
-
/>
|
|
104
|
-
<AccordionItem
|
|
105
|
-
title="Behandlungsablauf"
|
|
106
|
-
text="Jede Behandlung beginnt mit einer gründlichen Untersuchung und Beratung. Wir erklären Ihnen jeden Schritt und beantworten all Ihre Fragen. Ihre Gesundheit und Ihr Wohlbefinden stehen bei uns an erster Stelle."
|
|
107
|
-
value="2"
|
|
108
|
-
variant="default"
|
|
109
|
-
:title-color="cocoonColors.accordion_title_color"
|
|
110
|
-
:content-color="cocoonColors.accordion_content_color"
|
|
111
|
-
:divider-color="cocoonColors.accordion_divider_color"
|
|
112
|
-
:icon-color="cocoonColors.accordion_icon_color"
|
|
113
|
-
/>
|
|
114
|
-
<AccordionItem
|
|
115
|
-
title="Versicherung & Kosten"
|
|
116
|
-
text="Wir akzeptieren alle gängigen Versicherungen und bieten transparente Kostenvoranschläge. Auf Wunsch erstellen wir einen detaillierten Heil- und Kostenplan für Sie. Ratenzahlung ist nach Vereinbarung möglich."
|
|
117
|
-
value="3"
|
|
118
|
-
variant="default"
|
|
119
|
-
:title-color="cocoonColors.accordion_title_color"
|
|
120
|
-
:content-color="cocoonColors.accordion_content_color"
|
|
121
|
-
:divider-color="cocoonColors.accordion_divider_color"
|
|
122
|
-
:icon-color="cocoonColors.accordion_icon_color"
|
|
123
|
-
/>
|
|
124
|
-
<AccordionItem
|
|
125
|
-
title="Notfalltermine"
|
|
126
|
-
text="Für akute Beschwerden halten wir täglich Notfalltermine bereit. Rufen Sie uns an, und wir finden schnellstmöglich einen Termin für Sie."
|
|
127
|
-
value="4"
|
|
128
|
-
variant="default"
|
|
129
|
-
:title-color="cocoonColors.accordion_title_color"
|
|
130
|
-
:content-color="cocoonColors.accordion_content_color"
|
|
131
|
-
:divider-color="cocoonColors.accordion_divider_color"
|
|
132
|
-
:icon-color="cocoonColors.accordion_icon_color"
|
|
133
|
-
/>
|
|
134
|
-
<AccordionItem
|
|
135
|
-
title="Öffnungszeiten"
|
|
136
|
-
text="Montag bis Freitag: 8:00 - 18:00 Uhr. Samstag: Nach Vereinbarung. An Feiertagen geschlossen."
|
|
137
|
-
value="5"
|
|
138
|
-
variant="end"
|
|
139
|
-
:title-color="cocoonColors.accordion_title_color"
|
|
140
|
-
:content-color="cocoonColors.accordion_content_color"
|
|
141
|
-
:divider-color="cocoonColors.accordion_divider_color"
|
|
142
|
-
:icon-color="cocoonColors.accordion_icon_color"
|
|
143
|
-
/>
|
|
144
|
-
</AccordionGroup>
|
|
145
|
-
</div>
|
|
146
|
-
</div>
|
|
147
|
-
|
|
148
|
-
<!-- Filled Preset Variant -->
|
|
149
|
-
<div class="treatment-section">
|
|
150
|
-
<h3 class="section-title">Filled Preset (Admin Settings Style)</h3>
|
|
151
|
-
<div class="filled-container">
|
|
152
|
-
<AccordionGroup
|
|
153
|
-
:multiple="false"
|
|
154
|
-
v-model="filledPanel"
|
|
155
|
-
headline="Settings"
|
|
156
|
-
:headline-color="dentalColors.accordion_title_color"
|
|
157
|
-
>
|
|
158
|
-
<AccordionItem
|
|
159
|
-
value="account"
|
|
160
|
-
preset="filled"
|
|
161
|
-
:icon-color="dentalColors.accordion_icon_color"
|
|
162
|
-
>
|
|
163
|
-
<template #title>
|
|
164
|
-
<div class="filled-header">
|
|
165
|
-
<v-icon icon="heroicons:user-circle" color="var(--Dental-Blue-0)"></v-icon>
|
|
166
|
-
<h4>Account Settings</h4>
|
|
167
|
-
</div>
|
|
168
|
-
</template>
|
|
169
|
-
<template #text>
|
|
170
|
-
<div class="filled-content">
|
|
171
|
-
<div class="settings-row">
|
|
172
|
-
<div class="settings-info">
|
|
173
|
-
<h5>Account</h5>
|
|
174
|
-
<p>Manage your account settings and preferences</p>
|
|
175
|
-
</div>
|
|
176
|
-
<Button label="Edit" variant="flat" size="small" />
|
|
177
|
-
</div>
|
|
178
|
-
</div>
|
|
179
|
-
</template>
|
|
180
|
-
</AccordionItem>
|
|
181
|
-
<AccordionItem
|
|
182
|
-
value="notifications"
|
|
183
|
-
preset="filled"
|
|
184
|
-
:icon-color="dentalColors.accordion_icon_color"
|
|
185
|
-
>
|
|
186
|
-
<template #title>
|
|
187
|
-
<div class="filled-header">
|
|
188
|
-
<v-icon icon="heroicons:bell" color="var(--Dental-Blue-0)"></v-icon>
|
|
189
|
-
<h4>Notifications</h4>
|
|
190
|
-
</div>
|
|
191
|
-
</template>
|
|
192
|
-
<template #text>
|
|
193
|
-
<div class="filled-content">
|
|
194
|
-
<div class="settings-row">
|
|
195
|
-
<div class="settings-info">
|
|
196
|
-
<h5>Email Notifications</h5>
|
|
197
|
-
<p>Receive email updates about your appointments</p>
|
|
198
|
-
</div>
|
|
199
|
-
<Checkbox v-model="notificationsEnabled" />
|
|
200
|
-
</div>
|
|
201
|
-
</div>
|
|
202
|
-
</template>
|
|
203
|
-
</AccordionItem>
|
|
204
|
-
<AccordionItem
|
|
205
|
-
value="security"
|
|
206
|
-
preset="filled"
|
|
207
|
-
:icon-color="dentalColors.accordion_icon_color"
|
|
208
|
-
>
|
|
209
|
-
<template #title>
|
|
210
|
-
<div class="filled-header">
|
|
211
|
-
<v-icon icon="heroicons:shield-check" color="var(--Dental-Blue-0)"></v-icon>
|
|
212
|
-
<h4>Security</h4>
|
|
213
|
-
</div>
|
|
214
|
-
</template>
|
|
215
|
-
<template #text>
|
|
216
|
-
<div class="filled-content">
|
|
217
|
-
<div class="settings-row">
|
|
218
|
-
<div class="settings-info">
|
|
219
|
-
<h5>Two-Factor Authentication</h5>
|
|
220
|
-
<p>Add an extra layer of security to your account</p>
|
|
221
|
-
</div>
|
|
222
|
-
<Button label="Enable" variant="flat" size="small" />
|
|
223
|
-
</div>
|
|
224
|
-
</div>
|
|
225
|
-
</template>
|
|
226
|
-
</AccordionItem>
|
|
227
|
-
</AccordionGroup>
|
|
228
|
-
</div>
|
|
229
|
-
</div>
|
|
230
|
-
|
|
231
|
-
<!-- Shadow Override Examples -->
|
|
232
|
-
<div class="treatment-section">
|
|
233
|
-
<h3 class="section-title">Shadow Override Examples</h3>
|
|
234
|
-
<div class="shadow-examples">
|
|
235
|
-
<div class="shadow-column">
|
|
236
|
-
<h4 class="shadow-label">Elevated (default shadow)</h4>
|
|
237
|
-
<AccordionGroup :multiple="false" v-model="shadowExample1">
|
|
238
|
-
<AccordionItem
|
|
239
|
-
value="1"
|
|
240
|
-
preset="elevated"
|
|
241
|
-
title="Default Elevated Shadow"
|
|
242
|
-
text="Uses the default shadow: 0 2px 8px rgba(0,0,0,0.1)"
|
|
243
|
-
/>
|
|
244
|
-
</AccordionGroup>
|
|
245
|
-
</div>
|
|
246
|
-
<div class="shadow-column">
|
|
247
|
-
<h4 class="shadow-label">Elevated (no shadow)</h4>
|
|
248
|
-
<AccordionGroup :multiple="false" v-model="shadowExample2">
|
|
249
|
-
<AccordionItem
|
|
250
|
-
value="1"
|
|
251
|
-
preset="elevated"
|
|
252
|
-
shadow="none"
|
|
253
|
-
title="Elevated Without Shadow"
|
|
254
|
-
text="Shadow disabled with shadow='none'"
|
|
255
|
-
/>
|
|
256
|
-
</AccordionGroup>
|
|
257
|
-
</div>
|
|
258
|
-
<div class="shadow-column">
|
|
259
|
-
<h4 class="shadow-label">Filled (custom shadow)</h4>
|
|
260
|
-
<AccordionGroup :multiple="false" v-model="shadowExample3">
|
|
261
|
-
<AccordionItem
|
|
262
|
-
value="1"
|
|
263
|
-
preset="filled"
|
|
264
|
-
shadow="0 4px 16px rgba(0, 0, 0, 0.15)"
|
|
265
|
-
title="Filled With Custom Shadow"
|
|
266
|
-
text="Custom shadow added to filled preset"
|
|
267
|
-
/>
|
|
268
|
-
</AccordionGroup>
|
|
269
|
-
</div>
|
|
270
|
-
<div class="shadow-column">
|
|
271
|
-
<h4 class="shadow-label">Elevated (heavy shadow)</h4>
|
|
272
|
-
<AccordionGroup :multiple="false" v-model="shadowExample4">
|
|
273
|
-
<AccordionItem
|
|
274
|
-
value="1"
|
|
275
|
-
preset="elevated"
|
|
276
|
-
shadow="0 8px 24px rgba(0, 0, 0, 0.25)"
|
|
277
|
-
title="Heavy Custom Shadow"
|
|
278
|
-
text="Stronger shadow for more emphasis"
|
|
279
|
-
/>
|
|
280
|
-
</AccordionGroup>
|
|
281
|
-
</div>
|
|
282
|
-
</div>
|
|
283
|
-
</div>
|
|
284
|
-
|
|
285
|
-
<!-- Divider Control Examples -->
|
|
286
|
-
<div class="treatment-section">
|
|
287
|
-
<h3 class="section-title">Divider Control (showTopDivider / showBottomDivider)</h3>
|
|
288
|
-
<div class="divider-examples">
|
|
289
|
-
<div class="divider-column">
|
|
290
|
-
<h4 class="divider-label">Top divider only</h4>
|
|
291
|
-
<AccordionGroup :multiple="false" v-model="dividerExample1">
|
|
292
|
-
<AccordionItem
|
|
293
|
-
value="1"
|
|
294
|
-
:show-top-divider="true"
|
|
295
|
-
:show-bottom-divider="false"
|
|
296
|
-
preset="plain"
|
|
297
|
-
title="Top Divider Only"
|
|
298
|
-
text="This item shows only the top divider"
|
|
299
|
-
:title-color="dentalColors.accordion_title_color"
|
|
300
|
-
:content-color="dentalColors.accordion_content_color"
|
|
301
|
-
:divider-props="{ color: 'var(--Dental-Blue-0)', thickness: 1, opacity: 1 }"
|
|
302
|
-
/>
|
|
303
|
-
<AccordionItem
|
|
304
|
-
value="2"
|
|
305
|
-
:show-top-divider="true"
|
|
306
|
-
:show-bottom-divider="false"
|
|
307
|
-
preset="plain"
|
|
308
|
-
title="Another Item"
|
|
309
|
-
text="Also with only top divider"
|
|
310
|
-
:title-color="dentalColors.accordion_title_color"
|
|
311
|
-
:content-color="dentalColors.accordion_content_color"
|
|
312
|
-
:divider-props="{ color: 'var(--Dental-Blue-0)', thickness: 1, opacity: 1 }"
|
|
313
|
-
/>
|
|
314
|
-
</AccordionGroup>
|
|
315
|
-
</div>
|
|
316
|
-
<div class="divider-column">
|
|
317
|
-
<h4 class="divider-label">Bottom divider only</h4>
|
|
318
|
-
<AccordionGroup :multiple="false" v-model="dividerExample2">
|
|
319
|
-
<AccordionItem
|
|
320
|
-
value="1"
|
|
321
|
-
:show-top-divider="false"
|
|
322
|
-
:show-bottom-divider="true"
|
|
323
|
-
title="Bottom Divider Only"
|
|
324
|
-
text="This item shows only the bottom divider"
|
|
325
|
-
:title-color="dentalColors.accordion_title_color"
|
|
326
|
-
:content-color="dentalColors.accordion_content_color"
|
|
327
|
-
:divider-props="{ color: 'var(--Dental-Blue-0)', thickness: 1, opacity: 1 }"
|
|
328
|
-
preset="plain"
|
|
329
|
-
/>
|
|
330
|
-
<AccordionItem
|
|
331
|
-
value="2"
|
|
332
|
-
:show-top-divider="false"
|
|
333
|
-
:show-bottom-divider="true"
|
|
334
|
-
title="Another Item"
|
|
335
|
-
text="Also with only bottom divider"
|
|
336
|
-
:title-color="dentalColors.accordion_title_color"
|
|
337
|
-
:content-color="dentalColors.accordion_content_color"
|
|
338
|
-
:divider-props="{ color: 'var(--Dental-Blue-0)', thickness: 1, opacity: 1 }"
|
|
339
|
-
preset="plain"
|
|
340
|
-
/>
|
|
341
|
-
</AccordionGroup>
|
|
342
|
-
</div>
|
|
343
|
-
<div class="divider-column">
|
|
344
|
-
<h4 class="divider-label">Both dividers</h4>
|
|
345
|
-
<AccordionGroup :multiple="false" v-model="dividerExample3">
|
|
346
|
-
<AccordionItem
|
|
347
|
-
value="1"
|
|
348
|
-
:show-top-divider="true"
|
|
349
|
-
:show-bottom-divider="true"
|
|
350
|
-
title="Both Dividers"
|
|
351
|
-
text="This item shows both top and bottom dividers"
|
|
352
|
-
:title-color="dentalColors.accordion_title_color"
|
|
353
|
-
:content-color="dentalColors.accordion_content_color"
|
|
354
|
-
:divider-props="{ color: 'var(--Dental-Blue-0)', thickness: 1, opacity: 1 }"
|
|
355
|
-
preset="plain"
|
|
356
|
-
/>
|
|
357
|
-
<AccordionItem
|
|
358
|
-
value="2"
|
|
359
|
-
:show-top-divider="true"
|
|
360
|
-
:show-bottom-divider="true"
|
|
361
|
-
title="Another Item"
|
|
362
|
-
text="Also with both dividers"
|
|
363
|
-
:title-color="dentalColors.accordion_title_color"
|
|
364
|
-
:content-color="dentalColors.accordion_content_color"
|
|
365
|
-
:divider-props="{ color: 'var(--Dental-Blue-0)', thickness: 1, opacity: 1 }"
|
|
366
|
-
preset="plain"
|
|
367
|
-
/>
|
|
368
|
-
</AccordionGroup>
|
|
369
|
-
</div>
|
|
370
|
-
<div class="divider-column">
|
|
371
|
-
<h4 class="divider-label">No dividers</h4>
|
|
372
|
-
<AccordionGroup :multiple="false" v-model="dividerExample4">
|
|
373
|
-
<AccordionItem
|
|
374
|
-
value="1"
|
|
375
|
-
:show-top-divider="false"
|
|
376
|
-
:show-bottom-divider="false"
|
|
377
|
-
title="No Dividers"
|
|
378
|
-
text="This item shows no dividers at all"
|
|
379
|
-
:title-color="dentalColors.accordion_title_color"
|
|
380
|
-
:content-color="dentalColors.accordion_content_color"
|
|
381
|
-
preset="plain"
|
|
382
|
-
/>
|
|
383
|
-
<AccordionItem
|
|
384
|
-
value="2"
|
|
385
|
-
:show-top-divider="false"
|
|
386
|
-
:show-bottom-divider="false"
|
|
387
|
-
title="Another Item"
|
|
388
|
-
text="Also with no dividers"
|
|
389
|
-
:title-color="dentalColors.accordion_title_color"
|
|
390
|
-
:content-color="dentalColors.accordion_content_color"
|
|
391
|
-
preset="plain"
|
|
392
|
-
/>
|
|
393
|
-
</AccordionGroup>
|
|
394
|
-
</div>
|
|
395
|
-
</div>
|
|
396
|
-
</div>
|
|
397
|
-
|
|
398
|
-
<!-- Plain Preset Example -->
|
|
399
|
-
<div class="treatment-section">
|
|
400
|
-
<h3 class="section-title">Plain Preset (Minimal Style)</h3>
|
|
401
|
-
<div class="plain-container">
|
|
402
|
-
<AccordionGroup
|
|
403
|
-
:multiple="false"
|
|
404
|
-
v-model="plainPanel"
|
|
405
|
-
headline="FAQ"
|
|
406
|
-
:headline-color="dentalColors.accordion_title_color"
|
|
407
|
-
>
|
|
408
|
-
<AccordionItem
|
|
409
|
-
value="faq1"
|
|
410
|
-
preset="plain"
|
|
411
|
-
title="What is your return policy?"
|
|
412
|
-
text="You can return any item within 30 days of purchase for a full refund. Items must be in their original condition with tags attached."
|
|
413
|
-
:title-color="dentalColors.accordion_title_color"
|
|
414
|
-
:content-color="dentalColors.accordion_content_color"
|
|
415
|
-
:icon-color="dentalColors.accordion_icon_color"
|
|
416
|
-
/>
|
|
417
|
-
<AccordionItem
|
|
418
|
-
value="faq2"
|
|
419
|
-
preset="plain"
|
|
420
|
-
title="How long does shipping take?"
|
|
421
|
-
text="Standard shipping takes 5-7 business days. Express shipping is available for an additional fee and arrives within 2-3 business days."
|
|
422
|
-
:title-color="dentalColors.accordion_title_color"
|
|
423
|
-
:content-color="dentalColors.accordion_content_color"
|
|
424
|
-
:icon-color="dentalColors.accordion_icon_color"
|
|
425
|
-
/>
|
|
426
|
-
<AccordionItem
|
|
427
|
-
value="faq3"
|
|
428
|
-
preset="plain"
|
|
429
|
-
title="Do you offer international shipping?"
|
|
430
|
-
text="Yes, we ship to over 50 countries worldwide. International shipping rates and delivery times vary by location."
|
|
431
|
-
:title-color="dentalColors.accordion_title_color"
|
|
432
|
-
:content-color="dentalColors.accordion_content_color"
|
|
433
|
-
:icon-color="dentalColors.accordion_icon_color"
|
|
434
|
-
/>
|
|
435
|
-
</AccordionGroup>
|
|
436
|
-
</div>
|
|
437
|
-
</div>
|
|
438
|
-
|
|
439
|
-
<!-- Treatment Patient Counts Variant -->
|
|
440
|
-
<div class="treatment-section">
|
|
441
|
-
<h3 class="section-title">Elevated Preset (Treatment Patient Counts)</h3>
|
|
442
|
-
<div class="treatment-container">
|
|
443
|
-
<AccordionGroup
|
|
444
|
-
:multiple="false"
|
|
445
|
-
v-model="treatmentPanel"
|
|
446
|
-
headline="Behandlungen"
|
|
447
|
-
:headline-color="dentalColors.accordion_title_color"
|
|
448
|
-
>
|
|
449
|
-
<template v-for="item in computedTreatmentPatientCounts" :key="item.templateName">
|
|
450
|
-
<AccordionItem :value="item.templateName" variant="default" preset="elevated" v-if="item.count > 0">
|
|
451
|
-
<!-- Accordion Header -->
|
|
452
|
-
<template #title>
|
|
453
|
-
<div class="treatment-header">
|
|
454
|
-
<Checkbox v-model="item.selected" />
|
|
455
|
-
<h3 class="treatment-title">{{ item.templateName }}</h3>
|
|
456
|
-
<!-- Badge showing overdue labor work count -->
|
|
457
|
-
<span v-if="item.overdueCount > 0" class="labor-overdue-badge">
|
|
458
|
-
{{ item.overdueCount }} Laborarbeit überfällig
|
|
459
|
-
</span>
|
|
460
|
-
</div>
|
|
461
|
-
</template>
|
|
462
|
-
|
|
463
|
-
<!-- Accordion Content -->
|
|
464
|
-
<template #text>
|
|
465
|
-
<div class="treatment-content">
|
|
466
|
-
<h4>Patienten: {{ item.count }}</h4>
|
|
467
|
-
<ul class="patient-list">
|
|
468
|
-
<li
|
|
469
|
-
v-for="patient in item.patients"
|
|
470
|
-
:key="patient.name"
|
|
471
|
-
class="patient-item"
|
|
472
|
-
>
|
|
473
|
-
<span class="bullet">•</span>
|
|
474
|
-
<span>{{ patient.name }}</span>
|
|
475
|
-
<!-- Red dot for patients with overdue labor work -->
|
|
476
|
-
<span v-if="patient.hasOverdue" class="overdue-dot"></span>
|
|
477
|
-
<span v-if="patient.count > 1" class="patient-count">({{ patient.count }})</span>
|
|
478
|
-
</li>
|
|
479
|
-
</ul>
|
|
480
|
-
</div>
|
|
481
|
-
</template>
|
|
482
|
-
</AccordionItem>
|
|
483
|
-
</template>
|
|
484
|
-
</AccordionGroup>
|
|
485
|
-
</div>
|
|
486
|
-
</div>
|
|
487
|
-
</div>
|
|
488
|
-
</div>
|
|
489
|
-
</template>
|
|
490
|
-
|
|
491
|
-
<script setup lang="ts">
|
|
492
|
-
import { computed, ref, reactive } from "vue";
|
|
493
|
-
import {
|
|
494
|
-
domain,
|
|
495
|
-
setTestingDomain,
|
|
496
|
-
clearTestingDomain,
|
|
497
|
-
getColorsForDomain,
|
|
498
|
-
siteColors
|
|
499
|
-
} from "@/utils/index";
|
|
500
|
-
|
|
501
|
-
import Background from "@/components/Background/Background.vue";
|
|
502
|
-
import Button from "@/components/Button/Button.vue";
|
|
503
|
-
import Checkbox from "@/components/CheckBox/Checkbox.vue";
|
|
504
|
-
import AccordionGroup from "@/components/Accordion/AccordionGroup.vue";
|
|
505
|
-
import AccordionItem from "@/components/Accordion/AccordionItem.vue";
|
|
506
|
-
|
|
507
|
-
const currentDomain = computed(() => domain.value);
|
|
508
|
-
|
|
509
|
-
const switchToDental = () => {
|
|
510
|
-
setTestingDomain("domain-dental");
|
|
511
|
-
};
|
|
512
|
-
|
|
513
|
-
const switchToCocoon = () => {
|
|
514
|
-
setTestingDomain("domain-cocoon");
|
|
515
|
-
};
|
|
516
|
-
|
|
517
|
-
const resetDomain = () => {
|
|
518
|
-
clearTestingDomain();
|
|
519
|
-
};
|
|
520
|
-
|
|
521
|
-
const dentalColors = getColorsForDomain("domain-dental");
|
|
522
|
-
const cocoonColors = getColorsForDomain("domain-cocoon");
|
|
523
|
-
|
|
524
|
-
const accordionOutlined = ref(null);
|
|
525
|
-
const accordionOutlined2 = ref(null);
|
|
526
|
-
const accordionPlain = ref(null);
|
|
527
|
-
const accordionMultiple = ref([1, 2]);
|
|
528
|
-
const accordionComplex = ref(null);
|
|
529
|
-
|
|
530
|
-
// Filled preset data
|
|
531
|
-
const filledPanel = ref(null);
|
|
532
|
-
const notificationsEnabled = ref(true);
|
|
533
|
-
|
|
534
|
-
// Shadow examples data
|
|
535
|
-
const shadowExample1 = ref(null);
|
|
536
|
-
const shadowExample2 = ref(null);
|
|
537
|
-
const shadowExample3 = ref(null);
|
|
538
|
-
const shadowExample4 = ref(null);
|
|
539
|
-
|
|
540
|
-
// Divider examples data
|
|
541
|
-
const dividerExample1 = ref(null);
|
|
542
|
-
const dividerExample2 = ref(null);
|
|
543
|
-
const dividerExample3 = ref(null);
|
|
544
|
-
const dividerExample4 = ref(null);
|
|
545
|
-
|
|
546
|
-
// Plain preset data
|
|
547
|
-
const plainPanel = ref(null);
|
|
548
|
-
|
|
549
|
-
// Treatment Patient Counts data
|
|
550
|
-
const treatmentPanel = ref(null);
|
|
551
|
-
|
|
552
|
-
const computedTreatmentPatientCounts = reactive([
|
|
553
|
-
{
|
|
554
|
-
templateName: "Zahnreinigung",
|
|
555
|
-
selected: false,
|
|
556
|
-
count: 4,
|
|
557
|
-
overdueCount: 2,
|
|
558
|
-
patients: [
|
|
559
|
-
{ name: "Max Mustermann", hasOverdue: true, count: 2 },
|
|
560
|
-
{ name: "Anna Schmidt", hasOverdue: false, count: 1 },
|
|
561
|
-
{ name: "Peter Weber", hasOverdue: true, count: 1 },
|
|
562
|
-
],
|
|
563
|
-
},
|
|
564
|
-
{
|
|
565
|
-
templateName: "Kontrolluntersuchung",
|
|
566
|
-
selected: false,
|
|
567
|
-
count: 3,
|
|
568
|
-
overdueCount: 0,
|
|
569
|
-
patients: [
|
|
570
|
-
{ name: "Lisa Müller", hasOverdue: false, count: 1 },
|
|
571
|
-
{ name: "Thomas Bauer", hasOverdue: false, count: 1 },
|
|
572
|
-
{ name: "Sarah Klein", hasOverdue: false, count: 1 },
|
|
573
|
-
],
|
|
574
|
-
},
|
|
575
|
-
{
|
|
576
|
-
templateName: "Implantologie",
|
|
577
|
-
selected: false,
|
|
578
|
-
count: 2,
|
|
579
|
-
overdueCount: 1,
|
|
580
|
-
patients: [
|
|
581
|
-
{ name: "Michael Hoffmann", hasOverdue: true, count: 1 },
|
|
582
|
-
{ name: "Julia Fischer", hasOverdue: false, count: 1 },
|
|
583
|
-
],
|
|
584
|
-
},
|
|
585
|
-
{
|
|
586
|
-
templateName: "Kieferorthopädie",
|
|
587
|
-
selected: false,
|
|
588
|
-
count: 0,
|
|
589
|
-
overdueCount: 0,
|
|
590
|
-
patients: [],
|
|
591
|
-
},
|
|
592
|
-
]);
|
|
593
|
-
</script>
|
|
594
|
-
|
|
595
|
-
<style scoped>
|
|
596
|
-
.page {
|
|
597
|
-
display: flex;
|
|
598
|
-
flex-direction: column;
|
|
599
|
-
justify-content: flex-start;
|
|
600
|
-
align-items: center;
|
|
601
|
-
width: 100vw;
|
|
602
|
-
min-height: 100vh;
|
|
603
|
-
background-color: #f5f5f5;
|
|
604
|
-
padding: 2rem 0;
|
|
605
|
-
overflow-y: auto;
|
|
606
|
-
}
|
|
607
|
-
|
|
608
|
-
.element-container {
|
|
609
|
-
display: flex;
|
|
610
|
-
flex-direction: column;
|
|
611
|
-
justify-content: flex-start;
|
|
612
|
-
align-items: center;
|
|
613
|
-
width: 95%;
|
|
614
|
-
max-width: 1400px;
|
|
615
|
-
gap: 2rem;
|
|
616
|
-
}
|
|
617
|
-
|
|
618
|
-
.controls {
|
|
619
|
-
width: 100%;
|
|
620
|
-
background: white;
|
|
621
|
-
padding: 1.5rem;
|
|
622
|
-
border-radius: 8px;
|
|
623
|
-
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
624
|
-
text-align: center;
|
|
625
|
-
}
|
|
626
|
-
|
|
627
|
-
.controls h2 {
|
|
628
|
-
margin: 0 0 1rem 0;
|
|
629
|
-
color: #333;
|
|
630
|
-
font-size: 1.5rem;
|
|
631
|
-
}
|
|
632
|
-
|
|
633
|
-
.button-group {
|
|
634
|
-
display: flex;
|
|
635
|
-
gap: 1rem;
|
|
636
|
-
justify-content: center;
|
|
637
|
-
flex-wrap: wrap;
|
|
638
|
-
}
|
|
639
|
-
|
|
640
|
-
.control-btn {
|
|
641
|
-
padding: 0.75rem 1.5rem;
|
|
642
|
-
font-size: 1rem;
|
|
643
|
-
border: none;
|
|
644
|
-
border-radius: 6px;
|
|
645
|
-
cursor: pointer;
|
|
646
|
-
background-color: #4caf50;
|
|
647
|
-
color: white;
|
|
648
|
-
transition: background-color 0.3s ease;
|
|
649
|
-
font-weight: 500;
|
|
650
|
-
}
|
|
651
|
-
|
|
652
|
-
.control-btn:hover {
|
|
653
|
-
background-color: #45a049;
|
|
654
|
-
}
|
|
655
|
-
|
|
656
|
-
.control-btn.reset {
|
|
657
|
-
background-color: #f44336;
|
|
658
|
-
}
|
|
659
|
-
|
|
660
|
-
.control-btn.reset:hover {
|
|
661
|
-
background-color: #da190b;
|
|
662
|
-
}
|
|
663
|
-
|
|
664
|
-
.matrix-container {
|
|
665
|
-
width: 100%;
|
|
666
|
-
overflow-x: auto;
|
|
667
|
-
display: flex;
|
|
668
|
-
gap: 20px;
|
|
669
|
-
justify-content: space-between;
|
|
670
|
-
}
|
|
671
|
-
|
|
672
|
-
/* Treatment Section Styles */
|
|
673
|
-
.treatment-section {
|
|
674
|
-
width: 100%;
|
|
675
|
-
background: white;
|
|
676
|
-
padding: 1.5rem;
|
|
677
|
-
border-radius: 8px;
|
|
678
|
-
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
679
|
-
}
|
|
680
|
-
|
|
681
|
-
.section-title {
|
|
682
|
-
margin: 0 0 1rem 0;
|
|
683
|
-
color: #333;
|
|
684
|
-
font-size: 1.25rem;
|
|
685
|
-
font-weight: 600;
|
|
686
|
-
}
|
|
687
|
-
|
|
688
|
-
.treatment-container {
|
|
689
|
-
max-height: 400px;
|
|
690
|
-
overflow-y: auto;
|
|
691
|
-
padding: 10px;
|
|
692
|
-
}
|
|
693
|
-
|
|
694
|
-
.treatment-header {
|
|
695
|
-
display: flex;
|
|
696
|
-
width: 100%;
|
|
697
|
-
align-items: center;
|
|
698
|
-
gap: 0.5rem;
|
|
699
|
-
}
|
|
700
|
-
|
|
701
|
-
.treatment-title {
|
|
702
|
-
margin: 0;
|
|
703
|
-
font-size: 1rem;
|
|
704
|
-
font-weight: 600;
|
|
705
|
-
color: var(--Dental-Blue-0, #172774);
|
|
706
|
-
}
|
|
707
|
-
|
|
708
|
-
.labor-overdue-badge {
|
|
709
|
-
background-color: #fef2f2;
|
|
710
|
-
color: #dc2626;
|
|
711
|
-
padding: 0.25rem 0.75rem;
|
|
712
|
-
border-radius: 9999px;
|
|
713
|
-
font-size: 0.75rem;
|
|
714
|
-
font-weight: 500;
|
|
715
|
-
margin-left: auto;
|
|
716
|
-
}
|
|
717
|
-
|
|
718
|
-
.treatment-content {
|
|
719
|
-
display: flex;
|
|
720
|
-
flex-direction: column;
|
|
721
|
-
gap: 0.5rem;
|
|
722
|
-
margin-bottom: 1rem;
|
|
723
|
-
padding: 0 1rem;
|
|
724
|
-
}
|
|
725
|
-
|
|
726
|
-
.treatment-content h4 {
|
|
727
|
-
margin: 0;
|
|
728
|
-
font-size: 0.875rem;
|
|
729
|
-
font-weight: 600;
|
|
730
|
-
color: #333;
|
|
731
|
-
}
|
|
732
|
-
|
|
733
|
-
.patient-list {
|
|
734
|
-
list-style: none;
|
|
735
|
-
margin: 0;
|
|
736
|
-
padding: 0;
|
|
737
|
-
}
|
|
738
|
-
|
|
739
|
-
.patient-item {
|
|
740
|
-
display: flex;
|
|
741
|
-
align-items: center;
|
|
742
|
-
padding: 0.25rem 0;
|
|
743
|
-
padding-left: 1rem;
|
|
744
|
-
color: var(--Dental-Blue-0, #172774);
|
|
745
|
-
font-size: 0.875rem;
|
|
746
|
-
}
|
|
747
|
-
|
|
748
|
-
.bullet {
|
|
749
|
-
position: absolute;
|
|
750
|
-
left: 0;
|
|
751
|
-
color: var(--Dental-Blue-0, #172774);
|
|
752
|
-
font-size: 1.25rem;
|
|
753
|
-
}
|
|
754
|
-
|
|
755
|
-
.patient-item {
|
|
756
|
-
position: relative;
|
|
757
|
-
padding-left: 1rem;
|
|
758
|
-
}
|
|
759
|
-
|
|
760
|
-
.overdue-dot {
|
|
761
|
-
width: 0.5rem;
|
|
762
|
-
height: 0.5rem;
|
|
763
|
-
border-radius: 50%;
|
|
764
|
-
background-color: var(--Power-Red-0, #dc2626);
|
|
765
|
-
margin-left: 0.5rem;
|
|
766
|
-
flex-shrink: 0;
|
|
767
|
-
}
|
|
768
|
-
|
|
769
|
-
.patient-count {
|
|
770
|
-
margin-left: 0.25rem;
|
|
771
|
-
color: #666;
|
|
772
|
-
}
|
|
773
|
-
|
|
774
|
-
/* Filled Preset Styles */
|
|
775
|
-
.filled-container {
|
|
776
|
-
max-width: 500px;
|
|
777
|
-
}
|
|
778
|
-
|
|
779
|
-
.filled-header {
|
|
780
|
-
display: flex;
|
|
781
|
-
align-items: center;
|
|
782
|
-
gap: 0.5rem;
|
|
783
|
-
}
|
|
784
|
-
|
|
785
|
-
.filled-header h4 {
|
|
786
|
-
margin: 0;
|
|
787
|
-
font-size: 1rem;
|
|
788
|
-
font-weight: 600;
|
|
789
|
-
color: var(--Dental-Blue-0, #172774);
|
|
790
|
-
}
|
|
791
|
-
|
|
792
|
-
.filled-content {
|
|
793
|
-
padding: 0.5rem 0;
|
|
794
|
-
}
|
|
795
|
-
|
|
796
|
-
.settings-row {
|
|
797
|
-
display: flex;
|
|
798
|
-
justify-content: space-between;
|
|
799
|
-
align-items: center;
|
|
800
|
-
gap: 1rem;
|
|
801
|
-
}
|
|
802
|
-
|
|
803
|
-
.settings-info h5 {
|
|
804
|
-
margin: 0 0 0.25rem 0;
|
|
805
|
-
font-size: 0.875rem;
|
|
806
|
-
font-weight: 600;
|
|
807
|
-
color: #333;
|
|
808
|
-
}
|
|
809
|
-
|
|
810
|
-
.settings-info p {
|
|
811
|
-
margin: 0;
|
|
812
|
-
font-size: 0.8125rem;
|
|
813
|
-
color: #666;
|
|
814
|
-
}
|
|
815
|
-
|
|
816
|
-
/* Shadow Examples Styles */
|
|
817
|
-
.shadow-examples {
|
|
818
|
-
display: grid;
|
|
819
|
-
grid-template-columns: repeat(2, 1fr);
|
|
820
|
-
gap: 1.5rem;
|
|
821
|
-
background-color: #f5f5f5;
|
|
822
|
-
}
|
|
823
|
-
|
|
824
|
-
.shadow-column {
|
|
825
|
-
display: flex;
|
|
826
|
-
flex-direction: column;
|
|
827
|
-
gap: 0.5rem;
|
|
828
|
-
}
|
|
829
|
-
|
|
830
|
-
.shadow-label {
|
|
831
|
-
margin: 0;
|
|
832
|
-
font-size: 0.875rem;
|
|
833
|
-
font-weight: 600;
|
|
834
|
-
color: #555;
|
|
835
|
-
}
|
|
836
|
-
|
|
837
|
-
@media (max-width: 768px) {
|
|
838
|
-
.shadow-examples {
|
|
839
|
-
grid-template-columns: 1fr;
|
|
840
|
-
}
|
|
841
|
-
}
|
|
842
|
-
|
|
843
|
-
/* Divider Examples Styles */
|
|
844
|
-
.divider-examples {
|
|
845
|
-
display: grid;
|
|
846
|
-
grid-template-columns: repeat(2, 1fr);
|
|
847
|
-
gap: 1.5rem;
|
|
848
|
-
}
|
|
849
|
-
|
|
850
|
-
.divider-column {
|
|
851
|
-
display: flex;
|
|
852
|
-
flex-direction: column;
|
|
853
|
-
gap: 0.5rem;
|
|
854
|
-
}
|
|
855
|
-
|
|
856
|
-
.divider-label {
|
|
857
|
-
margin: 0;
|
|
858
|
-
font-size: 0.875rem;
|
|
859
|
-
font-weight: 600;
|
|
860
|
-
color: #555;
|
|
861
|
-
}
|
|
862
|
-
|
|
863
|
-
@media (max-width: 768px) {
|
|
864
|
-
.divider-examples {
|
|
865
|
-
grid-template-columns: 1fr;
|
|
866
|
-
}
|
|
867
|
-
}
|
|
868
|
-
|
|
869
|
-
/* Plain Preset Styles */
|
|
870
|
-
.plain-container {
|
|
871
|
-
max-width: 600px;
|
|
872
|
-
}
|
|
873
|
-
</style>
|
|
1
|
+
<template>
|
|
2
|
+
<div class="page">
|
|
3
|
+
<div class="element-container">
|
|
4
|
+
<div class="controls">
|
|
5
|
+
<h2>Testing Domain: {{ currentDomain }}</h2>
|
|
6
|
+
<div class="button-group">
|
|
7
|
+
<button
|
|
8
|
+
@click="switchToDental"
|
|
9
|
+
class="control-btn"
|
|
10
|
+
>
|
|
11
|
+
Switch to Wunschlachen (Dental)
|
|
12
|
+
</button>
|
|
13
|
+
<button
|
|
14
|
+
@click="switchToCocoon"
|
|
15
|
+
class="control-btn"
|
|
16
|
+
>
|
|
17
|
+
Switch to White Cocoon
|
|
18
|
+
</button>
|
|
19
|
+
<button
|
|
20
|
+
@click="resetDomain"
|
|
21
|
+
class="control-btn reset"
|
|
22
|
+
>
|
|
23
|
+
Reset to Auto-Detect
|
|
24
|
+
</button>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
<!-- Default Preset Examples -->
|
|
29
|
+
<div class="treatment-section">
|
|
30
|
+
<h3 class="section-title">Default Preset (Flat with Dividers)</h3>
|
|
31
|
+
<div class="matrix-container">
|
|
32
|
+
<AccordionGroup
|
|
33
|
+
v-model="accordionOutlined"
|
|
34
|
+
headline="Häufig gestellte Fragen"
|
|
35
|
+
:headline-color="dentalColors.accordion_title_color"
|
|
36
|
+
:divider-color="dentalColors.accordion_divider_color"
|
|
37
|
+
:icon-color="dentalColors.accordion_icon_color"
|
|
38
|
+
>
|
|
39
|
+
<AccordionItem
|
|
40
|
+
titleColor="#FF0000"
|
|
41
|
+
title="Terminbuchung"
|
|
42
|
+
text="Buchen Sie Ihren Wunschtermin ganz einfach online. W�hlen Sie aus verf�gbaren Zeiten und erhalten Sie eine sofortige Best�tigung per E-Mail. Unsere flexiblen Terminoptionen erm�glichen es Ihnen, Ihre Behandlung an Ihren Zeitplan anzupassen."
|
|
43
|
+
value="1"
|
|
44
|
+
:content-color="dentalColors.accordion_content_color"
|
|
45
|
+
:divider-props="{ color: '#FF0000', thickness: 2, opacity: 1}"
|
|
46
|
+
:icon-color="dentalColors.accordion_icon_color"
|
|
47
|
+
/>
|
|
48
|
+
<AccordionItem
|
|
49
|
+
title="Behandlungsablauf"
|
|
50
|
+
text="Jede Behandlung beginnt mit einer gr�ndlichen Untersuchung und Beratung. Wir erkl�ren Ihnen jeden Schritt und beantworten all Ihre Fragen. Ihre Gesundheit und Ihr Wohlbefinden stehen bei uns an erster Stelle."
|
|
51
|
+
value="2"
|
|
52
|
+
:title-color="dentalColors.accordion_title_color"
|
|
53
|
+
:content-color="dentalColors.accordion_content_color"
|
|
54
|
+
:divider-color="dentalColors.accordion_divider_color"
|
|
55
|
+
:icon-color="dentalColors.accordion_icon_color"
|
|
56
|
+
/>
|
|
57
|
+
<AccordionItem
|
|
58
|
+
title="Versicherung & Kosten"
|
|
59
|
+
text="Wir akzeptieren alle g�ngigen Versicherungen und bieten transparente Kostenvoranschl�ge. Auf Wunsch erstellen wir einen detaillierten Heil- und Kostenplan f�r Sie. Ratenzahlung ist nach Vereinbarung m�glich."
|
|
60
|
+
value="3"
|
|
61
|
+
:title-color="dentalColors.accordion_title_color"
|
|
62
|
+
:content-color="dentalColors.accordion_content_color"
|
|
63
|
+
:divider-color="dentalColors.accordion_divider_color"
|
|
64
|
+
:icon-color="dentalColors.accordion_icon_color"
|
|
65
|
+
/>
|
|
66
|
+
<AccordionItem
|
|
67
|
+
title="Notfalltermine"
|
|
68
|
+
text="F�r akute Beschwerden halten wir t�glich Notfalltermine bereit. Rufen Sie uns an, und wir finden schnellstm�glich einen Termin f�r Sie."
|
|
69
|
+
value="4"
|
|
70
|
+
:title-color="dentalColors.accordion_title_color"
|
|
71
|
+
:content-color="dentalColors.accordion_content_color"
|
|
72
|
+
:divider-color="dentalColors.accordion_divider_color"
|
|
73
|
+
:icon-color="dentalColors.accordion_icon_color"
|
|
74
|
+
/>
|
|
75
|
+
<AccordionItem
|
|
76
|
+
title="�ffnungszeiten"
|
|
77
|
+
text="Montag bis Freitag: 8:00 - 18:00 Uhr. Samstag: Nach Vereinbarung. An Feiertagen geschlossen."
|
|
78
|
+
value="5"
|
|
79
|
+
variant="end"
|
|
80
|
+
:title-color="dentalColors.accordion_title_color"
|
|
81
|
+
:content-color="dentalColors.accordion_content_color"
|
|
82
|
+
:divider-color="dentalColors.accordion_divider_color"
|
|
83
|
+
:icon-color="dentalColors.accordion_icon_color"
|
|
84
|
+
/>
|
|
85
|
+
</AccordionGroup>
|
|
86
|
+
|
|
87
|
+
<AccordionGroup
|
|
88
|
+
v-model="accordionOutlined2"
|
|
89
|
+
headline="Frequently Asked Questions (FAQs)"
|
|
90
|
+
:headline-color="cocoonColors.accordion_title_color"
|
|
91
|
+
:divider-color="cocoonColors.accordion_divider_color"
|
|
92
|
+
:icon-color="cocoonColors.accordion_icon_color"
|
|
93
|
+
>
|
|
94
|
+
<AccordionItem
|
|
95
|
+
title="Terminbuchung"
|
|
96
|
+
text="Buchen Sie Ihren Wunschtermin ganz einfach online. Wählen Sie aus verfügbaren Zeiten und erhalten Sie eine sofortige Bestätigung per E-Mail. Unsere flexiblen Terminoptionen ermöglichen es Ihnen, Ihre Behandlung an Ihren Zeitplan anzupassen."
|
|
97
|
+
value="1"
|
|
98
|
+
variant="default"
|
|
99
|
+
:title-color="cocoonColors.accordion_title_color"
|
|
100
|
+
:content-color="cocoonColors.accordion_content_color"
|
|
101
|
+
:divider-color="cocoonColors.accordion_divider_color"
|
|
102
|
+
:icon-color="cocoonColors.accordion_icon_color"
|
|
103
|
+
/>
|
|
104
|
+
<AccordionItem
|
|
105
|
+
title="Behandlungsablauf"
|
|
106
|
+
text="Jede Behandlung beginnt mit einer gründlichen Untersuchung und Beratung. Wir erklären Ihnen jeden Schritt und beantworten all Ihre Fragen. Ihre Gesundheit und Ihr Wohlbefinden stehen bei uns an erster Stelle."
|
|
107
|
+
value="2"
|
|
108
|
+
variant="default"
|
|
109
|
+
:title-color="cocoonColors.accordion_title_color"
|
|
110
|
+
:content-color="cocoonColors.accordion_content_color"
|
|
111
|
+
:divider-color="cocoonColors.accordion_divider_color"
|
|
112
|
+
:icon-color="cocoonColors.accordion_icon_color"
|
|
113
|
+
/>
|
|
114
|
+
<AccordionItem
|
|
115
|
+
title="Versicherung & Kosten"
|
|
116
|
+
text="Wir akzeptieren alle gängigen Versicherungen und bieten transparente Kostenvoranschläge. Auf Wunsch erstellen wir einen detaillierten Heil- und Kostenplan für Sie. Ratenzahlung ist nach Vereinbarung möglich."
|
|
117
|
+
value="3"
|
|
118
|
+
variant="default"
|
|
119
|
+
:title-color="cocoonColors.accordion_title_color"
|
|
120
|
+
:content-color="cocoonColors.accordion_content_color"
|
|
121
|
+
:divider-color="cocoonColors.accordion_divider_color"
|
|
122
|
+
:icon-color="cocoonColors.accordion_icon_color"
|
|
123
|
+
/>
|
|
124
|
+
<AccordionItem
|
|
125
|
+
title="Notfalltermine"
|
|
126
|
+
text="Für akute Beschwerden halten wir täglich Notfalltermine bereit. Rufen Sie uns an, und wir finden schnellstmöglich einen Termin für Sie."
|
|
127
|
+
value="4"
|
|
128
|
+
variant="default"
|
|
129
|
+
:title-color="cocoonColors.accordion_title_color"
|
|
130
|
+
:content-color="cocoonColors.accordion_content_color"
|
|
131
|
+
:divider-color="cocoonColors.accordion_divider_color"
|
|
132
|
+
:icon-color="cocoonColors.accordion_icon_color"
|
|
133
|
+
/>
|
|
134
|
+
<AccordionItem
|
|
135
|
+
title="Öffnungszeiten"
|
|
136
|
+
text="Montag bis Freitag: 8:00 - 18:00 Uhr. Samstag: Nach Vereinbarung. An Feiertagen geschlossen."
|
|
137
|
+
value="5"
|
|
138
|
+
variant="end"
|
|
139
|
+
:title-color="cocoonColors.accordion_title_color"
|
|
140
|
+
:content-color="cocoonColors.accordion_content_color"
|
|
141
|
+
:divider-color="cocoonColors.accordion_divider_color"
|
|
142
|
+
:icon-color="cocoonColors.accordion_icon_color"
|
|
143
|
+
/>
|
|
144
|
+
</AccordionGroup>
|
|
145
|
+
</div>
|
|
146
|
+
</div>
|
|
147
|
+
|
|
148
|
+
<!-- Filled Preset Variant -->
|
|
149
|
+
<div class="treatment-section">
|
|
150
|
+
<h3 class="section-title">Filled Preset (Admin Settings Style)</h3>
|
|
151
|
+
<div class="filled-container">
|
|
152
|
+
<AccordionGroup
|
|
153
|
+
:multiple="false"
|
|
154
|
+
v-model="filledPanel"
|
|
155
|
+
headline="Settings"
|
|
156
|
+
:headline-color="dentalColors.accordion_title_color"
|
|
157
|
+
>
|
|
158
|
+
<AccordionItem
|
|
159
|
+
value="account"
|
|
160
|
+
preset="filled"
|
|
161
|
+
:icon-color="dentalColors.accordion_icon_color"
|
|
162
|
+
>
|
|
163
|
+
<template #title>
|
|
164
|
+
<div class="filled-header">
|
|
165
|
+
<v-icon icon="heroicons:user-circle" color="var(--Dental-Blue-0)"></v-icon>
|
|
166
|
+
<h4>Account Settings</h4>
|
|
167
|
+
</div>
|
|
168
|
+
</template>
|
|
169
|
+
<template #text>
|
|
170
|
+
<div class="filled-content">
|
|
171
|
+
<div class="settings-row">
|
|
172
|
+
<div class="settings-info">
|
|
173
|
+
<h5>Account</h5>
|
|
174
|
+
<p>Manage your account settings and preferences</p>
|
|
175
|
+
</div>
|
|
176
|
+
<Button label="Edit" variant="flat" size="small" />
|
|
177
|
+
</div>
|
|
178
|
+
</div>
|
|
179
|
+
</template>
|
|
180
|
+
</AccordionItem>
|
|
181
|
+
<AccordionItem
|
|
182
|
+
value="notifications"
|
|
183
|
+
preset="filled"
|
|
184
|
+
:icon-color="dentalColors.accordion_icon_color"
|
|
185
|
+
>
|
|
186
|
+
<template #title>
|
|
187
|
+
<div class="filled-header">
|
|
188
|
+
<v-icon icon="heroicons:bell" color="var(--Dental-Blue-0)"></v-icon>
|
|
189
|
+
<h4>Notifications</h4>
|
|
190
|
+
</div>
|
|
191
|
+
</template>
|
|
192
|
+
<template #text>
|
|
193
|
+
<div class="filled-content">
|
|
194
|
+
<div class="settings-row">
|
|
195
|
+
<div class="settings-info">
|
|
196
|
+
<h5>Email Notifications</h5>
|
|
197
|
+
<p>Receive email updates about your appointments</p>
|
|
198
|
+
</div>
|
|
199
|
+
<Checkbox v-model="notificationsEnabled" />
|
|
200
|
+
</div>
|
|
201
|
+
</div>
|
|
202
|
+
</template>
|
|
203
|
+
</AccordionItem>
|
|
204
|
+
<AccordionItem
|
|
205
|
+
value="security"
|
|
206
|
+
preset="filled"
|
|
207
|
+
:icon-color="dentalColors.accordion_icon_color"
|
|
208
|
+
>
|
|
209
|
+
<template #title>
|
|
210
|
+
<div class="filled-header">
|
|
211
|
+
<v-icon icon="heroicons:shield-check" color="var(--Dental-Blue-0)"></v-icon>
|
|
212
|
+
<h4>Security</h4>
|
|
213
|
+
</div>
|
|
214
|
+
</template>
|
|
215
|
+
<template #text>
|
|
216
|
+
<div class="filled-content">
|
|
217
|
+
<div class="settings-row">
|
|
218
|
+
<div class="settings-info">
|
|
219
|
+
<h5>Two-Factor Authentication</h5>
|
|
220
|
+
<p>Add an extra layer of security to your account</p>
|
|
221
|
+
</div>
|
|
222
|
+
<Button label="Enable" variant="flat" size="small" />
|
|
223
|
+
</div>
|
|
224
|
+
</div>
|
|
225
|
+
</template>
|
|
226
|
+
</AccordionItem>
|
|
227
|
+
</AccordionGroup>
|
|
228
|
+
</div>
|
|
229
|
+
</div>
|
|
230
|
+
|
|
231
|
+
<!-- Shadow Override Examples -->
|
|
232
|
+
<div class="treatment-section">
|
|
233
|
+
<h3 class="section-title">Shadow Override Examples</h3>
|
|
234
|
+
<div class="shadow-examples">
|
|
235
|
+
<div class="shadow-column">
|
|
236
|
+
<h4 class="shadow-label">Elevated (default shadow)</h4>
|
|
237
|
+
<AccordionGroup :multiple="false" v-model="shadowExample1">
|
|
238
|
+
<AccordionItem
|
|
239
|
+
value="1"
|
|
240
|
+
preset="elevated"
|
|
241
|
+
title="Default Elevated Shadow"
|
|
242
|
+
text="Uses the default shadow: 0 2px 8px rgba(0,0,0,0.1)"
|
|
243
|
+
/>
|
|
244
|
+
</AccordionGroup>
|
|
245
|
+
</div>
|
|
246
|
+
<div class="shadow-column">
|
|
247
|
+
<h4 class="shadow-label">Elevated (no shadow)</h4>
|
|
248
|
+
<AccordionGroup :multiple="false" v-model="shadowExample2">
|
|
249
|
+
<AccordionItem
|
|
250
|
+
value="1"
|
|
251
|
+
preset="elevated"
|
|
252
|
+
shadow="none"
|
|
253
|
+
title="Elevated Without Shadow"
|
|
254
|
+
text="Shadow disabled with shadow='none'"
|
|
255
|
+
/>
|
|
256
|
+
</AccordionGroup>
|
|
257
|
+
</div>
|
|
258
|
+
<div class="shadow-column">
|
|
259
|
+
<h4 class="shadow-label">Filled (custom shadow)</h4>
|
|
260
|
+
<AccordionGroup :multiple="false" v-model="shadowExample3">
|
|
261
|
+
<AccordionItem
|
|
262
|
+
value="1"
|
|
263
|
+
preset="filled"
|
|
264
|
+
shadow="0 4px 16px rgba(0, 0, 0, 0.15)"
|
|
265
|
+
title="Filled With Custom Shadow"
|
|
266
|
+
text="Custom shadow added to filled preset"
|
|
267
|
+
/>
|
|
268
|
+
</AccordionGroup>
|
|
269
|
+
</div>
|
|
270
|
+
<div class="shadow-column">
|
|
271
|
+
<h4 class="shadow-label">Elevated (heavy shadow)</h4>
|
|
272
|
+
<AccordionGroup :multiple="false" v-model="shadowExample4">
|
|
273
|
+
<AccordionItem
|
|
274
|
+
value="1"
|
|
275
|
+
preset="elevated"
|
|
276
|
+
shadow="0 8px 24px rgba(0, 0, 0, 0.25)"
|
|
277
|
+
title="Heavy Custom Shadow"
|
|
278
|
+
text="Stronger shadow for more emphasis"
|
|
279
|
+
/>
|
|
280
|
+
</AccordionGroup>
|
|
281
|
+
</div>
|
|
282
|
+
</div>
|
|
283
|
+
</div>
|
|
284
|
+
|
|
285
|
+
<!-- Divider Control Examples -->
|
|
286
|
+
<div class="treatment-section">
|
|
287
|
+
<h3 class="section-title">Divider Control (showTopDivider / showBottomDivider)</h3>
|
|
288
|
+
<div class="divider-examples">
|
|
289
|
+
<div class="divider-column">
|
|
290
|
+
<h4 class="divider-label">Top divider only</h4>
|
|
291
|
+
<AccordionGroup :multiple="false" v-model="dividerExample1">
|
|
292
|
+
<AccordionItem
|
|
293
|
+
value="1"
|
|
294
|
+
:show-top-divider="true"
|
|
295
|
+
:show-bottom-divider="false"
|
|
296
|
+
preset="plain"
|
|
297
|
+
title="Top Divider Only"
|
|
298
|
+
text="This item shows only the top divider"
|
|
299
|
+
:title-color="dentalColors.accordion_title_color"
|
|
300
|
+
:content-color="dentalColors.accordion_content_color"
|
|
301
|
+
:divider-props="{ color: 'var(--Dental-Blue-0)', thickness: 1, opacity: 1 }"
|
|
302
|
+
/>
|
|
303
|
+
<AccordionItem
|
|
304
|
+
value="2"
|
|
305
|
+
:show-top-divider="true"
|
|
306
|
+
:show-bottom-divider="false"
|
|
307
|
+
preset="plain"
|
|
308
|
+
title="Another Item"
|
|
309
|
+
text="Also with only top divider"
|
|
310
|
+
:title-color="dentalColors.accordion_title_color"
|
|
311
|
+
:content-color="dentalColors.accordion_content_color"
|
|
312
|
+
:divider-props="{ color: 'var(--Dental-Blue-0)', thickness: 1, opacity: 1 }"
|
|
313
|
+
/>
|
|
314
|
+
</AccordionGroup>
|
|
315
|
+
</div>
|
|
316
|
+
<div class="divider-column">
|
|
317
|
+
<h4 class="divider-label">Bottom divider only</h4>
|
|
318
|
+
<AccordionGroup :multiple="false" v-model="dividerExample2">
|
|
319
|
+
<AccordionItem
|
|
320
|
+
value="1"
|
|
321
|
+
:show-top-divider="false"
|
|
322
|
+
:show-bottom-divider="true"
|
|
323
|
+
title="Bottom Divider Only"
|
|
324
|
+
text="This item shows only the bottom divider"
|
|
325
|
+
:title-color="dentalColors.accordion_title_color"
|
|
326
|
+
:content-color="dentalColors.accordion_content_color"
|
|
327
|
+
:divider-props="{ color: 'var(--Dental-Blue-0)', thickness: 1, opacity: 1 }"
|
|
328
|
+
preset="plain"
|
|
329
|
+
/>
|
|
330
|
+
<AccordionItem
|
|
331
|
+
value="2"
|
|
332
|
+
:show-top-divider="false"
|
|
333
|
+
:show-bottom-divider="true"
|
|
334
|
+
title="Another Item"
|
|
335
|
+
text="Also with only bottom divider"
|
|
336
|
+
:title-color="dentalColors.accordion_title_color"
|
|
337
|
+
:content-color="dentalColors.accordion_content_color"
|
|
338
|
+
:divider-props="{ color: 'var(--Dental-Blue-0)', thickness: 1, opacity: 1 }"
|
|
339
|
+
preset="plain"
|
|
340
|
+
/>
|
|
341
|
+
</AccordionGroup>
|
|
342
|
+
</div>
|
|
343
|
+
<div class="divider-column">
|
|
344
|
+
<h4 class="divider-label">Both dividers</h4>
|
|
345
|
+
<AccordionGroup :multiple="false" v-model="dividerExample3">
|
|
346
|
+
<AccordionItem
|
|
347
|
+
value="1"
|
|
348
|
+
:show-top-divider="true"
|
|
349
|
+
:show-bottom-divider="true"
|
|
350
|
+
title="Both Dividers"
|
|
351
|
+
text="This item shows both top and bottom dividers"
|
|
352
|
+
:title-color="dentalColors.accordion_title_color"
|
|
353
|
+
:content-color="dentalColors.accordion_content_color"
|
|
354
|
+
:divider-props="{ color: 'var(--Dental-Blue-0)', thickness: 1, opacity: 1 }"
|
|
355
|
+
preset="plain"
|
|
356
|
+
/>
|
|
357
|
+
<AccordionItem
|
|
358
|
+
value="2"
|
|
359
|
+
:show-top-divider="true"
|
|
360
|
+
:show-bottom-divider="true"
|
|
361
|
+
title="Another Item"
|
|
362
|
+
text="Also with both dividers"
|
|
363
|
+
:title-color="dentalColors.accordion_title_color"
|
|
364
|
+
:content-color="dentalColors.accordion_content_color"
|
|
365
|
+
:divider-props="{ color: 'var(--Dental-Blue-0)', thickness: 1, opacity: 1 }"
|
|
366
|
+
preset="plain"
|
|
367
|
+
/>
|
|
368
|
+
</AccordionGroup>
|
|
369
|
+
</div>
|
|
370
|
+
<div class="divider-column">
|
|
371
|
+
<h4 class="divider-label">No dividers</h4>
|
|
372
|
+
<AccordionGroup :multiple="false" v-model="dividerExample4">
|
|
373
|
+
<AccordionItem
|
|
374
|
+
value="1"
|
|
375
|
+
:show-top-divider="false"
|
|
376
|
+
:show-bottom-divider="false"
|
|
377
|
+
title="No Dividers"
|
|
378
|
+
text="This item shows no dividers at all"
|
|
379
|
+
:title-color="dentalColors.accordion_title_color"
|
|
380
|
+
:content-color="dentalColors.accordion_content_color"
|
|
381
|
+
preset="plain"
|
|
382
|
+
/>
|
|
383
|
+
<AccordionItem
|
|
384
|
+
value="2"
|
|
385
|
+
:show-top-divider="false"
|
|
386
|
+
:show-bottom-divider="false"
|
|
387
|
+
title="Another Item"
|
|
388
|
+
text="Also with no dividers"
|
|
389
|
+
:title-color="dentalColors.accordion_title_color"
|
|
390
|
+
:content-color="dentalColors.accordion_content_color"
|
|
391
|
+
preset="plain"
|
|
392
|
+
/>
|
|
393
|
+
</AccordionGroup>
|
|
394
|
+
</div>
|
|
395
|
+
</div>
|
|
396
|
+
</div>
|
|
397
|
+
|
|
398
|
+
<!-- Plain Preset Example -->
|
|
399
|
+
<div class="treatment-section">
|
|
400
|
+
<h3 class="section-title">Plain Preset (Minimal Style)</h3>
|
|
401
|
+
<div class="plain-container">
|
|
402
|
+
<AccordionGroup
|
|
403
|
+
:multiple="false"
|
|
404
|
+
v-model="plainPanel"
|
|
405
|
+
headline="FAQ"
|
|
406
|
+
:headline-color="dentalColors.accordion_title_color"
|
|
407
|
+
>
|
|
408
|
+
<AccordionItem
|
|
409
|
+
value="faq1"
|
|
410
|
+
preset="plain"
|
|
411
|
+
title="What is your return policy?"
|
|
412
|
+
text="You can return any item within 30 days of purchase for a full refund. Items must be in their original condition with tags attached."
|
|
413
|
+
:title-color="dentalColors.accordion_title_color"
|
|
414
|
+
:content-color="dentalColors.accordion_content_color"
|
|
415
|
+
:icon-color="dentalColors.accordion_icon_color"
|
|
416
|
+
/>
|
|
417
|
+
<AccordionItem
|
|
418
|
+
value="faq2"
|
|
419
|
+
preset="plain"
|
|
420
|
+
title="How long does shipping take?"
|
|
421
|
+
text="Standard shipping takes 5-7 business days. Express shipping is available for an additional fee and arrives within 2-3 business days."
|
|
422
|
+
:title-color="dentalColors.accordion_title_color"
|
|
423
|
+
:content-color="dentalColors.accordion_content_color"
|
|
424
|
+
:icon-color="dentalColors.accordion_icon_color"
|
|
425
|
+
/>
|
|
426
|
+
<AccordionItem
|
|
427
|
+
value="faq3"
|
|
428
|
+
preset="plain"
|
|
429
|
+
title="Do you offer international shipping?"
|
|
430
|
+
text="Yes, we ship to over 50 countries worldwide. International shipping rates and delivery times vary by location."
|
|
431
|
+
:title-color="dentalColors.accordion_title_color"
|
|
432
|
+
:content-color="dentalColors.accordion_content_color"
|
|
433
|
+
:icon-color="dentalColors.accordion_icon_color"
|
|
434
|
+
/>
|
|
435
|
+
</AccordionGroup>
|
|
436
|
+
</div>
|
|
437
|
+
</div>
|
|
438
|
+
|
|
439
|
+
<!-- Treatment Patient Counts Variant -->
|
|
440
|
+
<div class="treatment-section">
|
|
441
|
+
<h3 class="section-title">Elevated Preset (Treatment Patient Counts)</h3>
|
|
442
|
+
<div class="treatment-container">
|
|
443
|
+
<AccordionGroup
|
|
444
|
+
:multiple="false"
|
|
445
|
+
v-model="treatmentPanel"
|
|
446
|
+
headline="Behandlungen"
|
|
447
|
+
:headline-color="dentalColors.accordion_title_color"
|
|
448
|
+
>
|
|
449
|
+
<template v-for="item in computedTreatmentPatientCounts" :key="item.templateName">
|
|
450
|
+
<AccordionItem :value="item.templateName" variant="default" preset="elevated" v-if="item.count > 0">
|
|
451
|
+
<!-- Accordion Header -->
|
|
452
|
+
<template #title>
|
|
453
|
+
<div class="treatment-header">
|
|
454
|
+
<Checkbox v-model="item.selected" />
|
|
455
|
+
<h3 class="treatment-title">{{ item.templateName }}</h3>
|
|
456
|
+
<!-- Badge showing overdue labor work count -->
|
|
457
|
+
<span v-if="item.overdueCount > 0" class="labor-overdue-badge">
|
|
458
|
+
{{ item.overdueCount }} Laborarbeit überfällig
|
|
459
|
+
</span>
|
|
460
|
+
</div>
|
|
461
|
+
</template>
|
|
462
|
+
|
|
463
|
+
<!-- Accordion Content -->
|
|
464
|
+
<template #text>
|
|
465
|
+
<div class="treatment-content">
|
|
466
|
+
<h4>Patienten: {{ item.count }}</h4>
|
|
467
|
+
<ul class="patient-list">
|
|
468
|
+
<li
|
|
469
|
+
v-for="patient in item.patients"
|
|
470
|
+
:key="patient.name"
|
|
471
|
+
class="patient-item"
|
|
472
|
+
>
|
|
473
|
+
<span class="bullet">•</span>
|
|
474
|
+
<span>{{ patient.name }}</span>
|
|
475
|
+
<!-- Red dot for patients with overdue labor work -->
|
|
476
|
+
<span v-if="patient.hasOverdue" class="overdue-dot"></span>
|
|
477
|
+
<span v-if="patient.count > 1" class="patient-count">({{ patient.count }})</span>
|
|
478
|
+
</li>
|
|
479
|
+
</ul>
|
|
480
|
+
</div>
|
|
481
|
+
</template>
|
|
482
|
+
</AccordionItem>
|
|
483
|
+
</template>
|
|
484
|
+
</AccordionGroup>
|
|
485
|
+
</div>
|
|
486
|
+
</div>
|
|
487
|
+
</div>
|
|
488
|
+
</div>
|
|
489
|
+
</template>
|
|
490
|
+
|
|
491
|
+
<script setup lang="ts">
|
|
492
|
+
import { computed, ref, reactive } from "vue";
|
|
493
|
+
import {
|
|
494
|
+
domain,
|
|
495
|
+
setTestingDomain,
|
|
496
|
+
clearTestingDomain,
|
|
497
|
+
getColorsForDomain,
|
|
498
|
+
siteColors
|
|
499
|
+
} from "@/utils/index";
|
|
500
|
+
|
|
501
|
+
import Background from "@/components/Background/Background.vue";
|
|
502
|
+
import Button from "@/components/Button/Button.vue";
|
|
503
|
+
import Checkbox from "@/components/CheckBox/Checkbox.vue";
|
|
504
|
+
import AccordionGroup from "@/components/Accordion/AccordionGroup.vue";
|
|
505
|
+
import AccordionItem from "@/components/Accordion/AccordionItem.vue";
|
|
506
|
+
|
|
507
|
+
const currentDomain = computed(() => domain.value);
|
|
508
|
+
|
|
509
|
+
const switchToDental = () => {
|
|
510
|
+
setTestingDomain("domain-dental");
|
|
511
|
+
};
|
|
512
|
+
|
|
513
|
+
const switchToCocoon = () => {
|
|
514
|
+
setTestingDomain("domain-cocoon");
|
|
515
|
+
};
|
|
516
|
+
|
|
517
|
+
const resetDomain = () => {
|
|
518
|
+
clearTestingDomain();
|
|
519
|
+
};
|
|
520
|
+
|
|
521
|
+
const dentalColors = getColorsForDomain("domain-dental");
|
|
522
|
+
const cocoonColors = getColorsForDomain("domain-cocoon");
|
|
523
|
+
|
|
524
|
+
const accordionOutlined = ref(null);
|
|
525
|
+
const accordionOutlined2 = ref(null);
|
|
526
|
+
const accordionPlain = ref(null);
|
|
527
|
+
const accordionMultiple = ref([1, 2]);
|
|
528
|
+
const accordionComplex = ref(null);
|
|
529
|
+
|
|
530
|
+
// Filled preset data
|
|
531
|
+
const filledPanel = ref(null);
|
|
532
|
+
const notificationsEnabled = ref(true);
|
|
533
|
+
|
|
534
|
+
// Shadow examples data
|
|
535
|
+
const shadowExample1 = ref(null);
|
|
536
|
+
const shadowExample2 = ref(null);
|
|
537
|
+
const shadowExample3 = ref(null);
|
|
538
|
+
const shadowExample4 = ref(null);
|
|
539
|
+
|
|
540
|
+
// Divider examples data
|
|
541
|
+
const dividerExample1 = ref(null);
|
|
542
|
+
const dividerExample2 = ref(null);
|
|
543
|
+
const dividerExample3 = ref(null);
|
|
544
|
+
const dividerExample4 = ref(null);
|
|
545
|
+
|
|
546
|
+
// Plain preset data
|
|
547
|
+
const plainPanel = ref(null);
|
|
548
|
+
|
|
549
|
+
// Treatment Patient Counts data
|
|
550
|
+
const treatmentPanel = ref(null);
|
|
551
|
+
|
|
552
|
+
const computedTreatmentPatientCounts = reactive([
|
|
553
|
+
{
|
|
554
|
+
templateName: "Zahnreinigung",
|
|
555
|
+
selected: false,
|
|
556
|
+
count: 4,
|
|
557
|
+
overdueCount: 2,
|
|
558
|
+
patients: [
|
|
559
|
+
{ name: "Max Mustermann", hasOverdue: true, count: 2 },
|
|
560
|
+
{ name: "Anna Schmidt", hasOverdue: false, count: 1 },
|
|
561
|
+
{ name: "Peter Weber", hasOverdue: true, count: 1 },
|
|
562
|
+
],
|
|
563
|
+
},
|
|
564
|
+
{
|
|
565
|
+
templateName: "Kontrolluntersuchung",
|
|
566
|
+
selected: false,
|
|
567
|
+
count: 3,
|
|
568
|
+
overdueCount: 0,
|
|
569
|
+
patients: [
|
|
570
|
+
{ name: "Lisa Müller", hasOverdue: false, count: 1 },
|
|
571
|
+
{ name: "Thomas Bauer", hasOverdue: false, count: 1 },
|
|
572
|
+
{ name: "Sarah Klein", hasOverdue: false, count: 1 },
|
|
573
|
+
],
|
|
574
|
+
},
|
|
575
|
+
{
|
|
576
|
+
templateName: "Implantologie",
|
|
577
|
+
selected: false,
|
|
578
|
+
count: 2,
|
|
579
|
+
overdueCount: 1,
|
|
580
|
+
patients: [
|
|
581
|
+
{ name: "Michael Hoffmann", hasOverdue: true, count: 1 },
|
|
582
|
+
{ name: "Julia Fischer", hasOverdue: false, count: 1 },
|
|
583
|
+
],
|
|
584
|
+
},
|
|
585
|
+
{
|
|
586
|
+
templateName: "Kieferorthopädie",
|
|
587
|
+
selected: false,
|
|
588
|
+
count: 0,
|
|
589
|
+
overdueCount: 0,
|
|
590
|
+
patients: [],
|
|
591
|
+
},
|
|
592
|
+
]);
|
|
593
|
+
</script>
|
|
594
|
+
|
|
595
|
+
<style scoped>
|
|
596
|
+
.page {
|
|
597
|
+
display: flex;
|
|
598
|
+
flex-direction: column;
|
|
599
|
+
justify-content: flex-start;
|
|
600
|
+
align-items: center;
|
|
601
|
+
width: 100vw;
|
|
602
|
+
min-height: 100vh;
|
|
603
|
+
background-color: #f5f5f5;
|
|
604
|
+
padding: 2rem 0;
|
|
605
|
+
overflow-y: auto;
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
.element-container {
|
|
609
|
+
display: flex;
|
|
610
|
+
flex-direction: column;
|
|
611
|
+
justify-content: flex-start;
|
|
612
|
+
align-items: center;
|
|
613
|
+
width: 95%;
|
|
614
|
+
max-width: 1400px;
|
|
615
|
+
gap: 2rem;
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
.controls {
|
|
619
|
+
width: 100%;
|
|
620
|
+
background: white;
|
|
621
|
+
padding: 1.5rem;
|
|
622
|
+
border-radius: 8px;
|
|
623
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
624
|
+
text-align: center;
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
.controls h2 {
|
|
628
|
+
margin: 0 0 1rem 0;
|
|
629
|
+
color: #333;
|
|
630
|
+
font-size: 1.5rem;
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
.button-group {
|
|
634
|
+
display: flex;
|
|
635
|
+
gap: 1rem;
|
|
636
|
+
justify-content: center;
|
|
637
|
+
flex-wrap: wrap;
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
.control-btn {
|
|
641
|
+
padding: 0.75rem 1.5rem;
|
|
642
|
+
font-size: 1rem;
|
|
643
|
+
border: none;
|
|
644
|
+
border-radius: 6px;
|
|
645
|
+
cursor: pointer;
|
|
646
|
+
background-color: #4caf50;
|
|
647
|
+
color: white;
|
|
648
|
+
transition: background-color 0.3s ease;
|
|
649
|
+
font-weight: 500;
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
.control-btn:hover {
|
|
653
|
+
background-color: #45a049;
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
.control-btn.reset {
|
|
657
|
+
background-color: #f44336;
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
.control-btn.reset:hover {
|
|
661
|
+
background-color: #da190b;
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
.matrix-container {
|
|
665
|
+
width: 100%;
|
|
666
|
+
overflow-x: auto;
|
|
667
|
+
display: flex;
|
|
668
|
+
gap: 20px;
|
|
669
|
+
justify-content: space-between;
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
/* Treatment Section Styles */
|
|
673
|
+
.treatment-section {
|
|
674
|
+
width: 100%;
|
|
675
|
+
background: white;
|
|
676
|
+
padding: 1.5rem;
|
|
677
|
+
border-radius: 8px;
|
|
678
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
.section-title {
|
|
682
|
+
margin: 0 0 1rem 0;
|
|
683
|
+
color: #333;
|
|
684
|
+
font-size: 1.25rem;
|
|
685
|
+
font-weight: 600;
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
.treatment-container {
|
|
689
|
+
max-height: 400px;
|
|
690
|
+
overflow-y: auto;
|
|
691
|
+
padding: 10px;
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
.treatment-header {
|
|
695
|
+
display: flex;
|
|
696
|
+
width: 100%;
|
|
697
|
+
align-items: center;
|
|
698
|
+
gap: 0.5rem;
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
.treatment-title {
|
|
702
|
+
margin: 0;
|
|
703
|
+
font-size: 1rem;
|
|
704
|
+
font-weight: 600;
|
|
705
|
+
color: var(--Dental-Blue-0, #172774);
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
.labor-overdue-badge {
|
|
709
|
+
background-color: #fef2f2;
|
|
710
|
+
color: #dc2626;
|
|
711
|
+
padding: 0.25rem 0.75rem;
|
|
712
|
+
border-radius: 9999px;
|
|
713
|
+
font-size: 0.75rem;
|
|
714
|
+
font-weight: 500;
|
|
715
|
+
margin-left: auto;
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
.treatment-content {
|
|
719
|
+
display: flex;
|
|
720
|
+
flex-direction: column;
|
|
721
|
+
gap: 0.5rem;
|
|
722
|
+
margin-bottom: 1rem;
|
|
723
|
+
padding: 0 1rem;
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
.treatment-content h4 {
|
|
727
|
+
margin: 0;
|
|
728
|
+
font-size: 0.875rem;
|
|
729
|
+
font-weight: 600;
|
|
730
|
+
color: #333;
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
.patient-list {
|
|
734
|
+
list-style: none;
|
|
735
|
+
margin: 0;
|
|
736
|
+
padding: 0;
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
.patient-item {
|
|
740
|
+
display: flex;
|
|
741
|
+
align-items: center;
|
|
742
|
+
padding: 0.25rem 0;
|
|
743
|
+
padding-left: 1rem;
|
|
744
|
+
color: var(--Dental-Blue-0, #172774);
|
|
745
|
+
font-size: 0.875rem;
|
|
746
|
+
}
|
|
747
|
+
|
|
748
|
+
.bullet {
|
|
749
|
+
position: absolute;
|
|
750
|
+
left: 0;
|
|
751
|
+
color: var(--Dental-Blue-0, #172774);
|
|
752
|
+
font-size: 1.25rem;
|
|
753
|
+
}
|
|
754
|
+
|
|
755
|
+
.patient-item {
|
|
756
|
+
position: relative;
|
|
757
|
+
padding-left: 1rem;
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
.overdue-dot {
|
|
761
|
+
width: 0.5rem;
|
|
762
|
+
height: 0.5rem;
|
|
763
|
+
border-radius: 50%;
|
|
764
|
+
background-color: var(--Power-Red-0, #dc2626);
|
|
765
|
+
margin-left: 0.5rem;
|
|
766
|
+
flex-shrink: 0;
|
|
767
|
+
}
|
|
768
|
+
|
|
769
|
+
.patient-count {
|
|
770
|
+
margin-left: 0.25rem;
|
|
771
|
+
color: #666;
|
|
772
|
+
}
|
|
773
|
+
|
|
774
|
+
/* Filled Preset Styles */
|
|
775
|
+
.filled-container {
|
|
776
|
+
max-width: 500px;
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
.filled-header {
|
|
780
|
+
display: flex;
|
|
781
|
+
align-items: center;
|
|
782
|
+
gap: 0.5rem;
|
|
783
|
+
}
|
|
784
|
+
|
|
785
|
+
.filled-header h4 {
|
|
786
|
+
margin: 0;
|
|
787
|
+
font-size: 1rem;
|
|
788
|
+
font-weight: 600;
|
|
789
|
+
color: var(--Dental-Blue-0, #172774);
|
|
790
|
+
}
|
|
791
|
+
|
|
792
|
+
.filled-content {
|
|
793
|
+
padding: 0.5rem 0;
|
|
794
|
+
}
|
|
795
|
+
|
|
796
|
+
.settings-row {
|
|
797
|
+
display: flex;
|
|
798
|
+
justify-content: space-between;
|
|
799
|
+
align-items: center;
|
|
800
|
+
gap: 1rem;
|
|
801
|
+
}
|
|
802
|
+
|
|
803
|
+
.settings-info h5 {
|
|
804
|
+
margin: 0 0 0.25rem 0;
|
|
805
|
+
font-size: 0.875rem;
|
|
806
|
+
font-weight: 600;
|
|
807
|
+
color: #333;
|
|
808
|
+
}
|
|
809
|
+
|
|
810
|
+
.settings-info p {
|
|
811
|
+
margin: 0;
|
|
812
|
+
font-size: 0.8125rem;
|
|
813
|
+
color: #666;
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
/* Shadow Examples Styles */
|
|
817
|
+
.shadow-examples {
|
|
818
|
+
display: grid;
|
|
819
|
+
grid-template-columns: repeat(2, 1fr);
|
|
820
|
+
gap: 1.5rem;
|
|
821
|
+
background-color: #f5f5f5;
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
.shadow-column {
|
|
825
|
+
display: flex;
|
|
826
|
+
flex-direction: column;
|
|
827
|
+
gap: 0.5rem;
|
|
828
|
+
}
|
|
829
|
+
|
|
830
|
+
.shadow-label {
|
|
831
|
+
margin: 0;
|
|
832
|
+
font-size: 0.875rem;
|
|
833
|
+
font-weight: 600;
|
|
834
|
+
color: #555;
|
|
835
|
+
}
|
|
836
|
+
|
|
837
|
+
@media (max-width: 768px) {
|
|
838
|
+
.shadow-examples {
|
|
839
|
+
grid-template-columns: 1fr;
|
|
840
|
+
}
|
|
841
|
+
}
|
|
842
|
+
|
|
843
|
+
/* Divider Examples Styles */
|
|
844
|
+
.divider-examples {
|
|
845
|
+
display: grid;
|
|
846
|
+
grid-template-columns: repeat(2, 1fr);
|
|
847
|
+
gap: 1.5rem;
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
.divider-column {
|
|
851
|
+
display: flex;
|
|
852
|
+
flex-direction: column;
|
|
853
|
+
gap: 0.5rem;
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
.divider-label {
|
|
857
|
+
margin: 0;
|
|
858
|
+
font-size: 0.875rem;
|
|
859
|
+
font-weight: 600;
|
|
860
|
+
color: #555;
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
@media (max-width: 768px) {
|
|
864
|
+
.divider-examples {
|
|
865
|
+
grid-template-columns: 1fr;
|
|
866
|
+
}
|
|
867
|
+
}
|
|
868
|
+
|
|
869
|
+
/* Plain Preset Styles */
|
|
870
|
+
.plain-container {
|
|
871
|
+
max-width: 600px;
|
|
872
|
+
}
|
|
873
|
+
</style>
|