diff --git a/docs/pattern/questionnaire.org b/docs/pattern/questionnaire.org
index 416c640..aa4abc2 100644
--- a/docs/pattern/questionnaire.org
+++ b/docs/pattern/questionnaire.org
@@ -1,7 +1,7 @@
#+title: Creating a Questionnaire using cl-sbt/questionnaire Macros in a Web Application
#+author: Marcus Kammer
#+email: marcus.kammer@mailbox.org
-#+date: 2024-02-04T13:11+01:00
+#+date: 2024-02-10T12:45+01:00
* Introduction
Questionnaires are powerful tools for gathering information and insights from
@@ -22,7 +22,7 @@ like single-choice, multiple-choice, or open-ended questions.
- Multiple Choice: Questions that allow multiple answers.
- Text: Open-ended questions for free text input.
-* Integrating cl-sbt/questionnaire Macros
+* Integrating dev.metalisp.sbt/component/questionnaire Macros
To create a questionnaire in your Common Lisp web application,
cl-sbt/questionnaire macros can be employed. These macros generate the HTML
diff --git a/docs/pattern/survey-examples/behavioral-survey.html b/docs/pattern/survey-examples/behavioral-survey.html
new file mode 100644
index 0000000..9c59999
--- /dev/null
+++ b/docs/pattern/survey-examples/behavioral-survey.html
@@ -0,0 +1,110 @@
+
+
+
+
+
+ Product Experience Survey
+
+
+
+
Product Experience Survey
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/pattern/survey-examples/demographics-survey.html b/docs/pattern/survey-examples/demographics-survey.html
new file mode 100644
index 0000000..0c37385
--- /dev/null
+++ b/docs/pattern/survey-examples/demographics-survey.html
@@ -0,0 +1,148 @@
+
+
+
+
+
+ Product Experience Survey
+
+
+
+
Product Experience Survey
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/pattern/survey-examples/geographics-survey.html b/docs/pattern/survey-examples/geographics-survey.html
new file mode 100644
index 0000000..077b46c
--- /dev/null
+++ b/docs/pattern/survey-examples/geographics-survey.html
@@ -0,0 +1,47 @@
+
+
+
+
+
+ Product Experience Survey
+
+
+
+
Product Experience Survey
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/pattern/survey-examples/nc-survey.html b/docs/pattern/survey-examples/nc-survey.html
new file mode 100644
index 0000000..8365315
--- /dev/null
+++ b/docs/pattern/survey-examples/nc-survey.html
@@ -0,0 +1,48 @@
+
+
+
+
+
+ Product Experience Survey
+
+
+
+
Product Experience Survey
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/pattern/survey-examples/psychographics-survey.html b/docs/pattern/survey-examples/psychographics-survey.html
new file mode 100644
index 0000000..e440713
--- /dev/null
+++ b/docs/pattern/survey-examples/psychographics-survey.html
@@ -0,0 +1,48 @@
+
+
+
+
+
+ Product Experience Survey
+
+
+
+
Product Experience Survey
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/pattern/survey-examples/tcl-survey.html b/docs/pattern/survey-examples/tcl-survey.html
new file mode 100644
index 0000000..81a46af
--- /dev/null
+++ b/docs/pattern/survey-examples/tcl-survey.html
@@ -0,0 +1,124 @@
+
+
+
+
+
+ Product Experience Survey
+
+
+
+
Product Experience Survey
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/pattern/survey-examples/user-research.org b/docs/pattern/survey-examples/user-research.org
new file mode 100644
index 0000000..d73623e
--- /dev/null
+++ b/docs/pattern/survey-examples/user-research.org
@@ -0,0 +1,164 @@
+* Create lisp package
+
+#+begin_src lisp
+ (defpackage user-research-app
+ (:use :cl)
+ (:import-from :dev.metalisp.sbt :with-page)
+ (:import-from :dev.metalisp.sbt/pattern/questionnaire :questionnaire))
+#+end_src
+
+#+RESULTS:
+: #
+
+* Demographics
+
+#+name: demographics-survey
+#+begin_src lisp :results output file :file-ext html
+ (in-package :user-research-app)
+
+ (defun generate-demographics-survey ()
+ "Generates an HTML page with questionnaires using questionnaire macros."
+ (with-output-to-string (spinneret:*html*)
+ (with-page (:title "Product Experience Survey" :main-con t)
+ (questionnaire "/submit"
+ (:ask "What is your age range?"
+ :group "demo-age-range"
+ :choices (:single "18-24" "25-34" "35-44" "45-54" "55+"))
+ (:ask "What is your gender?"
+ :group "demo-gender"
+ :choices (:single "Male" "Female" "Non-binary" "Prefer not to say" "Other" :text "Other"))
+ (:ask "What is your profession?"
+ :group "demo-profession"
+ :choices (:text "Profession"))
+ (:ask "What is your educational background?"
+ :group "demo-edu"
+ :choices (:text "Last Degree"))))))
+
+ (format t (generate-demographics-survey))
+#+end_src
+
+#+RESULTS: demographics-survey
+[[file:demographics-survey.html]]
+
+* Geographics
+
+#+name: geographics-survey
+#+begin_src lisp :results output file :file-ext html
+ (in-package :user-research-app)
+
+ (defun generate-geographics-survey ()
+ "Generates an HTML page with questionnaires using questionnaire macros."
+ (with-output-to-string (spinneret:*html*)
+ (with-page (:title "Product Experience Survey" :main-con t)
+ (questionnaire "/submit"
+ (:ask "Where are you located?"
+ :group "geo-loca"
+ :choices (:text "Country"))
+ (:ask "Which timezone do you operate in?"
+ :group "geo-timezone"
+ :choices (:text "Timezone"))))))
+
+ (format t (generate-geographics-survey))
+#+end_src
+
+#+RESULTS: geographics-survey
+[[file:geographics-survey.html]]
+
+* Behavioral
+
+#+name: behavioral-survey
+#+begin_src lisp :results output file :file-ext html
+ (in-package :user-research-app)
+
+ (defun generate-behavioral-survey ()
+ "Generates an HTML page with questionnaires using questionnaire macros."
+ (with-output-to-string (spinneret:*html*)
+ (with-page (:title "Product Experience Survey" :main-con t)
+ (questionnaire "/submit"
+ (:ask "How often do you use our software?"
+ :group "beh-useage"
+ :choices (:single "Daily" "Weekly" "Monthly" "Less frequently"))
+ (:ask "What features do you use the most?"
+ :group "beh-feature"
+ :choices (:multiple "Bookmarks" "KPI" "Contacts"))
+ (:ask "Have you used our software for along period of time?"
+ :group "beh-longuse"
+ :choices (:single "Yes" "No"))))))
+
+ (format t (generate-behavioral-survey))
+#+end_src
+
+#+RESULTS: behavioral-survey
+[[file:behavioral-survey.html]]
+
+* Psychographics
+
+#+name: psychographics-survey
+#+begin_src lisp :results output file :file-ext html
+ (in-package :user-research-app)
+
+ (defun generate-psychographics-survey ()
+ "Generates an HTML page with questionnaires using questionnaire macros."
+ (with-output-to-string (spinneret:*html*)
+ (with-page (:title "Product Experience Survey" :main-con t)
+ (questionnaire "/submit"
+ (:ask "What do you value most in our software?"
+ :group "psy-value"
+ :choices (:text "Most value"))
+ (:ask "What motivates you to use our software?"
+ :group "psy-motivate"
+ :choices (:text "Your motivation"))))))
+
+ (format t (generate-psychographics-survey))
+#+end_src
+
+#+RESULTS: psychographics-survey
+[[file:psychographics-survey.html]]
+
+* Needs/Challenges
+
+#+name: nc-survey
+#+begin_src lisp :results output file :file-ext html
+ (in-package :user-research-app)
+
+ (defun generate-nc-survey ()
+ "Generates an HTML page with questionnaires using questionnaire macros."
+ (with-output-to-string (spinneret:*html*)
+ (with-page (:title "Product Experience Survey" :main-con t)
+ (questionnaire "/submit"
+ (:ask "What challenges, if any, does our software help you overcome?"
+ :group "nc-challenges"
+ :choices (:text "Please describe"))
+ (:ask "How could we improve to better meet your needs?"
+ :group "nc-improve"
+ :choices (:single "Please describe"))))))
+
+ (format t (generate-nc-survey))
+#+end_src
+
+#+RESULTS: nc-survey
+[[file:nc-survey.html]]
+
+* Technology Comfort Level
+
+#+name: tcl-survey
+#+begin_src lisp :results output file :file-ext html
+ (in-package :user-research-app)
+
+ (defun generate-tcl-survey ()
+ "Generates an HTML page with questionnaires using questionnaire macros."
+ (with-output-to-string (spinneret:*html*)
+ (with-page (:title "Product Experience Survey" :main-con t)
+ (questionnaire "/submit"
+ (:ask "How would you rate your comfort level with technology?"
+ :group "tcl-likeart"
+ :choices (:single "1 - Very Uncomfortable" "2 - Slightly Uncomfortable" "3 - Neutral" "4 - Quite Comfortable" "5 - Very Comfortable"))
+ (:ask "How frequently do you adopt new technologies?"
+ :group "tcl-adopt"
+ :choices (:single "1 - Always - I'm an early adopter." "2 - Often - I stay on top of technological advances and adopt them frequently." "3 - Sometimes - I adopt new technologies now and then." "4 - Rarely - I only adopt new technologies when it's necessary for work or other important tasks." "5 - Never - I avoid adopting new technologies unless absolutely required."))))))
+
+ (format t (generate-tcl-survey))
+#+end_src
+
+#+RESULTS: tcl-survey
+[[file:tcl-survey.html]]
diff --git a/src/component/accordion.lisp b/src/component/accordion.lisp
index 3c31532..6a0c0fb 100644
--- a/src/component/accordion.lisp
+++ b/src/component/accordion.lisp
@@ -1,8 +1,6 @@
+;;;; -*- mode: lisp; coding: utf-8; tab-width: 4; fill-column: 100; indent-tabs-mode: nil; -*-
;;;; accordion.lisp
-;;;;
-;;;; This file defines a package for generating Bootstrap accordion components
-;;;; using Common Lisp macros.
-
+;;;; This file defines a package for generating Bootstrap accordion components using Common Lisp macros.
(defpackage dev.metalisp.sbt/component/accordion
(:documentation "A package for generating Bootstrap accordions.")
(:use :cl)
diff --git a/src/main.lisp b/src/main.lisp
index 4ef89ce..ec742a9 100644
--- a/src/main.lisp
+++ b/src/main.lisp
@@ -1,6 +1,6 @@
;;;; -*- mode: lisp; coding: utf-8; tab-width: 4; fill-column: 100; indent-tabs-mode: nil; -*-
-;;;; main - Provide general functions.
-
+;;;; main.lisp
+;;;; Provide general functions.
(defpackage dev.metalisp.sbt
(:use :cl)
(:export
diff --git a/src/pattern/questionnaire.lisp b/src/pattern/questionnaire.lisp
index 9c011e5..7dc80e9 100644
--- a/src/pattern/questionnaire.lisp
+++ b/src/pattern/questionnaire.lisp
@@ -253,7 +253,7 @@ Returns multiple values:
- The group name (GROUP)
- The choices (CHOICES)"
(let ((splitted-list (split-list-by-keyword question)))
- (apply #'values (mapcar (lambda (x) (cadr x)) splitted-list))))
+ (apply #'values (mapcar (lambda (x) (nth 1 x)) splitted-list))))
(defmacro questionnaire (action &body body)
"This macro generates an HTML form composed of multiple questions, each rendered using the `question' macro.